Advertisement
1400_SpaceCat

wpstart_gtk

May 8th, 2016
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.19 KB | None | 0 0
  1. from gi.repository import Gtk as gtk
  2. from gi.repository import Gdk as gdk
  3. # from gi.repository import Gio as gio
  4. from gi.repository import GObject as gobject
  5. from gi.repository import Wnck as wnck
  6.  
  7. from wpsettings import IOR
  8. import wptool
  9.  
  10. import os
  11. import sys
  12.  
  13. class Main:
  14.     def __init__(self,*args):
  15.         #create aliases for folders#
  16.         folderWorkdir = IOR.settings["folderWorkdir"]
  17.         folderResources = IOR.settings["folderResources"]
  18.         folderThemes = IOR.settings["folderThemes"]
  19.         folderThemeName = IOR.settings["folderThemeName"]
  20.         folderIcons = IOR.settings["folderIcons"]
  21.         folderPictures = IOR.settings["folderPictures"]
  22.         folderCss = IOR.settings["folderCss"]
  23.         fileCss = IOR.settings["fileCss"]
  24.        
  25.         #init css provider#
  26.         cssProvider = gtk.CssProvider()
  27.         cssOpenFile = open(("/".join(folderThemes+folderThemeName+folderCss+fileCss["wpstart"]),"rb"))
  28.         cssOpenFile.close()
  29.         cssStyle.load_from_data(cssOpenFile.read())
  30.  
  31.         gtk.StyleContext.add_provider_for_screen(
  32.             gdk.Screen.get_default(),
  33.             cssStyle,
  34.             gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
  35.             )
  36.  
  37.         #set variables#
  38.         self.buttonMenuSlideBool = False
  39.  
  40.         #create main window#
  41.         windowMain = gtk.Window()
  42.         windowMain.set_size_request(gdk.Screen.get_default().get_width(),0)
  43.         windowMain.set_title(IOR.settings[IOR.currentLocale]["settingsTitles"]["taskbarMain"])
  44.         windowMain.set_name("windowMain")
  45.         windowMain.move(0,0)
  46.         windowMain.set_keep_above(True)
  47.         windowMain.set_resizable(False)
  48.         windowMain.set_decorated(False)
  49.         windowMain.set_border_width(0)
  50.         windowMain.connect("destroy",lambda e: gtk.main_quit())
  51.  
  52.         #create widgets for "categories place"#
  53.         boxhMain = gtk.HBox()
  54.  
  55.         scrolledwindowCategories = gtk.ScrolledWindow()
  56.         scrolledwindowCategories.set_policy(
  57.             gtk.PolicyType.AUTOMATIC,
  58.             gtk.PolicyType.NEVER
  59.             )
  60.         scrolledwindowCategories.set_size_request(20,20)
  61.        
  62.         viewportCategories = gtk.Viewport()
  63.         viewportCategories.add(boxhMain)
  64.         windowMain.add(viewportCategories)
  65.  
  66.         notebookCategories = gtk.Notebook()
  67.         boxhMain.add(notebookCategories)
  68.  
  69.         #call "CreateNotebookWithIcon"#
  70.         self.CreateNotebook(0,notebookCategories)
  71.  
  72.         #do some magic with WNCK#
  73.         self.screenChecker = wnck.Screen.get_default()
  74.         self.screenChecker.connect("active-window-changed", self.RefreshItAgain)
  75.         self.screenChecker.connect("active-workspace-changed", self.RefreshIt)
  76.         self.screenChecker.connect("window-opened", self.RefreshIt)
  77.         self.screenChecker.connect("window-closed", self.RefreshIt)
  78.          
  79.         self.screenChecker.get_active_workspace()
  80.         self.screenChecker.get_active_window()
  81.         self.screenChecker.get_windows()
  82.         self.screenChecker.get_worspace()
  83.  
  84.         #create appbar box and window#
  85.         self.boxAppbarButtons = gtk.HBox()
  86.         self.boxAppbarButtons.set_name("boxAppbarButtons")
  87.         self.boxAppbarButtons.show()
  88.  
  89.         windowAppbar = gtk.Window()
  90.         windowAppbar.set_title(IOR.settings[IOR.currentLocale]["settingsTitles"]["appbarMain"])
  91.         windowAppbar.set_size_request(200,50)
  92.         windowAppbar.set_decorated(True)
  93.         windowAppbar.set_keep_above(True)
  94.         windowAppbar.add(self.boxAppbarButtons)
  95.  
  96.         windowAppbarHeader = gtk.HeaderBar()
  97.         windowAppbarHeader.props.title = ""
  98.         windowAppbar.set_titlebar(windowAppbarHeader)
  99.         windowAppbar.show_all()
  100.  
  101.         #move this shit to the bottom#
  102.         windowAppbar.move(
  103.             gdk.Screen.get_default().get_width()/2-100,
  104.             gdk.Screen.get_default().get_height()
  105.             )
  106.  
  107.         gobject.timeout_add(2,self.RefreshIt)
  108.  
  109.         windowMain.show_all()
  110.         gtk.main()
  111.  
  112.     def CreateNotebook(self,value,parent):
  113.         root = IOR.settings[IOR.currentLocale]["settingsWidgetCategories"]
  114.         key = list(root.values())
  115.         value = [key[i] for i in range(len(root))]
  116.  
  117.         if value == 0:
  118.             #create container for app buttons#
  119.             self.boxCategories = gtk.Box()
  120.             self.boxCategories.set_size_request(gdk.Screen.get_default().get_width,0)
  121.  
  122.             #get all icon names and sizes put it to the created buttons#
  123.             for i in range(len([i[0] for i in root])):
  124.                 pixbuffer = gtk.IconTheme.get_default().load_icon(
  125.                     root[i][1],
  126.                     root[i][2]
  127.                     )
  128.  
  129.                 image = gtk.Image()
  130.                 image.set_from_pixbuf(pixbuffer)
  131.  
  132.                 parent.append_page(self.boxCategories,image)
  133.  
  134.                 self.buttonMenuSlide = gtk.Button()
  135.                 self.buttonMenuSlide.set_label(IOR.settings[IOR.currentLocale]["settingsTitles"]["buttonMenuSlideOpen"])
  136.                 self.buttonMenuSlide.set_size_request(gdk.Screen.get_default().get_width(),0)
  137.                 self.buttonMenuSlide.set_name("buttonMenuSlide")
  138.                 self.buttonMenuSlide.connect("clicked",self.menuSlideChange)
  139.  
  140.                 self.boxCategories.add(self.buttonMenuSlide)
  141.                 self.buttonMenuSlide.show()
  142.  
  143.     def ButtonMenuSlideChange(self,enter):
  144.         if self.buttonMenuSlideBool == False:
  145.             self.buttonMenuSlide.set_label(IOR.settings[IOR.currentLocale]["settingsTitles"]["buttonMenuSlideClose"])
  146.             self.boxCategories.set_size_request(
  147.                 gdk.Screen.get_default().get_width(),
  148.                 gdk.Screen.get_default().get_height()
  149.                 )
  150.             self.buttonMenuSlideBool = True
  151.  
  152.         else:
  153.             self.buttonMenuSlide.set_label(IOR.settings[IOR.currentLocale]["settingsTitles"]["buttonMenuSlideOpen"])
  154.             self.boxCategories.set_size_request(gdk.Screen.get_default().get_width(),0)
  155.  
  156.     def Activate(self,checker,widnow):
  157.         widnow.activate(int(gobject.get_current_time()))
  158.  
  159.     def RefreshItAgain(self,checker,widnow):
  160.         try:
  161.             windowActive = self.checker.get_active_window()
  162.             for b in self.boxAppbarButtons.get_children():
  163.                 b.set_active(b.window == window)
  164.  
  165.         except Exception:
  166.             pass
  167.  
  168.     def RefreshIt(self,*args):
  169.         for b in self.boxAppbarButtons.get_children():
  170.             self.boxAppbarButtons.remove(b)
  171.  
  172.         workspaceActive = self.checker.get_active_workspace()
  173.         windowActive = self.checker.get_active_window()
  174.  
  175.         for w in self.checker.get_windows():
  176.             if w.get_workspace() == workspaceActive:
  177.                 buttonApp = gtk.ToggleButton()
  178.                 buttonApp.set_relief(gtk.ReliefType.NONE)
  179.                 buttonApp.set_name("appbarButton")
  180.                 buttonApp.w = w
  181.                 buttonApp.set_active(w == windowActive)
  182.                 buttonAppIcon = w.get_icon()
  183.                 buttonApp.set_image(gtk.Image.new_from_pixbuf(buttonAppIcon))
  184.                 buttonApp.set_tooltip_text(w.get_name())
  185.                 buttonApp.connect("clicked",self.Activate,w)
  186.                 buttonApp.show()
  187.                 self.boxAppbarButtons.pack_start(buttonApp,False,False,0)
  188.  
  189. Main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement