Exemple #1
0
    def __init__(self, mintMenuWin, toggleButton, de):

        self.Win = mintMenuWin
        self.toggleButton = toggleButton
        self.de = de

        self.builder = Gtk.Builder()
        #The Glade file for the plugin
        self.builder.add_from_file(
            os.path.join(os.path.dirname(__file__), "recent.glade"))

        #Set 'window' property for the plugin (Must be the root widget)
        self.window = self.builder.get_object("window1")

        #Set 'heading' property for plugin
        self.heading = _("Recently used")

        #This should be the first item added to the window in glade
        self.content_holder = self.builder.get_object("eventbox1")

        self.recentBox = self.builder.get_object("RecentBox")
        self.recentAppBox = self.builder.get_object("RecentApps")
        RecentHelper.recentAppBox = self.recentAppBox

        #self.recentApps = []

        self.recentVBox = self.builder.get_object("vbox1")

        #Specify plugin width
        self.width = 250

        #Plugin icon
        self.icon = 'mate-folder.png'

        self.settings = EasyGSettings("com.linuxmint.mintmenu.plugins.recent")

        self.settings.notifyAdd('height', self.RegenPlugin)
        self.settings.notifyAdd('width', self.RegenPlugin)
        self.settings.notifyAdd('num-recent-docs', self.RegenPlugin)
        self.settings.notifyAdd('recent-font-size', self.RegenPlugin)

        self.appSettings = EasyGSettings(
            "com.linuxmint.mintmenu.plugins.applications")
        self.appSettings.notifyAdd("icon-size", self.RegenPlugin)

        self.FileList = []
        self.RecManagerInstance = Gtk.RecentManager.get_default()
        self.recentManagerId = self.RecManagerInstance.connect(
            "changed", self.DoRecent)

        self.RegenPlugin()
        self.builder.get_object("RecentTabs").set_current_page(0)

        #Connect event handlers
        self.builder.get_object("ClrBtn").connect("clicked", self.clrmenu)
Exemple #2
0
    def __init__( self, mintMenuWin, toggleButton, de ):

        self.Win = mintMenuWin
        self.toggleButton = toggleButton
        self.de = de

        self.builder = Gtk.Builder()
        #The Glade file for the plugin
        self.builder.add_from_file (os.path.join( os.path.dirname( __file__ ), "recent.glade" ))

        #Set 'window' property for the plugin (Must be the root widget)
        self.window = self.builder.get_object( "window1" )

        #Set 'heading' property for plugin
        self.heading = _("Recently used")

        #This should be the first item added to the window in glade
        self.content_holder = self.builder.get_object( "eventbox1" )

        self.recentBox = self.builder.get_object("RecentBox")
        self.recentAppBox = self.builder.get_object("RecentApps")
        RecentHelper.recentAppBox = self.recentAppBox
        
        #self.recentApps = []
        
        self.recentVBox = self.builder.get_object( "vbox1" )

        #Specify plugin width
        self.width = 250

        #Plugin icon
        self.icon = 'mate-folder.png'

        self.settings = EasyGSettings ("com.linuxmint.mintmenu.plugins.recent")

        self.settings.notifyAdd( 'height', self.RegenPlugin )
        self.settings.notifyAdd( 'width', self.RegenPlugin )
        self.settings.notifyAdd( 'num-recent-docs', self.RegenPlugin )
        self.settings.notifyAdd( 'recent-font-size', self.RegenPlugin )

        self.appSettings = EasyGSettings( "com.linuxmint.mintmenu.plugins.applications" )
        self.appSettings.notifyAdd( "icon-size", self.RegenPlugin )
        
        self.FileList=[]
        self.RecManagerInstance = Gtk.RecentManager.get_default()
        self.recentManagerId = self.RecManagerInstance.connect("changed", self.DoRecent)

        self.RegenPlugin()
        self.builder.get_object( "RecentTabs" ).set_current_page(0)

        #Connect event handlers
        self.builder.get_object("ClrBtn").connect("clicked", self.clrmenu)
Exemple #3
0
    def __init__(self, mintMenuWin, toggleButton, de):

        self.mintMenuWin = mintMenuWin
        self.toggleButton = toggleButton
        self.de = de

        self.builder = Gtk.Builder()
        self.builder.add_from_file(
            os.path.join(os.path.dirname(__file__), "system_management.glade"))

        self.systemBtnHolder = self.builder.get_object("system_button_holder")
        self.editableBtnHolder = self.builder.get_object(
            "editable_button_holder")
        self.scrolledWindow = self.builder.get_object("scrolledwindow2")

        # These properties are NECESSARY to maintain consistency

        # Set 'window' property for the plugin (Must be the root widget)
        self.window = self.builder.get_object("mainWindow")

        # Set 'heading' property for plugin
        self.heading = _("System")

        # This should be the first item added to the window in glade
        self.content_holder = self.builder.get_object("System")

        # Items to get custom colors
        self.itemstocolor = [self.builder.get_object("viewport2")]

        # Gconf stuff
        self.settings = EasyGSettings(
            "com.linuxmint.mintmenu.plugins.system_management")

        self.settings.notifyAdd("icon-size", self.RegenPlugin)
        self.settings.notifyAdd("show-control-center", self.RegenPlugin)
        self.settings.notifyAdd("show-lock-screen", self.RegenPlugin)
        self.settings.notifyAdd("show-logout", self.RegenPlugin)
        self.settings.notifyAdd("show-package-manager", self.RegenPlugin)
        self.settings.notifyAdd("show-software-manager", self.RegenPlugin)
        self.settings.notifyAdd("show-terminal", self.RegenPlugin)
        self.settings.notifyAdd("show-quit", self.RegenPlugin)
        self.settings.notifyAdd("allow-scrollbar", self.RegenPlugin)
        self.settings.notifyAdd("height", self.changePluginSize)
        self.settings.notifyAdd("width", self.changePluginSize)
        self.settings.bindGSettingsEntryToVar("bool", "sticky", self, "sticky")

        self.GetGSettingsEntries()

        self.content_holder.set_size_request(self.width, self.height)
Exemple #4
0
    def __init__(self, mintMenuWin, toggleButton, de):

        self.mintMenuWin = mintMenuWin
        self.toggleButton = toggleButton
        self.de = de

        # Read UI file
        builder = Gtk.Builder()
        builder.add_from_file(
            os.path.join(os.path.dirname(__file__), "places.glade"))

        self.placesBtnHolder = builder.get_object("places_button_holder")
        self.editableBtnHolder = builder.get_object("editable_button_holder")
        self.scrolledWindow = builder.get_object("scrolledwindow2")
        # These properties are NECESSARY to maintain consistency

        # Set 'window' property for the plugin (Must be the root widget)
        self.window = builder.get_object("mainWindow")

        # Set 'heading' property for plugin
        self.heading = _("Places")

        # This should be the first item added to the window in glade
        self.content_holder = builder.get_object("Places")

        # Items to get custom colors
        self.itemstocolor = [builder.get_object("viewport2")]

        # Settings
        self.settings = EasyGSettings("com.linuxmint.mintmenu.plugins.places")

        self.settings.notifyAdd("icon-size", self.RegenPlugin)
        self.settings.notifyAdd("show-computer", self.RegenPlugin)
        self.settings.notifyAdd("show-desktop", self.RegenPlugin)
        self.settings.notifyAdd("show-home_folder", self.RegenPlugin)
        self.settings.notifyAdd("show-network", self.RegenPlugin)
        self.settings.notifyAdd("show-trash", self.RegenPlugin)
        self.settings.notifyAdd("custom-names", self.RegenPlugin)
        self.settings.notifyAdd("allow-scrollbar", self.RegenPlugin)
        self.settings.notifyAdd("show-gtk-bookmarks", self.RegenPlugin)
        self.settings.notifyAdd("height", self.changePluginSize)
        self.settings.notifyAdd("width", self.changePluginSize)

        self.loadSettings()

        self.content_holder.set_size_request(self.width, self.height)
Exemple #5
0
    def __init__( self, mintMenuWin, toggleButton, de ):

        self.mintMenuWin = mintMenuWin
        self.toggleButton = toggleButton
        self.de = de


        self.builder = Gtk.Builder()
        self.builder.add_from_file (os.path.join( os.path.dirname( __file__ ), "system_management.glade" ))

        self.systemBtnHolder    = self.builder.get_object( "system_button_holder" )
        self.editableBtnHolder  = self.builder.get_object( "editable_button_holder" )
        self.scrolledWindow = self.builder.get_object( "scrolledwindow2" )

        # These properties are NECESSARY to maintain consistency

        # Set 'window' property for the plugin (Must be the root widget)
        self.window = self.builder.get_object( "mainWindow" )

        # Set 'heading' property for plugin
        self.heading = _("System")

        # This should be the first item added to the window in glade
        self.content_holder = self.builder.get_object( "System" )

        # Items to get custom colors
        self.itemstocolor = [ self.builder.get_object( "viewport2" ) ]

        # Gconf stuff
        self.settings = EasyGSettings( "com.linuxmint.mintmenu.plugins.system_management" )

        self.settings.notifyAdd( "icon-size", self.RegenPlugin )
        self.settings.notifyAdd( "show-control-center", self.RegenPlugin )
        self.settings.notifyAdd( "show-lock-screen", self.RegenPlugin )
        self.settings.notifyAdd( "show-logout", self.RegenPlugin )
        self.settings.notifyAdd( "show-package-manager", self.RegenPlugin )
        self.settings.notifyAdd( "show-software-manager", self.RegenPlugin )
        self.settings.notifyAdd( "show-terminal", self.RegenPlugin )
        self.settings.notifyAdd( "show-quit", self.RegenPlugin )
        self.settings.notifyAdd( "allow-scrollbar", self.RegenPlugin )
        self.settings.notifyAdd( "height", self.changePluginSize )
        self.settings.notifyAdd( "width", self.changePluginSize )
        self.settings.bindGSettingsEntryToVar( "bool", "sticky", self, "sticky" )

        self.GetGSettingsEntries()

        self.content_holder.set_size_request( self.width, self.height )
Exemple #6
0
    def __init__( self, mintMenuWin, toggleButton, de ):

        self.mintMenuWin = mintMenuWin
        self.toggleButton = toggleButton
        self.de = de

        # Read UI file        
        builder = Gtk.Builder()
        builder.add_from_file(os.path.join( os.path.dirname( __file__ ), "places.glade" ))        
               
        self.placesBtnHolder    = builder.get_object( "places_button_holder" )
        self.editableBtnHolder  = builder.get_object( "editable_button_holder" )
        self.scrolledWindow=builder.get_object("scrolledwindow2")
        # These properties are NECESSARY to maintain consistency

        # Set 'window' property for the plugin (Must be the root widget)
        self.window = builder.get_object( "mainWindow" )

        # Set 'heading' property for plugin
        self.heading = _("Places")

        # This should be the first item added to the window in glade
        self.content_holder = builder.get_object( "Places" )

        # Items to get custom colors
        self.itemstocolor = [ builder.get_object( "viewport2" ) ]

        # Settings        
        self.settings = EasyGSettings("com.linuxmint.mintmenu.plugins.places")

        self.settings.notifyAdd( "icon-size", self.RegenPlugin )
        self.settings.notifyAdd( "show-computer", self.RegenPlugin )
        self.settings.notifyAdd( "show-desktop", self.RegenPlugin )
        self.settings.notifyAdd( "show-home_folder", self.RegenPlugin )
        self.settings.notifyAdd( "show-network", self.RegenPlugin )
        self.settings.notifyAdd( "show-trash", self.RegenPlugin )
        self.settings.notifyAdd( "custom-names", self.RegenPlugin )
        self.settings.notifyAdd( "custom-paths", self.RegenPlugin )
        self.settings.notifyAdd( "allow-scrollbar", self.RegenPlugin )
        self.settings.notifyAdd( "show-gtk-bookmarks", self.RegenPlugin )
        self.settings.notifyAdd( "height", self.changePluginSize )
        self.settings.notifyAdd( "width", self.changePluginSize )        

        self.loadSettings()

        self.content_holder.set_size_request( self.width, self.height )                            
Exemple #7
0
class pluginclass( object ):

    def __init__( self, mintMenuWin, toggleButton, de ):

        self.mintMenuWin = mintMenuWin
        self.toggleButton = toggleButton
        self.de = de

        # Read UI file        
        builder = Gtk.Builder()
        builder.add_from_file(os.path.join( os.path.dirname( __file__ ), "places.glade" ))        
               
        self.placesBtnHolder    = builder.get_object( "places_button_holder" )
        self.editableBtnHolder  = builder.get_object( "editable_button_holder" )
        self.scrolledWindow=builder.get_object("scrolledwindow2")
        # These properties are NECESSARY to maintain consistency

        # Set 'window' property for the plugin (Must be the root widget)
        self.window = builder.get_object( "mainWindow" )

        # Set 'heading' property for plugin
        self.heading = _("Places")

        # This should be the first item added to the window in glade
        self.content_holder = builder.get_object( "Places" )

        # Items to get custom colors
        self.itemstocolor = [ builder.get_object( "viewport2" ) ]

        # Settings        
        self.settings = EasyGSettings("com.linuxmint.mintmenu.plugins.places")

        self.settings.notifyAdd( "icon-size", self.RegenPlugin )
        self.settings.notifyAdd( "show-computer", self.RegenPlugin )
        self.settings.notifyAdd( "show-desktop", self.RegenPlugin )
        self.settings.notifyAdd( "show-home_folder", self.RegenPlugin )
        self.settings.notifyAdd( "show-network", self.RegenPlugin )
        self.settings.notifyAdd( "show-trash", self.RegenPlugin )
        self.settings.notifyAdd( "custom-names", self.RegenPlugin )
        self.settings.notifyAdd( "allow-scrollbar", self.RegenPlugin )
        self.settings.notifyAdd( "show-gtk-bookmarks", self.RegenPlugin )
        self.settings.notifyAdd( "height", self.changePluginSize )
        self.settings.notifyAdd( "width", self.changePluginSize )        

        self.loadSettings()

        self.content_holder.set_size_request( self.width, self.height )                            

    def wake (self) :
        if ( self.showtrash == True ):
            self.refreshTrash()

    def destroy( self ):
        self.settings.notifyRemoveAll()

    def changePluginSize( self, settings, key, args = None):
        self.allowScrollbar = self.settings.get( "bool", "allow-scrollbar" )
        self.width = self.settings.get( "int", "width" )               
        if (self.allowScrollbar == False):
            self.height = -1
            self.scrolledWindow.set_policy( Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.NEVER )
        else:
            self.scrolledWindow.set_policy( Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC )
            self.height = self.settings.get( "int", "height" )
        self.content_holder.set_size_request( self.width, self.height )

    def RegenPlugin( self, *args, **kargs ):
        self.loadSettings()
        self.ClearAll()
        self.do_standard_places()
        self.do_custom_places()
        self.do_gtk_bookmarks()

    def loadSettings( self ):
        self.width = self.settings.get( "int", "width" )
        self.allowScrollbar = self.settings.get( "bool", "allow-scrollbar" )
        self.showGTKBookmarks = self.settings.get( "bool", "show-gtk-bookmarks" )
        self.scrolledWindow.set_policy( Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC )
        self.height = self.settings.get( "int", "height" )
        self.content_holder.set_size_request( self.width, self.height )
        if (self.allowScrollbar == False):
            self.height = -1
            self.scrolledWindow.set_policy( Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.NEVER )
        self.content_holder.set_size_request( self.width, self.height )        
        self.iconsize = self.settings.get( "int", "icon-size" )

        # Check default items

        self.showcomputer = self.settings.get( "bool", "show-computer" )
        self.showhomefolder = self.settings.get( "bool", "show-home-folder" )
        self.shownetwork = self.settings.get( "bool", "show-network" )
        self.showdesktop = self.settings.get( "bool", "show-desktop" )
        self.showtrash = self.settings.get( "bool", "show-trash" )

        # Get paths for custom items
        self.custompaths = self.settings.get( "list-string", "custom-paths" )

        # Get names for custom items
        self.customnames = self.settings.get( "list-string", "custom-names" )

        # Hide vertical dotted separator
        self.hideseparator = self.settings.get( "bool", "hide-separator" )
        # Plugin icon
        self.icon = self.settings.get( "string", "icon" )
        # Allow plugin to be minimized to the left plugin pane
        self.sticky = self.settings.get( "bool", "sticky")
        self.minimized = self.settings.get( "bool", "minimized")
        
    def ClearAll(self):
        for child in self.placesBtnHolder.get_children():
            child.destroy()
        for child in self.editableBtnHolder.get_children():
            child.destroy()

    #Add standard places
    def do_standard_places( self ):

        if ( self.showcomputer == True ):
            Button1 = easyButton( "computer", self.iconsize, [_("Computer")], -1, -1 )
            if self.de == "mate":
                Button1.connect( "clicked", self.ButtonClicked, "caja computer:" )
            else:
                Button1.connect( "clicked", self.ButtonClicked, "xdg-open /" )
            Button1.show()
            self.placesBtnHolder.pack_start( Button1, False, False, 0)
            self.mintMenuWin.setTooltip( Button1, _("Browse all local and remote disks and folders accessible from this computer") )

        if ( self.showhomefolder == True ):
            Button2 = easyButton( "user-home", self.iconsize, [_("Home Folder")], -1, -1 )
            if self.de == "mate":
                Button2.connect( "clicked", self.ButtonClicked, "caja %s " % home )
            else:
                Button2.connect( "clicked", self.ButtonClicked, "xdg-open %s " % home )
            Button2.show()
            self.placesBtnHolder.pack_start( Button2, False, False, 0)
            self.mintMenuWin.setTooltip( Button2, _("Open your personal folder") )

        if ( self.shownetwork == True and self.de == "mate"):
            mate_settings = Gio.Settings.new("org.mate.interface")
            icon_theme = mate_settings.get_string( "icon-theme" )
            if "Mint-X" in icon_theme:
                Button3 = easyButton( "notification-network-ethernet-connected", self.iconsize, [_("Network")], -1, -1)
            else:
                Button3 = easyButton( "network-workgroup", self.iconsize, [_("Network")], -1, -1)
            if self.de == "mate":
                Button3.connect( "clicked", self.ButtonClicked, "caja network:" )
            else:
                Button3.connect( "clicked", self.ButtonClicked, "xdg-open network:" )
            Button3.show()
            self.placesBtnHolder.pack_start( Button3, False, False, 0)
            self.mintMenuWin.setTooltip( Button3, _("Browse bookmarked and local network locations") )

        if ( self.showdesktop == True ):
            # Determine where the Desktop folder is (could be localized)
            desktopDir = home + "/Desktop"
            try:
                import sys
                sys.path.append('/usr/lib/linuxmint/common')
                from configobj import ConfigObj
                config = ConfigObj(home + "/.config/user-dirs.dirs")
                tmpdesktopDir = config['XDG_DESKTOP_DIR']
                tmpdesktopDir = commands.getoutput("echo " + tmpdesktopDir)
                if os.path.exists(tmpdesktopDir):
                    desktopDir = tmpdesktopDir
            except Exception, detail:
                print detail
            Button4 = easyButton( "desktop", self.iconsize, [_("Desktop")], -1, -1 )
            if self.de == "mate":
                Button4.connect( "clicked", self.ButtonClicked, "caja \"" + desktopDir + "\"")
            else:
                Button4.connect( "clicked", self.ButtonClicked, "xdg-open \"" + desktopDir + "\"")
            Button4.show()
            self.placesBtnHolder.pack_start( Button4, False, False, 0)
            self.mintMenuWin.setTooltip( Button4, _("Browse items placed on the desktop") )

        if ( self.showtrash == True ):
            self.trashButton = easyButton( "user-trash", self.iconsize, [_("Trash")], -1, -1 )
            if self.de == "xfce":
                self.trashButton.connect( "clicked", self.ButtonClicked, "thunar trash:" )
            elif self.de == "mate":
                self.trashButton.connect( "clicked", self.ButtonClicked, "caja trash:" )
            else:
                self.trashButton.connect( "clicked", self.ButtonClicked, "xdg-open trash:" )
            self.trashButton.show()
            self.trashButton.connect( "button-release-event", self.trashPopup )
            self.refreshTrash()
            self.placesBtnHolder.pack_start( self.trashButton, False, False, 0)
            self.mintMenuWin.setTooltip( self.trashButton, _("Browse deleted files") )
    def __init__( self ):

        self.path = os.path.abspath( os.path.dirname( sys.argv[0] ) )

        # Load glade file and extract widgets
        self.builder = Gtk.Builder()

        self.builder.add_from_file (os.path.join(self.path, "mintMenuConfig.glade" ))
        self.mainWindow=self.builder.get_object("mainWindow")

        #i18n
        self.mainWindow.set_title(_("Menu preferences"))
        self.mainWindow.set_icon_from_file("/usr/lib/linuxmint/mintMenu/icon.svg")

        self.builder.get_object("startWithFavorites").set_label(_("Always start with favorites pane"))
        self.builder.get_object("showButtonIcon").set_label(_("Show button icon"))
        self.builder.get_object("useCustomColors").set_label(_("Use custom colors"))
        self.builder.get_object("showRecentPlugin").set_label(_("Show recent documents plugin"))
        self.builder.get_object("showApplicationsPlugin").set_label(_("Show applications plugin"))
        self.builder.get_object("showSystemPlugin").set_label(_("Show system plugin"))
        self.builder.get_object("showPlacesPlugin").set_label(_("Show places plugin"))

        self.builder.get_object("showAppComments").set_label(_("Show application comments"))
        self.builder.get_object("showCategoryIcons").set_label(_("Show category icons"))
        self.builder.get_object("hover").set_label(_("Hover"))
        self.builder.get_object("remember_filter").set_label(_("Remember the last category or search"))
        self.builder.get_object("use_apt").set_label(_("Search for packages to install"))
        self.builder.get_object("swapGeneric").set_label(_("Swap name and generic name"))

        self.builder.get_object("label11").set_text(_("Border width:"))
        self.builder.get_object("label25").set_text(_("pixels"))

        self.builder.get_object("label8").set_text(_("Opacity:"))
        self.builder.get_object("label9").set_text("%")

        self.builder.get_object("buttonTextLabel").set_text(_("Button text:"))
        self.builder.get_object("label1").set_text(_("Options"))
        self.builder.get_object("label23").set_text(_("Applications"))

        self.builder.get_object("colorsLabel").set_text(_("Theme"))
        self.builder.get_object("favLabel").set_text(_("Favorites"))
        self.builder.get_object("mainbuttonLabel").set_text(_("Main button"))
        self.builder.get_object("pluginsLabel").set_text(_("Plugins"))

        self.builder.get_object("backgroundColorLabel").set_text(_("Background:"))
        self.builder.get_object("headingColorLabel").set_text(_("Headings:"))
        self.builder.get_object("borderColorLabel").set_text(_("Borders:"))
        self.builder.get_object("themeLabel").set_text(_("Theme:"))

        #self.builder.get_object("applicationsLabel").set_text(_("Applications"))
        #self.builder.get_object("favoritesLabel").set_text(_("Favorites"))
        self.builder.get_object("numberColumnsLabel").set_text(_("Number of columns:"))
        self.builder.get_object("iconSizeLabel").set_text(_("Icon size:"))
        self.builder.get_object("iconSizeLabel2").set_text(_("Icon size:"))
        self.builder.get_object("placesIconSizeLabel").set_text(_("Icon size:"))
        self.builder.get_object("systemIconSizeLabel").set_text(_("Icon size:"))
        self.builder.get_object("hoverLabel").set_text(_("Hover delay (ms):"))
        self.builder.get_object("label4").set_text(_("Button icon:"))
        self.builder.get_object("label5").set_text(_("Search command:"))

        self.builder.get_object("placesLabel").set_text(_("Places"))
        self.builder.get_object("allowscrollbarcheckbutton").set_label(_("Allow Scrollbar"))
        self.builder.get_object("showgtkbookmarkscheckbutton").set_label(_("Show GTK Bookmarks"))
        self.builder.get_object("placesHeightEntryLabel").set_text(_("Height:"))
        self.builder.get_object("defaultPlacesFrameLabel").set_text(_("Toggle Default Places:"))
        self.builder.get_object("computercheckbutton").set_label(_("Computer"))
        self.builder.get_object("homecheckbutton").set_label(_("Home Folder"))
        self.builder.get_object("networkcheckbutton").set_label(_("Network"))
        self.builder.get_object("desktopcheckbutton").set_label(_("Desktop"))
        self.builder.get_object("trashcheckbutton").set_label(_("Trash"))
        self.builder.get_object("customPlacesFrameLabel").set_text(_("Custom Places:"))

        self.builder.get_object("systemLabel").set_text(_("System"))
        self.builder.get_object("allowscrollbarcheckbutton1").set_label(_("Allow Scrollbar"))
        self.builder.get_object("systemHeightEntryLabel").set_text(_("Height:"))
        self.builder.get_object("defaultItemsFrameLabel").set_text(_("Toggle Default Items:"))
        self.builder.get_object("softwaremanagercheckbutton").set_label(_("Software Manager"))
        self.builder.get_object("packagemanagercheckbutton").set_label(_("Package Manager"))
        self.builder.get_object("controlcentercheckbutton").set_label(_("Control Center"))
        self.builder.get_object("terminalcheckbutton").set_label(_("Terminal"))
        self.builder.get_object("lockcheckbutton").set_label(_("Lock Screen"))
        self.builder.get_object("logoutcheckbutton").set_label(_("Log Out"))
        self.builder.get_object("quitcheckbutton").set_label(_("Quit"))

        self.editPlaceDialogTitle = (_("Edit Place"))
        self.newPlaceDialogTitle = (_("New Place"))
        self.folderChooserDialogTitle = (_("Select a folder"))

        self.startWithFavorites = self.builder.get_object( "startWithFavorites" )
        self.showAppComments = self.builder.get_object( "showAppComments" )
        self.useAPT = self.builder.get_object( "use_apt" )
        self.showCategoryIcons = self.builder.get_object( "showCategoryIcons" )
        self.showRecentPlugin = self.builder.get_object( "showRecentPlugin" )
        self.showApplicationsPlugin = self.builder.get_object( "showApplicationsPlugin" )
        self.showSystemPlugin = self.builder.get_object( "showSystemPlugin" )
        self.showPlacesPlugin = self.builder.get_object( "showPlacesPlugin" )
        self.swapGeneric = self.builder.get_object("swapGeneric")
        self.hover = self.builder.get_object( "hover" )
        self.hoverDelay = self.builder.get_object( "hoverDelay" )
        self.rememberFilter = self.builder.get_object( "remember_filter" )
        self.iconSize = self.builder.get_object( "iconSize" )
        self.favIconSize = self.builder.get_object( "favIconSize" )
        self.placesIconSize = self.builder.get_object( "placesIconSize" )
        self.systemIconSize = self.builder.get_object( "systemIconSize" )
        self.favCols = self.builder.get_object( "numFavCols" )
        self.borderWidth = self.builder.get_object( "borderWidth" )
        self.opacity = self.builder.get_object( "opacity" )
        self.useCustomColors = self.builder.get_object( "useCustomColors" )
        self.backgroundColor = self.builder.get_object( "backgroundColor" )
        self.borderColor = self.builder.get_object( "borderColor" )
        self.headingColor = self.builder.get_object( "headingColor" )
        self.backgroundColorLabel = self.builder.get_object( "backgroundColorLabel" )
        self.borderColorLabel = self.builder.get_object( "borderColorLabel" )
        self.headingColorLabel = self.builder.get_object( "headingColorLabel" )
        self.showButtonIcon = self.builder.get_object( "showButtonIcon" )
        self.buttonText = self.builder.get_object( "buttonText" )
        self.hotkeyWidget = keybinding.KeybindingWidget(_("Keyboard shortcut:") )
        table = self.builder.get_object( "main_table" )
        table.attach(self.hotkeyWidget, 0, 2, 2, 3, Gtk.AttachOptions.FILL, Gtk.AttachOptions.FILL, 0, 0)
        self.buttonIcon = self.builder.get_object( "buttonIcon" )
        self.buttonIconChooser = self.builder.get_object( "button_icon_chooser" )
        self.image_filter = Gtk.FileFilter()
        self.image_filter.set_name(_("Images"))
        self.image_filter.add_pattern("*.png")
        self.image_filter.add_pattern("*.jpg")
        self.image_filter.add_pattern("*.jpeg")
        self.image_filter.add_pattern("*.bmp")
        self.image_filter.add_pattern("*.ico")
        self.image_filter.add_pattern("*.xpm")
        self.image_filter.add_pattern("*.svg")
        self.buttonIconChooser.add_filter(self.image_filter)
        self.buttonIconChooser.set_filter(self.image_filter)
        self.buttonIconImage = self.builder.get_object("image_button_icon")
        self.searchCommand = self.builder.get_object( "search_command" )
        self.computertoggle = self.builder.get_object( "computercheckbutton" )
        self.homefoldertoggle = self.builder.get_object( "homecheckbutton" )
        self.networktoggle = self.builder.get_object( "networkcheckbutton" )
        self.desktoptoggle = self.builder.get_object( "desktopcheckbutton" )
        self.trashtoggle = self.builder.get_object( "trashcheckbutton" )
        self.customplacestree = self.builder.get_object( "customplacestree" )
        self.allowPlacesScrollbarToggle = self.builder.get_object( "allowscrollbarcheckbutton" )
        self.showgtkbookmarksToggle = self.builder.get_object( "showgtkbookmarkscheckbutton" )
        self.placesHeightButton = self.builder.get_object( "placesHeightSpinButton" )
        if (self.allowPlacesScrollbarToggle.get_active() == False):
            self.placesHeightButton.set_sensitive(False)
        self.allowPlacesScrollbarToggle.connect("toggled", self.togglePlacesHeightEnabled )
        self.softwareManagerToggle = self.builder.get_object( "softwaremanagercheckbutton" )
        self.packageManagerToggle = self.builder.get_object( "packagemanagercheckbutton" )
        self.controlCenterToggle = self.builder.get_object( "controlcentercheckbutton" )
        self.terminalToggle = self.builder.get_object( "terminalcheckbutton" )
        self.lockToggle = self.builder.get_object( "lockcheckbutton" )
        self.logoutToggle = self.builder.get_object( "logoutcheckbutton" )
        self.quitToggle = self.builder.get_object( "quitcheckbutton" )
        self.allowSystemScrollbarToggle = self.builder.get_object( "allowscrollbarcheckbutton1" )
        self.systemHeightButton = self.builder.get_object( "systemHeightSpinButton" )
        if (self.allowSystemScrollbarToggle.get_active() == False): self.systemHeightButton.set_sensitive(False)
        self.allowSystemScrollbarToggle.connect("toggled", self.toggleSystemHeightEnabled )
        if os.path.exists("/usr/bin/mintinstall"):
            self.builder.get_object( "softwaremanagercheckbutton" ).show()
        else:
            self.builder.get_object( "softwaremanagercheckbutton" ).hide()

        self.builder.get_object( "closeButton" ).connect("clicked", Gtk.main_quit )


        self.settings = EasyGSettings( "com.linuxmint.mintmenu" )
        self.settingsApplications = EasyGSettings( "com.linuxmint.mintmenu.plugins.applications" )
        self.settingsPlaces = EasyGSettings( "com.linuxmint.mintmenu.plugins.places" )
        self.settingsSystem = EasyGSettings( "com.linuxmint.mintmenu.plugins.system_management" )

        self.useCustomColors.connect( "toggled", self.toggleUseCustomColors )

        self.bindGSettingsValueToWidget( self.settings, "bool", "start-with-favorites", self.startWithFavorites, "toggled", self.startWithFavorites.set_active, self.startWithFavorites.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "show-application-comments", self.showAppComments, "toggled", self.showAppComments.set_active, self.showAppComments.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "use-apt", self.useAPT, "toggled", self.useAPT.set_active, self.useAPT.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "show-category-icons", self.showCategoryIcons, "toggled", self.showCategoryIcons.set_active, self.showCategoryIcons.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "categories-mouse-over", self.hover, "toggled", self.hover.set_active, self.hover.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "swap-generic-name", self.swapGeneric, "toggled", self.swapGeneric.set_active, self.swapGeneric.get_active )

        self.bindGSettingsValueToWidget( self.settingsApplications, "int", "category-hover-delay", self.hoverDelay, "value-changed", self.hoverDelay.set_value, self.hoverDelay.get_value )
        self.bindGSettingsValueToWidget( self.settingsApplications, "int", "icon-size", self.iconSize, "value-changed", self.iconSize.set_value, self.iconSize.get_value )
        self.bindGSettingsValueToWidget( self.settingsApplications, "int", "favicon-size", self.favIconSize, "value-changed", self.favIconSize.set_value, self.favIconSize.get_value )
        self.bindGSettingsValueToWidget( self.settingsApplications, "int", "fav-cols", self.favCols, "value-changed", self.favCols.set_value, self.favCols.get_value )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "remember-filter", self.rememberFilter, "toggled", self.rememberFilter.set_active, self.rememberFilter.get_active)

        self.bindGSettingsValueToWidget( self.settingsPlaces, "int", "icon-size", self.placesIconSize, "value-changed", self.placesIconSize.set_value, self.placesIconSize.get_value )
        self.bindGSettingsValueToWidget( self.settingsSystem, "int", "icon-size", self.systemIconSize, "value-changed", self.systemIconSize.set_value, self.systemIconSize.get_value )

        self.bindGSettingsValueToWidget( self.settings, "int", "border-width", self.borderWidth, "value-changed", self.borderWidth.set_value, self.borderWidth.get_value_as_int )
        self.bindGSettingsValueToWidget( self.settings, "int", "opacity", self.opacity, "value-changed", self.opacity.set_value, self.opacity.get_value_as_int )
        self.bindGSettingsValueToWidget( self.settings, "bool", "use-custom-color", self.useCustomColors, "toggled", self.useCustomColors.set_active, self.useCustomColors.get_active )
        self.bindGSettingsValueToWidget( self.settings, "color", "custom-color", self.backgroundColor, "color-set", self.backgroundColor.set_color, self.getBackgroundColor )
        self.bindGSettingsValueToWidget( self.settings, "color", "custom-heading-color", self.headingColor, "color-set", self.headingColor.set_color, self.getHeadingColor )
        self.bindGSettingsValueToWidget( self.settings, "color", "custom-border-color", self.borderColor, "color-set", self.borderColor.set_color, self.getBorderColor )
        self.bindGSettingsValueToWidget( self.settings, "bool", "hide-applet-icon", self.showButtonIcon, "toggled", self.setShowButtonIcon, self.getShowButtonIcon )
        self.bindGSettingsValueToWidget( self.settings, "string", "applet-text", self.buttonText, "changed", self.buttonText.set_text, self.buttonText.get_text )
        self.bindGSettingsValueToWidget( self.settings, "string", "hot-key", self.hotkeyWidget, "accel-edited", self.hotkeyWidget.set_val, self.hotkeyWidget.get_val )
        self.bindGSettingsValueToWidget( self.settings, "string", "applet-icon", self.buttonIconChooser, "file-set", self.setButtonIcon, self.buttonIconChooser.get_filename )
        self.bindGSettingsValueToWidget( self.settingsApplications, "string", "search-command", self.searchCommand, "changed", self.searchCommand.set_text, self.searchCommand.get_text )

        self.getPluginsToggle()
        self.showRecentPlugin.connect("toggled", self.setPluginsLayout )
        self.showApplicationsPlugin.connect("toggled", self.setPluginsLayout )
        self.showSystemPlugin.connect("toggled", self.setPluginsLayout )
        self.showPlacesPlugin.connect("toggled", self.setPluginsLayout )


        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-computer", self.computertoggle, "toggled", self.computertoggle.set_active, self.computertoggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-home-folder", self.homefoldertoggle, "toggled", self.homefoldertoggle.set_active, self.homefoldertoggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-network", self.networktoggle, "toggled", self.networktoggle.set_active, self.networktoggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-desktop", self.desktoptoggle, "toggled", self.desktoptoggle.set_active, self.desktoptoggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-trash", self.trashtoggle, "toggled", self.trashtoggle.set_active, self.trashtoggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "int", "height", self.placesHeightButton, "value-changed", self.placesHeightButton.set_value, self.placesHeightButton.get_value_as_int )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "allow-scrollbar", self.allowPlacesScrollbarToggle, "toggled", self.allowPlacesScrollbarToggle.set_active, self.allowPlacesScrollbarToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-gtk-bookmarks", self.showgtkbookmarksToggle, "toggled", self.showgtkbookmarksToggle.set_active, self.showgtkbookmarksToggle.get_active )

        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-software-manager", self.softwareManagerToggle, "toggled", self.softwareManagerToggle.set_active, self.softwareManagerToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-package-manager", self.packageManagerToggle, "toggled", self.packageManagerToggle.set_active, self.packageManagerToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-control-center", self.controlCenterToggle, "toggled", self.controlCenterToggle.set_active, self.controlCenterToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-terminal", self.terminalToggle, "toggled", self.terminalToggle.set_active, self.terminalToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-lock-screen", self.lockToggle, "toggled", self.lockToggle.set_active, self.lockToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-logout", self.logoutToggle, "toggled", self.logoutToggle.set_active, self.logoutToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-quit", self.quitToggle, "toggled", self.quitToggle.set_active, self.quitToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "int", "height", self.systemHeightButton, "value-changed", self.systemHeightButton.set_value, self.systemHeightButton.get_value_as_int )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "allow-scrollbar", self.allowSystemScrollbarToggle, "toggled", self.allowSystemScrollbarToggle.set_active, self.allowSystemScrollbarToggle.get_active )

        self.customplacepaths = self.settingsPlaces.get( "list-string", "custom-paths" )
        self.customplacenames = self.settingsPlaces.get( "list-string", "custom-names" )

        self.customplacestreemodel = Gtk.ListStore( str, str)
        self.cell = Gtk.CellRendererText()

        for count in range( len(self.customplacepaths) ):
            self.customplacestreemodel.append( [ self.customplacenames[count], self.customplacepaths[count] ] )

        self.customplacestreemodel.connect("row-inserted", self.updatePlacesGSettings)
        self.customplacestreemodel.connect("row-deleted", self.updatePlacesGSettings)
        self.customplacestreemodel.connect("rows-reordered", self.updatePlacesGSettings)
        self.customplacestreemodel.connect("row-changed", self.updatePlacesGSettings)
        self.customplacestree.set_model( self.customplacestreemodel )
        self.namescolumn = Gtk.TreeViewColumn( _("Name"), self.cell, text = 0 )
        self.placescolumn = Gtk.TreeViewColumn( _("Path"), self.cell, text = 1 )
        self.customplacestree.append_column( self.namescolumn )
        self.customplacestree.append_column( self.placescolumn )
        self.builder.get_object("newButton").connect("clicked", self.newPlace)
        self.builder.get_object("editButton").connect("clicked", self.editPlace)
        self.builder.get_object("upButton").connect("clicked", self.moveUp)
        self.builder.get_object("downButton").connect("clicked", self.moveDown)
        self.builder.get_object("removeButton").connect("clicked", self.removePlace)

        #Detect themes and show theme here
        theme_name = self.settings.get ("string", "theme-name")
        themes = commands.getoutput("find /usr/share/themes -name gtkrc")
        themes = themes.split("\n")
        model = Gtk.ListStore(str, str)
        self.builder.get_object("themesCombo").set_model(model)
        selected_theme = model.append([_("Desktop theme"), "default"])
        for theme in sorted(themes):
            if theme.startswith("/usr/share/themes") and theme.endswith("/gtk-2.0/gtkrc"):
                theme = theme.replace("/usr/share/themes/", "")
                theme = theme.replace("gtk-2.0", "")
                theme = theme.replace("gtkrc", "")
                theme = theme.replace("/", "")
                theme = theme.strip()
                iter = model.append([theme, theme])
                if theme == theme_name:
                    selected_theme = iter
        self.builder.get_object("themesCombo").set_active_iter(selected_theme)
        self.builder.get_object("themesCombo").connect("changed", self.set_theme)

        self.toggleUseCustomColors(self.useCustomColors)
        self.mainWindow.present()
        self.getBackgroundColor()
class mintMenuConfig( object ):

    def __init__( self ):

        self.path = os.path.abspath( os.path.dirname( sys.argv[0] ) )

        # Load glade file and extract widgets
        self.builder = Gtk.Builder()

        self.builder.add_from_file (os.path.join(self.path, "mintMenuConfig.glade" ))
        self.mainWindow=self.builder.get_object("mainWindow")

        #i18n
        self.mainWindow.set_title(_("Menu preferences"))
        self.mainWindow.set_icon_from_file("/usr/lib/linuxmint/mintMenu/icon.svg")

        self.builder.get_object("startWithFavorites").set_label(_("Always start with favorites pane"))
        self.builder.get_object("showButtonIcon").set_label(_("Show button icon"))
        self.builder.get_object("useCustomColors").set_label(_("Use custom colors"))
        self.builder.get_object("showRecentPlugin").set_label(_("Show recent documents plugin"))
        self.builder.get_object("showApplicationsPlugin").set_label(_("Show applications plugin"))
        self.builder.get_object("showSystemPlugin").set_label(_("Show system plugin"))
        self.builder.get_object("showPlacesPlugin").set_label(_("Show places plugin"))

        self.builder.get_object("showAppComments").set_label(_("Show application comments"))
        self.builder.get_object("showCategoryIcons").set_label(_("Show category icons"))
        self.builder.get_object("hover").set_label(_("Hover"))
        self.builder.get_object("remember_filter").set_label(_("Remember the last category or search"))
        self.builder.get_object("use_apt").set_label(_("Search for packages to install"))
        self.builder.get_object("swapGeneric").set_label(_("Swap name and generic name"))

        self.builder.get_object("label11").set_text(_("Border width:"))
        self.builder.get_object("label25").set_text(_("pixels"))

        self.builder.get_object("label8").set_text(_("Opacity:"))
        self.builder.get_object("label9").set_text("%")

        self.builder.get_object("buttonTextLabel").set_text(_("Button text:"))
        self.builder.get_object("label1").set_text(_("Options"))
        self.builder.get_object("label23").set_text(_("Applications"))

        self.builder.get_object("colorsLabel").set_text(_("Theme"))
        self.builder.get_object("favLabel").set_text(_("Favorites"))
        self.builder.get_object("mainbuttonLabel").set_text(_("Main button"))
        self.builder.get_object("pluginsLabel").set_text(_("Plugins"))

        self.builder.get_object("backgroundColorLabel").set_text(_("Background:"))
        self.builder.get_object("headingColorLabel").set_text(_("Headings:"))
        self.builder.get_object("borderColorLabel").set_text(_("Borders:"))
        self.builder.get_object("themeLabel").set_text(_("Theme:"))

        #self.builder.get_object("applicationsLabel").set_text(_("Applications"))
        #self.builder.get_object("favoritesLabel").set_text(_("Favorites"))
        self.builder.get_object("numberColumnsLabel").set_text(_("Number of columns:"))
        self.builder.get_object("iconSizeLabel").set_text(_("Icon size:"))
        self.builder.get_object("iconSizeLabel2").set_text(_("Icon size:"))
        self.builder.get_object("placesIconSizeLabel").set_text(_("Icon size:"))
        self.builder.get_object("systemIconSizeLabel").set_text(_("Icon size:"))
        self.builder.get_object("hoverLabel").set_text(_("Hover delay (ms):"))
        self.builder.get_object("label4").set_text(_("Button icon:"))
        self.builder.get_object("label5").set_text(_("Search command:"))

        self.builder.get_object("placesLabel").set_text(_("Places"))
        self.builder.get_object("allowscrollbarcheckbutton").set_label(_("Allow Scrollbar"))
        self.builder.get_object("showgtkbookmarkscheckbutton").set_label(_("Show GTK Bookmarks"))
        self.builder.get_object("placesHeightEntryLabel").set_text(_("Height:"))
        self.builder.get_object("defaultPlacesFrameLabel").set_text(_("Toggle Default Places:"))
        self.builder.get_object("computercheckbutton").set_label(_("Computer"))
        self.builder.get_object("homecheckbutton").set_label(_("Home Folder"))
        self.builder.get_object("networkcheckbutton").set_label(_("Network"))
        self.builder.get_object("desktopcheckbutton").set_label(_("Desktop"))
        self.builder.get_object("trashcheckbutton").set_label(_("Trash"))
        self.builder.get_object("customPlacesFrameLabel").set_text(_("Custom Places:"))

        self.builder.get_object("systemLabel").set_text(_("System"))
        self.builder.get_object("allowscrollbarcheckbutton1").set_label(_("Allow Scrollbar"))
        self.builder.get_object("systemHeightEntryLabel").set_text(_("Height:"))
        self.builder.get_object("defaultItemsFrameLabel").set_text(_("Toggle Default Items:"))
        self.builder.get_object("softwaremanagercheckbutton").set_label(_("Software Manager"))
        self.builder.get_object("packagemanagercheckbutton").set_label(_("Package Manager"))
        self.builder.get_object("controlcentercheckbutton").set_label(_("Control Center"))
        self.builder.get_object("terminalcheckbutton").set_label(_("Terminal"))
        self.builder.get_object("lockcheckbutton").set_label(_("Lock Screen"))
        self.builder.get_object("logoutcheckbutton").set_label(_("Log Out"))
        self.builder.get_object("quitcheckbutton").set_label(_("Quit"))

        self.editPlaceDialogTitle = (_("Edit Place"))
        self.newPlaceDialogTitle = (_("New Place"))
        self.folderChooserDialogTitle = (_("Select a folder"))

        self.startWithFavorites = self.builder.get_object( "startWithFavorites" )
        self.showAppComments = self.builder.get_object( "showAppComments" )
        self.useAPT = self.builder.get_object( "use_apt" )
        self.showCategoryIcons = self.builder.get_object( "showCategoryIcons" )
        self.showRecentPlugin = self.builder.get_object( "showRecentPlugin" )
        self.showApplicationsPlugin = self.builder.get_object( "showApplicationsPlugin" )
        self.showSystemPlugin = self.builder.get_object( "showSystemPlugin" )
        self.showPlacesPlugin = self.builder.get_object( "showPlacesPlugin" )
        self.swapGeneric = self.builder.get_object("swapGeneric")
        self.hover = self.builder.get_object( "hover" )
        self.hoverDelay = self.builder.get_object( "hoverDelay" )
        self.rememberFilter = self.builder.get_object( "remember_filter" )
        self.iconSize = self.builder.get_object( "iconSize" )
        self.favIconSize = self.builder.get_object( "favIconSize" )
        self.placesIconSize = self.builder.get_object( "placesIconSize" )
        self.systemIconSize = self.builder.get_object( "systemIconSize" )
        self.favCols = self.builder.get_object( "numFavCols" )
        self.borderWidth = self.builder.get_object( "borderWidth" )
        self.opacity = self.builder.get_object( "opacity" )
        self.useCustomColors = self.builder.get_object( "useCustomColors" )
        self.backgroundColor = self.builder.get_object( "backgroundColor" )
        self.borderColor = self.builder.get_object( "borderColor" )
        self.headingColor = self.builder.get_object( "headingColor" )
        self.backgroundColorLabel = self.builder.get_object( "backgroundColorLabel" )
        self.borderColorLabel = self.builder.get_object( "borderColorLabel" )
        self.headingColorLabel = self.builder.get_object( "headingColorLabel" )
        self.showButtonIcon = self.builder.get_object( "showButtonIcon" )
        self.buttonText = self.builder.get_object( "buttonText" )
        self.hotkeyWidget = keybinding.KeybindingWidget(_("Keyboard shortcut:") )
        table = self.builder.get_object( "main_table" )
        table.attach(self.hotkeyWidget, 0, 2, 2, 3, Gtk.AttachOptions.FILL, Gtk.AttachOptions.FILL, 0, 0)
        self.buttonIcon = self.builder.get_object( "buttonIcon" )
        self.buttonIconChooser = self.builder.get_object( "button_icon_chooser" )
        self.image_filter = Gtk.FileFilter()
        self.image_filter.set_name(_("Images"))
        self.image_filter.add_pattern("*.png")
        self.image_filter.add_pattern("*.jpg")
        self.image_filter.add_pattern("*.jpeg")
        self.image_filter.add_pattern("*.bmp")
        self.image_filter.add_pattern("*.ico")
        self.image_filter.add_pattern("*.xpm")
        self.image_filter.add_pattern("*.svg")
        self.buttonIconChooser.add_filter(self.image_filter)
        self.buttonIconChooser.set_filter(self.image_filter)
        self.buttonIconImage = self.builder.get_object("image_button_icon")
        self.searchCommand = self.builder.get_object( "search_command" )
        self.computertoggle = self.builder.get_object( "computercheckbutton" )
        self.homefoldertoggle = self.builder.get_object( "homecheckbutton" )
        self.networktoggle = self.builder.get_object( "networkcheckbutton" )
        self.desktoptoggle = self.builder.get_object( "desktopcheckbutton" )
        self.trashtoggle = self.builder.get_object( "trashcheckbutton" )
        self.customplacestree = self.builder.get_object( "customplacestree" )
        self.allowPlacesScrollbarToggle = self.builder.get_object( "allowscrollbarcheckbutton" )
        self.showgtkbookmarksToggle = self.builder.get_object( "showgtkbookmarkscheckbutton" )
        self.placesHeightButton = self.builder.get_object( "placesHeightSpinButton" )
        if (self.allowPlacesScrollbarToggle.get_active() == False):
            self.placesHeightButton.set_sensitive(False)
        self.allowPlacesScrollbarToggle.connect("toggled", self.togglePlacesHeightEnabled )
        self.softwareManagerToggle = self.builder.get_object( "softwaremanagercheckbutton" )
        self.packageManagerToggle = self.builder.get_object( "packagemanagercheckbutton" )
        self.controlCenterToggle = self.builder.get_object( "controlcentercheckbutton" )
        self.terminalToggle = self.builder.get_object( "terminalcheckbutton" )
        self.lockToggle = self.builder.get_object( "lockcheckbutton" )
        self.logoutToggle = self.builder.get_object( "logoutcheckbutton" )
        self.quitToggle = self.builder.get_object( "quitcheckbutton" )
        self.allowSystemScrollbarToggle = self.builder.get_object( "allowscrollbarcheckbutton1" )
        self.systemHeightButton = self.builder.get_object( "systemHeightSpinButton" )
        if (self.allowSystemScrollbarToggle.get_active() == False): self.systemHeightButton.set_sensitive(False)
        self.allowSystemScrollbarToggle.connect("toggled", self.toggleSystemHeightEnabled )
        if os.path.exists("/usr/bin/mintinstall"):
            self.builder.get_object( "softwaremanagercheckbutton" ).show()
        else:
            self.builder.get_object( "softwaremanagercheckbutton" ).hide()

        self.builder.get_object( "closeButton" ).connect("clicked", Gtk.main_quit )


        self.settings = EasyGSettings( "com.linuxmint.mintmenu" )
        self.settingsApplications = EasyGSettings( "com.linuxmint.mintmenu.plugins.applications" )
        self.settingsPlaces = EasyGSettings( "com.linuxmint.mintmenu.plugins.places" )
        self.settingsSystem = EasyGSettings( "com.linuxmint.mintmenu.plugins.system_management" )

        self.useCustomColors.connect( "toggled", self.toggleUseCustomColors )

        self.bindGSettingsValueToWidget( self.settings, "bool", "start-with-favorites", self.startWithFavorites, "toggled", self.startWithFavorites.set_active, self.startWithFavorites.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "show-application-comments", self.showAppComments, "toggled", self.showAppComments.set_active, self.showAppComments.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "use-apt", self.useAPT, "toggled", self.useAPT.set_active, self.useAPT.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "show-category-icons", self.showCategoryIcons, "toggled", self.showCategoryIcons.set_active, self.showCategoryIcons.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "categories-mouse-over", self.hover, "toggled", self.hover.set_active, self.hover.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "swap-generic-name", self.swapGeneric, "toggled", self.swapGeneric.set_active, self.swapGeneric.get_active )

        self.bindGSettingsValueToWidget( self.settingsApplications, "int", "category-hover-delay", self.hoverDelay, "value-changed", self.hoverDelay.set_value, self.hoverDelay.get_value )
        self.bindGSettingsValueToWidget( self.settingsApplications, "int", "icon-size", self.iconSize, "value-changed", self.iconSize.set_value, self.iconSize.get_value )
        self.bindGSettingsValueToWidget( self.settingsApplications, "int", "favicon-size", self.favIconSize, "value-changed", self.favIconSize.set_value, self.favIconSize.get_value )
        self.bindGSettingsValueToWidget( self.settingsApplications, "int", "fav-cols", self.favCols, "value-changed", self.favCols.set_value, self.favCols.get_value )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "remember-filter", self.rememberFilter, "toggled", self.rememberFilter.set_active, self.rememberFilter.get_active)

        self.bindGSettingsValueToWidget( self.settingsPlaces, "int", "icon-size", self.placesIconSize, "value-changed", self.placesIconSize.set_value, self.placesIconSize.get_value )
        self.bindGSettingsValueToWidget( self.settingsSystem, "int", "icon-size", self.systemIconSize, "value-changed", self.systemIconSize.set_value, self.systemIconSize.get_value )

        self.bindGSettingsValueToWidget( self.settings, "int", "border-width", self.borderWidth, "value-changed", self.borderWidth.set_value, self.borderWidth.get_value_as_int )
        self.bindGSettingsValueToWidget( self.settings, "int", "opacity", self.opacity, "value-changed", self.opacity.set_value, self.opacity.get_value_as_int )
        self.bindGSettingsValueToWidget( self.settings, "bool", "use-custom-color", self.useCustomColors, "toggled", self.useCustomColors.set_active, self.useCustomColors.get_active )
        self.bindGSettingsValueToWidget( self.settings, "color", "custom-color", self.backgroundColor, "color-set", self.backgroundColor.set_color, self.getBackgroundColor )
        self.bindGSettingsValueToWidget( self.settings, "color", "custom-heading-color", self.headingColor, "color-set", self.headingColor.set_color, self.getHeadingColor )
        self.bindGSettingsValueToWidget( self.settings, "color", "custom-border-color", self.borderColor, "color-set", self.borderColor.set_color, self.getBorderColor )
        self.bindGSettingsValueToWidget( self.settings, "bool", "hide-applet-icon", self.showButtonIcon, "toggled", self.setShowButtonIcon, self.getShowButtonIcon )
        self.bindGSettingsValueToWidget( self.settings, "string", "applet-text", self.buttonText, "changed", self.buttonText.set_text, self.buttonText.get_text )
        self.bindGSettingsValueToWidget( self.settings, "string", "hot-key", self.hotkeyWidget, "accel-edited", self.hotkeyWidget.set_val, self.hotkeyWidget.get_val )
        self.bindGSettingsValueToWidget( self.settings, "string", "applet-icon", self.buttonIconChooser, "file-set", self.setButtonIcon, self.buttonIconChooser.get_filename )
        self.bindGSettingsValueToWidget( self.settingsApplications, "string", "search-command", self.searchCommand, "changed", self.searchCommand.set_text, self.searchCommand.get_text )

        self.getPluginsToggle()
        self.showRecentPlugin.connect("toggled", self.setPluginsLayout )
        self.showApplicationsPlugin.connect("toggled", self.setPluginsLayout )
        self.showSystemPlugin.connect("toggled", self.setPluginsLayout )
        self.showPlacesPlugin.connect("toggled", self.setPluginsLayout )


        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-computer", self.computertoggle, "toggled", self.computertoggle.set_active, self.computertoggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-home-folder", self.homefoldertoggle, "toggled", self.homefoldertoggle.set_active, self.homefoldertoggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-network", self.networktoggle, "toggled", self.networktoggle.set_active, self.networktoggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-desktop", self.desktoptoggle, "toggled", self.desktoptoggle.set_active, self.desktoptoggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-trash", self.trashtoggle, "toggled", self.trashtoggle.set_active, self.trashtoggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "int", "height", self.placesHeightButton, "value-changed", self.placesHeightButton.set_value, self.placesHeightButton.get_value_as_int )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "allow-scrollbar", self.allowPlacesScrollbarToggle, "toggled", self.allowPlacesScrollbarToggle.set_active, self.allowPlacesScrollbarToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-gtk-bookmarks", self.showgtkbookmarksToggle, "toggled", self.showgtkbookmarksToggle.set_active, self.showgtkbookmarksToggle.get_active )

        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-software-manager", self.softwareManagerToggle, "toggled", self.softwareManagerToggle.set_active, self.softwareManagerToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-package-manager", self.packageManagerToggle, "toggled", self.packageManagerToggle.set_active, self.packageManagerToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-control-center", self.controlCenterToggle, "toggled", self.controlCenterToggle.set_active, self.controlCenterToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-terminal", self.terminalToggle, "toggled", self.terminalToggle.set_active, self.terminalToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-lock-screen", self.lockToggle, "toggled", self.lockToggle.set_active, self.lockToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-logout", self.logoutToggle, "toggled", self.logoutToggle.set_active, self.logoutToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-quit", self.quitToggle, "toggled", self.quitToggle.set_active, self.quitToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "int", "height", self.systemHeightButton, "value-changed", self.systemHeightButton.set_value, self.systemHeightButton.get_value_as_int )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "allow-scrollbar", self.allowSystemScrollbarToggle, "toggled", self.allowSystemScrollbarToggle.set_active, self.allowSystemScrollbarToggle.get_active )

        self.customplacepaths = self.settingsPlaces.get( "list-string", "custom-paths" )
        self.customplacenames = self.settingsPlaces.get( "list-string", "custom-names" )

        self.customplacestreemodel = Gtk.ListStore( str, str)
        self.cell = Gtk.CellRendererText()

        for count in range( len(self.customplacepaths) ):
            self.customplacestreemodel.append( [ self.customplacenames[count], self.customplacepaths[count] ] )

        self.customplacestreemodel.connect("row-inserted", self.updatePlacesGSettings)
        self.customplacestreemodel.connect("row-deleted", self.updatePlacesGSettings)
        self.customplacestreemodel.connect("rows-reordered", self.updatePlacesGSettings)
        self.customplacestreemodel.connect("row-changed", self.updatePlacesGSettings)
        self.customplacestree.set_model( self.customplacestreemodel )
        self.namescolumn = Gtk.TreeViewColumn( _("Name"), self.cell, text = 0 )
        self.placescolumn = Gtk.TreeViewColumn( _("Path"), self.cell, text = 1 )
        self.customplacestree.append_column( self.namescolumn )
        self.customplacestree.append_column( self.placescolumn )
        self.builder.get_object("newButton").connect("clicked", self.newPlace)
        self.builder.get_object("editButton").connect("clicked", self.editPlace)
        self.builder.get_object("upButton").connect("clicked", self.moveUp)
        self.builder.get_object("downButton").connect("clicked", self.moveDown)
        self.builder.get_object("removeButton").connect("clicked", self.removePlace)

        #Detect themes and show theme here
        theme_name = self.settings.get ("string", "theme-name")
        themes = commands.getoutput("find /usr/share/themes -name gtkrc")
        themes = themes.split("\n")
        model = Gtk.ListStore(str, str)
        self.builder.get_object("themesCombo").set_model(model)
        selected_theme = model.append([_("Desktop theme"), "default"])
        for theme in sorted(themes):
            if theme.startswith("/usr/share/themes") and theme.endswith("/gtk-2.0/gtkrc"):
                theme = theme.replace("/usr/share/themes/", "")
                theme = theme.replace("gtk-2.0", "")
                theme = theme.replace("gtkrc", "")
                theme = theme.replace("/", "")
                theme = theme.strip()
                iter = model.append([theme, theme])
                if theme == theme_name:
                    selected_theme = iter
        self.builder.get_object("themesCombo").set_active_iter(selected_theme)
        self.builder.get_object("themesCombo").connect("changed", self.set_theme)

        self.toggleUseCustomColors(self.useCustomColors)
        self.mainWindow.present()
        self.getBackgroundColor()

    def set_theme(self, widget):
        model = widget.get_model()
        iter = widget.get_active_iter()
        theme_name = model.get_value(iter, 1)
        self.settings.set( "string", "theme-name", theme_name)

    def getPluginsToggle(self):
        array = self.settings.get ("list-string", "plugins-list")
        if "recent" in array:
            self.showRecentPlugin.set_active(True)
        else:
            self.showRecentPlugin.set_active(False)
        if "applications" in array:
            self.showApplicationsPlugin.set_active(True)
        else:
            self.showApplicationsPlugin.set_active(False)
        if "system_management" in array:
            self.showSystemPlugin.set_active(True)
        else:
            self.showSystemPlugin.set_active(False)
        if "places" in array:
            self.showPlacesPlugin.set_active(True)
        else:
            self.showPlacesPlugin.set_active(False)

    def setPluginsLayout (self, widget):
        visiblePlugins = []
        if self.showPlacesPlugin.get_active():
            visiblePlugins.append("places")
        if self.showSystemPlugin.get_active():
            visiblePlugins.append("system_management")
        if self.showApplicationsPlugin.get_active():
            if self.showPlacesPlugin.get_active() or self.showSystemPlugin.get_active():
                visiblePlugins.append("newpane")
            visiblePlugins.append("applications")
        if self.showRecentPlugin.get_active():
            if self.showApplicationsPlugin.get_active() or self.showPlacesPlugin.get_active() or self.showSystemPlugin.get_active():
                visiblePlugins.append("newpane")
            visiblePlugins.append("recent")
        self.settings.set ("list-string", "plugins-list", visiblePlugins)

    def setShowButtonIcon( self, value ):
        self.showButtonIcon.set_active(not value )

    def setButtonIcon( self, value ):
        self.buttonIconChooser.set_filename(value)
        self.buttonIconImage.set_from_file(value)

    def getShowButtonIcon( self ):
        return not self.showButtonIcon.get_active()

    def bindGSettingsValueToWidget( self, settings, setting_type, key, widget, changeEvent, setter, getter ):
        settings.notifyAdd( key, self.callSetter, args = [ setting_type, setter ] )
        if setting_type == "color":
            setter( Gdk.color_parse( settings.get( setting_type, key ) ) )
        else:
            setter( settings.get( setting_type, key ) )
        widget.connect( changeEvent, lambda *args: self.callGetter( settings, setting_type, key, getter ) )

    def callSetter( self, settings, key, args ):
        if args[0] == "bool":
            args[1]( settings.get_boolean(key) )
        elif args[0] == "string":
            args[1]( settings.get_string(key) )
        elif args[0] == "int":
            args[1]( settings.get_int(key) )
        elif args[0] == "color":
            args[1]( Gdk.color_parse( settings.get_string(key) ) )

    def callGetter( self, settings, setting_type, key, getter ):
        if (setting_type == "int"):
            settings.set( setting_type, key, int(getter()))
        else:
            settings.set( setting_type, key, getter())

    def toggleUseCustomColors( self, widget ):
        self.backgroundColor.set_sensitive( widget.get_active() )
        self.borderColor.set_sensitive( widget.get_active() )
        self.headingColor.set_sensitive(  widget.get_active() )
        self.backgroundColorLabel.set_sensitive( widget.get_active() )
        self.borderColorLabel.set_sensitive( widget.get_active() )
        self.headingColorLabel.set_sensitive(  widget.get_active() )

    def getBackgroundColor( self ):
        try:
            color = self.backgroundColor.get_color()
        except:
            color = Gdk.Color(0, 0, 0)
            self.backgroundColor.get_color(color)
        return self.gdkColorToString( color )

    def getBorderColor( self ):
        try:
            color = self.borderColor.get_color()
        except:
            color = Gdk.Color(0, 0, 0)
            self.borderColor.get_color(color)
        return self.gdkColorToString( color )

    def getHeadingColor( self ):
        try:
            color = self.headingColor.get_color()
        except:
            color = Gdk.Color(0, 0, 0)
            self.headingColor.get_color(color)
        return self.gdkColorToString( color )

    def gdkColorToString( self, gdkColor ):
        return "#%.2X%.2X%.2X" % ( gdkColor.red / 256, gdkColor.green / 256, gdkColor.blue / 256 )

    def moveUp( self, upButton ):

        treeselection = self.customplacestree.get_selection()
        currentiter = (treeselection.get_selected())[1]

        if ( treeselection != None ):

            lagiter = self.customplacestreemodel.get_iter_first()
            nextiter = self.customplacestreemodel.get_iter_first()

            while ( (self.customplacestreemodel.get_path(nextiter) != self.customplacestreemodel.get_path(currentiter)) & (nextiter != None)):
                lagiter = nextiter
                nextiter = self.customplacestreemodel.iter_next(nextiter)

            if (nextiter != None):
                self.customplacestreemodel.swap(currentiter, lagiter)

        return

    def newPlace(self, newButton):
        self.builder.get_object("label2").set_text(_("Name:"))
        self.builder.get_object("label1").set_text(_("Path:"))
        newPlaceDialog = self.builder.get_object( "editPlaceDialog" )
        folderChooserDialog = self.builder.get_object( "fileChooserDialog" )
        newPlaceDialog.set_transient_for(self.mainWindow)
        newPlaceDialog.set_icon_from_file("/usr/lib/linuxmint/mintMenu/icon.svg")
        newPlaceDialog.set_title(self.newPlaceDialogTitle)
        folderChooserDialog.set_title(self.folderChooserDialogTitle)
        newPlaceDialog.set_default_response(Gtk.ResponseType.OK)
        newPlaceName = self.builder.get_object( "nameEntryBox" )
        newPlacePath = self.builder.get_object( "pathEntryBox" )
        folderButton = self.builder.get_object( "folderButton" )
        def chooseFolder(folderButton):
            currentPath = newPlacePath.get_text()
            if (currentPath!=""):
                folderChooserDialog.select_filename(currentPath)
            response = folderChooserDialog.run()
            folderChooserDialog.hide()
            if (response == Gtk.ResponseType.OK):
                newPlacePath.set_text( folderChooserDialog.get_filenames()[0] )
        folderButton.connect("clicked", chooseFolder)

        response = newPlaceDialog.run()
        newPlaceDialog.hide()
        if (response == Gtk.ResponseType.OK ):
            name = newPlaceName.get_text()
            path = newPlacePath.get_text()
            if (name != "" and path !=""):
                self.customplacestreemodel.append( (name, path) )

    def editPlace(self, editButton):
        self.builder.get_object("label2").set_text(_("Name:"))
        self.builder.get_object("label1").set_text(_("Path:"))
        editPlaceDialog = self.builder.get_object( "editPlaceDialog" )
        folderChooserDialog = self.builder.get_object( "fileChooserDialog" )
        editPlaceDialog.set_transient_for(self.mainWindow)
        editPlaceDialog.set_icon_from_file("/usr/lib/linuxmint/mintMenu/icon.svg")
        editPlaceDialog.set_title(self.editPlaceDialogTitle)
        folderChooserDialog.set_title(self.folderChooserDialogTitle)
        editPlaceDialog.set_default_response(Gtk.ResponseType.OK)
        editPlaceName = self.builder.get_object( "nameEntryBox" )
        editPlacePath = self.builder.get_object( "pathEntryBox" )
        folderButton = self.builder.get_object( "folderButton" )
        treeselection = self.customplacestree.get_selection()
        currentiter = (treeselection.get_selected())[1]

        if (currentiter != None):

            initName = self.customplacestreemodel.get_value(currentiter, 0)
            initPath = self.customplacestreemodel.get_value(currentiter, 1)

            editPlaceName.set_text(initName)
            editPlacePath.set_text(initPath)
            def chooseFolder(folderButton):
                currentPath = editPlacePath.get_text()
                if (currentPath!=""):
                    folderChooserDialog.select_filename(currentPath)
                response = folderChooserDialog.run()
                folderChooserDialog.hide()
                if (response == Gtk.ResponseType.OK):
                    editPlacePath.set_text( folderChooserDialog.get_filenames()[0] )
            folderButton.connect("clicked", chooseFolder)
            response = editPlaceDialog.run()
            editPlaceDialog.hide()
            if (response == Gtk.ResponseType.OK):
                name = editPlaceName.get_text()
                path = editPlacePath.get_text()
                if (name != "" and path != ""):
                    self.customplacestreemodel.set_value(currentiter, 0, name)
                    self.customplacestreemodel.set_value(currentiter, 1, path)

    def moveDown(self, downButton):

        treeselection = self.customplacestree.get_selection()
        currentiter = (treeselection.get_selected())[1]

        nextiter = self.customplacestreemodel.iter_next(currentiter)

        if (nextiter != None):
            self.customplacestreemodel.swap(currentiter, nextiter)

        return


    def removePlace(self, removeButton):

        treeselection = self.customplacestree.get_selection()
        currentiter = (treeselection.get_selected())[1]

        if (currentiter != None):
            self.customplacestreemodel.remove(currentiter)

        return

    def togglePlacesHeightEnabled(self, toggle):
        if (toggle.get_active() == True):
            self.placesHeightButton.set_sensitive(True)
        else:
            self.placesHeightButton.set_sensitive(False)

    def toggleSystemHeightEnabled(self, toggle):
        if (toggle.get_active() == True):
            self.systemHeightButton.set_sensitive(True)
        else:
            self.systemHeightButton.set_sensitive(False)

    def updatePlacesGSettings(self, treemodel, path, iter = None, new_order = None):
# Do only if not partway though an append operation; Append = insert+change+change and each creates a signal
        if ((iter == None) or (self.customplacestreemodel.get_value(iter, 1) != None)):
            treeiter = self.customplacestreemodel.get_iter_first()
            customplacenames = [ ]
            customplacepaths = [ ]
            while( treeiter != None ):
                customplacenames = customplacenames + [ self.customplacestreemodel.get_value(treeiter, 0 ) ]
                customplacepaths = customplacepaths + [ self.customplacestreemodel.get_value(treeiter, 1 ) ]
                treeiter = self.customplacestreemodel.iter_next(treeiter)
            self.settingsPlaces.set( "list-string", "custom-paths", customplacepaths)
            self.settingsPlaces.set( "list-string", "custom-names", customplacenames)
Exemple #10
0
class pluginclass(object):
    def __init__(self, mintMenuWin, toggleButton, de):

        self.mintMenuWin = mintMenuWin
        self.toggleButton = toggleButton
        self.de = de

        # Read UI file
        builder = Gtk.Builder()
        builder.add_from_file(
            os.path.join(os.path.dirname(__file__), "places.glade"))

        self.placesBtnHolder = builder.get_object("places_button_holder")
        self.editableBtnHolder = builder.get_object("editable_button_holder")
        self.scrolledWindow = builder.get_object("scrolledwindow2")
        # These properties are NECESSARY to maintain consistency

        # Set 'window' property for the plugin (Must be the root widget)
        self.window = builder.get_object("mainWindow")

        # Set 'heading' property for plugin
        self.heading = _("Places")

        # This should be the first item added to the window in glade
        self.content_holder = builder.get_object("Places")

        # Items to get custom colors
        self.itemstocolor = [builder.get_object("viewport2")]

        # Settings
        self.settings = EasyGSettings("com.linuxmint.mintmenu.plugins.places")

        self.settings.notifyAdd("icon-size", self.RegenPlugin)
        self.settings.notifyAdd("show-computer", self.RegenPlugin)
        self.settings.notifyAdd("show-desktop", self.RegenPlugin)
        self.settings.notifyAdd("show-home_folder", self.RegenPlugin)
        self.settings.notifyAdd("show-network", self.RegenPlugin)
        self.settings.notifyAdd("show-trash", self.RegenPlugin)
        self.settings.notifyAdd("custom-names", self.RegenPlugin)
        self.settings.notifyAdd("allow-scrollbar", self.RegenPlugin)
        self.settings.notifyAdd("show-gtk-bookmarks", self.RegenPlugin)
        self.settings.notifyAdd("height", self.changePluginSize)
        self.settings.notifyAdd("width", self.changePluginSize)

        self.loadSettings()

        self.content_holder.set_size_request(self.width, self.height)

    def wake(self):
        if (self.showtrash == True):
            self.refreshTrash()

    def destroy(self):
        self.settings.notifyRemoveAll()

    def changePluginSize(self, settings, key, args=None):
        self.allowScrollbar = self.settings.get("bool", "allow-scrollbar")
        self.width = self.settings.get("int", "width")
        if (self.allowScrollbar == False):
            self.height = -1
            self.scrolledWindow.set_policy(Gtk.PolicyType.AUTOMATIC,
                                           Gtk.PolicyType.NEVER)
        else:
            self.scrolledWindow.set_policy(Gtk.PolicyType.AUTOMATIC,
                                           Gtk.PolicyType.AUTOMATIC)
            self.height = self.settings.get("int", "height")
        self.content_holder.set_size_request(self.width, self.height)

    def RegenPlugin(self, *args, **kargs):
        self.loadSettings()
        self.ClearAll()
        self.do_standard_places()
        self.do_custom_places()
        self.do_gtk_bookmarks()

    def loadSettings(self):
        self.width = self.settings.get("int", "width")
        self.allowScrollbar = self.settings.get("bool", "allow-scrollbar")
        self.showGTKBookmarks = self.settings.get("bool", "show-gtk-bookmarks")
        self.scrolledWindow.set_policy(Gtk.PolicyType.AUTOMATIC,
                                       Gtk.PolicyType.AUTOMATIC)
        self.height = self.settings.get("int", "height")
        self.content_holder.set_size_request(self.width, self.height)
        if (self.allowScrollbar == False):
            self.height = -1
            self.scrolledWindow.set_policy(Gtk.PolicyType.AUTOMATIC,
                                           Gtk.PolicyType.NEVER)
        self.content_holder.set_size_request(self.width, self.height)
        self.iconsize = self.settings.get("int", "icon-size")

        # Check default items

        self.showcomputer = self.settings.get("bool", "show-computer")
        self.showhomefolder = self.settings.get("bool", "show-home-folder")
        self.shownetwork = self.settings.get("bool", "show-network")
        self.showdesktop = self.settings.get("bool", "show-desktop")
        self.showtrash = self.settings.get("bool", "show-trash")

        # Get paths for custom items
        self.custompaths = self.settings.get("list-string", "custom-paths")

        # Get names for custom items
        self.customnames = self.settings.get("list-string", "custom-names")

        # Hide vertical dotted separator
        self.hideseparator = self.settings.get("bool", "hide-separator")
        # Plugin icon
        self.icon = self.settings.get("string", "icon")
        # Allow plugin to be minimized to the left plugin pane
        self.sticky = self.settings.get("bool", "sticky")
        self.minimized = self.settings.get("bool", "minimized")

    def ClearAll(self):
        for child in self.placesBtnHolder.get_children():
            child.destroy()
        for child in self.editableBtnHolder.get_children():
            child.destroy()

    #Add standard places
    def do_standard_places(self):

        if (self.showcomputer == True):
            Button1 = easyButton("computer", self.iconsize, [_("Computer")],
                                 -1, -1)
            if self.de == "mate":
                Button1.connect("clicked", self.ButtonClicked,
                                "caja computer:")
            else:
                Button1.connect("clicked", self.ButtonClicked, "xdg-open /")
            Button1.show()
            self.placesBtnHolder.pack_start(Button1, False, False, 0)
            self.mintMenuWin.setTooltip(
                Button1,
                _("Browse all local and remote disks and folders accessible from this computer"
                  ))

        if (self.showhomefolder == True):
            Button2 = easyButton("user-home", self.iconsize,
                                 [_("Home Folder")], -1, -1)
            if self.de == "mate":
                Button2.connect("clicked", self.ButtonClicked,
                                "caja %s " % home)
            else:
                Button2.connect("clicked", self.ButtonClicked,
                                "xdg-open %s " % home)
            Button2.show()
            self.placesBtnHolder.pack_start(Button2, False, False, 0)
            self.mintMenuWin.setTooltip(Button2,
                                        _("Open your personal folder"))

        if (self.shownetwork == True and self.de == "mate"):
            mate_settings = Gio.Settings.new("org.mate.interface")
            icon_theme = mate_settings.get_string("icon-theme")
            if "Mint-X" in icon_theme:
                Button3 = easyButton("notification-network-ethernet-connected",
                                     self.iconsize, [_("Network")], -1, -1)
            else:
                Button3 = easyButton("network-workgroup", self.iconsize,
                                     [_("Network")], -1, -1)
            if self.de == "mate":
                Button3.connect("clicked", self.ButtonClicked, "caja network:")
            else:
                Button3.connect("clicked", self.ButtonClicked,
                                "xdg-open network:")
            Button3.show()
            self.placesBtnHolder.pack_start(Button3, False, False, 0)
            self.mintMenuWin.setTooltip(
                Button3, _("Browse bookmarked and local network locations"))

        if (self.showdesktop == True):
            # Determine where the Desktop folder is (could be localized)
            desktopDir = home + "/Desktop"
            try:
                import sys
                sys.path.append('/usr/lib/linuxmint/common')
                from configobj import ConfigObj
                config = ConfigObj(home + "/.config/user-dirs.dirs")
                tmpdesktopDir = config['XDG_DESKTOP_DIR']
                if os.path.exists(os.path.expandvars(tmpdesktopDir)):
                    desktopDir = tmpdesktopDir
            except Exception, detail:
                print detail
            Button4 = easyButton("desktop", self.iconsize, [_("Desktop")], -1,
                                 -1)
            if self.de == "mate":
                Button4.connect("clicked", self.ButtonClicked,
                                "caja \"" + desktopDir + "\"")
            else:
                Button4.connect("clicked", self.ButtonClicked,
                                "xdg-open \"" + desktopDir + "\"")
            Button4.show()
            self.placesBtnHolder.pack_start(Button4, False, False, 0)
            self.mintMenuWin.setTooltip(
                Button4, _("Browse items placed on the desktop"))

        if (self.showtrash == True):
            self.trashButton = easyButton("user-trash", self.iconsize,
                                          [_("Trash")], -1, -1)
            if self.de == "xfce":
                self.trashButton.connect("clicked", self.ButtonClicked,
                                         "thunar trash:")
            elif self.de == "mate":
                self.trashButton.connect("clicked", self.ButtonClicked,
                                         "caja trash:")
            else:
                self.trashButton.connect("clicked", self.ButtonClicked,
                                         "xdg-open trash:")
            self.trashButton.show()
            self.trashButton.connect("button-release-event", self.trashPopup)
            self.refreshTrash()
            self.placesBtnHolder.pack_start(self.trashButton, False, False, 0)
            self.mintMenuWin.setTooltip(self.trashButton,
                                        _("Browse deleted files"))
Exemple #11
0
class pluginclass:
    """This is the main class for the plugin"""
    """It MUST be named pluginclass"""
    def __init__(self, mintMenuWin, toggleButton, de):

        self.Win = mintMenuWin
        self.toggleButton = toggleButton
        self.de = de

        self.builder = Gtk.Builder()
        #The Glade file for the plugin
        self.builder.add_from_file(
            os.path.join(os.path.dirname(__file__), "recent.glade"))

        #Set 'window' property for the plugin (Must be the root widget)
        self.window = self.builder.get_object("window1")

        #Set 'heading' property for plugin
        self.heading = _("Recent documents")

        #This should be the first item added to the window in glade
        self.content_holder = self.builder.get_object("eventbox1")

        self.recentBox = self.builder.get_object("RecentBox")
        self.recentVBox = self.builder.get_object("vbox1")

        #Specify plugin width
        self.width = 250

        #Plugin icon
        self.icon = 'mate-folder.png'

        self.settings = EasyGSettings("com.linuxmint.mintmenu.plugins.recent")

        self.settings.notifyAdd('height', self.RegenPlugin)
        self.settings.notifyAdd('width', self.RegenPlugin)
        self.settings.notifyAdd('num-recent-docs', self.RegenPlugin)
        self.settings.notifyAdd('recent-font-size', self.RegenPlugin)

        self.FileList = []
        self.RecManagerInstance = Gtk.RecentManager.get_default()
        self.recentManagerId = self.RecManagerInstance.connect(
            "changed", self.DoRecent)

        self.RegenPlugin()
        self.builder.get_object("RecentTabs").set_current_page(1)

        #Connect event handlers
        self.builder.get_object("ClrBtn").connect("clicked", self.clrmenu)

    def wake(self):
        pass

    def destroy(self):
        self.recentBox.destroy()
        self.recentVBox.destroy()
        self.builder.get_object("RecentTabs").destroy()
        self.builder.get_object("ClrBtn").destroy()
        self.content_holder.destroy()
        self.settings.notifyRemoveAll()
        if self.recentManagerId:
            self.RecManagerInstance.disconnect(self.recentManagerId)

    def RegenPlugin(self, *args, **kargs):
        self.GetGSettingsEntries()

    def GetGSettingsEntries(self):
        self.recenth = self.settings.get('int', 'height')
        self.recentw = self.settings.get('int', 'width')
        self.numentries = self.settings.get('int', 'num-recent-docs')
        self.recentfontsize = self.settings.get('int', 'recent-font-size')

        # Hide vertical dotted separator
        self.hideseparator = self.settings.get("bool", "hide-separator")
        # Plugin icon
        self.icon = self.settings.get("string", 'icon')
        # Allow plugin to be minimized to the left plugin pane
        self.sticky = self.settings.get("bool", "sticky")
        self.minimized = self.settings.get("bool", "minimized")
        self.RebuildPlugin()

    def SetHidden(self, state):
        if state == True:
            self.settings.set("bool", "minimized", True)
        else:
            self.settings.set("bool", "minimized", False)

    def RebuildPlugin(self):
        self.content_holder.set_size_request(self.recentw, self.recenth)
        self.DoRecent()

    def DoRecent(self, *args, **kargs):
        for i in self.recentBox.get_children():
            i.destroy()

        self.recentVBox.set_size_request(self.recentw, self.recenth)
        if len(self.recentBox.get_children()) < self.numentries:
            n = len(self.recentBox.get_children()) - 1
        else:
            n = self.numentries - 1
        while n >= 0:
            self.recentBox.remove(self.recentBox.get_children()[n])
            n -= 1

        self.FileList, self.IconList = self.GetRecent()
        loc = 0
        for Name in self.FileList:
            if Name != None:
                self.AddRecentBtn(Name, self.IconList[loc])
            loc = loc + 1
        return True

    def clrmenu(self, *args, **kargs):
        self.RecManagerInstance.purge_items()
        self.DoRecent()
        return

    def AddRecentBtn(self, Name, RecentImage):
        DispName = os.path.basename(Name)

        AButton = Gtk.Button("", "ok", True)
        AButton.remove(AButton.get_children()[0])
        AButton.set_size_request(200, -1)
        AButton.set_relief(Gtk.ReliefStyle.NONE)
        AButton.connect("clicked", self.callback, Name)

        Align1 = Gtk.Alignment()
        Align1.set(0, 0.5, 0, 0)
        Align1.set_padding(0, 0, 0, 0)
        HBox1 = Gtk.HBox(False, 5)
        VBox1 = Gtk.VBox(False, 2)

        VBox1.show()

        req = Gtk.Requisition()
        AButton.size_request(req)

        Label1 = Gtk.Label(DispName)
        Label1.set_size_request(req.width - 20, -1)
        Label1.set_ellipsize(Pango.EllipsizeMode.END)
        Label1.show()
        VBox1.add(Label1)

        ButtonIcon = Gtk.Image()
        ButtonIcon.set_from_pixbuf(RecentImage)
        HBox1.add(ButtonIcon)

        ButtonIcon.show()
        HBox1.add(VBox1)
        HBox1.show()
        Align1.add(HBox1)
        Align1.show()
        AButton.add(Align1)
        AButton.show()

        self.recentBox.pack_start(AButton, False, True, 0)

    def callback(self, widget, filename=None):
        self.Win.hide()

        x = os.system("gvfs-open \"" + filename + "\"")
        if x == 256:
            dia = Gtk.Dialog(
                'File not found!',
                None,  #the toplevel wgt of your app
                Gtk.DialogFlags.MODAL | Gtk.DialogFlags.
                DESTROY_WITH_PARENT,  #binary flags or'ed together
                ("Ok", 77))
            dia.vbox.pack_start(
                Gtk.Label('The location or file could not be found!'), False,
                False, 0)
            dia.vbox.show_all()
            dia.show()
            result = dia.run()
            if result == 77:
                dia.destroy()

    def GetRecent(self, *args, **kargs):
        FileString = []
        IconString = []
        RecentInfo = self.RecManagerInstance.get_items()
        # print RecentInfo[0].get_icon(gtk.ICON_SIZE_MENU)
        count = 0
        MaxEntries = self.numentries
        if self.numentries == -1:
            MaxEntries = len(RecentInfo)
        for items in RecentInfo:
            FileString.append(items.get_uri_display())
            IconString.append(items.get_icon(Gtk.IconSize.MENU))
            count += 1
            if count >= MaxEntries:
                break
        return FileString, IconString

    def ButtonClicked(self, widget, event, Exec):
        self.press_x = event.x
        self.press_y = event.y
        self.Exec = Exec

    def ButtonReleased(self, w, ev, ev2):
        if ev.button == 1:
            if not hasattr( self, "press_x" ) or \
                    not w.drag_check_threshold( int( self.press_x ),
                                                                             int( self.press_y ),
                                                                             int( ev.x ),
                                                                             int( ev.y ) ):
                if self.Win.pinmenu == False:
                    self.Win.wTree.get_widget("window1").hide()
                if "applications" in self.Win.plugins:
                    self.Win.plugins["applications"].wTree.get_widget(
                        "entry1").grab_focus()
                Execute(w, self.Exec)

    def do_plugin(self):
        self.DoRecent()
Exemple #12
0
class pluginclass(object):
    def __init__(self, mintMenuWin, toggleButton, de):

        self.mintMenuWin = mintMenuWin
        self.toggleButton = toggleButton
        self.de = de

        self.builder = Gtk.Builder()
        self.builder.add_from_file(
            os.path.join(os.path.dirname(__file__), "system_management.glade"))

        self.systemBtnHolder = self.builder.get_object("system_button_holder")
        self.editableBtnHolder = self.builder.get_object(
            "editable_button_holder")
        self.scrolledWindow = self.builder.get_object("scrolledwindow2")

        # These properties are NECESSARY to maintain consistency

        # Set 'window' property for the plugin (Must be the root widget)
        self.window = self.builder.get_object("mainWindow")

        # Set 'heading' property for plugin
        self.heading = _("System")

        # This should be the first item added to the window in glade
        self.content_holder = self.builder.get_object("System")

        # Items to get custom colors
        self.itemstocolor = [self.builder.get_object("viewport2")]

        # Gconf stuff
        self.settings = EasyGSettings(
            "com.linuxmint.mintmenu.plugins.system_management")

        self.settings.notifyAdd("icon-size", self.RegenPlugin)
        self.settings.notifyAdd("show-control-center", self.RegenPlugin)
        self.settings.notifyAdd("show-lock-screen", self.RegenPlugin)
        self.settings.notifyAdd("show-logout", self.RegenPlugin)
        self.settings.notifyAdd("show-package-manager", self.RegenPlugin)
        self.settings.notifyAdd("show-software-manager", self.RegenPlugin)
        self.settings.notifyAdd("show-terminal", self.RegenPlugin)
        self.settings.notifyAdd("show-quit", self.RegenPlugin)
        self.settings.notifyAdd("allow-scrollbar", self.RegenPlugin)
        self.settings.notifyAdd("height", self.changePluginSize)
        self.settings.notifyAdd("width", self.changePluginSize)
        self.settings.bindGSettingsEntryToVar("bool", "sticky", self, "sticky")

        self.GetGSettingsEntries()

        self.content_holder.set_size_request(self.width, self.height)

    def destroy(self):
        self.settings.notifyRemoveAll()

    def wake(self):
        pass

    def changePluginSize(self, settings, key, args):
        self.allowScrollbar = self.settings.get("bool", "allow-scrollbar")
        if key == "width":
            self.width = settings.get_int(key)
        elif key == "height":
            if (self.allowScrollbar == False):
                self.height = -1
                self.scrolledWindow.set_policy(Gtk.PolicyType.AUTOMATIC,
                                               Gtk.PolicyType.NEVER)
            else:
                self.scrolledWindow.set_policy(Gtk.PolicyType.AUTOMATIC,
                                               Gtk.PolicyType.AUTOMATIC)
                self.height = settings.get_int(key)

        self.content_holder.set_size_request(self.width, self.height)

    def RegenPlugin(self, *args, **kargs):
        self.GetGSettingsEntries()
        self.ClearAll()
        self.do_standard_items()

    def GetGSettingsEntries(self):

        self.width = self.settings.get("int", "width")
        self.allowScrollbar = self.settings.get("bool", "allow-scrollbar")
        self.scrolledWindow.set_policy(Gtk.PolicyType.AUTOMATIC,
                                       Gtk.PolicyType.AUTOMATIC)
        self.height = self.settings.get("int", "height")
        self.content_holder.set_size_request(self.width, self.height)
        if (self.allowScrollbar == False):
            self.height = -1
            self.scrolledWindow.set_policy(Gtk.PolicyType.AUTOMATIC,
                                           Gtk.PolicyType.NEVER)
        self.content_holder.set_size_request(self.width, self.height)
        self.iconsize = self.settings.get("int", "icon-size")

        # Check toggles

        self.showSoftwareManager = self.settings.get("bool",
                                                     "show-software-manager")
        self.showPackageManager = self.settings.get("bool",
                                                    "show-package-manager")
        self.showControlCenter = self.settings.get("bool",
                                                   "show-control-center")
        self.showTerminal = self.settings.get("bool", "show-terminal")
        self.showLockScreen = self.settings.get("bool", "show-lock-screen")
        self.showLogout = self.settings.get("bool", "show-logout")
        self.showQuit = self.settings.get("bool", "show-quit")

        # Hide vertical dotted separator
        self.hideseparator = self.settings.get("bool", "hide-separator")
        # Plugin icon
        self.icon = self.settings.get("string", "icon")
        # Allow plugin to be minimized to the left plugin pane
        self.sticky = self.settings.get("bool", "sticky")
        self.minimized = self.settings.get("bool", "minimized")

    def ClearAll(self):
        for child in self.systemBtnHolder.get_children():
            child.destroy()
        for child in self.editableBtnHolder.get_children():
            child.destroy()

    #Add standard items
    def do_standard_items(self):

        if (self.showSoftwareManager == True):
            if os.path.exists("/usr/lib/linuxmint/mintInstall/icon.svg"):
                Button1 = easyButton("/usr/lib/linuxmint/mintInstall/icon.svg",
                                     self.iconsize, [_("Software Manager")],
                                     -1, -1)
                Button1.connect("clicked", self.ButtonClicked,
                                "gksu mintinstall")
                Button1.show()
                self.systemBtnHolder.pack_start(Button1, False, False, 0)
                self.mintMenuWin.setTooltip(
                    Button1, _("Browse and install available software"))

        if (self.showPackageManager == True):
            Button2 = easyButton("applications-system", self.iconsize,
                                 [_("Package Manager")], -1, -1)
            Button2.connect("clicked", self.ButtonClicked,
                            "gksu /usr/sbin/synaptic")
            Button2.show()
            self.systemBtnHolder.pack_start(Button2, False, False, 0)
            self.mintMenuWin.setTooltip(
                Button2, _("Install, remove and upgrade software packages"))

        if (self.showControlCenter == True):
            Button3 = easyButton("gtk-preferences", self.iconsize,
                                 [_("Control Center")], -1, -1)
            if self.de == "xfce":
                Button3.connect("clicked", self.ButtonClicked,
                                "xfce4-settings-manager")
            else:
                Button3.connect("clicked", self.ButtonClicked,
                                "mate-control-center")
            Button3.show()
            self.systemBtnHolder.pack_start(Button3, False, False, 0)
            self.mintMenuWin.setTooltip(Button3, _("Configure your system"))

        if (self.showTerminal == True):
            Button4 = easyButton("terminal", self.iconsize, [_("Terminal")],
                                 -1, -1)
            if os.path.exists("/usr/bin/mate-terminal"):
                Button4.connect("clicked", self.ButtonClicked, "mate-terminal")
            else:
                Button4.connect("clicked", self.ButtonClicked,
                                "x-terminal-emulator")
            Button4.show()
            self.systemBtnHolder.pack_start(Button4, False, False, 0)
            self.mintMenuWin.setTooltip(Button4, _("Use the command line"))

        if self.de == "xfce":
            Button6 = easyButton("system-log-out", self.iconsize,
                                 [_("Logout")], -1, -1)
            Button6.connect("clicked", self.ButtonClicked,
                            "xfce4-session-logout")
            Button6.show()
            self.systemBtnHolder.pack_start(Button6, False, False, 0)
            self.mintMenuWin.setTooltip(Button6, _("Log out or switch user"))
        else:
            if (self.showLockScreen == True):
                Button5 = easyButton("system-lock-screen", self.iconsize,
                                     [_("Lock Screen")], -1, -1)
                if os.path.exists("/usr/bin/mate-screensaver-command"):
                    Button5.connect("clicked", self.ButtonClicked,
                                    "mate-screensaver-command -l")
                else:
                    Button5.connect("clicked", self.ButtonClicked,
                                    "xdg-screensaver lock")
                Button5.show()
                self.systemBtnHolder.pack_start(Button5, False, False, 0)
                self.mintMenuWin.setTooltip(Button5,
                                            _("Requires password to unlock"))

            if (self.showLogout == True):
                Button6 = easyButton("system-log-out", self.iconsize,
                                     [_("Logout")], -1, -1)
                Button6.connect("clicked", self.ButtonClicked,
                                "mate-session-save --logout-dialog")
                Button6.show()
                self.systemBtnHolder.pack_start(Button6, False, False, 0)
                self.mintMenuWin.setTooltip(Button6,
                                            _("Log out or switch user"))

            if (self.showQuit == True):
                Button7 = easyButton("system-shutdown", self.iconsize,
                                     [_("Quit")], -1, -1)
                Button7.connect("clicked", self.ButtonClicked,
                                "mate-session-save --shutdown-dialog")
                Button7.show()
                self.systemBtnHolder.pack_start(Button7, False, False, 0)
                self.mintMenuWin.setTooltip(
                    Button7, _("Shutdown, restart, suspend or hibernate"))

    def ButtonClicked(self, widget, Exec):
        self.mintMenuWin.hide()
        if Exec:
            Execute(Exec)

    def do_plugin(self):
        self.do_standard_items()
Exemple #13
0
class pluginclass( object ):

    def __init__( self, mintMenuWin, toggleButton, de ):

        self.mintMenuWin = mintMenuWin
        self.toggleButton = toggleButton
        self.de = de


        self.builder = Gtk.Builder()
        self.builder.add_from_file (os.path.join( os.path.dirname( __file__ ), "system_management.glade" ))

        self.systemBtnHolder    = self.builder.get_object( "system_button_holder" )
        self.editableBtnHolder  = self.builder.get_object( "editable_button_holder" )
        self.scrolledWindow = self.builder.get_object( "scrolledwindow2" )

        # These properties are NECESSARY to maintain consistency

        # Set 'window' property for the plugin (Must be the root widget)
        self.window = self.builder.get_object( "mainWindow" )

        # Set 'heading' property for plugin
        self.heading = _("System")

        # This should be the first item added to the window in glade
        self.content_holder = self.builder.get_object( "System" )

        # Items to get custom colors
        self.itemstocolor = [ self.builder.get_object( "viewport2" ) ]

        # Gconf stuff
        self.settings = EasyGSettings( "com.linuxmint.mintmenu.plugins.system_management" )

        self.settings.notifyAdd( "icon-size", self.RegenPlugin )
        self.settings.notifyAdd( "show-control-center", self.RegenPlugin )
        self.settings.notifyAdd( "show-lock-screen", self.RegenPlugin )
        self.settings.notifyAdd( "show-logout", self.RegenPlugin )
        self.settings.notifyAdd( "show-package-manager", self.RegenPlugin )
        self.settings.notifyAdd( "show-software-manager", self.RegenPlugin )
        self.settings.notifyAdd( "show-terminal", self.RegenPlugin )
        self.settings.notifyAdd( "show-quit", self.RegenPlugin )
        self.settings.notifyAdd( "allow-scrollbar", self.RegenPlugin )
        self.settings.notifyAdd( "height", self.changePluginSize )
        self.settings.notifyAdd( "width", self.changePluginSize )
        self.settings.bindGSettingsEntryToVar( "bool", "sticky", self, "sticky" )

        self.GetGSettingsEntries()

        self.content_holder.set_size_request( self.width, self.height )

    def destroy( self ):
        self.settings.notifyRemoveAll()

    def wake (self) :
        pass

    def changePluginSize( self, settings, key, args ):
        self.allowScrollbar = self.settings.get( "bool", "allow-scrollbar")
        if key == "width":
            self.width = settings.get_int(key)
        elif key == "height":
            if (self.allowScrollbar == False):
                self.height = -1
                self.scrolledWindow.set_policy( Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.NEVER )
            else:
                self.scrolledWindow.set_policy( Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC )
                self.height = settings.get_int(key)

        self.content_holder.set_size_request( self.width, self.height )


    def RegenPlugin( self, *args, **kargs ):
        self.GetGSettingsEntries()
        self.ClearAll()
        self.do_standard_items()

    def GetGSettingsEntries( self ):

        self.width = self.settings.get( "int", "width")
        self.allowScrollbar = self.settings.get( "bool", "allow-scrollbar")
        self.scrolledWindow.set_policy( Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC )
        self.height = self.settings.get( "int", "height")
        self.content_holder.set_size_request( self.width, self.height )
        if (self.allowScrollbar == False):
            self.height = -1
            self.scrolledWindow.set_policy( Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.NEVER )
        self.content_holder.set_size_request( self.width, self.height )
        self.iconsize = self.settings.get( "int","icon-size")

        # Check toggles
        self.showSoftwareManager = self.settings.get( "bool", "show-software-manager")
        self.showPackageManager = self.settings.get( "bool", "show-package-manager")
        self.showControlCenter = self.settings.get( "bool", "show-control-center")
        self.showTerminal = self.settings.get( "bool", "show-terminal")
        self.showLockScreen = self.settings.get( "bool", "show-lock-screen")
        self.showLogout = self.settings.get( "bool", "show-logout")
        self.showQuit = self.settings.get( "bool", "show-quit")

        if self.de == "cinnamon":
            self.lock_cmd = "cinnamon-screensaver-command --lock"
            self.logout_cmd = "cinnamon-session-quit --logout"
            self.shutdown_cmd = "cinnamon-session-quit --power-off"
            self.terminal_cmd = "/usr/bin/gnome-terminal"
            self.settings_cmd = "cinnamon-settings"
        elif self.de == "xfce":
            self.lock_cmd = "xdg-screensaver lock"
            self.logout_cmd = "xfce4-session-logout"
            self.shutdown_cmd = ""
            self.terminal_cmd = "/usr/bin/gnome-terminal"
            self.settings_cmd = "xfce4-settings-manager"
            self.showLockScreen = False
            self.showQuit = False
        else:
            self.lock_cmd = "mate-screensaver-command -l"
            self.logout_cmd = "mate-session-save --logout-dialog"
            self.shutdown_cmd = "mate-session-save --shutdown-dialog"
            self.terminal_cmd = "/usr/bin/mate-terminal"
            self.settings_cmd = "mate-control-center"

        # Hide vertical dotted separator
        self.hideseparator = self.settings.get( "bool", "hide-separator")
        # Plugin icon
        self.icon = self.settings.get( "string", "icon" )
        # Allow plugin to be minimized to the left plugin pane
        self.sticky = self.settings.get( "bool", "sticky")
        self.minimized = self.settings.get( "bool", "minimized")

    def ClearAll(self):
        for child in self.systemBtnHolder.get_children():
            child.destroy()
        for child in self.editableBtnHolder.get_children():
            child.destroy()

    #Add standard items
    def do_standard_items( self ):

        if ( self.showSoftwareManager == True ):
            if os.path.exists("/usr/bin/mintinstall"):
                Button1 = easyButton( "mintinstall", self.iconsize, [_("Software Manager")], -1, -1 )
                Button1.connect( "clicked", self.ButtonClicked, "mintinstall" )
                Button1.show()
                self.systemBtnHolder.pack_start( Button1, False, False, 0)
                self.mintMenuWin.setTooltip( Button1, _("Browse and install available software") )

        if ( self.showPackageManager == True ):
            Button2 = easyButton( "applications-system", self.iconsize, [_("Package Manager")], -1, -1 )
            Button2.connect( "clicked", self.ButtonClicked, "synaptic-pkexec" )
            Button2.show()
            self.systemBtnHolder.pack_start( Button2, False, False, 0 )
            self.mintMenuWin.setTooltip( Button2, _("Install, remove and upgrade software packages") )

        if ( self.showControlCenter == True ):
            Button3 = easyButton( "gtk-preferences", self.iconsize, [_("Control Center")], -1, -1 )
            Button3.connect( "clicked", self.ButtonClicked, self.settings_cmd )
            Button3.show()
            self.systemBtnHolder.pack_start( Button3, False, False, 0 )
            self.mintMenuWin.setTooltip( Button3, _("Configure your system") )

        if ( self.showTerminal == True ):
            Button4 = easyButton( "terminal", self.iconsize, [_("Terminal")], -1, -1 )
            if os.path.exists(self.terminal_cmd):
                Button4.connect( "clicked", self.ButtonClicked, self.terminal_cmd )
            else:
                Button4.connect( "clicked", self.ButtonClicked, "x-terminal-emulator" )
            Button4.show()
            self.systemBtnHolder.pack_start( Button4, False, False, 0 )
            self.mintMenuWin.setTooltip( Button4, _("Use the command line") )

        if ( self.showLockScreen == True ):
            Button5 = easyButton( "system-lock-screen", self.iconsize, [_("Lock Screen")], -1, -1 )
            Button5.connect( "clicked", self.ButtonClicked, self.lock_cmd )
            Button5.show()
            self.systemBtnHolder.pack_start( Button5, False, False, 0 )
            self.mintMenuWin.setTooltip( Button5, _("Requires password to unlock") )

        if ( self.showLogout == True ):
            Button6 = easyButton( "system-log-out", self.iconsize, [_("Logout")], -1, -1 )
            Button6.connect( "clicked", self.ButtonClicked, self.logout_cmd )
            Button6.show()
            self.systemBtnHolder.pack_start( Button6, False, False, 0 )
            self.mintMenuWin.setTooltip( Button6, _("Log out or switch user") )

        if ( self.showQuit == True ):
            Button7 = easyButton( "system-shutdown", self.iconsize, [_("Quit")], -1, -1 )
            Button7.connect( "clicked", self.ButtonClicked, self.shutdown_cmd )
            Button7.show()
            self.systemBtnHolder.pack_start( Button7, False, False, 0 )
            self.mintMenuWin.setTooltip( Button7, _("Shutdown, restart, suspend or hibernate") )

    def ButtonClicked( self, widget, Exec ):
        self.mintMenuWin.hide()
        if Exec:
            Execute( Exec )

    def do_plugin( self ):
        self.do_standard_items()
Exemple #14
0
    def __init__( self ):

        self.path = os.path.abspath( os.path.dirname( sys.argv[0] ) )

        # Load glade file and extract widgets
        self.builder = Gtk.Builder()
        self.builder.add_from_file (os.path.join(self.path, "mintMenuConfig.glade" ))
        self.mainWindow=self.builder.get_object("mainWindow")

        #i18n
        self.mainWindow.set_title(_("Menu preferences"))
        self.mainWindow.set_icon_from_file("/usr/lib/snowlinux/snowMenu/icon.svg")

        self.builder.get_object("showButtonIcon").set_label(_("Show button icon"))
        self.builder.get_object("showAppComments").set_label(_("Show application comments"))
        self.builder.get_object("showCategoryIcons").set_label(_("Show category icons"))
        self.builder.get_object("hover").set_label(_("Hover"))
        # self.builder.get_object("use_apt").set_label(_("Search for packages to install"))
        self.builder.get_object("buttonTextLabel").set_text(_("Button text:"))
        self.builder.get_object("label23").set_text(_("Applications"))
        self.builder.get_object("label3").set_text(_("Main button"))
        self.builder.get_object("themeLabel").set_text(_("Theme:"))
        self.builder.get_object("iconSizeLabel").set_text(_("Icon size:"))
        self.builder.get_object("iconSizeLabel2").set_text(_("Icon size:"))
        self.builder.get_object("hoverLabel").set_text(_("Hover delay (ms):"))
        self.builder.get_object("label4").set_text(_("Button icon:"))
        self.builder.get_object("label5").set_text(_("Search command:"))

        self.editPlaceDialogTitle = (_("Edit Place"))
        self.newPlaceDialogTitle = (_("New Place"))
        self.folderChooserDialogTitle = (_("Select a folder"))

        self.builder.get_object("hotkey_label").set_text(_("Keyboard shortcut:"))

        self.showAppComments = self.builder.get_object( "showAppComments" )
        # self.useAPT = self.builder.get_object( "use_apt" )
        self.showCategoryIcons = self.builder.get_object( "showCategoryIcons" )

        self.hover = self.builder.get_object( "hover" )
        self.hoverDelay = self.builder.get_object( "hoverDelay" )
        self.iconSize = self.builder.get_object( "iconSize" )
        self.favIconSize = self.builder.get_object( "favIconSize" )
        self.showButtonIcon = self.builder.get_object( "showButtonIcon" )
        self.buttonText = self.builder.get_object( "buttonText" )
        self.hotkeyText = self.builder.get_object( "hotkeyText" )
        self.buttonIcon = self.builder.get_object( "buttonIcon" )
        self.buttonIconChooser = self.builder.get_object( "button_icon_chooser" )
        self.image_filter = Gtk.FileFilter()
        self.image_filter.set_name(_("Images"))
        self.image_filter.add_pattern("*.png")
        self.image_filter.add_pattern("*.jpg")
        self.image_filter.add_pattern("*.jpeg")
        self.image_filter.add_pattern("*.bmp")
        self.image_filter.add_pattern("*.ico")
        self.image_filter.add_pattern("*.xpm")
        self.image_filter.add_pattern("*.svg")
        self.buttonIconChooser.add_filter(self.image_filter)
        self.buttonIconChooser.set_filter(self.image_filter)
        self.buttonIconImage = self.builder.get_object("image_button_icon")
        self.searchCommand = self.builder.get_object( "search_command" )

        self.builder.get_object( "closeButton" ).connect("clicked", Gtk.main_quit )


        self.settings = EasyGSettings( "com.snowlinux.snowmenu" )
        self.settingsApplications = EasyGSettings( "com.snowlinux.snowmenu.plugins.applications" )

        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "show-application-comments", self.showAppComments, "toggled", self.showAppComments.set_active, self.showAppComments.get_active )
        # self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "use-apt", self.useAPT, "toggled", self.useAPT.set_active, self.useAPT.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "show-category-icons", self.showCategoryIcons, "toggled", self.showCategoryIcons.set_active, self.showCategoryIcons.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "categories-mouse-over", self.hover, "toggled", self.hover.set_active, self.hover.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "int", "category-hover-delay", self.hoverDelay, "value-changed", self.hoverDelay.set_value, self.hoverDelay.get_value )
        self.bindGSettingsValueToWidget( self.settingsApplications, "int", "icon-size", self.iconSize, "value-changed", self.iconSize.set_value, self.iconSize.get_value )
        self.bindGSettingsValueToWidget( self.settingsApplications, "int", "favicon-size", self.favIconSize, "value-changed", self.favIconSize.set_value, self.favIconSize.get_value )
        self.bindGSettingsValueToWidget( self.settings, "bool", "hide-applet-icon", self.showButtonIcon, "toggled", self.setShowButtonIcon, self.getShowButtonIcon )
        self.bindGSettingsValueToWidget( self.settings, "string", "applet-text", self.buttonText, "changed", self.buttonText.set_text, self.buttonText.get_text )
        self.bindGSettingsValueToWidget( self.settings, "string", "hot-key", self.hotkeyText, "changed", self.hotkeyText.set_text, self.hotkeyText.get_text )
        self.bindGSettingsValueToWidget( self.settings, "string", "applet-icon", self.buttonIconChooser, "file-set", self.setButtonIcon, self.buttonIconChooser.get_filename )
        self.bindGSettingsValueToWidget( self.settingsApplications, "string", "search-command", self.searchCommand, "changed", self.searchCommand.set_text, self.searchCommand.get_text )

        #Detect themes and show theme here
        theme_name = self.settings.get ("string", "theme-name")
        themes = commands.getoutput("find /usr/share/themes -name gtkrc")
        themes = themes.split("\n")
        model = Gtk.ListStore(str, str)
        self.builder.get_object("themesCombo").set_model(model)
        selected_theme = model.append([_("Desktop theme"), "default"])
        for theme in themes:
            if theme.startswith("/usr/share/themes") and theme.endswith("/gtk-2.0/gtkrc"):
                theme = theme.replace("/usr/share/themes/", "")
                theme = theme.replace("gtk-2.0", "")
                theme = theme.replace("gtkrc", "")
                theme = theme.replace("/", "")
                theme = theme.strip()
                iter = model.append([theme, theme])
                if theme == theme_name:
                    selected_theme = iter
        self.builder.get_object("themesCombo").set_active_iter(selected_theme)
        self.builder.get_object("themesCombo").connect("changed", self.set_theme)
        self.mainWindow.present()
Exemple #15
0
class devuanMenuConfig( object ):

    def __init__( self ):

        self.path = os.path.abspath( os.path.dirname( sys.argv[0] ) )

        # Load glade file and extract widgets
        self.builder = Gtk.Builder()

        self.builder.add_from_file (os.path.join(self.path, "devuanMenuConfig.glade" ))
        self.mainWindow=self.builder.get_object("mainWindow")

        #i18n
        self.mainWindow.set_title(_("Menu preferences"))
        self.mainWindow.set_icon_from_file("/usr/lib/devuan/devuanMenu/icon.svg")

        self.builder.get_object("startWithFavorites").set_label(_("Always start with favorites pane"))
        self.builder.get_object("showButtonIcon").set_label(_("Show button icon"))
        self.builder.get_object("useCustomColors").set_label(_("Use custom colors"))
        self.builder.get_object("showRecentPlugin").set_label(_("Show recent documents plugin"))
        self.builder.get_object("showApplicationsPlugin").set_label(_("Show applications plugin"))
        self.builder.get_object("showSystemPlugin").set_label(_("Show system plugin"))
        self.builder.get_object("showPlacesPlugin").set_label(_("Show places plugin"))

        self.builder.get_object("showAppComments").set_label(_("Show application comments"))
        self.builder.get_object("showCategoryIcons").set_label(_("Show category icons"))
        self.builder.get_object("hover").set_label(_("Hover"))
        self.builder.get_object("remember_filter").set_label(_("Remember the last category or search"))
        self.builder.get_object("use_apt").set_label(_("Search for packages to install"))
        self.builder.get_object("swapGeneric").set_label(_("Swap name and generic name"))

        self.builder.get_object("label11").set_text(_("Border width:"))
        self.builder.get_object("label25").set_text(_("pixels"))

        self.builder.get_object("buttonTextLabel").set_text(_("Button text:"))
        self.builder.get_object("label1").set_text(_("Options"))
        self.builder.get_object("label23").set_text(_("Applications"))

        self.builder.get_object("colorsLabel").set_text(_("Theme"))
        self.builder.get_object("favLabel").set_text(_("Favorites"))
        self.builder.get_object("mainbuttonLabel").set_text(_("Main button"))
        self.builder.get_object("pluginsLabel").set_text(_("Plugins"))

        self.builder.get_object("backgroundColorLabel").set_text(_("Background:"))
        self.builder.get_object("headingColorLabel").set_text(_("Headings:"))
        self.builder.get_object("borderColorLabel").set_text(_("Borders:"))
        self.builder.get_object("themeLabel").set_text(_("Theme:"))

        #self.builder.get_object("applicationsLabel").set_text(_("Applications"))
        #self.builder.get_object("favoritesLabel").set_text(_("Favorites"))
        self.builder.get_object("numberColumnsLabel").set_text(_("Number of columns:"))
        self.builder.get_object("iconSizeLabel").set_text(_("Icon size:"))
        self.builder.get_object("iconSizeLabel2").set_text(_("Icon size:"))
        self.builder.get_object("placesIconSizeLabel").set_text(_("Icon size:"))
        self.builder.get_object("systemIconSizeLabel").set_text(_("Icon size:"))
        self.builder.get_object("hoverLabel").set_text(_("Hover delay (ms):"))
        self.builder.get_object("label4").set_text(_("Button icon:"))
        self.builder.get_object("label5").set_text(_("Search command:"))

        self.builder.get_object("placesLabel").set_text(_("Places"))
        self.builder.get_object("allowscrollbarcheckbutton").set_label(_("Allow Scrollbar"))
        self.builder.get_object("showgtkbookmarkscheckbutton").set_label(_("Show GTK Bookmarks"))
        self.builder.get_object("placesHeightEntryLabel").set_text(_("Height:"))
        self.builder.get_object("defaultPlacesFrameLabel").set_text(_("Toggle Default Places:"))
        self.builder.get_object("computercheckbutton").set_label(_("Computer"))
        self.builder.get_object("homecheckbutton").set_label(_("Home Folder"))
        self.builder.get_object("networkcheckbutton").set_label(_("Network"))
        self.builder.get_object("desktopcheckbutton").set_label(_("Desktop"))
        self.builder.get_object("trashcheckbutton").set_label(_("Trash"))
        self.builder.get_object("customPlacesFrameLabel").set_text(_("Custom Places:"))

        self.builder.get_object("systemLabel").set_text(_("System"))
        self.builder.get_object("allowscrollbarcheckbutton1").set_label(_("Allow Scrollbar"))
        self.builder.get_object("systemHeightEntryLabel").set_text(_("Height:"))
        self.builder.get_object("defaultItemsFrameLabel").set_text(_("Toggle Default Items:"))
        self.builder.get_object("softwaremanagercheckbutton").set_label(_("Software Manager"))
        self.builder.get_object("packagemanagercheckbutton").set_label(_("Package Manager"))
        self.builder.get_object("controlcentercheckbutton").set_label(_("Control Center"))
        self.builder.get_object("terminalcheckbutton").set_label(_("Terminal"))
        self.builder.get_object("lockcheckbutton").set_label(_("Lock Screen"))
        self.builder.get_object("logoutcheckbutton").set_label(_("Log Out"))
        self.builder.get_object("quitcheckbutton").set_label(_("Quit"))

        self.editPlaceDialogTitle = (_("Edit Place"))
        self.newPlaceDialogTitle = (_("New Place"))
        self.folderChooserDialogTitle = (_("Select a folder"))

        self.startWithFavorites = self.builder.get_object( "startWithFavorites" )
        self.showAppComments = self.builder.get_object( "showAppComments" )
        self.useAPT = self.builder.get_object( "use_apt" )
        self.showCategoryIcons = self.builder.get_object( "showCategoryIcons" )
        self.showRecentPlugin = self.builder.get_object( "showRecentPlugin" )
        self.showApplicationsPlugin = self.builder.get_object( "showApplicationsPlugin" )
        self.showSystemPlugin = self.builder.get_object( "showSystemPlugin" )
        self.showPlacesPlugin = self.builder.get_object( "showPlacesPlugin" )
        self.swapGeneric = self.builder.get_object("swapGeneric")
        self.hover = self.builder.get_object( "hover" )
        self.hoverDelay = self.builder.get_object( "hoverDelay" )
        self.rememberFilter = self.builder.get_object( "remember_filter" )
        self.iconSize = self.builder.get_object( "iconSize" )
        self.favIconSize = self.builder.get_object( "favIconSize" )
        self.placesIconSize = self.builder.get_object( "placesIconSize" )
        self.systemIconSize = self.builder.get_object( "systemIconSize" )
        self.favCols = self.builder.get_object( "numFavCols" )
        self.borderWidth = self.builder.get_object( "borderWidth" )
        self.useCustomColors = self.builder.get_object( "useCustomColors" )
        self.backgroundColor = self.builder.get_object( "backgroundColor" )
        self.borderColor = self.builder.get_object( "borderColor" )
        self.headingColor = self.builder.get_object( "headingColor" )
        self.backgroundColorLabel = self.builder.get_object( "backgroundColorLabel" )
        self.borderColorLabel = self.builder.get_object( "borderColorLabel" )
        self.headingColorLabel = self.builder.get_object( "headingColorLabel" )
        self.showButtonIcon = self.builder.get_object( "showButtonIcon" )
        self.buttonText = self.builder.get_object( "buttonText" )
        self.hotkeyWidget = keybinding.KeybindingWidget(_("Keyboard shortcut:") )
        table = self.builder.get_object( "main_table" )
        table.attach(self.hotkeyWidget, 0, 2, 2, 3, Gtk.AttachOptions.FILL, Gtk.AttachOptions.FILL, 0, 0)
        self.buttonIcon = self.builder.get_object( "buttonIcon" )
        self.buttonIconChooser = self.builder.get_object( "button_icon_chooser" )
        self.image_filter = Gtk.FileFilter()
        self.image_filter.set_name(_("Images"))
        self.image_filter.add_pattern("*.png")
        self.image_filter.add_pattern("*.jpg")
        self.image_filter.add_pattern("*.jpeg")
        self.image_filter.add_pattern("*.bmp")
        self.image_filter.add_pattern("*.ico")
        self.image_filter.add_pattern("*.xpm")
        self.image_filter.add_pattern("*.svg")
        self.buttonIconChooser.add_filter(self.image_filter)
        self.buttonIconChooser.set_filter(self.image_filter)
        self.buttonIconImage = self.builder.get_object("image_button_icon")
        self.searchCommand = self.builder.get_object( "search_command" )
        self.computertoggle = self.builder.get_object( "computercheckbutton" )
        self.homefoldertoggle = self.builder.get_object( "homecheckbutton" )
        self.networktoggle = self.builder.get_object( "networkcheckbutton" )
        self.desktoptoggle = self.builder.get_object( "desktopcheckbutton" )
        self.trashtoggle = self.builder.get_object( "trashcheckbutton" )
        self.customplacestree = self.builder.get_object( "customplacestree" )
        self.allowPlacesScrollbarToggle = self.builder.get_object( "allowscrollbarcheckbutton" )
        self.showgtkbookmarksToggle = self.builder.get_object( "showgtkbookmarkscheckbutton" )
        self.placesHeightButton = self.builder.get_object( "placesHeightSpinButton" )
        if (self.allowPlacesScrollbarToggle.get_active() == False):
            self.placesHeightButton.set_sensitive(False)
        self.allowPlacesScrollbarToggle.connect("toggled", self.togglePlacesHeightEnabled )
        self.softwareManagerToggle = self.builder.get_object( "softwaremanagercheckbutton" )
        self.packageManagerToggle = self.builder.get_object( "packagemanagercheckbutton" )
        self.controlCenterToggle = self.builder.get_object( "controlcentercheckbutton" )
        self.terminalToggle = self.builder.get_object( "terminalcheckbutton" )
        self.lockToggle = self.builder.get_object( "lockcheckbutton" )
        self.logoutToggle = self.builder.get_object( "logoutcheckbutton" )
        self.quitToggle = self.builder.get_object( "quitcheckbutton" )
        self.allowSystemScrollbarToggle = self.builder.get_object( "allowscrollbarcheckbutton1" )
        self.systemHeightButton = self.builder.get_object( "systemHeightSpinButton" )
        if (self.allowSystemScrollbarToggle.get_active() == False): self.systemHeightButton.set_sensitive(False)
        self.allowSystemScrollbarToggle.connect("toggled", self.toggleSystemHeightEnabled )
        if os.path.exists("/usr/bin/mintinstall"):
            self.builder.get_object( "softwaremanagercheckbutton" ).show()
        else:
            self.builder.get_object( "softwaremanagercheckbutton" ).hide()

        self.builder.get_object( "closeButton" ).connect("clicked", Gtk.main_quit )


        self.settings = EasyGSettings( "com.devuan.devuanmenu" )
        self.settingsApplications = EasyGSettings( "com.devuan.devuanmenu.plugins.applications" )
        self.settingsPlaces = EasyGSettings( "com.devuan.devuanmenu.plugins.places" )
        self.settingsSystem = EasyGSettings( "com.devuan.devuanmenu.plugins.system_management" )

        self.useCustomColors.connect( "toggled", self.toggleUseCustomColors )

        self.bindGSettingsValueToWidget( self.settings, "bool", "start-with-favorites", self.startWithFavorites, "toggled", self.startWithFavorites.set_active, self.startWithFavorites.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "show-application-comments", self.showAppComments, "toggled", self.showAppComments.set_active, self.showAppComments.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "use-apt", self.useAPT, "toggled", self.useAPT.set_active, self.useAPT.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "show-category-icons", self.showCategoryIcons, "toggled", self.showCategoryIcons.set_active, self.showCategoryIcons.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "categories-mouse-over", self.hover, "toggled", self.hover.set_active, self.hover.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "swap-generic-name", self.swapGeneric, "toggled", self.swapGeneric.set_active, self.swapGeneric.get_active )

        self.bindGSettingsValueToWidget( self.settingsApplications, "int", "category-hover-delay", self.hoverDelay, "value-changed", self.hoverDelay.set_value, self.hoverDelay.get_value )
        self.bindGSettingsValueToWidget( self.settingsApplications, "int", "icon-size", self.iconSize, "value-changed", self.iconSize.set_value, self.iconSize.get_value )
        self.bindGSettingsValueToWidget( self.settingsApplications, "int", "favicon-size", self.favIconSize, "value-changed", self.favIconSize.set_value, self.favIconSize.get_value )
        self.bindGSettingsValueToWidget( self.settingsApplications, "int", "fav-cols", self.favCols, "value-changed", self.favCols.set_value, self.favCols.get_value )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "remember-filter", self.rememberFilter, "toggled", self.rememberFilter.set_active, self.rememberFilter.get_active)

        self.bindGSettingsValueToWidget( self.settingsPlaces, "int", "icon-size", self.placesIconSize, "value-changed", self.placesIconSize.set_value, self.placesIconSize.get_value )
        self.bindGSettingsValueToWidget( self.settingsSystem, "int", "icon-size", self.systemIconSize, "value-changed", self.systemIconSize.set_value, self.systemIconSize.get_value )

        self.bindGSettingsValueToWidget( self.settings, "int", "border-width", self.borderWidth, "value-changed", self.borderWidth.set_value, self.borderWidth.get_value_as_int )
        self.bindGSettingsValueToWidget( self.settings, "bool", "use-custom-color", self.useCustomColors, "toggled", self.useCustomColors.set_active, self.useCustomColors.get_active )
        self.bindGSettingsValueToWidget( self.settings, "color", "custom-color", self.backgroundColor, "color-set", self.backgroundColor.set_color, self.getBackgroundColor )
        self.bindGSettingsValueToWidget( self.settings, "color", "custom-heading-color", self.headingColor, "color-set", self.headingColor.set_color, self.getHeadingColor )
        self.bindGSettingsValueToWidget( self.settings, "color", "custom-border-color", self.borderColor, "color-set", self.borderColor.set_color, self.getBorderColor )
        self.bindGSettingsValueToWidget( self.settings, "bool", "hide-applet-icon", self.showButtonIcon, "toggled", self.setShowButtonIcon, self.getShowButtonIcon )
        self.bindGSettingsValueToWidget( self.settings, "string", "applet-text", self.buttonText, "changed", self.buttonText.set_text, self.buttonText.get_text )
        self.bindGSettingsValueToWidget( self.settings, "string", "hot-key", self.hotkeyWidget, "accel-edited", self.hotkeyWidget.set_val, self.hotkeyWidget.get_val )
        self.bindGSettingsValueToWidget( self.settings, "string", "applet-icon", self.buttonIconChooser, "file-set", self.setButtonIcon, self.buttonIconChooser.get_filename )
        self.bindGSettingsValueToWidget( self.settingsApplications, "string", "search-command", self.searchCommand, "changed", self.searchCommand.set_text, self.searchCommand.get_text )

        self.getPluginsToggle()
        self.showRecentPlugin.connect("toggled", self.setPluginsLayout )
        self.showApplicationsPlugin.connect("toggled", self.setPluginsLayout )
        self.showSystemPlugin.connect("toggled", self.setPluginsLayout )
        self.showPlacesPlugin.connect("toggled", self.setPluginsLayout )


        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-computer", self.computertoggle, "toggled", self.computertoggle.set_active, self.computertoggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-home-folder", self.homefoldertoggle, "toggled", self.homefoldertoggle.set_active, self.homefoldertoggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-network", self.networktoggle, "toggled", self.networktoggle.set_active, self.networktoggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-desktop", self.desktoptoggle, "toggled", self.desktoptoggle.set_active, self.desktoptoggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-trash", self.trashtoggle, "toggled", self.trashtoggle.set_active, self.trashtoggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "int", "height", self.placesHeightButton, "value-changed", self.placesHeightButton.set_value, self.placesHeightButton.get_value_as_int )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "allow-scrollbar", self.allowPlacesScrollbarToggle, "toggled", self.allowPlacesScrollbarToggle.set_active, self.allowPlacesScrollbarToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-gtk-bookmarks", self.showgtkbookmarksToggle, "toggled", self.showgtkbookmarksToggle.set_active, self.showgtkbookmarksToggle.get_active )

        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-software-manager", self.softwareManagerToggle, "toggled", self.softwareManagerToggle.set_active, self.softwareManagerToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-package-manager", self.packageManagerToggle, "toggled", self.packageManagerToggle.set_active, self.packageManagerToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-control-center", self.controlCenterToggle, "toggled", self.controlCenterToggle.set_active, self.controlCenterToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-terminal", self.terminalToggle, "toggled", self.terminalToggle.set_active, self.terminalToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-lock-screen", self.lockToggle, "toggled", self.lockToggle.set_active, self.lockToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-logout", self.logoutToggle, "toggled", self.logoutToggle.set_active, self.logoutToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-quit", self.quitToggle, "toggled", self.quitToggle.set_active, self.quitToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "int", "height", self.systemHeightButton, "value-changed", self.systemHeightButton.set_value, self.systemHeightButton.get_value_as_int )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "allow-scrollbar", self.allowSystemScrollbarToggle, "toggled", self.allowSystemScrollbarToggle.set_active, self.allowSystemScrollbarToggle.get_active )

        self.customplacepaths = self.settingsPlaces.get( "list-string", "custom-paths" )
        self.customplacenames = self.settingsPlaces.get( "list-string", "custom-names" )

        self.customplacestreemodel = Gtk.ListStore( str, str)
        self.cell = Gtk.CellRendererText()

        for count in range( len(self.customplacepaths) ):
            self.customplacestreemodel.append( [ self.customplacenames[count], self.customplacepaths[count] ] )

        self.customplacestreemodel.connect("row-inserted", self.updatePlacesGSettings)
        self.customplacestreemodel.connect("row-deleted", self.updatePlacesGSettings)
        self.customplacestreemodel.connect("rows-reordered", self.updatePlacesGSettings)
        self.customplacestreemodel.connect("row-changed", self.updatePlacesGSettings)
        self.customplacestree.set_model( self.customplacestreemodel )
        self.namescolumn = Gtk.TreeViewColumn( _("Name"), self.cell, text = 0 )
        self.placescolumn = Gtk.TreeViewColumn( _("Path"), self.cell, text = 1 )
        self.customplacestree.append_column( self.namescolumn )
        self.customplacestree.append_column( self.placescolumn )
        self.builder.get_object("newButton").connect("clicked", self.newPlace)
        self.builder.get_object("editButton").connect("clicked", self.editPlace)
        self.builder.get_object("upButton").connect("clicked", self.moveUp)
        self.builder.get_object("downButton").connect("clicked", self.moveDown)
        self.builder.get_object("removeButton").connect("clicked", self.removePlace)

        #Detect themes and show theme here
        theme_name = self.settings.get ("string", "theme-name")
        themes = commands.getoutput("find /usr/share/themes -name gtkrc")
        themes = themes.split("\n")
        model = Gtk.ListStore(str, str)
        self.builder.get_object("themesCombo").set_model(model)
        selected_theme = model.append([_("Desktop theme"), "default"])
        for theme in sorted(themes):
            if theme.startswith("/usr/share/themes") and theme.endswith("/gtk-2.0/gtkrc"):
                theme = theme.replace("/usr/share/themes/", "")
                theme = theme.replace("gtk-2.0", "")
                theme = theme.replace("gtkrc", "")
                theme = theme.replace("/", "")
                theme = theme.strip()
                iter = model.append([theme, theme])
                if theme == theme_name:
                    selected_theme = iter
        self.builder.get_object("themesCombo").set_active_iter(selected_theme)
        self.builder.get_object("themesCombo").connect("changed", self.set_theme)

        self.toggleUseCustomColors(self.useCustomColors)
        self.mainWindow.present()
        self.getBackgroundColor()

    def set_theme(self, widget):
        model = widget.get_model()
        iter = widget.get_active_iter()
        theme_name = model.get_value(iter, 1)
        self.settings.set( "string", "theme-name", theme_name)

    def getPluginsToggle(self):
        array = self.settings.get ("list-string", "plugins-list")
        if "recent" in array:
            self.showRecentPlugin.set_active(True)
        else:
            self.showRecentPlugin.set_active(False)
        if "applications" in array:
            self.showApplicationsPlugin.set_active(True)
        else:
            self.showApplicationsPlugin.set_active(False)
        if "system_management" in array:
            self.showSystemPlugin.set_active(True)
        else:
            self.showSystemPlugin.set_active(False)
        if "places" in array:
            self.showPlacesPlugin.set_active(True)
        else:
            self.showPlacesPlugin.set_active(False)

    def setPluginsLayout (self, widget):
        visiblePlugins = []
        if self.showPlacesPlugin.get_active():
            visiblePlugins.append("places")
        if self.showSystemPlugin.get_active():
            visiblePlugins.append("system_management")
        if self.showApplicationsPlugin.get_active():
            if self.showPlacesPlugin.get_active() or self.showSystemPlugin.get_active():
                visiblePlugins.append("newpane")
            visiblePlugins.append("applications")
        if self.showRecentPlugin.get_active():
            if self.showApplicationsPlugin.get_active() or self.showPlacesPlugin.get_active() or self.showSystemPlugin.get_active():
                visiblePlugins.append("newpane")
            visiblePlugins.append("recent")
        self.settings.set ("list-string", "plugins-list", visiblePlugins)

    def setShowButtonIcon( self, value ):
        self.showButtonIcon.set_active(not value )

    def setButtonIcon( self, value ):
        self.buttonIconChooser.set_filename(value)
        pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(value, -1, 22)
        self.buttonIconImage.set_from_pixbuf(pixbuf)

    def getShowButtonIcon( self ):
        return not self.showButtonIcon.get_active()

    def bindGSettingsValueToWidget( self, settings, setting_type, key, widget, changeEvent, setter, getter ):
        settings.notifyAdd( key, self.callSetter, args = [ setting_type, setter ] )
        if setting_type == "color":
            setter( Gdk.color_parse( settings.get( setting_type, key ) ) )
        else:
            setter( settings.get( setting_type, key ) )
        widget.connect( changeEvent, lambda *args: self.callGetter( settings, setting_type, key, getter ) )

    def callSetter( self, settings, key, args ):
        if args[0] == "bool":
            args[1]( settings.get_boolean(key) )
        elif args[0] == "string":
            args[1]( settings.get_string(key) )
        elif args[0] == "int":
            args[1]( settings.get_int(key) )
        elif args[0] == "color":
            args[1]( Gdk.color_parse( settings.get_string(key) ) )

    def callGetter( self, settings, setting_type, key, getter ):
        if (setting_type == "int"):
            settings.set( setting_type, key, int(getter()))
        else:
            settings.set( setting_type, key, getter())

    def toggleUseCustomColors( self, widget ):
        self.backgroundColor.set_sensitive( widget.get_active() )
        self.borderColor.set_sensitive( widget.get_active() )
        self.headingColor.set_sensitive(  widget.get_active() )
        self.backgroundColorLabel.set_sensitive( widget.get_active() )
        self.borderColorLabel.set_sensitive( widget.get_active() )
        self.headingColorLabel.set_sensitive(  widget.get_active() )

    def getBackgroundColor( self ):
        try:
            color = self.backgroundColor.get_color()
        except:
            color = Gdk.Color(0, 0, 0)
            self.backgroundColor.get_color(color)
        return self.gdkColorToString( color )

    def getBorderColor( self ):
        try:
            color = self.borderColor.get_color()
        except:
            color = Gdk.Color(0, 0, 0)
            self.borderColor.get_color(color)
        return self.gdkColorToString( color )

    def getHeadingColor( self ):
        try:
            color = self.headingColor.get_color()
        except:
            color = Gdk.Color(0, 0, 0)
            self.headingColor.get_color(color)
        return self.gdkColorToString( color )

    def gdkColorToString( self, gdkColor ):
        return "#%.2X%.2X%.2X" % ( gdkColor.red / 256, gdkColor.green / 256, gdkColor.blue / 256 )

    def moveUp( self, upButton ):

        treeselection = self.customplacestree.get_selection()
        currentiter = (treeselection.get_selected())[1]

        if ( treeselection != None ):

            lagiter = self.customplacestreemodel.get_iter_first()
            nextiter = self.customplacestreemodel.get_iter_first()

            while ( (self.customplacestreemodel.get_path(nextiter) != self.customplacestreemodel.get_path(currentiter)) & (nextiter != None)):
                lagiter = nextiter
                nextiter = self.customplacestreemodel.iter_next(nextiter)

            if (nextiter != None):
                self.customplacestreemodel.swap(currentiter, lagiter)

        return

    def newPlace(self, newButton):
        self.builder.get_object("label2").set_text(_("Name:"))
        self.builder.get_object("label1").set_text(_("Path:"))
        newPlaceDialog = self.builder.get_object( "editPlaceDialog" )
        folderChooserDialog = self.builder.get_object( "fileChooserDialog" )
        newPlaceDialog.set_transient_for(self.mainWindow)
        newPlaceDialog.set_icon_from_file("/usr/lib/devuan/devuanMenu/icon.svg")
        newPlaceDialog.set_title(self.newPlaceDialogTitle)
        folderChooserDialog.set_title(self.folderChooserDialogTitle)
        newPlaceDialog.set_default_response(Gtk.ResponseType.OK)
        newPlaceName = self.builder.get_object( "nameEntryBox" )
        newPlacePath = self.builder.get_object( "pathEntryBox" )
        folderButton = self.builder.get_object( "folderButton" )
        def chooseFolder(folderButton):
            currentPath = newPlacePath.get_text()
            if (currentPath!=""):
                folderChooserDialog.select_filename(currentPath)
            response = folderChooserDialog.run()
            folderChooserDialog.hide()
            if (response == Gtk.ResponseType.OK):
                newPlacePath.set_text( folderChooserDialog.get_filenames()[0] )
        folderButton.connect("clicked", chooseFolder)

        response = newPlaceDialog.run()
        newPlaceDialog.hide()
        if (response == Gtk.ResponseType.OK ):
            name = newPlaceName.get_text()
            path = newPlacePath.get_text()
            if (name != "" and path !=""):
                self.customplacestreemodel.append( (name, path) )

    def editPlace(self, editButton):
        self.builder.get_object("label2").set_text(_("Name:"))
        self.builder.get_object("label1").set_text(_("Path:"))
        editPlaceDialog = self.builder.get_object( "editPlaceDialog" )
        folderChooserDialog = self.builder.get_object( "fileChooserDialog" )
        editPlaceDialog.set_transient_for(self.mainWindow)
        editPlaceDialog.set_icon_from_file("/usr/lib/devuan/devuanMenu/icon.svg")
        editPlaceDialog.set_title(self.editPlaceDialogTitle)
        folderChooserDialog.set_title(self.folderChooserDialogTitle)
        editPlaceDialog.set_default_response(Gtk.ResponseType.OK)
        editPlaceName = self.builder.get_object( "nameEntryBox" )
        editPlacePath = self.builder.get_object( "pathEntryBox" )
        folderButton = self.builder.get_object( "folderButton" )
        treeselection = self.customplacestree.get_selection()
        currentiter = (treeselection.get_selected())[1]

        if (currentiter != None):

            initName = self.customplacestreemodel.get_value(currentiter, 0)
            initPath = self.customplacestreemodel.get_value(currentiter, 1)

            editPlaceName.set_text(initName)
            editPlacePath.set_text(initPath)
            def chooseFolder(folderButton):
                currentPath = editPlacePath.get_text()
                if (currentPath!=""):
                    folderChooserDialog.select_filename(currentPath)
                response = folderChooserDialog.run()
                folderChooserDialog.hide()
                if (response == Gtk.ResponseType.OK):
                    editPlacePath.set_text( folderChooserDialog.get_filenames()[0] )
            folderButton.connect("clicked", chooseFolder)
            response = editPlaceDialog.run()
            editPlaceDialog.hide()
            if (response == Gtk.ResponseType.OK):
                name = editPlaceName.get_text()
                path = editPlacePath.get_text()
                if (name != "" and path != ""):
                    self.customplacestreemodel.set_value(currentiter, 0, name)
                    self.customplacestreemodel.set_value(currentiter, 1, path)

    def moveDown(self, downButton):

        treeselection = self.customplacestree.get_selection()
        currentiter = (treeselection.get_selected())[1]

        nextiter = self.customplacestreemodel.iter_next(currentiter)

        if (nextiter != None):
            self.customplacestreemodel.swap(currentiter, nextiter)

        return


    def removePlace(self, removeButton):

        treeselection = self.customplacestree.get_selection()
        currentiter = (treeselection.get_selected())[1]

        if (currentiter != None):
            self.customplacestreemodel.remove(currentiter)

        return

    def togglePlacesHeightEnabled(self, toggle):
        if (toggle.get_active() == True):
            self.placesHeightButton.set_sensitive(True)
        else:
            self.placesHeightButton.set_sensitive(False)

    def toggleSystemHeightEnabled(self, toggle):
        if (toggle.get_active() == True):
            self.systemHeightButton.set_sensitive(True)
        else:
            self.systemHeightButton.set_sensitive(False)

    def updatePlacesGSettings(self, treemodel, path, iter = None, new_order = None):
# Do only if not partway though an append operation; Append = insert+change+change and each creates a signal
        if ((iter == None) or (self.customplacestreemodel.get_value(iter, 1) != None)):
            treeiter = self.customplacestreemodel.get_iter_first()
            customplacenames = [ ]
            customplacepaths = [ ]
            while( treeiter != None ):
                customplacenames = customplacenames + [ self.customplacestreemodel.get_value(treeiter, 0 ) ]
                customplacepaths = customplacepaths + [ self.customplacestreemodel.get_value(treeiter, 1 ) ]
                treeiter = self.customplacestreemodel.iter_next(treeiter)
            self.settingsPlaces.set( "list-string", "custom-paths", customplacepaths)
            self.settingsPlaces.set( "list-string", "custom-names", customplacenames)
Exemple #16
0
    def __init__( self ):

        self.path = os.path.abspath( os.path.dirname( sys.argv[0] ) )

        # Load glade file and extract widgets
        self.builder = Gtk.Builder()

        self.builder.add_from_file (os.path.join(self.path, "devuanMenuConfig.glade" ))
        self.mainWindow=self.builder.get_object("mainWindow")

        #i18n
        self.mainWindow.set_title(_("Menu preferences"))
        self.mainWindow.set_icon_from_file("/usr/lib/devuan/devuanMenu/icon.svg")

        self.builder.get_object("startWithFavorites").set_label(_("Always start with favorites pane"))
        self.builder.get_object("showButtonIcon").set_label(_("Show button icon"))
        self.builder.get_object("useCustomColors").set_label(_("Use custom colors"))
        self.builder.get_object("showRecentPlugin").set_label(_("Show recent documents plugin"))
        self.builder.get_object("showApplicationsPlugin").set_label(_("Show applications plugin"))
        self.builder.get_object("showSystemPlugin").set_label(_("Show system plugin"))
        self.builder.get_object("showPlacesPlugin").set_label(_("Show places plugin"))

        self.builder.get_object("showAppComments").set_label(_("Show application comments"))
        self.builder.get_object("showCategoryIcons").set_label(_("Show category icons"))
        self.builder.get_object("hover").set_label(_("Hover"))
        self.builder.get_object("remember_filter").set_label(_("Remember the last category or search"))
        self.builder.get_object("use_apt").set_label(_("Search for packages to install"))
        self.builder.get_object("swapGeneric").set_label(_("Swap name and generic name"))

        self.builder.get_object("label11").set_text(_("Border width:"))
        self.builder.get_object("label25").set_text(_("pixels"))

        self.builder.get_object("buttonTextLabel").set_text(_("Button text:"))
        self.builder.get_object("label1").set_text(_("Options"))
        self.builder.get_object("label23").set_text(_("Applications"))

        self.builder.get_object("colorsLabel").set_text(_("Theme"))
        self.builder.get_object("favLabel").set_text(_("Favorites"))
        self.builder.get_object("mainbuttonLabel").set_text(_("Main button"))
        self.builder.get_object("pluginsLabel").set_text(_("Plugins"))

        self.builder.get_object("backgroundColorLabel").set_text(_("Background:"))
        self.builder.get_object("headingColorLabel").set_text(_("Headings:"))
        self.builder.get_object("borderColorLabel").set_text(_("Borders:"))
        self.builder.get_object("themeLabel").set_text(_("Theme:"))

        #self.builder.get_object("applicationsLabel").set_text(_("Applications"))
        #self.builder.get_object("favoritesLabel").set_text(_("Favorites"))
        self.builder.get_object("numberColumnsLabel").set_text(_("Number of columns:"))
        self.builder.get_object("iconSizeLabel").set_text(_("Icon size:"))
        self.builder.get_object("iconSizeLabel2").set_text(_("Icon size:"))
        self.builder.get_object("placesIconSizeLabel").set_text(_("Icon size:"))
        self.builder.get_object("systemIconSizeLabel").set_text(_("Icon size:"))
        self.builder.get_object("hoverLabel").set_text(_("Hover delay (ms):"))
        self.builder.get_object("label4").set_text(_("Button icon:"))
        self.builder.get_object("label5").set_text(_("Search command:"))

        self.builder.get_object("placesLabel").set_text(_("Places"))
        self.builder.get_object("allowscrollbarcheckbutton").set_label(_("Allow Scrollbar"))
        self.builder.get_object("showgtkbookmarkscheckbutton").set_label(_("Show GTK Bookmarks"))
        self.builder.get_object("placesHeightEntryLabel").set_text(_("Height:"))
        self.builder.get_object("defaultPlacesFrameLabel").set_text(_("Toggle Default Places:"))
        self.builder.get_object("computercheckbutton").set_label(_("Computer"))
        self.builder.get_object("homecheckbutton").set_label(_("Home Folder"))
        self.builder.get_object("networkcheckbutton").set_label(_("Network"))
        self.builder.get_object("desktopcheckbutton").set_label(_("Desktop"))
        self.builder.get_object("trashcheckbutton").set_label(_("Trash"))
        self.builder.get_object("customPlacesFrameLabel").set_text(_("Custom Places:"))

        self.builder.get_object("systemLabel").set_text(_("System"))
        self.builder.get_object("allowscrollbarcheckbutton1").set_label(_("Allow Scrollbar"))
        self.builder.get_object("systemHeightEntryLabel").set_text(_("Height:"))
        self.builder.get_object("defaultItemsFrameLabel").set_text(_("Toggle Default Items:"))
        self.builder.get_object("softwaremanagercheckbutton").set_label(_("Software Manager"))
        self.builder.get_object("packagemanagercheckbutton").set_label(_("Package Manager"))
        self.builder.get_object("controlcentercheckbutton").set_label(_("Control Center"))
        self.builder.get_object("terminalcheckbutton").set_label(_("Terminal"))
        self.builder.get_object("lockcheckbutton").set_label(_("Lock Screen"))
        self.builder.get_object("logoutcheckbutton").set_label(_("Log Out"))
        self.builder.get_object("quitcheckbutton").set_label(_("Quit"))

        self.editPlaceDialogTitle = (_("Edit Place"))
        self.newPlaceDialogTitle = (_("New Place"))
        self.folderChooserDialogTitle = (_("Select a folder"))

        self.startWithFavorites = self.builder.get_object( "startWithFavorites" )
        self.showAppComments = self.builder.get_object( "showAppComments" )
        self.useAPT = self.builder.get_object( "use_apt" )
        self.showCategoryIcons = self.builder.get_object( "showCategoryIcons" )
        self.showRecentPlugin = self.builder.get_object( "showRecentPlugin" )
        self.showApplicationsPlugin = self.builder.get_object( "showApplicationsPlugin" )
        self.showSystemPlugin = self.builder.get_object( "showSystemPlugin" )
        self.showPlacesPlugin = self.builder.get_object( "showPlacesPlugin" )
        self.swapGeneric = self.builder.get_object("swapGeneric")
        self.hover = self.builder.get_object( "hover" )
        self.hoverDelay = self.builder.get_object( "hoverDelay" )
        self.rememberFilter = self.builder.get_object( "remember_filter" )
        self.iconSize = self.builder.get_object( "iconSize" )
        self.favIconSize = self.builder.get_object( "favIconSize" )
        self.placesIconSize = self.builder.get_object( "placesIconSize" )
        self.systemIconSize = self.builder.get_object( "systemIconSize" )
        self.favCols = self.builder.get_object( "numFavCols" )
        self.borderWidth = self.builder.get_object( "borderWidth" )
        self.useCustomColors = self.builder.get_object( "useCustomColors" )
        self.backgroundColor = self.builder.get_object( "backgroundColor" )
        self.borderColor = self.builder.get_object( "borderColor" )
        self.headingColor = self.builder.get_object( "headingColor" )
        self.backgroundColorLabel = self.builder.get_object( "backgroundColorLabel" )
        self.borderColorLabel = self.builder.get_object( "borderColorLabel" )
        self.headingColorLabel = self.builder.get_object( "headingColorLabel" )
        self.showButtonIcon = self.builder.get_object( "showButtonIcon" )
        self.buttonText = self.builder.get_object( "buttonText" )
        self.hotkeyWidget = keybinding.KeybindingWidget(_("Keyboard shortcut:") )
        table = self.builder.get_object( "main_table" )
        table.attach(self.hotkeyWidget, 0, 2, 2, 3, Gtk.AttachOptions.FILL, Gtk.AttachOptions.FILL, 0, 0)
        self.buttonIcon = self.builder.get_object( "buttonIcon" )
        self.buttonIconChooser = self.builder.get_object( "button_icon_chooser" )
        self.image_filter = Gtk.FileFilter()
        self.image_filter.set_name(_("Images"))
        self.image_filter.add_pattern("*.png")
        self.image_filter.add_pattern("*.jpg")
        self.image_filter.add_pattern("*.jpeg")
        self.image_filter.add_pattern("*.bmp")
        self.image_filter.add_pattern("*.ico")
        self.image_filter.add_pattern("*.xpm")
        self.image_filter.add_pattern("*.svg")
        self.buttonIconChooser.add_filter(self.image_filter)
        self.buttonIconChooser.set_filter(self.image_filter)
        self.buttonIconImage = self.builder.get_object("image_button_icon")
        self.searchCommand = self.builder.get_object( "search_command" )
        self.computertoggle = self.builder.get_object( "computercheckbutton" )
        self.homefoldertoggle = self.builder.get_object( "homecheckbutton" )
        self.networktoggle = self.builder.get_object( "networkcheckbutton" )
        self.desktoptoggle = self.builder.get_object( "desktopcheckbutton" )
        self.trashtoggle = self.builder.get_object( "trashcheckbutton" )
        self.customplacestree = self.builder.get_object( "customplacestree" )
        self.allowPlacesScrollbarToggle = self.builder.get_object( "allowscrollbarcheckbutton" )
        self.showgtkbookmarksToggle = self.builder.get_object( "showgtkbookmarkscheckbutton" )
        self.placesHeightButton = self.builder.get_object( "placesHeightSpinButton" )
        if (self.allowPlacesScrollbarToggle.get_active() == False):
            self.placesHeightButton.set_sensitive(False)
        self.allowPlacesScrollbarToggle.connect("toggled", self.togglePlacesHeightEnabled )
        self.softwareManagerToggle = self.builder.get_object( "softwaremanagercheckbutton" )
        self.packageManagerToggle = self.builder.get_object( "packagemanagercheckbutton" )
        self.controlCenterToggle = self.builder.get_object( "controlcentercheckbutton" )
        self.terminalToggle = self.builder.get_object( "terminalcheckbutton" )
        self.lockToggle = self.builder.get_object( "lockcheckbutton" )
        self.logoutToggle = self.builder.get_object( "logoutcheckbutton" )
        self.quitToggle = self.builder.get_object( "quitcheckbutton" )
        self.allowSystemScrollbarToggle = self.builder.get_object( "allowscrollbarcheckbutton1" )
        self.systemHeightButton = self.builder.get_object( "systemHeightSpinButton" )
        if (self.allowSystemScrollbarToggle.get_active() == False): self.systemHeightButton.set_sensitive(False)
        self.allowSystemScrollbarToggle.connect("toggled", self.toggleSystemHeightEnabled )
        if os.path.exists("/usr/bin/mintinstall"):
            self.builder.get_object( "softwaremanagercheckbutton" ).show()
        else:
            self.builder.get_object( "softwaremanagercheckbutton" ).hide()

        self.builder.get_object( "closeButton" ).connect("clicked", Gtk.main_quit )


        self.settings = EasyGSettings( "com.devuan.devuanmenu" )
        self.settingsApplications = EasyGSettings( "com.devuan.devuanmenu.plugins.applications" )
        self.settingsPlaces = EasyGSettings( "com.devuan.devuanmenu.plugins.places" )
        self.settingsSystem = EasyGSettings( "com.devuan.devuanmenu.plugins.system_management" )

        self.useCustomColors.connect( "toggled", self.toggleUseCustomColors )

        self.bindGSettingsValueToWidget( self.settings, "bool", "start-with-favorites", self.startWithFavorites, "toggled", self.startWithFavorites.set_active, self.startWithFavorites.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "show-application-comments", self.showAppComments, "toggled", self.showAppComments.set_active, self.showAppComments.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "use-apt", self.useAPT, "toggled", self.useAPT.set_active, self.useAPT.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "show-category-icons", self.showCategoryIcons, "toggled", self.showCategoryIcons.set_active, self.showCategoryIcons.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "categories-mouse-over", self.hover, "toggled", self.hover.set_active, self.hover.get_active )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "swap-generic-name", self.swapGeneric, "toggled", self.swapGeneric.set_active, self.swapGeneric.get_active )

        self.bindGSettingsValueToWidget( self.settingsApplications, "int", "category-hover-delay", self.hoverDelay, "value-changed", self.hoverDelay.set_value, self.hoverDelay.get_value )
        self.bindGSettingsValueToWidget( self.settingsApplications, "int", "icon-size", self.iconSize, "value-changed", self.iconSize.set_value, self.iconSize.get_value )
        self.bindGSettingsValueToWidget( self.settingsApplications, "int", "favicon-size", self.favIconSize, "value-changed", self.favIconSize.set_value, self.favIconSize.get_value )
        self.bindGSettingsValueToWidget( self.settingsApplications, "int", "fav-cols", self.favCols, "value-changed", self.favCols.set_value, self.favCols.get_value )
        self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "remember-filter", self.rememberFilter, "toggled", self.rememberFilter.set_active, self.rememberFilter.get_active)

        self.bindGSettingsValueToWidget( self.settingsPlaces, "int", "icon-size", self.placesIconSize, "value-changed", self.placesIconSize.set_value, self.placesIconSize.get_value )
        self.bindGSettingsValueToWidget( self.settingsSystem, "int", "icon-size", self.systemIconSize, "value-changed", self.systemIconSize.set_value, self.systemIconSize.get_value )

        self.bindGSettingsValueToWidget( self.settings, "int", "border-width", self.borderWidth, "value-changed", self.borderWidth.set_value, self.borderWidth.get_value_as_int )
        self.bindGSettingsValueToWidget( self.settings, "bool", "use-custom-color", self.useCustomColors, "toggled", self.useCustomColors.set_active, self.useCustomColors.get_active )
        self.bindGSettingsValueToWidget( self.settings, "color", "custom-color", self.backgroundColor, "color-set", self.backgroundColor.set_color, self.getBackgroundColor )
        self.bindGSettingsValueToWidget( self.settings, "color", "custom-heading-color", self.headingColor, "color-set", self.headingColor.set_color, self.getHeadingColor )
        self.bindGSettingsValueToWidget( self.settings, "color", "custom-border-color", self.borderColor, "color-set", self.borderColor.set_color, self.getBorderColor )
        self.bindGSettingsValueToWidget( self.settings, "bool", "hide-applet-icon", self.showButtonIcon, "toggled", self.setShowButtonIcon, self.getShowButtonIcon )
        self.bindGSettingsValueToWidget( self.settings, "string", "applet-text", self.buttonText, "changed", self.buttonText.set_text, self.buttonText.get_text )
        self.bindGSettingsValueToWidget( self.settings, "string", "hot-key", self.hotkeyWidget, "accel-edited", self.hotkeyWidget.set_val, self.hotkeyWidget.get_val )
        self.bindGSettingsValueToWidget( self.settings, "string", "applet-icon", self.buttonIconChooser, "file-set", self.setButtonIcon, self.buttonIconChooser.get_filename )
        self.bindGSettingsValueToWidget( self.settingsApplications, "string", "search-command", self.searchCommand, "changed", self.searchCommand.set_text, self.searchCommand.get_text )

        self.getPluginsToggle()
        self.showRecentPlugin.connect("toggled", self.setPluginsLayout )
        self.showApplicationsPlugin.connect("toggled", self.setPluginsLayout )
        self.showSystemPlugin.connect("toggled", self.setPluginsLayout )
        self.showPlacesPlugin.connect("toggled", self.setPluginsLayout )


        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-computer", self.computertoggle, "toggled", self.computertoggle.set_active, self.computertoggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-home-folder", self.homefoldertoggle, "toggled", self.homefoldertoggle.set_active, self.homefoldertoggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-network", self.networktoggle, "toggled", self.networktoggle.set_active, self.networktoggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-desktop", self.desktoptoggle, "toggled", self.desktoptoggle.set_active, self.desktoptoggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-trash", self.trashtoggle, "toggled", self.trashtoggle.set_active, self.trashtoggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "int", "height", self.placesHeightButton, "value-changed", self.placesHeightButton.set_value, self.placesHeightButton.get_value_as_int )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "allow-scrollbar", self.allowPlacesScrollbarToggle, "toggled", self.allowPlacesScrollbarToggle.set_active, self.allowPlacesScrollbarToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsPlaces, "bool", "show-gtk-bookmarks", self.showgtkbookmarksToggle, "toggled", self.showgtkbookmarksToggle.set_active, self.showgtkbookmarksToggle.get_active )

        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-software-manager", self.softwareManagerToggle, "toggled", self.softwareManagerToggle.set_active, self.softwareManagerToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-package-manager", self.packageManagerToggle, "toggled", self.packageManagerToggle.set_active, self.packageManagerToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-control-center", self.controlCenterToggle, "toggled", self.controlCenterToggle.set_active, self.controlCenterToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-terminal", self.terminalToggle, "toggled", self.terminalToggle.set_active, self.terminalToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-lock-screen", self.lockToggle, "toggled", self.lockToggle.set_active, self.lockToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-logout", self.logoutToggle, "toggled", self.logoutToggle.set_active, self.logoutToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "show-quit", self.quitToggle, "toggled", self.quitToggle.set_active, self.quitToggle.get_active )
        self.bindGSettingsValueToWidget( self.settingsSystem, "int", "height", self.systemHeightButton, "value-changed", self.systemHeightButton.set_value, self.systemHeightButton.get_value_as_int )
        self.bindGSettingsValueToWidget( self.settingsSystem, "bool", "allow-scrollbar", self.allowSystemScrollbarToggle, "toggled", self.allowSystemScrollbarToggle.set_active, self.allowSystemScrollbarToggle.get_active )

        self.customplacepaths = self.settingsPlaces.get( "list-string", "custom-paths" )
        self.customplacenames = self.settingsPlaces.get( "list-string", "custom-names" )

        self.customplacestreemodel = Gtk.ListStore( str, str)
        self.cell = Gtk.CellRendererText()

        for count in range( len(self.customplacepaths) ):
            self.customplacestreemodel.append( [ self.customplacenames[count], self.customplacepaths[count] ] )

        self.customplacestreemodel.connect("row-inserted", self.updatePlacesGSettings)
        self.customplacestreemodel.connect("row-deleted", self.updatePlacesGSettings)
        self.customplacestreemodel.connect("rows-reordered", self.updatePlacesGSettings)
        self.customplacestreemodel.connect("row-changed", self.updatePlacesGSettings)
        self.customplacestree.set_model( self.customplacestreemodel )
        self.namescolumn = Gtk.TreeViewColumn( _("Name"), self.cell, text = 0 )
        self.placescolumn = Gtk.TreeViewColumn( _("Path"), self.cell, text = 1 )
        self.customplacestree.append_column( self.namescolumn )
        self.customplacestree.append_column( self.placescolumn )
        self.builder.get_object("newButton").connect("clicked", self.newPlace)
        self.builder.get_object("editButton").connect("clicked", self.editPlace)
        self.builder.get_object("upButton").connect("clicked", self.moveUp)
        self.builder.get_object("downButton").connect("clicked", self.moveDown)
        self.builder.get_object("removeButton").connect("clicked", self.removePlace)

        #Detect themes and show theme here
        theme_name = self.settings.get ("string", "theme-name")
        themes = commands.getoutput("find /usr/share/themes -name gtkrc")
        themes = themes.split("\n")
        model = Gtk.ListStore(str, str)
        self.builder.get_object("themesCombo").set_model(model)
        selected_theme = model.append([_("Desktop theme"), "default"])
        for theme in sorted(themes):
            if theme.startswith("/usr/share/themes") and theme.endswith("/gtk-2.0/gtkrc"):
                theme = theme.replace("/usr/share/themes/", "")
                theme = theme.replace("gtk-2.0", "")
                theme = theme.replace("gtkrc", "")
                theme = theme.replace("/", "")
                theme = theme.strip()
                iter = model.append([theme, theme])
                if theme == theme_name:
                    selected_theme = iter
        self.builder.get_object("themesCombo").set_active_iter(selected_theme)
        self.builder.get_object("themesCombo").connect("changed", self.set_theme)

        self.toggleUseCustomColors(self.useCustomColors)
        self.mainWindow.present()
        self.getBackgroundColor()
Exemple #17
0
class pluginclass:
    """This is the main class for the plugin"""
    """It MUST be named pluginclass"""

    def __init__( self, mintMenuWin, toggleButton, de ):

        self.Win = mintMenuWin
        self.toggleButton = toggleButton
        self.de = de

        self.builder = Gtk.Builder()
        #The Glade file for the plugin
        self.builder.add_from_file (os.path.join( os.path.dirname( __file__ ), "recent.glade" ))

        #Set 'window' property for the plugin (Must be the root widget)
        self.window = self.builder.get_object( "window1" )

        #Set 'heading' property for plugin
        self.heading = _("Recently used")

        #This should be the first item added to the window in glade
        self.content_holder = self.builder.get_object( "eventbox1" )

        self.recentBox = self.builder.get_object("RecentBox")
        self.recentAppBox = self.builder.get_object("RecentApps")
        RecentHelper.recentAppBox = self.recentAppBox
        
        #self.recentApps = []
        
        self.recentVBox = self.builder.get_object( "vbox1" )

        #Specify plugin width
        self.width = 250

        #Plugin icon
        self.icon = 'mate-folder.png'

        self.settings = EasyGSettings ("com.linuxmint.mintmenu.plugins.recent")

        self.settings.notifyAdd( 'height', self.RegenPlugin )
        self.settings.notifyAdd( 'width', self.RegenPlugin )
        self.settings.notifyAdd( 'num-recent-docs', self.RegenPlugin )
        self.settings.notifyAdd( 'recent-font-size', self.RegenPlugin )

        self.appSettings = EasyGSettings( "com.linuxmint.mintmenu.plugins.applications" )
        self.appSettings.notifyAdd( "icon-size", self.RegenPlugin )
        
        self.FileList=[]
        self.RecManagerInstance = Gtk.RecentManager.get_default()
        self.recentManagerId = self.RecManagerInstance.connect("changed", self.DoRecent)

        self.RegenPlugin()
        self.builder.get_object( "RecentTabs" ).set_current_page(0)

        #Connect event handlers
        self.builder.get_object("ClrBtn").connect("clicked", self.clrmenu)

    def wake (self) :
        pass

    def destroy( self ):
        self.recentBox.destroy()
        self.recentVBox.destroy()
        self.builder.get_object( "RecentTabs" ).destroy()
        self.builder.get_object("ClrBtn").destroy()
        self.content_holder.destroy()
        self.settings.notifyRemoveAll()
        if self.recentManagerId:
            self.RecManagerInstance.disconnect(self.recentManagerId)

    def RegenPlugin( self, *args, **kargs ):
        self.GetGSettingsEntries()

    def GetGSettingsEntries( self ):
        self.recenth = self.settings.get( 'int', 'height' )
        self.recentw = self.settings.get( 'int', 'width' )
        self.numentries = self.settings.get( 'int', 'num-recent-docs' )
        RecentHelper.numentries = self.numentries
        
        self.recentfontsize = self.settings.get( 'int', 'recent-font-size' )

        # Hide vertical dotted separator
        self.hideseparator = self.settings.get( "bool", "hide-separator" )
        # Plugin icon
        self.icon = self.settings.get( "string", 'icon' )
        # Allow plugin to be minimized to the left plugin pane
        self.sticky = self.settings.get( "bool", "sticky" )
        self.minimized = self.settings.get( "bool", "minimized" )
        RecentHelper.iconSize = self.appSettings.get( "int", "icon-size")
        self.RebuildPlugin()

    def SetHidden( self, state ):
        if state == True:
            self.settings.set( "bool", "minimized", True )
        else:
            self.settings.set( "bool", "minimized", False )


    def RebuildPlugin(self):
        self.content_holder.set_size_request(self.recentw, self.recenth )
        self.DoRecent()


    def DoRecent( self, *args, **kargs ):
        for i in self.recentBox.get_children():
            i.destroy()
        
        self.recentVBox.set_size_request( self.recentw, self.recenth )
        if len( self.recentBox.get_children() ) < self.numentries:
            n=len( self.recentBox.get_children() )-1
        else:
            n=self.numentries-1
        while n >= 0:
            self.recentBox.remove( self.recentBox.get_children()[n] )
            n-=1

        self.FileList, self.IconList = self.GetRecent()
        loc = 0
        for Name in self.FileList:
            if Name != None:
                self.AddRecentBtn( Name, self.IconList[loc] )
            loc = loc + 1
        
        RecentHelper.doRecentApps()
        
        return True

    def clrmenu(self, *args, **kargs):
        self.RecManagerInstance.purge_items()
        self.DoRecent()
        return

    def AddRecentBtn( self, Name, RecentImage ):
        DispName=os.path.basename( Name )

        AButton = Gtk.Button( "", "ok", True )
        AButton.remove( AButton.get_children()[0] )
        AButton.set_size_request( 200, -1 )
        AButton.set_relief( Gtk.ReliefStyle.NONE )
        AButton.connect( "clicked", self.callback, Name )
        AButton.show()

        Box1 = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)

        ButtonIcon = Gtk.Image()
        ButtonIcon.set_size_request(20, -1)
        ButtonIcon.set_from_pixbuf(RecentImage)
        Box1.add(ButtonIcon)

        Label1 = Gtk.Label( DispName )
        Label1.set_ellipsize( Pango.EllipsizeMode.END )
        Box1.add( Label1 )

        AButton.add( Box1 )
        AButton.show_all()

        self.recentBox.pack_start( AButton, False, True, 0 )

    def callback(self, widget, filename=None):
        self.Win.hide()

        x = os.system("gvfs-open \""+filename+"\"")
        if x == 256:
            dia = Gtk.Dialog('File not found!',
                             None,  #the toplevel wgt of your app
                             Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT,  #binary flags or'ed together
                             ("Ok", 77))
            dia.vbox.pack_start(Gtk.Label('The location or file could not be found!'), False, False, 0)
            dia.vbox.show_all()
            dia.show()
            result = dia.run()
            if result == 77:
                dia.destroy()



    def GetRecent(self, *args, **kargs):
        FileString=[]
        IconString=[]
        RecentInfo=self.RecManagerInstance.get_items()
        # print RecentInfo[0].get_icon(Gtk.IconSize.MENU)
        count=0
        MaxEntries=self.numentries
        if self.numentries == -1:
            MaxEntries=len(RecentInfo)
        for items in RecentInfo:
            FileString.append(items.get_uri_display())
            IconString.append(items.get_icon(Gtk.IconSize.MENU))
            count+=1
            if count >= MaxEntries:
                break
        return FileString,  IconString


    def ButtonClicked( self, widget, event, Exec ):
        self.press_x = event.x
        self.press_y = event.y
        self.Exec = Exec

    def ButtonReleased( self, w, ev, ev2 ):
        if ev.button == 1:
            if not hasattr( self, "press_x" ) or \
                    not w.drag_check_threshold( int( self.press_x ),
                                                int( self.press_y ),
                                                int( ev.x ),
                                                int( ev.y ) ):
                if self.Win.pinmenu == False:
                    self.Win.wTree.get_widget( "window1" ).hide()
                if "applications" in self.Win.plugins:
                    self.Win.plugins["applications"].wTree.get_widget( "entry1" ).grab_focus()
                Execute( w, self.Exec )

    def do_plugin(self):
        self.DoRecent()