diff --git a/debian/changelog b/debian/changelog index a8a4d39..f3d3f64 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,46 @@ -mintmenu (5.7.7) serena; urgency=medium +mintmenu (5.7.8) sonya; urgency=medium - * Add recently used applications + [ JosephMcc ] + * Remove the ability to set a custom border - -- Hrotkó Gábor Tue, 03 Jan 2017 21:30:58 +0000 + [ Clement Lefebvre ] + * Fix launching apps which use su-to-root + + -- Clement Lefebvre Tue, 02 May 2017 13:10:32 +0100 + +mintmenu (5.7.7) sonya; urgency=medium + + [ leigh123linux ] + * gtk3 + * glade part #1 + * glade part #2 + * glade part #3 + * fix errors + * fix some glade typos + * fix border colour + + [ Clement Lefebvre ] + * Remove more ctypes + * Fix get_origin calls in Betsy + * Fix keybinding in LMDE + * Fix unknown variable name + * Fix popup menus + * Fix DND in favorites + * Fix add to desktop + * Fix empty trash popup + * Removed obsolete opacity support in config window + * [Alexei Sorokin] Recent: Fix Gtk warnings + * Fix race condition with dconf on session start + * Fix #157 + * Fix typo in debian/control + + [ JosephMcc ] + * Don't ignore icons from /usr/share/pixmaps + + [ Clement Lefebvre ] + * Give the applet box a class name to allow easier themeing + + -- Clement Lefebvre Mon, 01 May 2017 19:50:14 +0100 mintmenu (5.7.6) serena; urgency=medium diff --git a/debian/control b/debian/control index b4fe344..fcf0133 100644 --- a/debian/control +++ b/debian/control @@ -11,15 +11,13 @@ Depends: ${python:Depends}, ${misc:Depends}, python (>= 2.4), python (<< 3), - python-gtk2, python-glade2, mint-common, python-mate-menu, python-xdg, xdg-utils, python-setproctitle, - libmatepanelapplet, libmatedesktop, mate-menus, gvfs-bin, python-xlib, - gir1.2-mate-panel, gir1.2-gtk-2.0, + gir1.2-mate-panel (>= 1.18.0), gir1.2-gtk-3.0, gir1.2-mate-desktop (>= 1.18.0), mozo Description: Advanced MATE menu One of the most advanced menus under Linux. MintMenu supports filtering, diff --git a/usr/lib/linuxmint/mintMenu/capi.py b/usr/lib/linuxmint/mintMenu/capi.py deleted file mode 100644 index d4e2c44..0000000 --- a/usr/lib/linuxmint/mintMenu/capi.py +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/python2 - -import gi -import ctypes -from ctypes import * - -libgobject = CDLL('libgobject-2.0.so.0') - -class _PyGObject_Functions(ctypes.Structure): - _fields_ = [ - ('register_class', - ctypes.PYFUNCTYPE(ctypes.c_void_p, ctypes.c_char_p, - ctypes.c_int, ctypes.py_object, - ctypes.py_object)), - ('register_wrapper', - ctypes.PYFUNCTYPE(ctypes.c_void_p, ctypes.py_object)), - ('lookup_class', - ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_int)), - ('newgobj', - ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)), - ] - -class PyGObjectCPAI(object): - def __init__(self): - PyCObject_AsVoidPtr = ctypes.pythonapi.PyCObject_AsVoidPtr - PyCObject_AsVoidPtr.restype = ctypes.c_void_p - PyCObject_AsVoidPtr.argtypes = [ctypes.py_object] - addr = PyCObject_AsVoidPtr(ctypes.py_object( - gi._gobject._PyGObject_API)) - self._api = _PyGObject_Functions.from_address(addr) - - def pygobject_new(self, addr): - return self._api.newgobj(addr) - -def get_widget(ptr): - return PyGObjectCPAI().pygobject_new(ptr) diff --git a/usr/lib/linuxmint/mintMenu/keybinding.py b/usr/lib/linuxmint/mintMenu/keybinding.py index dbc44f3..3f23db9 100644 --- a/usr/lib/linuxmint/mintMenu/keybinding.py +++ b/usr/lib/linuxmint/mintMenu/keybinding.py @@ -25,18 +25,12 @@ # DEALINGS IN THE SOFTWARE. import gi -gi.require_version("Gtk", "2.0") +gi.require_version("Gtk", "3.0") from Xlib.display import Display from Xlib import X, error -from gi.repository import Gtk, Gdk, GObject, GLib +from gi.repository import Gtk, Gdk, GdkX11, GObject, GLib import threading -import ctypes -from ctypes import * -import capi - -gdk = CDLL("libgdk-x11-2.0.so.0") -gtk = CDLL("libgtk-x11-2.0.so.0") SPECIAL_MODS = (["Super_L", ""], ["Super_R", ""], @@ -57,8 +51,7 @@ class GlobalKeyBinding(GObject.GObject, threading.Thread): threading.Thread.__init__ (self) self.setDaemon (True) - gdk.gdk_keymap_get_default.restype = c_void_p - self.keymap = capi.get_widget (gdk.gdk_keymap_get_default()) + self.keymap = Gdk.Keymap().get_default() self.display = Display() self.screen = self.display.screen() self.window = self.screen.root @@ -67,19 +60,6 @@ class GlobalKeyBinding(GObject.GObject, threading.Thread): self.raw_keyval = None self.keytext = "" - def is_hotkey(self, key, modifier): - keymatch = False - modmatch = False - modifier = modifier & ~Gdk.ModifierType.SUPER_MASK - modint = int(modifier) - if self.get_keycode(key) == self.keycode: - keymatch = True - for ignored_mask in self.ignored_masks: - if self.modifiers | ignored_mask == modint | ignored_mask: - modmatch = True - break - return keymatch and modmatch - def map_modifiers(self): gdk_modifiers =(Gdk.ModifierType.CONTROL_MASK, Gdk.ModifierType.SHIFT_MASK, Gdk.ModifierType.MOD1_MASK, Gdk.ModifierType.MOD2_MASK, Gdk.ModifierType.MOD3_MASK, Gdk.ModifierType.MOD4_MASK, Gdk.ModifierType.MOD5_MASK, @@ -89,14 +69,6 @@ class GlobalKeyBinding(GObject.GObject, threading.Thread): if "Mod" not in Gtk.accelerator_name(0, modifier) or "Mod4" in Gtk.accelerator_name(0, modifier): self.known_modifiers_mask |= modifier - def get_keycode(self, keyval): - count = c_int() - array = (KeymapKey * 10)() - keys = cast(array, POINTER(KeymapKey)) - gdk.gdk_keymap_get_entries_for_keyval.argtypes = [c_void_p, c_uint, c_void_p, c_void_p] - gdk.gdk_keymap_get_entries_for_keyval(hash(self.keymap), keyval, byref(keys), byref(count)) - return keys[0].keycode - def grab(self, key): accelerator = key accelerator = accelerator.replace("", "") @@ -107,7 +79,11 @@ class GlobalKeyBinding(GObject.GObject, threading.Thread): return False self.keytext = key - self.keycode = self.get_keycode(keyval) + try: + self.keycode = self.keymap.get_entries_for_keyval(keyval).keys[0].keycode + except: + # In Betsy, the get_entries_for_keyval() returns an unamed tuple... + self.keycode = self.keymap.get_entries_for_keyval(keyval)[1][0].keycode self.modifiers = int(modifiers) catch = error.CatchError(error.BadAccess) @@ -137,8 +113,7 @@ class GlobalKeyBinding(GObject.GObject, threading.Thread): if window is None: self.window = self.screen.root else: - gdk.gdk_x11_drawable_get_xid.argtypes = [c_void_p] - self.window = self.display.create_resource_object("window", gdk.gdk_x11_drawable_get_xid(hash(window))) + self.window = self.display.create_resource_object("window", window.get_xid()) self.grab(self.keytext) def get_mask_combinations(self, mask): @@ -180,12 +155,7 @@ class GlobalKeyBinding(GObject.GObject, threading.Thread): self.ungrab() self.display.close() -class KeymapKey(Structure): - _fields_ = [("keycode", c_uint), - ("group", c_int), - ("level", c_int)] - -class KeybindingWidget(Gtk.HBox): +class KeybindingWidget(Gtk.Box): __gsignals__ = { 'accel-edited': (GObject.SignalFlags.RUN_LAST, None, ()), } @@ -235,8 +205,7 @@ class KeybindingWidget(Gtk.HBox): self.set_button_text() self.emit("accel-edited") return True - gtk.gtk_accelerator_name.restype = c_char_p - accel_string = gtk.gtk_accelerator_name(event.keyval, event.state) + accel_string = Gtk.accelerator_name( event.keyval, event.state ) accel_string = self.sanitize(accel_string) self.value = accel_string self.set_button_text() diff --git a/usr/lib/linuxmint/mintMenu/mintMenu.glade b/usr/lib/linuxmint/mintMenu/mintMenu.glade index b29b943..0762f78 100644 --- a/usr/lib/linuxmint/mintMenu/mintMenu.glade +++ b/usr/lib/linuxmint/mintMenu/mintMenu.glade @@ -1,7 +1,6 @@ - - + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK @@ -16,9 +15,10 @@ True False - + True False + horizontal diff --git a/usr/lib/linuxmint/mintMenu/mintMenu.py b/usr/lib/linuxmint/mintMenu/mintMenu.py index 6f712a3..529ad19 100755 --- a/usr/lib/linuxmint/mintMenu/mintMenu.py +++ b/usr/lib/linuxmint/mintMenu/mintMenu.py @@ -1,7 +1,7 @@ #!/usr/bin/python2 import gi -gi.require_version("Gtk", "2.0") +gi.require_version("Gtk", "3.0") gi.require_version('MatePanelApplet', '4.0') from gi.repository import Gtk, GdkPixbuf, Gdk, GObject from gi.repository import MatePanelApplet @@ -14,8 +14,6 @@ import gettext import traceback import time import gc -import ctypes -from ctypes import * import xdg.Config import keybinding import pointerMonitor @@ -23,8 +21,6 @@ import setproctitle GObject.threads_init() -gdk = CDLL("libgdk-x11-2.0.so.0") - # Rename the process setproctitle.setproctitle('mintmenu') @@ -63,10 +59,9 @@ class MainWindow( object ): builder.add_from_file(os.path.join( self.path, "mintMenu.glade" )) self.window = builder.get_object( "mainWindow" ) self.window.realize() - self.window.window.set_decorations(Gdk.WMDecoration.BORDER) + self.window.get_window().set_decorations(Gdk.WMDecoration.BORDER) self.window.set_title("") self.paneholder = builder.get_object( "paneholder" ) - self.border = builder.get_object( "border" ) builder.connect_signals(self) @@ -90,18 +85,16 @@ class MainWindow( object ): self.settings.connect( "changed::start-with-favorites", self.toggleStartWithFavorites ) self.settings.connect( "changed::tooltips-enabled", self.toggleTooltipsEnabled ) self.settings.connect( "changed::use-custom-color", self.toggleUseCustomColor ) - self.settings.connect( "changed::custom-border-color", self.toggleCustomBorderColor ) self.settings.connect( "changed::custom-heading-color", self.toggleCustomHeadingColor ) self.settings.connect( "changed::custom-color", self.toggleCustomBackgroundColor ) - self.settings.connect( "changed::border-width", self.toggleBorderWidth ) self.getSetGSettingEntries() - self.tooltips = Gtk.Tooltips() + self.tooltipsWidgets = [] if self.globalEnableTooltips and self.enableTooltips: - self.tooltips.enable() + self.tooltipsEnable() else: - self.tooltips.disable() + self.tooltipsEnable( False ) self.PopulatePlugins(); self.firstTime = True; @@ -123,25 +116,17 @@ class MainWindow( object ): self.enableTooltips = settings.get_boolean(key) if self.globalEnableTooltips and self.enableTooltips: - self.tooltips.enable() + self.tooltipsEnable() else: - self.tooltips.disable() + self.tooltipsEnable( False ) def toggleStartWithFavorites( self, settings, key, args = None ): self.startWithFavorites = settings.get_boolean(key) - def toggleBorderWidth( self, settings, key, args = None ): - self.borderwidth = settings.get_int(key) - self.SetupMintMenuBorder() - def toggleUseCustomColor( self, settings, key, args = None ): self.usecustomcolor = settings.get_boolean(key) self.loadTheme() - def toggleCustomBorderColor( self, settings, key, args = None ): - self.custombordercolor = settings.get_string(key) - self.SetupMintMenuBorder() - def toggleCustomBackgroundColor( self, settings, key, args = None): self.customcolor = settings.get_string(key) self.SetPaneColors( self.panesToColor ) @@ -157,28 +142,19 @@ class MainWindow( object ): self.usecustomcolor = self.settings.get_boolean( "use-custom-color" ) self.customcolor = self.settings.get_string( "custom-color" ) self.customheadingcolor = self.settings.get_string( "custom-heading-color" ) - self.custombordercolor = self.settings.get_string( "custom-border-color" ) - self.borderwidth = self.settings.get_int( "border-width" ) self.offset = self.settings.get_int( "offset" ) self.enableTooltips = self.settings.get_boolean( "tooltips-enabled" ) self.startWithFavorites = self.settings.get_boolean( "start-with-favorites" ) self.globalEnableTooltips = self.panelSettings.get_boolean( "tooltips-enabled" ) - def SetupMintMenuBorder( self, defaultStyle = None ): - if self.usecustomcolor: - self.window.modify_bg( Gtk.StateType.NORMAL, Gdk.color_parse( self.custombordercolor ) ) - elif defaultStyle is not None: - self.window.modify_bg( Gtk.StateType.NORMAL, defaultStyle.lookup_color('bg_color')[1] ) - self.border.set_padding( self.borderwidth, self.borderwidth, self.borderwidth, self.borderwidth ) - def PopulatePlugins( self ): self.panesToColor = [ ] self.headingsToColor = [ ] start = time.time() PluginPane = Gtk.EventBox() PluginPane.show() - PaneLadder = Gtk.VBox( False, 0 ) + PaneLadder = Gtk.Box( orientation=Gtk.Orientation.VERTICAL ) PluginPane.add( PaneLadder ) ImageBox = Gtk.EventBox() ImageBox.show() @@ -239,7 +215,7 @@ class MainWindow( object ): self.panesToColor.append( MyPlugin.content_holder ) MyPlugin.content_holder.show() - VBox1 = Gtk.VBox( False, 0 ) + VBox1 = Gtk.Box( orientation=Gtk.Orientation.VERTICAL ) if MyPlugin.heading != "": Label1 = Gtk.Label(label= MyPlugin.heading ) Align1 = Gtk.Alignment.new( 0, 0, 0, 0 ) @@ -255,7 +231,7 @@ class MainWindow( object ): heading.set_visible_window( False ) heading.set_size_request( MyPlugin.width, 30 ) else: - heading = Gtk.HBox() + heading = Gtk.Box( orientation=Gtk.Orientation.HORIZONTAL ) #heading.set_relief( Gtk.ReliefStyle.NONE ) heading.set_size_request( MyPlugin.width, -1 ) #heading.set_sensitive(False) @@ -266,14 +242,17 @@ class MainWindow( object ): VBox1.pack_start( heading, False, False, 0 ) VBox1.show() #Add plugin to Plugin Box under heading button - MyPlugin.content_holder.reparent( VBox1 ) + MyPlugin.content_holder.get_parent().remove(MyPlugin.content_holder) + VBox1.add( MyPlugin.content_holder ) #Add plugin to main window PaneLadder.pack_start( VBox1 , True, True, 0) PaneLadder.show() - if MyPlugin.window: - MyPlugin.window.destroy() + try: + MyPlugin.get_window().destroy() + except AttributeError: + pass try: if hasattr( MyPlugin, 'do_plugin' ): @@ -299,7 +278,7 @@ class MainWindow( object ): self.paneholder.pack_start( ImageBox, False, False, 0 ) self.paneholder.pack_start( PluginPane, False, False, 0 ) PluginPane = Gtk.EventBox() - PaneLadder = Gtk.VBox( False, 0 ) + PaneLadder = Gtk.Box( orientation=Gtk.Orientation.VERTICAL ) PluginPane.add( PaneLadder ) ImageBox = Gtk.EventBox() self.panesToColor.extend( [ PluginPane, ImageBox ] ) @@ -321,31 +300,37 @@ class MainWindow( object ): self.paneholder.pack_start( ImageBox, False, False, 0 ) self.paneholder.pack_start( PluginPane, False, False, 0 ) - self.tooltips.disable() - #print u"Loading", (time.time() - start), "s" + self.tooltipsEnable( False ) - # A little hacky but works - def getDefaultStyle( self ): + # A little bit hacky but works. + def getDefaultColors( self ): widget = Gtk.EventBox() widget.show() - return Gtk.rc_get_style(widget) + + context = widget.get_style_context() + context.set_state( Gtk.StateFlags.NORMAL ) + context.add_class( Gtk.STYLE_CLASS_DEFAULT ) + context.add_class( Gtk.STYLE_CLASS_BACKGROUND ) + + fgColor = context.get_color( context.get_state() ) + bgColor = context.get_background_color( context.get_state() ) + + return { "fg": fgColor, "bg": bgColor } def loadTheme( self ): - defaultStyle = self.getDefaultStyle() - self.SetPaneColors( self.panesToColor, defaultStyle ) - self.SetupMintMenuBorder( defaultStyle ) + colors = self.getDefaultColors() + self.SetPaneColors( self.panesToColor, colors["bg"] ) self.SetHeadingStyle( self.headingsToColor ) - def SetPaneColors( self, items, defaultStyle = None ): - if self.usecustomcolor: - for item in items: - item.modify_bg( Gtk.StateType.NORMAL, Gdk.color_parse( self.customcolor ) ) - # TODO: Changing background color isn't working for pixmaps! The following does not work: - item.get_style().bg_pixmap[Gtk.StateType.NORMAL] = None - elif defaultStyle is not None: - for item in items: - item.modify_bg( Gtk.StateType.NORMAL, defaultStyle.lookup_color('bg_color')[1] ) - item.get_style().bg_pixmap[Gtk.StateType.NORMAL] = defaultStyle.bg_pixmap[Gtk.StateType.NORMAL] + def SetPaneColors( self, items, color = None ): + for item in items: + context = item.get_style_context() + if self.usecustomcolor: + bgColor = Gdk.RGBA() + bgColor.parse( self.customcolor ) + item.override_background_color( context.get_state(), bgColor ) + elif color is not None: + item.override_background_color( context.get_state(), color ) def SetHeadingStyle( self, items ): if self.usecustomcolor: @@ -362,8 +347,13 @@ class MainWindow( object ): markup = '%s' % (color, text) item.set_markup( markup ) - def setTooltip( self, widget, tip, tipPrivate = None ): - self.tooltips.set_tip( widget, tip, tipPrivate ) + def tooltipsEnable( self, enable = True ): + for widget in self.tooltipsWidgets: + widget.set_has_tooltip( enable ) + + def setTooltip( self, widget, tip ): + self.tooltipsWidgets.append( widget ) + widget.set_tooltip_text( tip ) def RegenPlugins( self, *args, **kargs ): #print @@ -407,7 +397,7 @@ class MainWindow( object ): self.firstTime = False self.window.set_opacity(1.0) - self.window.window.focus( Gdk.CURRENT_TIME ) + self.window.get_window().focus( Gdk.CURRENT_TIME ) for plugin in self.plugins.values(): if hasattr( plugin, "onShowMenu" ): @@ -447,7 +437,14 @@ class MenuWin( object ): self.applet = applet self.detect_desktop_environment() self.settings = Gio.Settings.new("com.linuxmint.mintmenu") - self.keybinder = keybinding.GlobalKeyBinding() + self.keybinder = keybinding.GlobalKeyBinding() + self.loadSettings() + + self.createPanelButton() + + self.mate_settings = Gio.Settings.new("org.mate.interface") + self.mate_settings.connect( "changed::gtk-theme", self.changeTheme ) + self.settings.connect( "changed::applet-text", self.reloadSettings ) self.settings.connect( "changed::theme-name", self.changeTheme ) self.settings.connect( "changed::hot-key", self.reloadSettings ) @@ -455,12 +452,6 @@ class MenuWin( object ): self.settings.connect( "changed::hide-applet-icon", self.reloadSettings ) self.settings.connect( "changed::applet-icon-size", self.reloadSettings ) self.settings.connect( "changed::hot-key", self.hotkeyChanged ) - self.loadSettings() - - self.mate_settings = Gio.Settings.new("org.mate.interface") - self.mate_settings.connect( "changed::gtk-theme", self.changeTheme ) - - self.createPanelButton() self.applet.set_flags( MatePanelApplet.AppletFlags.EXPAND_MINOR ) self.applet.connect( "button-press-event", self.showMenu ) @@ -488,20 +479,20 @@ class MenuWin( object ): self.pointerMonitor.connect("activate", self.onPointerOutside) def onWindowMap( self, *args ): - self.applet.set_state( Gtk.StateType.SELECTED ) - self.keybinder.set_focus_window( self.mainwin.window.window ) - #self.pointerMonitor.grabPointer() + self.applet.get_style_context().set_state( Gtk.StateFlags.SELECTED ) + self.button_box.get_style_context().set_state( Gtk.StateFlags.SELECTED ) + self.keybinder.set_focus_window( self.mainwin.window.get_window() ) return False def onWindowUnmap( self, *args ): - self.applet.set_state( Gtk.StateType.NORMAL ) + self.applet.get_style_context().set_state( Gtk.StateFlags.NORMAL ) + self.button_box.get_style_context().set_state( Gtk.StateFlags.NORMAL ) self.keybinder.set_focus_window() - #self.pointerMonitor.ungrabPointer() return False def onRealize( self, *args): - self.pointerMonitor.addWindowToMonitor( self.mainwin.window.window ) - self.pointerMonitor.addWindowToMonitor( self.applet.window ) + self.pointerMonitor.addWindowToMonitor( self.mainwin.window.get_window() ) + self.pointerMonitor.addWindowToMonitor( self.applet.get_window() ) self.pointerMonitor.start() return False @@ -518,8 +509,8 @@ class MenuWin( object ): def leave_notify(self, applet, event): # Hack for mate-panel-test-applets focus issue (this can be commented) - if event.state & Gdk.ModifierType.BUTTON1_MASK and applet.state & Gtk.StateType.SELECTED: - if event.x >= 0 and event.y >= 0 and event.x < applet.window.get_width() and event.y < applet.window.get_height(): + if event.state & Gdk.ModifierType.BUTTON1_MASK and applet.get_style_context().get_state() & Gtk.StateFlags.SELECTED: + if event.x >= 0 and event.y >= 0 and event.x < applet.get_window().get_width() and event.y < applet.get_window().get_height(): self.mainwin.stopHiding() self.do_image(self.buttonIcon, False) @@ -546,19 +537,19 @@ class MenuWin( object ): self.systemlabel.set_tooltip_text(tooltip) self.button_icon.set_tooltip_text(tooltip) if self.applet.get_orient() == MatePanelApplet.AppletOrient.UP or self.applet.get_orient() == MatePanelApplet.AppletOrient.DOWN: - self.button_box = Gtk.HBox() + self.button_box = Gtk.Box( orientation=Gtk.Orientation.HORIZONTAL ) self.button_box.pack_start( self.button_icon, False, False, 0 ) self.button_box.pack_start( self.systemlabel, False, False, 0 ) self.button_icon.set_padding( 5, 0 ) # if we have a vertical panel elif self.applet.get_orient() == MatePanelApplet.AppletOrient.LEFT: - self.button_box = Gtk.VBox() + self.button_box = Gtk.Box( orientation=Gtk.Orientation.VERTICAL ) self.systemlabel.set_angle( 270 ) self.button_box.pack_start( self.button_icon , False, False, 0) self.button_box.pack_start( self.systemlabel , False, False, 0) self.button_icon.set_padding( 0, 5 ) elif self.applet.get_orient() == MatePanelApplet.AppletOrient.RIGHT: - self.button_box = Gtk.VBox() + self.button_box = Gtk.Box( orientation=Gtk.Orientation.VERTICAL ) self.systemlabel.set_angle( 90 ) self.button_box.pack_start( self.systemlabel , False, False, 0) self.button_box.pack_start( self.button_icon , False, False, 0) @@ -569,6 +560,8 @@ class MenuWin( object ): self.button_box.show_all() self.sizeButton() + self.button_box.get_style_context().add_class('mintmenu') + self.applet.add( self.button_box ) self.applet.set_background_widget( self.applet ) @@ -578,6 +571,8 @@ class MenuWin( object ): self.buttonText = self.settings.get_string("applet-text") self.theme_name = self.settings.get_string( "theme-name" ) self.hotkeyText = self.settings.get_string( "hot-key" ) + if not os.path.exists(self.settings.get_string("applet-icon")): + self.settings.reset("applet-icon") self.buttonIcon = self.settings.get_string( "applet-icon" ) self.iconSize = self.settings.get_int( "applet-icon-size" ) @@ -600,17 +595,17 @@ class MenuWin( object ): def changeOrientation( self, *args, **kargs ): if self.applet.get_orient() == MatePanelApplet.AppletOrient.UP or self.applet.get_orient() == MatePanelApplet.AppletOrient.DOWN: - tmpbox = Gtk.HBox() + tmpbox = Gtk.Box( orientation=Gtk.Orientation.HORIZONTAL ) self.systemlabel.set_angle( 0 ) self.button_box.reorder_child( self.button_icon, 0 ) self.button_icon.set_padding( 5, 0 ) elif self.applet.get_orient() == MatePanelApplet.AppletOrient.LEFT: - tmpbox = Gtk.VBox() + tmpbox = Gtk.Box( orientation=Gtk.Orientation.VERTICAL ) self.systemlabel.set_angle( 270 ) self.button_box.reorder_child( self.button_icon, 0 ) self.button_icon.set_padding( 0, 5 ) elif self.applet.get_orient() == MatePanelApplet.AppletOrient.RIGHT: - tmpbox = Gtk.VBox() + tmpbox = Gtk.Box( orientation=Gtk.Orientation.VERTICAL ) self.systemlabel.set_angle( 90 ) self.button_box.reorder_child( self.button_icon, 1 ) self.button_icon.set_padding( 0, 5 ) @@ -662,10 +657,8 @@ class MenuWin( object ): self.button_icon.show() # This code calculates width and height for the button_box # and takes the orientation in account - sl_req = Gtk.Requisition() - bi_req = Gtk.Requisition() - self.button_icon.size_request(bi_req) - self.systemlabel.size_request(sl_req) + bi_req = self.button_icon.size_request() + sl_req = self.systemlabel.size_request() if self.applet.get_orient() == MatePanelApplet.AppletOrient.UP or self.applet.get_orient() == MatePanelApplet.AppletOrient.DOWN: if self.hideIcon: self.applet.set_size_request( sl_req.width + 2, bi_req.height ) @@ -725,7 +718,7 @@ class MenuWin( object ): self.mainwin.hide() def toggleMenu( self ): - if self.applet.state & Gtk.StateType.SELECTED: + if self.applet.get_style_context().get_state() & Gtk.StateFlags.SELECTED: self.mainwin.hide() else: self.positionMenu() @@ -740,13 +733,14 @@ class MenuWin( object ): ourWidth = self.mainwin.window.get_size()[0] ourHeight = self.mainwin.window.get_size()[1] + self.mainwin.offset - x = c_int() - y = c_int() # Get the dimensions/position of the widgetToAlignWith - gdk.gdk_window_get_origin.argtypes = [c_void_p, c_void_p, c_void_p] - gdk.gdk_window_get_origin(hash(self.applet.window), byref(x), byref(y)) - entryX = x.value - entryY = y.value + try: + entryX = self.applet.get_window().get_origin().x + entryY = self.applet.get_window().get_origin().y + except: + # In Betsy get_origin returns an unamed tuple so the code above fails + entryX = self.applet.get_window().get_origin()[1] + entryY = self.applet.get_window().get_origin()[2] entryWidth, entryHeight = self.applet.get_allocation().width, self.applet.get_allocation().height entryHeight = entryHeight + self.mainwin.offset @@ -785,17 +779,17 @@ class MenuWin( object ): # this callback is to create a context menu def create_menu(self): - action_group = Gtk.ActionGroup("context-menu") - action = Gtk.Action("MintMenuPrefs", _("Preferences"), None, "gtk-preferences") + action_group = Gtk.ActionGroup(name="context-menu") + action = Gtk.Action(name="MintMenuPrefs", label=_("Preferences"), tooltip=None, stock_id="gtk-preferences") action.connect("activate", self.showPreferences) action_group.add_action(action) - action = Gtk.Action("MintMenuEdit", _("Edit menu"), None, "gtk-edit") + action = Gtk.Action(name="MintMenuEdit", label=_("Edit menu"), tooltip=None, stock_id="gtk-edit") action.connect("activate", self.showMenuEditor) action_group.add_action(action) - action = Gtk.Action("MintMenuReload", _("Reload plugins"), None, "gtk-refresh") + action = Gtk.Action(name="MintMenuReload", label=_("Reload plugins"), tooltip=None, stock_id="gtk-refresh") action.connect("activate", self.mainwin.RegenPlugins) action_group.add_action(action) - action = Gtk.Action("MintMenuAbout", _("About"), None, "gtk-about") + action = Gtk.Action(name="MintMenuAbout", label=_("About"), tooltip=None, stock_id="gtk-about") action.connect("activate", self.showAboutDialog) action_group.add_action(action) action_group.set_translation_domain ("mintmenu") diff --git a/usr/lib/linuxmint/mintMenu/mintMenuConfig.glade b/usr/lib/linuxmint/mintMenu/mintMenuConfig.glade index 2776f30..c9b2639 100644 --- a/usr/lib/linuxmint/mintMenu/mintMenuConfig.glade +++ b/usr/lib/linuxmint/mintMenu/mintMenuConfig.glade @@ -1,97 +1,61 @@ - + + + 10 - 0 - 0 1 - 0 - 0 - 128 1 - 0 - 1 - 0 + 128 1 + 1 100 - 0 - 0 1 - 0 - 0 - 128 1 - 0 - 1 - 0 + 128 1 + 1 1000 - 0 - 2 - 1 - 0 100 + 1 + 2 - 4 1 - 0 - 1 - 0 + 4 1 + 1 - 128 1 - 0 - 1 - 0 + 128 1 + 1 10000 - 0 - 10 1 - 0 - 0 + 10 - 128 1 - 0 - 1 - 0 + 128 1 + 1 10000 - 0 - 10 1 - 0 - 0 + 10 - - - - - - - Default - - - - - False 5 @@ -101,12 +65,12 @@ True dialog - + True False 2 - + True False end @@ -117,7 +81,6 @@ True True True - False True @@ -133,7 +96,6 @@ True True True - False True @@ -151,28 +113,34 @@ - + True False - 2 - 2 - 2 5 + 2 + + + True + False + Name: + + + 0 + 0 + + True True - + True False False - True - True 1 - 2 - GTK_EXPAND + 0 @@ -182,35 +150,22 @@ Path: + 0 1 - 2 - GTK_EXPAND - - True - False - Name: - - - GTK_EXPAND - - - - + True False True True - + True False False - True - True True @@ -223,7 +178,6 @@ True True True - False True @@ -241,17 +195,14 @@ 1 - 2 1 - 2 - - True + False True - 1 + 2 @@ -270,12 +221,12 @@ dialog select-folder - + True False 2 - + True False end @@ -286,7 +237,6 @@ True True True - False True @@ -302,7 +252,6 @@ True True True - False True @@ -326,8 +275,20 @@ button1 + button2 + + + + + + + + Default + + + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK @@ -335,10 +296,11 @@ center True - + True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + vertical True @@ -346,137 +308,122 @@ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 4 - + True False + 5 + 5 + 5 + 5 0 none - + True False - 10 - 10 + 10 + True + True + 5 + 5 - + + Show button icon + True + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + start + 5 + 0.5 + True + + + 0 + 0 + 2 + + + + True False - 4 - 2 - 5 - 5 + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + start + 5 + Button text: + + + 0 + 1 + + + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + False + False + + + 1 + 1 + + + + + True + False + start + 5 + Button icon: + + + 0 + 3 + + + + + True + False + 7 - - Show button icon - True - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - False - 0 - 0 - True - - - 2 - GTK_FILL - - - - - + True False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - Button text: - 1 - 2 - GTK_FILL - + True + True + 0 - - - - + True False - 0 - Button icon: + gtk-missing-image - 3 - 4 - GTK_FILL - - - - - - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - False - False - True - True - - - 1 - 2 - 1 - 2 - GTK_FILL - - - - - - - - - True - False - 7 - - - True - False - - - True - True - 0 - - - - - True - False - gtk-missing-image - - - True - True - 1 - - - - - 1 - 2 - 3 - 4 - GTK_FILL - + True + True + 1 + + 1 + 3 + + + + + + + @@ -494,175 +441,122 @@ - + True False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 6 - 3 + 5 + 5 + 5 + 5 + 0 + none - + True False 5 - + True False - 10 + 10 + vertical + 5 - + + Always start with favorites pane True - False - 5 - - - Always start with favorites pane - True - True - False - False - True - - - False - False - 0 - - - - - Show applications plugin - True - True - False - False - True - True - - - False - False - 1 - - - - - Show system plugin - True - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - False - True - - - False - False - 2 - - - - - Show places plugin - True - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - False - True - - - False - False - 3 - - - - - Show recent documents plugin - True - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - False - True - - - False - False - 4 - - - - - True - False - 2 - 3 - 8 - - - True - False - 0 - Border width: - - - - - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - False - False - True - True - adjustment1 - 1 - - - 1 - 2 - - - - - True - False - px - - - 2 - 3 - - - - - False - True - 5 - - + True + False + 0.5 + True + + False + False + 0 + + + + + Show applications plugin + True + True + False + True + 0.5 + True + + + False + False + 1 + + + + + Show system plugin + True + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0.5 + True + + + False + False + 2 + + + + + Show places plugin + True + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0.5 + True + + + False + False + 3 + + + + + Show recent documents plugin + True + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0.5 + True + + + False + False + 4 + + + + - True + False True 0 - - False - True - 6 - 0 - + + 1 + @@ -677,216 +571,144 @@ - + True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 4 - True + 5 + 5 + 5 + 4 + 0.5 + none - + True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 6 - 0 - 0 - none + 7 + 7 + 21 + 7 + vertical - + + Use custom colors + True + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + start + 5 + 0.5 + True + + + False + True + 5 + 0 + + + + True False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 6 - 6 - 6 + 2 + True - + True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + start + Headings: + start + + + 0 + 0 + + + + + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + 1 + 0 + + + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + start + Background: + + + 0 + 1 + + + + + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + 1 + 1 + + + + + True + False + start + Theme: + + + 0 + 2 + + + + + True + False + model1 - - Use custom colors - True - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - False - 0 - True - - - False - True - 5 - 0 - - - - - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 4 - 2 - 2 - - - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - Headings: - - - GTK_FILL - GTK_FILL - 5 - - - - - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - Borders: - - - 1 - 2 - GTK_FILL - GTK_FILL - 5 - - - - - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - Background: - - - 2 - 3 - GTK_FILL - GTK_FILL - 5 - - - - - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - False - #000000000000 - - - 1 - 2 - 1 - 2 - GTK_FILL - GTK_FILL - - - - - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - False - #000000000000 - - - 1 - 2 - 2 - 3 - GTK_FILL - GTK_FILL - - - - - True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - False - #000000000000 - - - 1 - 2 - GTK_FILL - GTK_FILL - - - - - True - False - 0 - Theme: - - - 3 - 4 - - - - - True - False - model1 - - - - 0 - - - - - 1 - 2 - 3 - 4 - - - - - False - True - 1 - + + + 0 + + + 1 + 2 + - - - - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - True - + + False + True + 1 + - - True - True - 0 - + + 2 + @@ -901,57 +723,41 @@ - + True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 3 + 5 + 5 + 5 + 5 0 none - + True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 9 - 2 + 7 + 7 + 7 5 - True + 2 - - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - Icon size: - - - 4 - 5 - GTK_FILL - - - - - + + Show application comments True True + False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - False - False - True - True - adjustment3 + 11 + 0.5 + True - 1 - 2 - 4 - 5 - GTK_FILL - - 5 + 0 + 0 + 2 @@ -961,33 +767,13 @@ True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - False + 0.5 True - 2 + 0 1 - 2 - GTK_FILL - - 5 - - - - - Show application comments - True - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - False - True - - - 2 - GTK_FILL - - 5 + 2 @@ -997,16 +783,13 @@ True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - False + 0.5 True - 2 + 0 2 - 3 - GTK_FILL - - 5 + 2 @@ -1014,14 +797,12 @@ True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 + start Hover delay (seconds): + 0 3 - 4 - GTK_FILL - @@ -1029,21 +810,46 @@ True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - + + 100 False False - True - True adjustment4 + 100 1 - 2 3 - 4 - GTK_FILL - - 5 + + + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + start + Icon size: + + + 0 + 4 + + + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + 1 + False + False + adjustment3 + 1 + + + 1 + 4 @@ -1051,14 +857,12 @@ True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 + start Search command: + 0 5 - 6 - GTK_FILL - @@ -1066,20 +870,13 @@ True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_STRUCTURE_MASK - + False False - True - True 1 - 2 5 - 6 - - - 5 @@ -1089,16 +886,13 @@ True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - False + 0.5 True - 2 + 0 6 - 7 - GTK_FILL - - 5 + 2 @@ -1108,16 +902,13 @@ True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - False + 0.5 True - 2 + 0 7 - 8 - GTK_FILL - - 5 + 2 @@ -1127,32 +918,24 @@ True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - False + 0.5 True - 2 + 0 8 - 9 - GTK_FILL - - 5 + 2 - - - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - True - - + + 3 + - + True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK @@ -1164,34 +947,34 @@ - + True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 3 + 7 + 7 + 21 + 7 0 none - + True False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 3 - 2 - 5 + 5 5 + 5 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 + start Number of columns: - GTK_FILL - GTK_FILL - 5 + 0 + 0 @@ -1199,18 +982,15 @@ True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 1 False False - True - True adjustment5 + 1 1 - 2 - GTK_FILL - GTK_FILL - 5 + 0 @@ -1218,15 +998,12 @@ True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 + start Icon size: + 0 1 - 2 - GTK_FILL - GTK_FILL - 5 @@ -1234,20 +1011,15 @@ True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 1 False False - True - True adjustment6 + 1 1 - 2 1 - 2 - GTK_FILL - GTK_FILL - 5 @@ -1257,29 +1029,21 @@ True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - False + 0.5 True - 2 + 0 2 - 3 - GTK_FILL - GTK_FILL - 5 + 2 - - - True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - True - - + + 4 + @@ -1294,28 +1058,49 @@ - + True False + 7 + 7 + 2 + 7 0 none - + True False - 12 + vertical - + + Allow Scrollbar + True + True + False + 10 + 0.5 + True + + + False + False + 0 + + + + True False + 5 + 3 + 4 - - Allow Scrollbar + True - True - False - False - True + False + Height: + True False @@ -1324,422 +1109,373 @@ - + True - False - 3 - 5 - - - True - False - 4 - - - True - False - Height: - True - - - False - False - 0 - - - - - True - True - 5 - - False - False - False - True - True - adjustment7 - True - - - False - False - 2 - - - - + True + 5 + + False + False + False + adjustment7 + True False False - 4 - 1 + 2 + + + + + False + True + 1 + + + + + True + False + 3 + 4 + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + start + Icon size: + + + False + True + 0 - + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + False + False + adjustment8 + + + False + False + 1 + + + + + True + True + 2 + + + + + True + False + 0 + none + + True False - 3 - 4 + 14 + 2 + 10 + vertical - + + Computer True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - Icon size: + True + False + 0.5 + True False + False + 0 + + + + + Home Folder + True + True + False + 0.5 + True + + + True + True + 1 + + + + + Network + True + True + False + 0.5 + True + + + True + True + 2 + + + + + Desktop + True + True + False + 0.5 + True + + + True + True + 3 + + + + + Trash + True + True + False + 0.5 + True + + + True + True + 4 + + + + + + + True + False + Toggle Default Places: + True + + + + + False + False + 3 + + + + + Show GTK bookmarks + True + True + False + 0.5 + True + + + True + True + 4 + + + + + True + False + 0 + none + + + True + False + 9 + + + True + True + etched-in + + + True + True + True + + + + + + + + True True 0 - + True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - False - False - True - True - adjustment8 + False + vertical + + + True + False + vertical + 5 + + + gtk-new + True + True + True + True + + + False + False + 0 + + + + + gtk-edit + True + True + True + True + + + False + False + 1 + + + + + False + False + 6 + 0 + + + + + True + False + vertical + + + gtk-go-up + True + True + True + True + + + False + False + 0 + + + + + gtk-go-down + True + True + True + True + + + False + False + 1 + + + + + False + False + 5 + 1 + + + + + True + False + vertical + + + gtk-remove + True + True + True + True + + + False + False + 0 + + + + + False + False + 5 + 2 + + False False + 6 1 - - True - True - 2 - - - + + True False - 0 - none - - - True - False - 2 - 10 - 14 - - - True - False - - - Computer - True - True - False - False - True - - - False - False - 0 - - - - - Home Folder - True - True - False - False - True - - - True - True - 1 - - - - - Network - True - True - False - False - True - - - True - True - 2 - - - - - Desktop - True - True - False - False - True - - - True - True - 3 - - - - - Trash - True - True - False - False - True - - - True - True - 4 - - - - - - - - - True - False - Toggle Default Places: - True - - + Custom Places: + True - - False - False - 3 - - - - - Show GTK bookmarks - True - True - False - False - True - - - True - True - 4 - - - - - True - False - 0 - none - - - True - False - 9 - - - True - False - - - True - True - automatic - automatic - etched-in - - - True - True - True - - - - - True - True - 0 - - - - - True - False - - - True - False - 5 - - - gtk-new - True - True - True - False - True - - - False - False - 0 - - - - - gtk-edit - True - True - True - False - True - - - False - False - 1 - - - - - False - False - 6 - 0 - - - - - True - False - - - gtk-go-up - True - True - True - False - True - - - False - False - 0 - - - - - gtk-go-down - True - True - True - False - True - - - False - False - 1 - - - - - False - False - 5 - 1 - - - - - True - False - - - gtk-remove - True - True - True - False - True - - - False - False - 0 - - - - - False - False - 5 - 2 - - - - - False - False - 6 - 1 - - - - - - - - - True - False - Custom Places: - True - - - - - True - True - 5 - + + True + True + 5 + - - - True - False - 1 - True - - + + 5 + @@ -1753,28 +1489,97 @@ - + True False + 7 + 7 + 7 + 7 0 none - + True False - 12 + vertical - + + Allow Scrollbar + True + True + False + 10 + 10 + 0.5 + True + + + False + False + 0 + + + + True False + 5 + 3 + 4 - - Allow Scrollbar + + True + False + 10 + Height: + True + + + False + True + 0 + + + + True True - False - False - True + 5 + + False + False + False + adjustment9 + True + + + False + False + 2 + + + + + False + True + 1 + + + + + True + False + 4 + 4 + + + True + False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + start + 10 + Icon size: False @@ -1783,72 +1588,50 @@ - + True - False - 3 - 5 - - - True - False - 4 - - - True - False - Height: - True - - - False - True - 0 - - - - - True - True - 5 - - False - False - False - True - True - adjustment9 - True - - - False - False - 2 - - - - + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + False + False + adjustment10 False - True - 4 + False 1 + + + False + False + 2 + + + + + True + False + 0 + none - + True False - 4 - 4 + 14 + 10 + vertical - + + Software Manager True - False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - Icon size: + True + False + 10 + 0.5 + True False @@ -1857,16 +1640,14 @@ - + + Package Manager True True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - - False - False - True - True - adjustment10 + False + 10 + 0.5 + True False @@ -1874,168 +1655,110 @@ 1 + + + Control Center + True + True + False + 10 + 0.5 + True + + + True + True + 2 + + + + + Terminal + True + True + False + 10 + none + 0.5 + True + + + True + True + 3 + + + + + Lock Screen + True + True + False + 10 + 0.5 + True + + + True + True + 4 + + + + + Logout + True + True + False + 10 + 0.5 + True + + + True + True + 5 + + + + + Quit + True + True + False + 10 + 0.5 + True + + + True + True + 6 + + - - False - False - 2 - - - + + True False - 0 - none - - - True - False - 2 - 10 - 14 - - - True - False - - - Software Manager - True - True - False - False - True - - - False - False - 0 - - - - - Package Manager - True - True - False - False - True - - - False - False - 1 - - - - - Control Center - True - True - False - False - True - - - True - True - 2 - - - - - Terminal - True - True - False - False - none - True - - - True - True - 3 - - - - - Lock Screen - True - True - False - False - 0.54000002145767212 - True - - - True - True - 4 - - - - - Logout - True - True - False - False - True - - - True - True - 5 - - - - - Quit - True - True - False - False - True - - - True - True - 6 - - - - - - - - - True - False - 0.56000000238418579 - Toggle Default Items: - True - - + Toggle Default Items: + True - - False - True - 3 - + + False + True + 3 + - - - True - False - - + + 6 + @@ -2056,7 +1779,7 @@ - + True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK @@ -2069,7 +1792,6 @@ True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - False True diff --git a/usr/lib/linuxmint/mintMenu/mintMenuConfig.py b/usr/lib/linuxmint/mintMenu/mintMenuConfig.py index 77dfb75..2d29950 100755 --- a/usr/lib/linuxmint/mintMenu/mintMenuConfig.py +++ b/usr/lib/linuxmint/mintMenu/mintMenuConfig.py @@ -3,7 +3,7 @@ import sys import gi -gi.require_version("Gtk", "2.0") +gi.require_version("Gtk", "3.0") from gi.repository import Gtk, Gdk, GdkPixbuf import keybinding @@ -58,12 +58,9 @@ class mintMenuConfig( object ): 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("applicationsLabel").set_text(_("Applications")) self.builder.get_object("colorsLabel").set_text(_("Theme")) self.builder.get_object("favLabel").set_text(_("Favorites")) @@ -72,7 +69,6 @@ class mintMenuConfig( object ): 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")) @@ -131,20 +127,17 @@ class mintMenuConfig( object ): 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.enableInternetSearch = self.builder.get_object( "enableInternetSearch" ) 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) + grid = self.builder.get_object( "main_grid" ) + grid.attach(self.hotkeyWidget, 0, 2, 2, 1) self.buttonIcon = self.builder.get_object( "buttonIcon" ) self.buttonIconChooser = self.builder.get_object( "button_icon_chooser" ) self.image_filter = Gtk.FileFilter() @@ -215,11 +208,9 @@ class mintMenuConfig( object ): 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, "color", "custom-color", self.backgroundColor, "color-set", self.backgroundColor.set_rgba, self.getBackgroundColor ) + self.bindGSettingsValueToWidget( self.settings, "color", "custom-heading-color", self.headingColor, "color-set", self.headingColor.set_rgba, self.getHeadingColor ) 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 ) @@ -355,7 +346,9 @@ class mintMenuConfig( object ): 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 ) ) ) + color = Gdk.RGBA() + color.parse( settings.get( setting_type, key ) ) + setter( color ) else: setter( settings.get( setting_type, key ) ) widget.connect( changeEvent, lambda *args: self.callGetter( settings, setting_type, key, getter ) ) @@ -368,7 +361,9 @@ class mintMenuConfig( object ): elif args[0] == "int": args[1]( settings.get_int(key) ) elif args[0] == "color": - args[1]( Gdk.color_parse( settings.get_string(key) ) ) + color = Gdk.RGBA() + color.parse( settings.get_string(key) ) + args[1]( color ) def callGetter( self, settings, setting_type, key, getter ): if (setting_type == "int"): @@ -378,38 +373,20 @@ class mintMenuConfig( object ): 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 ) + color = self.backgroundColor.get_rgba() + return self.gdkRGBAToString( 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 ) + color = self.headingColor.get_rgba() + return self.gdkRGBAToString( color ) - def gdkColorToString( self, gdkColor ): - return "#%.2X%.2X%.2X" % ( gdkColor.red / 256, gdkColor.green / 256, gdkColor.blue / 256 ) + def gdkRGBAToString( self, gdkRGBA ): + return "#%.2X%.2X%.2X" % ( gdkRGBA.red * 256, gdkRGBA.green * 256, gdkRGBA.blue * 256 ) def moveUp( self, upButton ): diff --git a/usr/lib/linuxmint/mintMenu/plugins/applications.glade b/usr/lib/linuxmint/mintMenu/plugins/applications.glade index 3986a83..9722395 100644 --- a/usr/lib/linuxmint/mintMenu/plugins/applications.glade +++ b/usr/lib/linuxmint/mintMenu/plugins/applications.glade @@ -1,7 +1,6 @@ - - + 169 227 @@ -14,25 +13,26 @@ True False - + True False + vertical True False False False - 14 - + True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 3 + vertical 3 - + True False True @@ -40,11 +40,11 @@ True False - 0 15 10 <span weight="bold">Favorites</span> True + 0 True @@ -58,48 +58,40 @@ True True False - False none - + True False - 1 - 0 - 0 - 10 + end + 10 + 2 - + True False - 2 - - - True - False - All _Applications - True - - - True - True - 0 - - - - - True - False - 5 - gtk-go-forward - - - True - True - 1 - - + All _Applications + True + + True + True + 0 + + + + + True + False + 5 + 5 + gtk-go-forward + + + True + True + 1 + @@ -127,10 +119,12 @@ queue none - + True False - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True + True + True @@ -149,13 +143,14 @@ - + True False 3 + vertical 3 - + True False True @@ -163,11 +158,11 @@ True False - 0 15 10 <span weight="bold">All Applications</span> True + 0 True @@ -181,48 +176,40 @@ True True False - False none - + True False - 1 - 0 - 0 - 10 + end + 10 + 2 - + True False - 2 - - - True - False - _Favorites - True - - - True - True - 0 - - - - - True - False - 5 - gtk-go-forward - - - True - True - 1 - - + _Favorites + True + + True + True + 0 + + + + + True + False + 5 + 5 + gtk-go-forward + + + True + True + 1 + @@ -243,7 +230,7 @@ - + True False @@ -251,16 +238,18 @@ True True never - automatic True False none - + True False + True + True + vertical @@ -273,10 +262,11 @@ - + True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + vertical False @@ -291,17 +281,18 @@ False True never - automatic True False none - + True False + True 6 + vertical @@ -336,7 +327,7 @@ - + 227 30 True @@ -366,8 +357,6 @@ True False False - True - True @@ -381,12 +370,11 @@ 28 True True + False True True False - False none - False @@ -395,7 +383,7 @@ True True gtk-find - 1 + 1 diff --git a/usr/lib/linuxmint/mintMenu/plugins/applications.py b/usr/lib/linuxmint/mintMenu/plugins/applications.py index f896ec4..fc95936 100755 --- a/usr/lib/linuxmint/mintMenu/plugins/applications.py +++ b/usr/lib/linuxmint/mintMenu/plugins/applications.py @@ -1,7 +1,7 @@ #!/usr/bin/python2 import gi -gi.require_version("Gtk", "2.0") +gi.require_version("Gtk", "3.0") from gi.repository import Gtk, Pango, Gdk, Gio, GLib @@ -13,16 +13,12 @@ import threading import commands import subprocess import filecmp -import ctypes -from ctypes import * from easybuttons import * from execute import Execute from easygsettings import EasyGSettings from easyfiles import * import recentHelper as RecentHelper -gtk = CDLL("libgtk-x11-2.0.so.0") - import matemenu from user import home @@ -123,10 +119,11 @@ class SuggestionButton ( Gtk.Button ): self.set_size_request( -1, -1 ) Align1 = Gtk.Alignment() Align1.set( 0, 0.5, 1.0, 0 ) - HBox1 = Gtk.HBox() - labelBox = Gtk.VBox( False, 2 ) + HBox1 = Gtk.Box( orientation=Gtk.Orientation.HORIZONTAL ) + labelBox = Gtk.Box( orientation=Gtk.Orientation.VERTICAL, spacing=2 ) self.image = Gtk.Image() - self.image.set_from_stock( self.iconName, iconSize ) + self.image.set_from_icon_name( self.iconName, Gtk.IconSize.INVALID ) + self.image.set_pixel_size( iconSize ) self.image.show() HBox1.pack_start( self.image, False, False, 5 ) self.label = Gtk.Label() @@ -149,22 +146,14 @@ class SuggestionButton ( Gtk.Button ): self.label.set_markup(text) def set_icon_size (self, size): - self.image.set_from_stock( self.iconName, size ) - -class TargetEntry(Structure): - _fields_ = [("target", c_char_p), - ("flags", c_int), - ("info", c_int)] + self.image.set_pixel_size( size ) class pluginclass( object ): TARGET_TYPE_TEXT = 80 - array2 = TargetEntry * 2 - toButton = array2( ("text/uri-list", 0, TARGET_TYPE_TEXT), ("text/uri-list", 0, TARGET_TYPE_TEXT) ) + toButton = ( Gtk.TargetEntry.new( "text/uri-list", 0, TARGET_TYPE_TEXT ), Gtk.TargetEntry.new( "text/uri-list", 0, TARGET_TYPE_TEXT ) ) TARGET_TYPE_FAV = 81 - array = TargetEntry * 3 - toFav = array( ( "FAVORITES", Gtk.TargetFlags.SAME_APP, 81 ), ( "text/plain", 0, 100 ), ( "text/uri-list", 0, 101 ) ) - array1 = TargetEntry * 2 - fromFav = array1( ("FAVORITES", Gtk.TargetFlags.SAME_APP, 81), ("FAVORITES", Gtk.TargetFlags.SAME_APP, 81) ) + toFav = ( Gtk.TargetEntry.new( "FAVORITES", Gtk.TargetFlags.SAME_APP, 81 ), Gtk.TargetEntry.new( "text/plain", 0, 100 ), Gtk.TargetEntry.new( "text/uri-list", 0, 101 ) ) + fromFav = ( Gtk.TargetEntry.new( "FAVORITES", Gtk.TargetFlags.SAME_APP, 81 ), Gtk.TargetEntry.new( "FAVORITES", Gtk.TargetFlags.SAME_APP, 81 ) ) @print_timing def __init__( self, mintMenuWin, toggleButton, de ): @@ -229,10 +218,9 @@ class pluginclass( object ): self.favoritesBox.connect( "drag-data-received", self.ReceiveCallback ) - gtk.gtk_drag_dest_set.argtypes = [c_void_p, c_ushort, c_void_p, c_int, c_ushort] - gtk.gtk_drag_dest_set ( hash(self.favoritesBox), Gtk.DestDefaults.MOTION | Gtk.DestDefaults.HIGHLIGHT | Gtk.DestDefaults.DROP, self.toButton, 2, Gdk.DragAction.COPY ) + self.favoritesBox.drag_dest_set ( Gtk.DestDefaults.MOTION | Gtk.DestDefaults.HIGHLIGHT | Gtk.DestDefaults.DROP, self.toButton, Gdk.DragAction.COPY ) self.showFavoritesButton.connect( "drag-data-received", self.ReceiveCallback ) - gtk.gtk_drag_dest_set ( hash(self.showFavoritesButton), Gtk.DestDefaults.MOTION | Gtk.DestDefaults.HIGHLIGHT | Gtk.DestDefaults.DROP, self.toButton, 2, Gdk.DragAction.COPY ) + self.showFavoritesButton.drag_dest_set ( Gtk.DestDefaults.MOTION | Gtk.DestDefaults.HIGHLIGHT | Gtk.DestDefaults.DROP, self.toButton, Gdk.DragAction.COPY ) # self.searchButton.connect( "button_release_event", self.SearchWithButton ) try: @@ -557,8 +545,7 @@ class pluginclass( object ): # of the existing text, that's the most likely candidate anyhow self.searchEntry.grab_focus() if self.rememberFilter or not clear: - gtk.gtk_editable_set_position.argtypes = [c_void_p, c_int] - gtk.gtk_editable_set_position(hash(self.searchEntry), -1) + self.searchEntry.set_position(-1) else: self.searchEntry.set_text("") @@ -592,14 +579,14 @@ class pluginclass( object ): text = "%s" % text if self.enableInternetSearch: - suggestionButton = SuggestionButton(Gtk.STOCK_ADD, self.iconSize, "") + suggestionButton = SuggestionButton("list-add", self.iconSize, "") suggestionButton.connect("clicked", self.search_ddg) suggestionButton.set_text(_("Search DuckDuckGo for %s") % text) suggestionButton.set_image("/usr/lib/linuxmint/mintMenu/search_engines/ddg.png") self.applicationsBox.add(suggestionButton) self.suggestions.append(suggestionButton) - suggestionButton = SuggestionButton(Gtk.STOCK_ADD, self.iconSize, "") + suggestionButton = SuggestionButton("list-add", self.iconSize, "") suggestionButton.connect("clicked", self.search_wikipedia) suggestionButton.set_text(_("Search Wikipedia for %s") % text) suggestionButton.set_image("/usr/lib/linuxmint/mintMenu/search_engines/wikipedia.ico") @@ -607,7 +594,7 @@ class pluginclass( object ): self.suggestions.append(suggestionButton) separator = Gtk.EventBox() - separator.add(Gtk.HSeparator()) + separator.add(Gtk.Separator( orientation=Gtk.Orientation.HORIZONTAL )) separator.set_visible_window(False) separator.set_size_request(-1, 20) separator.type = "separator" @@ -615,21 +602,21 @@ class pluginclass( object ): self.applicationsBox.add(separator) self.suggestions.append(separator) - suggestionButton = SuggestionButton(Gtk.STOCK_ADD, self.iconSize, "") + suggestionButton = SuggestionButton("list-add", self.iconSize, "") suggestionButton.connect("clicked", self.search_dictionary) suggestionButton.set_text(_("Lookup %s in Dictionary") % text) suggestionButton.set_image("/usr/lib/linuxmint/mintMenu/search_engines/dictionary.png") self.applicationsBox.add(suggestionButton) self.suggestions.append(suggestionButton) - suggestionButton = SuggestionButton(Gtk.STOCK_FIND, self.iconSize, "") + suggestionButton = SuggestionButton("edit-find", self.iconSize, "") suggestionButton.connect("clicked", self.Search) suggestionButton.set_text(_("Search Computer for %s") % text) self.applicationsBox.add(suggestionButton) self.suggestions.append(suggestionButton) - #self.last_separator = gtk.EventBox() - #self.last_separator.add(gtk.HSeparator()) + #self.last_separator = Gtk.EventBox() + #self.last_separator.add(Gtk.Separator( orientation=Gtk.Orientation.HORIZONTAL )) #self.last_separator.set_size_request(-1, 20) #self.last_separator.type = "separator" #self.mintMenuWin.SetPaneColors( [ self.last_separator ] ) @@ -861,8 +848,7 @@ class pluginclass( object ): if event.string.strip() != "" or event.keyval == Gdk.KEY_BackSpace: self.searchEntry.grab_focus() - gtk.gtk_editable_set_position.argtypes = [c_void_p, c_int] - gtk.gtk_editable_set_position(hash(self.searchEntry), -1) + self.searchEntry.set_position( -1 ) self.searchEntry.event( event ) return True @@ -876,9 +862,9 @@ class pluginclass( object ): return False - def favPopup( self, widget, ev ): - if ev.button == 3: - if ev.y > widget.get_allocation().height / 2: + def favPopup( self, widget, event ): + if event.button == 3: + if event.y > widget.get_allocation().height / 2: insertBefore = False else: insertBefore = True @@ -932,8 +918,8 @@ class pluginclass( object ): mTree.show_all() self.mintMenuWin.stopHiding() - gtk.gtk_menu_popup.argtypes = [c_void_p, c_void_p, c_void_p, c_void_p, c_void_p, c_uint, c_uint] - gtk.gtk_menu_popup(hash(mTree), None, None, None, None, ev.button, ev.time) + mTree.attach_to_widget(widget, None) + mTree.popup(None, None, None, None, event.button, event.time) else: mTree = Gtk.Menu() mTree.set_events(Gdk.EventMask.POINTER_MOTION_MASK | Gdk.EventMask.POINTER_MOTION_HINT_MASK | @@ -952,8 +938,8 @@ class pluginclass( object ): insertSpaceMenuItem.connect( "activate", self.onFavoritesInsertSpace, widget, insertBefore ) insertSeparatorMenuItem.connect( "activate", self.onFavoritesInsertSeparator, widget, insertBefore ) self.mintMenuWin.stopHiding() - gtk.gtk_menu_popup.argtypes = [c_void_p, c_void_p, c_void_p, c_void_p, c_void_p, c_uint, c_uint] - gtk.gtk_menu_popup(hash(mTree), None, None, None, None, ev.button, ev.time) + mTree.attach_to_widget(widget, None) + mTree.popup(None, None, None, None, event.button, event.time) def menuPopup( self, widget, event ): if event.button == 3: @@ -1015,8 +1001,8 @@ class pluginclass( object ): startupMenuItem.connect( "toggled", self.onAddToStartup, widget ) self.mintMenuWin.stopHiding() - gtk.gtk_menu_popup.argtypes = [c_void_p, c_void_p, c_void_p, c_void_p, c_void_p, c_uint, c_uint] - gtk.gtk_menu_popup(hash(mTree), None, None, None, None, event.button, event.time) + mTree.attach_to_widget(widget, None) + mTree.popup(None, None, None, None, event.button, event.time) def searchPopup( self, widget=None, event=None ): @@ -1050,7 +1036,8 @@ class pluginclass( object ): menuItem = Gtk.ImageMenuItem(_("Search Computer")) img = Gtk.Image() - img.set_from_stock(Gtk.STOCK_FIND, self.iconSize) + img.set_from_icon_name("edit-find", Gtk.IconSize.INVALID) + img.set_pixel_size( self.iconSize ) menuItem.set_image(img) menuItem.connect("activate", self.Search) menu.append(menuItem) @@ -1096,10 +1083,9 @@ class pluginclass( object ): menu.show_all() self.mintMenuWin.stopHiding() - gtk.gtk_menu_popup.argtypes = [c_void_p, c_void_p, c_void_p, c_void_p, c_void_p, c_uint, c_uint] - gtk.gtk_menu_popup(hash(menu), None, None, None, None, event.button, event.time) + menu.attach_to_widget(self.searchButton, None) + menu.popup(None, None, None, None, event.button, event.time) - #menu.attach_to_widget(self.searchButton, None) #menu.reposition() #menu.reposition() #self.mintMenuWin.grab() @@ -1308,11 +1294,11 @@ class pluginclass( object ): # Scroll button into view def scrollItemIntoView( self, widget, event = None ): - viewport = widget.parent + viewport = widget.get_parent() while not isinstance( viewport, Gtk.Viewport ): - if not viewport.parent: + if not viewport.get_parent(): return - viewport = viewport.parent + viewport = viewport.get_parent() aloc = widget.get_allocation() viewport.get_vadjustment().clamp_page(aloc.y, aloc.y + aloc.height) @@ -1328,8 +1314,9 @@ class pluginclass( object ): return space def favoritesBuildSeparator( self ): - separator = Gtk.HSeparator() - separator.set_size_request( -1, 20 ) + separator = Gtk.Separator( orientation=Gtk.Orientation.HORIZONTAL ) + separator.set_margin_top( 5 ) + separator.set_margin_bottom( 5 ) separator.type = "separator" separator.show_all() @@ -1423,35 +1410,16 @@ class pluginclass( object ): favButton.position = position self.favorites.append( favButton ) self.favoritesPositionOnGrid( favButton ) - favButton.connect( "drag-data-received", self.onFavButtonDragReorder ) - gtk.gtk_drag_dest_set.argtypes = [c_void_p, c_ushort, c_void_p, c_int, c_ushort] - gtk.gtk_drag_dest_set( hash(favButton), Gtk.DestDefaults.MOTION | Gtk.DestDefaults.HIGHLIGHT | Gtk.DestDefaults.DROP, self.fromFav, 2, Gdk.DragAction.COPY ) - favButton.connect( "drag-data-get", self.onFavButtonDragReorderGet ) - gtk.gtk_drag_source_set.argtypes = [c_void_p, c_ushort, c_void_p, c_int, c_ushort] - gtk.gtk_drag_source_set( hash(favButton), Gdk.ModifierType.BUTTON1_MASK, self.toFav, 3, Gdk.DragAction.COPY ) + favButton.drag_source_set (Gdk.ModifierType.BUTTON1_MASK, self.toFav, Gdk.DragAction.COPY) + favButton.drag_dest_set(Gtk.DestDefaults.MOTION | Gtk.DestDefaults.HIGHLIGHT | Gtk.DestDefaults.DROP, self.toFav, Gdk.DragAction.COPY) + favButton.connect("drag-data-get", self.on_drag_data_get) + favButton.connect("drag-data-received", self.on_drag_data_received) position += 1 self.favoritesSave() except Exception, e: print e - def favoritesGetNumRows( self ): - rows = 0 - col = 0 - for fav in self.favorites: - if ( fav.type == "separator" or fav.type == "space" ) and col != 0: - rows += 1 - col = 0 - col += 1 - if fav.type == "separator" or fav.type == "space": - rows += 1 - col = 0 - - if col >= self.favCols: - rows += 1 - col = 0 - return rows - def favoritesPositionOnGrid( self, favorite ): row = 0 col = 0 @@ -1471,9 +1439,9 @@ class pluginclass( object ): col = 0 if favorite.type == "separator" or favorite.type == "space": - self.favoritesBox.attach( favorite, col, col + self.favCols, row, row + 1, yoptions = 0 ) + self.favoritesBox.attach( favorite, col, row, self.favCols, 1 ) else: - self.favoritesBox.attach( favorite, col, col + 1, row, row + 1, yoptions = 0 ) + self.favoritesBox.attach( favorite, col, row, 1, 1 ) def favoritesReorder( self, oldposition, newposition ): if oldposition == newposition: @@ -1497,7 +1465,6 @@ class pluginclass( object ): self.favoritesPositionOnGrid( fav ) self.favoritesSave() - self.favoritesBox.resize( self.favoritesGetNumRows(), self.favCols ) def favoritesAdd( self, favButton, position = -1 ): if favButton: @@ -1505,12 +1472,10 @@ class pluginclass( object ): self.favorites.append( favButton ) self.favoritesPositionOnGrid( favButton ) - favButton.connect( "drag-data-received", self.onFavButtonDragReorder ) - gtk.gtk_drag_dest_set.argtypes = [c_void_p, c_ushort, c_void_p, c_int, c_ushort] - gtk.gtk_drag_dest_set( hash(favButton), Gtk.DestDefaults.MOTION | Gtk.DestDefaults.HIGHLIGHT | Gtk.DestDefaults.DROP, self.toFav, 3, Gdk.DragAction.COPY ) - favButton.connect( "drag-data-get", self.onFavButtonDragReorderGet ) - gtk.gtk_drag_source_set.argtypes = [c_void_p, c_ushort, c_void_p, c_int, c_ushort] - gtk.gtk_drag_source_set ( hash(favButton), Gdk.ModifierType.BUTTON1_MASK, self.toFav, 3, Gdk.DragAction.COPY ) + favButton.connect("drag-data-received", self.on_drag_data_received) + favButton.drag_dest_set(Gtk.DestDefaults.MOTION | Gtk.DestDefaults.HIGHLIGHT | Gtk.DestDefaults.DROP, self.toFav, Gdk.DragAction.COPY) + favButton.connect("drag-data-get", self.on_drag_data_get) + favButton.drag_source_set (Gdk.ModifierType.BUTTON1_MASK, self.toFav, Gdk.DragAction.COPY) if position >= 0: self.favoritesReorder( favButton.position, position ) @@ -1527,7 +1492,6 @@ class pluginclass( object ): self.favoritesBox.remove( self.favorites[ i ] ) self.favoritesPositionOnGrid( self.favorites[ i ] ) self.favoritesSave() - self.favoritesBox.resize( self.favoritesGetNumRows(), self.favCols ) def favoritesRemoveLocation( self, location ): for fav in self.favorites: @@ -1547,7 +1511,7 @@ class pluginclass( object ): appListFile.close( ) except Exception, e: - msgDlg = Gtk.MessageDialog( None, gtk.DialogFlags.MODAL, Gtk.MessageType.ERROR, Gtk.ButtonsType.OK, _("Couldn't save favorites. Check if you have write access to ~/.linuxmint/mintMenu")+"\n(" + e.__str__() + ")" ) + msgDlg = Gtk.MessageDialog( None, Gtk.DialogFlags.MODAL, Gtk.MessageType.ERROR, Gtk.ButtonsType.OK, _("Couldn't save favorites. Check if you have write access to ~/.linuxmint/mintMenu")+"\n(" + e.__str__() + ")" ) msgDlg.run(); msgDlg.destroy(); @@ -1558,15 +1522,14 @@ class pluginclass( object ): return False - def onFavButtonDragReorderGet( self, widget, context, selection, targetType, eventTime ): - if targetType == self.TARGET_TYPE_FAV: + def on_drag_data_get(self, widget, context, selection, info, time): + if info == self.TARGET_TYPE_FAV: self.drag_origin = widget.position - selection.set( selection.target, 8, str(widget.position)) + selection.set(selection.get_target(), 8, str(widget.position)) - def onFavButtonDragReorder( self, widget, context, x, y, selection, targetType, time ): - if targetType == self.TARGET_TYPE_FAV: - #self.favoritesReorder( int(selection.data), widget.position ) - self.favoritesReorder( self.drag_origin, widget.position ) + def on_drag_data_received( self, widget, context, x, y, selection, info, time): + if info == self.TARGET_TYPE_FAV: + self.favoritesReorder( int(selection.get_data()), widget.position ) def on_icon_theme_changed(self, theme): print "on_icon_theme_changed" @@ -1740,7 +1703,7 @@ class pluginclass( object ): for item in sortedApplicationList: launcherName = item[0] button = item[1] - self.applicationsBox.pack_start( button, False, False, 0 ) + self.applicationsBox.add( button ) if launcherName in launcherNames: button.hide() else: @@ -1758,7 +1721,7 @@ class pluginclass( object ): # Build a list of all categories in the menu ( [ { "name", "icon", tooltip" } ] def buildCategoryList( self ): - newCategoryList = [ { "name": _("All"), "icon": "stock_select-all", "tooltip": _("Show all applications"), "filter":"", "index": 0 } ] + newCategoryList = [ { "name": _("All"), "icon": "edit-select-all", "tooltip": _("Show all applications"), "filter":"", "index": 0 } ] num = 1 diff --git a/usr/lib/linuxmint/mintMenu/plugins/easybuttons.py b/usr/lib/linuxmint/mintMenu/plugins/easybuttons.py index bfdbbf7..275b128 100755 --- a/usr/lib/linuxmint/mintMenu/plugins/easybuttons.py +++ b/usr/lib/linuxmint/mintMenu/plugins/easybuttons.py @@ -1,8 +1,11 @@ #!/usr/bin/python2 +import gi +gi.require_version('MateDesktop', '2.0') from gi.repository import Gtk, Gdk, GLib from gi.repository import Pango from gi.repository import GObject +from gi.repository import MateDesktop import os.path import shutil import re @@ -10,10 +13,6 @@ from execute import * import xdg.DesktopEntry import xdg.Menu from filemonitor import monitor as filemonitor -import ctypes -from ctypes import * - -gtk = CDLL("libgtk-x11-2.0.so.0") class IconManager(GObject.GObject): @@ -91,7 +90,7 @@ class IconManager(GObject.GObject): image = Gtk.Image() icon_found = False for theme in self.themes: - if theme.has_icon( realIconName ): + if theme.lookup_icon(realIconName, 0, Gtk.IconLookupFlags.FORCE_REGULAR): icon_found = True break @@ -124,8 +123,8 @@ class easyButton( Gtk.Button ): self.set_size_request( buttonWidth, buttonHeight ) Align1 = Gtk.Alignment.new( 0, 0.5, 1.0, 0 ) - HBox1 = Gtk.HBox() - self.labelBox = Gtk.VBox( False, 2 ) + HBox1 = Gtk.Box( orientation=Gtk.Orientation.HORIZONTAL ) + self.labelBox = Gtk.Box( orientation=Gtk.Orientation.VERTICAL, spacing=2 ) self.buttonImage = Gtk.Image() @@ -135,7 +134,7 @@ class easyButton( Gtk.Button ): else: #[ iW, iH ] = iconManager.getIconSize( self.iconSize ) self.buttonImage.set_size_request( self.iconSize, self.iconSize ) - self.image_box = Gtk.HBox() + self.image_box = Gtk.Box( orientation=Gtk.Orientation.HORIZONTAL ) self.image_box.pack_start(self.buttonImage, False, False, 5) self.image_box.show_all() HBox1.pack_start( self.image_box, False, False, 0 ) @@ -163,7 +162,7 @@ class easyButton( Gtk.Button ): self.connections.append( self.connect( event, callback ) ) def onRelease( self, widget ): - widget.set_state(Gtk.StateType.NORMAL) + widget.get_style_context().set_state( Gtk.StateFlags.NORMAL ) def onDestroy( self, widget ): self.buttonImage.clear() @@ -188,6 +187,7 @@ class easyButton( Gtk.Button ): label.set_ellipsize( Pango.EllipsizeMode.END ) label.set_alignment( 0.0, 1.0 ) + label.set_max_width_chars(0) label.show() self.labelBox.pack_start( label , True, True, 0) @@ -233,11 +233,6 @@ class easyButton( Gtk.Button ): #[ iW, iH ] = iconManager.getIconSize( self.iconSize ) self.buttonImage.set_size_request( self.iconSize, self.iconSize ) -class TargetEntry(Structure): - _fields_ = [("target", c_char_p), - ("flags", c_int), - ("info", c_int)] - class ApplicationLauncher( easyButton ): def __init__( self, desktopFile, iconSize): @@ -271,17 +266,13 @@ class ApplicationLauncher( easyButton ): # Drag and Drop self.connectSelf( "drag-data-get", self.dragDataGet ) - array = TargetEntry * 2 - targets = array(( "text/plain", 0, 100 ), ( "text/uri-list", 0, 101 )) - gtk.gtk_drag_source_set.argtypes = [c_void_p, c_ushort, c_void_p, c_int, c_ushort] - gtk.gtk_drag_source_set(hash(self), Gdk.ModifierType.BUTTON1_MASK, targets, 2, Gdk.DragAction.COPY) + targets = ( Gtk.TargetEntry.new( "text/plain", 0, 100 ), Gtk.TargetEntry.new( "text/uri-list", 0, 101 ) ) + self.drag_source_set( Gdk.ModifierType.BUTTON1_MASK, targets, Gdk.DragAction.COPY ) icon = self.getIcon( Gtk.IconSize.DND ) if icon: iconName, s = icon.get_icon_name() - c = c_char_p(iconName.decode('utf-8', 'ignore').encode('ascii', 'ignore')) - gtk.gtk_drag_source_set_icon_name.argtypes = [c_void_p, c_char_p] - gtk.gtk_drag_source_set_icon_name( hash(self), c) + self.drag_source_set_icon_name( iconName ) self.connectSelf( "focus-in-event", self.onFocusIn ) self.connectSelf( "focus-out-event", self.onFocusOut ) @@ -398,9 +389,7 @@ class ApplicationLauncher( easyButton ): icon = self.getIcon( Gtk.IconSize.DND ) if icon: iconName, size = icon.get_icon_name() - c = c_char_p(iconName.encode('ascii', 'ignore')) - gtk.gtk_drag_source_set_icon_name.argtypes = [c_void_p, c_char_p] - gtk.gtk_drag_source_set_icon_name( hash(self), c) + self.drag_source_set_icon_name( iconName ) def startupFileChanged( self, *args ): self.inStartup = os.path.exists( self.startupFilePath ) @@ -413,11 +402,11 @@ class ApplicationLauncher( easyButton ): shutil.copyfile( self.desktopFile, self.startupFilePath ) # Remove %u, etc. from Exec entry, because MATE will not replace them when it starts the app - item = matedesktop.item_new_from_uri( self.startupFilePath, matedesktop.LOAD_ONLY_IF_EXISTS ) + item = MateDesktop.DesktopItem.new_from_uri(self.startupFilePath, MateDesktop.DesktopItemLoadFlags.ONLY_IF_EXISTS) if item: r = re.compile("%[A-Za-z]"); - tmp = r.sub("", item.get_string( matedesktop.KEY_EXEC ) ).strip() - item.set_string( matedesktop.KEY_EXEC, tmp ) + tmp = r.sub("", item.get_string( MateDesktop.DESKTOP_ITEM_EXEC ) ).strip() + item.set_string( MateDesktop.DESKTOP_ITEM_EXEC, tmp ) item.save( self.startupFilePath, 0 ) def removeFromStartup( self ): @@ -493,7 +482,7 @@ class MenuApplicationLauncher( ApplicationLauncher ): appComment = self.appComment if self.highlight: try: - #color = self.labelBox.rc_get_style().fg[ Gtk.StateType.SELECTED ].to_string() + #color = self.labelBox.get_style_context().get_color( Gtk.StateFlags.SELECTED ).to_string() #if len(color) > 0 and color[0] == "#": #appName = "%s" % (color, appName); #appComment = "%s" % (color, appComment); diff --git a/usr/lib/linuxmint/mintMenu/plugins/execute.py b/usr/lib/linuxmint/mintMenu/plugins/execute.py index 291060c..9e1f0e9 100755 --- a/usr/lib/linuxmint/mintMenu/plugins/execute.py +++ b/usr/lib/linuxmint/mintMenu/plugins/execute.py @@ -23,7 +23,7 @@ def Execute( cmd , commandCwd=None): cwd = tmpCwd if isinstance( cmd, str ) or isinstance( cmd, unicode): - if (cmd.find("ubiquity") >= 0) or (cmd.find("/home/") >= 0) or (cmd.find("su-to-root") >= 0) or (cmd.find("\"") >= 0): + if (cmd.find("ubiquity") >= 0) or (cmd.find("/home/") >= 0) or (cmd.find("su-to-root") >= 0) or (cmd.find("xdg-su") >= 0) or (cmd.find("\"") >= 0): print "running manually..." try: os.chdir(cwd) diff --git a/usr/lib/linuxmint/mintMenu/plugins/places.glade b/usr/lib/linuxmint/mintMenu/plugins/places.glade index 569388c..167e844 100644 --- a/usr/lib/linuxmint/mintMenu/plugins/places.glade +++ b/usr/lib/linuxmint/mintMenu/plugins/places.glade @@ -1,7 +1,6 @@ - - + False 3 @@ -15,10 +14,8 @@ True True 3 - automatic - automatic - + @@ -26,14 +23,16 @@ False none - + True False + vertical - + True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + vertical 2 @@ -43,9 +42,10 @@ - + True False + vertical start diff --git a/usr/lib/linuxmint/mintMenu/plugins/places.py b/usr/lib/linuxmint/mintMenu/plugins/places.py index 5709967..ee2a9ff 100755 --- a/usr/lib/linuxmint/mintMenu/plugins/places.py +++ b/usr/lib/linuxmint/mintMenu/plugins/places.py @@ -6,8 +6,6 @@ import string import gettext import commands import time -import ctypes -from ctypes import * from easybuttons import * from easygsettings import EasyGSettings @@ -15,8 +13,6 @@ from execute import Execute from user import home from urllib import unquote -gtk = CDLL("libgtk-x11-2.0.so.0") - # i18n gettext.install("mintmenu", "/usr/share/linuxmint/locale") @@ -263,8 +259,8 @@ class pluginclass( object ): trashMenu.show_all() emptyTrashMenuItem.connect ( "activate", self.emptyTrash, widget ) self.mintMenuWin.stopHiding() - gtk.gtk_menu_popup.argtypes = [c_void_p, c_void_p, c_void_p, c_void_p, c_void_p, c_uint, c_uint] - gtk.gtk_menu_popup(hash(trashMenu), None, None, None, None, 3, 0) + trashMenu.attach_to_widget(widget, None) + trashMenu.popup(None, None, None, None, 3, 0) def emptyTrash( self, menu, widget): os.system("rm -rf " + home + "/.local/share/Trash/info/*") diff --git a/usr/lib/linuxmint/mintMenu/plugins/recent.glade b/usr/lib/linuxmint/mintMenu/plugins/recent.glade index 65ea1d2..c3f9aae 100644 --- a/usr/lib/linuxmint/mintMenu/plugins/recent.glade +++ b/usr/lib/linuxmint/mintMenu/plugins/recent.glade @@ -1,7 +1,6 @@ - - + False 3 @@ -12,9 +11,10 @@ False 5 - + True False + vertical 3 @@ -25,16 +25,15 @@ True True - automatic - automatic True False - + True False + vertical start @@ -59,17 +58,16 @@ True False - automatic - automatic True False none - + True False + vertical start @@ -105,7 +103,6 @@ True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - False True diff --git a/usr/lib/linuxmint/mintMenu/plugins/recent.py b/usr/lib/linuxmint/mintMenu/plugins/recent.py index 38e14f3..840e538 100755 --- a/usr/lib/linuxmint/mintMenu/plugins/recent.py +++ b/usr/lib/linuxmint/mintMenu/plugins/recent.py @@ -1,7 +1,7 @@ #!/usr/bin/python2 import gi -gi.require_version("Gtk", "2.0") +gi.require_version("Gtk", "3.0") from gi.repository import Gtk, Pango import os @@ -151,35 +151,21 @@ class pluginclass: AButton.set_size_request( 200, -1 ) AButton.set_relief( Gtk.ReliefStyle.NONE ) AButton.connect( "clicked", self.callback, Name ) + AButton.show() - 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 ) + Box1 = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5) ButtonIcon = Gtk.Image() + ButtonIcon.set_size_request(20, -1) ButtonIcon.set_from_pixbuf(RecentImage) - HBox1.add( ButtonIcon ) + Box1.add(ButtonIcon) - ButtonIcon.show() - HBox1.add( VBox1 ) - HBox1.show() - Align1.add( HBox1 ) - Align1.show() - AButton.add( Align1 ) - AButton.show() + 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 ) @@ -205,7 +191,7 @@ class pluginclass: FileString=[] IconString=[] RecentInfo=self.RecManagerInstance.get_items() - # print RecentInfo[0].get_icon(gtk.ICON_SIZE_MENU) + # print RecentInfo[0].get_icon(Gtk.IconSize.MENU) count=0 MaxEntries=self.numentries if self.numentries == -1: diff --git a/usr/lib/linuxmint/mintMenu/plugins/system_management.glade b/usr/lib/linuxmint/mintMenu/plugins/system_management.glade index 31bc2ce..fe21a9e 100644 --- a/usr/lib/linuxmint/mintMenu/plugins/system_management.glade +++ b/usr/lib/linuxmint/mintMenu/plugins/system_management.glade @@ -1,7 +1,6 @@ - - + False 3 @@ -15,10 +14,8 @@ True True 3 - automatic - automatic - + @@ -26,14 +23,16 @@ False none - + True False + vertical - + True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + vertical 2 @@ -43,9 +42,10 @@ - + True False + vertical start diff --git a/usr/lib/linuxmint/mintMenu/plugins/system_management.py b/usr/lib/linuxmint/mintMenu/plugins/system_management.py index 80cd217..70deea7 100755 --- a/usr/lib/linuxmint/mintMenu/plugins/system_management.py +++ b/usr/lib/linuxmint/mintMenu/plugins/system_management.py @@ -1,7 +1,7 @@ #!/usr/bin/python2 import gi -gi.require_version("Gtk", "2.0") +gi.require_version("Gtk", "3.0") from gi.repository import Gtk import os diff --git a/usr/lib/linuxmint/mintMenu/pointerMonitor.py b/usr/lib/linuxmint/mintMenu/pointerMonitor.py index 7d643c8..67c2410 100644 --- a/usr/lib/linuxmint/mintMenu/pointerMonitor.py +++ b/usr/lib/linuxmint/mintMenu/pointerMonitor.py @@ -1,17 +1,12 @@ #!/usr/bin/python2 import gi -gi.require_version("Gtk", "2.0") +gi.require_version("Gtk", "3.0") from Xlib.display import Display from Xlib import X, error from gi.repository import Gtk, Gdk, GObject, GLib import threading -import ctypes -from ctypes import * - -gdk = CDLL("libgdk-x11-2.0.so.0") -gtk = CDLL("libgtk-x11-2.0.so.0") class PointerMonitor(GObject.GObject, threading.Thread): __gsignals__ = { @@ -28,9 +23,7 @@ class PointerMonitor(GObject.GObject, threading.Thread): # Receives GDK windows def addWindowToMonitor(self, window): - gdk.gdk_x11_drawable_get_xid.argtypes = [c_void_p] - xWindow = self.display.create_resource_object("window", gdk.gdk_x11_drawable_get_xid(hash(window))) - self.windows.append(xWindow) + self.windows.append(window) def grabPointer(self): self.root.grab_button(X.AnyButton, X.AnyModifier, True, X.ButtonPressMask, X.GrabModeSync, X.GrabModeAsync, 0, 0) @@ -55,9 +48,14 @@ class PointerMonitor(GObject.GObject, threading.Thread): if event.type == X.ButtonPress: # Check if pointer is inside monitored windows for w in self.windows: - p = w.query_pointer() - g = w.get_geometry() - if p.win_x >= 0 and p.win_y >= 0 and p.win_x <= g.width and p.win_y <= g.height: + if Gtk.check_version (3, 20, 0) is None: + pdevice = Gdk.Display.get_default().get_default_seat().get_pointer() + else: + pdevice = Gdk.Display.get_default().get_device_manager().get_client_pointer() + p = self.get_window().get_device_position(pdevice) + g = self.get_size() + + if p.x >= 0 and p.y >= 0 and p.x <= g.width and p.y <= g.height: break else: # Is outside, so activate diff --git a/usr/share/glib-2.0/schemas/com.linuxmint.mintmenu.gschema.xml b/usr/share/glib-2.0/schemas/com.linuxmint.mintmenu.gschema.xml index 5bffba8..2620b92 100644 --- a/usr/share/glib-2.0/schemas/com.linuxmint.mintmenu.gschema.xml +++ b/usr/share/glib-2.0/schemas/com.linuxmint.mintmenu.gschema.xml @@ -32,12 +32,6 @@ - - 1 - - - - 0 @@ -85,12 +79,6 @@ - - - "#DEDEDE" - - -