Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from gi.repository import Gtk as gtk
- from gi.repository import Gdk as gdk
- # from gi.repository import Gio as gio
- from gi.repository import GObject as gobject
- from gi.repository import Wnck as wnck
- from wpsettings import IOR
- import wptool
- import os
- import sys
- class Main:
- def __init__(self,*args):
- #create aliases for folders#
- folderWorkdir = IOR.settings["folderWorkdir"]
- folderResources = IOR.settings["folderResources"]
- folderThemes = IOR.settings["folderThemes"]
- folderThemeName = IOR.settings["folderThemeName"]
- folderIcons = IOR.settings["folderIcons"]
- folderPictures = IOR.settings["folderPictures"]
- folderCss = IOR.settings["folderCss"]
- fileCss = IOR.settings["fileCss"]
- #init css provider#
- cssProvider = gtk.CssProvider()
- cssOpenFile = open(("/".join(folderThemes+folderThemeName+folderCss+fileCss["wpstart"]),"rb"))
- cssOpenFile.close()
- cssStyle.load_from_data(cssOpenFile.read())
- gtk.StyleContext.add_provider_for_screen(
- gdk.Screen.get_default(),
- cssStyle,
- gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
- )
- #set variables#
- self.buttonMenuSlideBool = False
- #create main window#
- windowMain = gtk.Window()
- windowMain.set_size_request(gdk.Screen.get_default().get_width(),0)
- windowMain.set_title(IOR.settings[IOR.currentLocale]["settingsTitles"]["taskbarMain"])
- windowMain.set_name("windowMain")
- windowMain.move(0,0)
- windowMain.set_keep_above(True)
- windowMain.set_resizable(False)
- windowMain.set_decorated(False)
- windowMain.set_border_width(0)
- windowMain.connect("destroy",lambda e: gtk.main_quit())
- #create widgets for "categories place"#
- boxhMain = gtk.HBox()
- scrolledwindowCategories = gtk.ScrolledWindow()
- scrolledwindowCategories.set_policy(
- gtk.PolicyType.AUTOMATIC,
- gtk.PolicyType.NEVER
- )
- scrolledwindowCategories.set_size_request(20,20)
- viewportCategories = gtk.Viewport()
- viewportCategories.add(boxhMain)
- windowMain.add(viewportCategories)
- notebookCategories = gtk.Notebook()
- boxhMain.add(notebookCategories)
- #call "CreateNotebookWithIcon"#
- self.CreateNotebook(0,notebookCategories)
- #do some magic with WNCK#
- self.screenChecker = wnck.Screen.get_default()
- self.screenChecker.connect("active-window-changed", self.RefreshItAgain)
- self.screenChecker.connect("active-workspace-changed", self.RefreshIt)
- self.screenChecker.connect("window-opened", self.RefreshIt)
- self.screenChecker.connect("window-closed", self.RefreshIt)
- self.screenChecker.get_active_workspace()
- self.screenChecker.get_active_window()
- self.screenChecker.get_windows()
- self.screenChecker.get_worspace()
- #create appbar box and window#
- self.boxAppbarButtons = gtk.HBox()
- self.boxAppbarButtons.set_name("boxAppbarButtons")
- self.boxAppbarButtons.show()
- windowAppbar = gtk.Window()
- windowAppbar.set_title(IOR.settings[IOR.currentLocale]["settingsTitles"]["appbarMain"])
- windowAppbar.set_size_request(200,50)
- windowAppbar.set_decorated(True)
- windowAppbar.set_keep_above(True)
- windowAppbar.add(self.boxAppbarButtons)
- windowAppbarHeader = gtk.HeaderBar()
- windowAppbarHeader.props.title = ""
- windowAppbar.set_titlebar(windowAppbarHeader)
- windowAppbar.show_all()
- #move this shit to the bottom#
- windowAppbar.move(
- gdk.Screen.get_default().get_width()/2-100,
- gdk.Screen.get_default().get_height()
- )
- gobject.timeout_add(2,self.RefreshIt)
- windowMain.show_all()
- gtk.main()
- def CreateNotebook(self,value,parent):
- root = IOR.settings[IOR.currentLocale]["settingsWidgetCategories"]
- key = list(root.values())
- value = [key[i] for i in range(len(root))]
- if value == 0:
- #create container for app buttons#
- self.boxCategories = gtk.Box()
- self.boxCategories.set_size_request(gdk.Screen.get_default().get_width,0)
- #get all icon names and sizes put it to the created buttons#
- for i in range(len([i[0] for i in root])):
- pixbuffer = gtk.IconTheme.get_default().load_icon(
- root[i][1],
- root[i][2]
- )
- image = gtk.Image()
- image.set_from_pixbuf(pixbuffer)
- parent.append_page(self.boxCategories,image)
- self.buttonMenuSlide = gtk.Button()
- self.buttonMenuSlide.set_label(IOR.settings[IOR.currentLocale]["settingsTitles"]["buttonMenuSlideOpen"])
- self.buttonMenuSlide.set_size_request(gdk.Screen.get_default().get_width(),0)
- self.buttonMenuSlide.set_name("buttonMenuSlide")
- self.buttonMenuSlide.connect("clicked",self.menuSlideChange)
- self.boxCategories.add(self.buttonMenuSlide)
- self.buttonMenuSlide.show()
- def ButtonMenuSlideChange(self,enter):
- if self.buttonMenuSlideBool == False:
- self.buttonMenuSlide.set_label(IOR.settings[IOR.currentLocale]["settingsTitles"]["buttonMenuSlideClose"])
- self.boxCategories.set_size_request(
- gdk.Screen.get_default().get_width(),
- gdk.Screen.get_default().get_height()
- )
- self.buttonMenuSlideBool = True
- else:
- self.buttonMenuSlide.set_label(IOR.settings[IOR.currentLocale]["settingsTitles"]["buttonMenuSlideOpen"])
- self.boxCategories.set_size_request(gdk.Screen.get_default().get_width(),0)
- def Activate(self,checker,widnow):
- widnow.activate(int(gobject.get_current_time()))
- def RefreshItAgain(self,checker,widnow):
- try:
- windowActive = self.checker.get_active_window()
- for b in self.boxAppbarButtons.get_children():
- b.set_active(b.window == window)
- except Exception:
- pass
- def RefreshIt(self,*args):
- for b in self.boxAppbarButtons.get_children():
- self.boxAppbarButtons.remove(b)
- workspaceActive = self.checker.get_active_workspace()
- windowActive = self.checker.get_active_window()
- for w in self.checker.get_windows():
- if w.get_workspace() == workspaceActive:
- buttonApp = gtk.ToggleButton()
- buttonApp.set_relief(gtk.ReliefType.NONE)
- buttonApp.set_name("appbarButton")
- buttonApp.w = w
- buttonApp.set_active(w == windowActive)
- buttonAppIcon = w.get_icon()
- buttonApp.set_image(gtk.Image.new_from_pixbuf(buttonAppIcon))
- buttonApp.set_tooltip_text(w.get_name())
- buttonApp.connect("clicked",self.Activate,w)
- buttonApp.show()
- self.boxAppbarButtons.pack_start(buttonApp,False,False,0)
- Main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement