def setup_tray(self): try: from xpra.gtk_common.gobject_compat import import_gtk gtk = import_gtk() from xpra.gtk_common.gtk_util import popup_menu_workaround #menu: self.tray_menu = gtk.Menu() self.tray_menu.set_title("Xpra Server") from xpra.gtk_common.about import about self.tray_menu.append( self.traymenuitem("About Xpra", "information.png", None, about)) self.tray_menu.append( self.traymenuitem("Exit", "quit.png", None, self.tray_exit_callback)) self.tray_menu.append( self.traymenuitem("Close Menu", "close.png", None, self.close_tray_menu)) #maybe add: session info, clipboard, sharing, etc #control: disconnect clients self.tray_menu.connect("deactivate", self.tray_menu_deactivated) popup_menu_workaround(self.tray_menu, self.close_tray_menu) self.tray_widget = self.make_tray_widget() self.set_tray_icon(self.tray_icon or "server-notconnected") except ImportError as e: traylog.warn("Warning: failed to load systemtray:") traylog.warn(" %s", e) except Exception as e: traylog.error("Error setting up system tray", exc_info=True)
def setup_tray(self): if OSX: return try: from xpra.gtk_common.gobject_compat import import_gtk gtk = import_gtk() from xpra.gtk_common.gtk_util import popup_menu_workaround #menu: label = u"Xpra Shadow Server" display = os.environ.get("DISPLAY") if POSIX and display: label = u"Xpra %s Shadow Server" % display self.tray_menu = gtk.Menu() self.tray_menu.set_title(label) title_item = gtk.MenuItem() title_item.set_label(label) title_item.set_sensitive(False) title_item.show() self.tray_menu.append(title_item) from xpra.gtk_common.about import about self.tray_menu.append( self.traymenuitem("About Xpra", "information.png", None, about)) if server_features.windows: def readonly_toggled(menuitem): log("readonly_toggled(%s)", menuitem) ro = menuitem.get_active() if ro != self.readonly: self.readonly = ro self.setting_changed("readonly", ro) readonly_menuitem = self.checkitem("Read-only", cb=readonly_toggled, active=self.readonly) self.tray_menu.append(readonly_menuitem) self.tray_menu.append( self.traymenuitem("Exit", "quit.png", None, self.tray_exit_callback)) self.tray_menu.append( self.traymenuitem("Close Menu", "close.png", None, self.close_tray_menu)) #maybe add: session info, clipboard, sharing, etc #control: disconnect clients self.tray_menu.connect("deactivate", self.tray_menu_deactivated) popup_menu_workaround(self.tray_menu, self.close_tray_menu) self.tray_widget = self.make_tray_widget() self.set_tray_icon(self.tray_icon or "server-notconnected") except ImportError as e: traylog.warn("Warning: failed to load systemtray:") traylog.warn(" %s", e) except Exception as e: traylog.error("Error setting up system tray", exc_info=True)
def setup_tray(self): try: from xpra.gtk_common.gobject_compat import import_gtk gtk = import_gtk() from xpra.gtk_common.gtk_util import popup_menu_workaround #menu: self.tray_menu = gtk.Menu() self.tray_menu.set_title("Xpra Server") from xpra.gtk_common.about import about self.tray_menu.append(self.traymenuitem("About Xpra", "information.png", None, about)) self.tray_menu.append(self.traymenuitem("Exit", "quit.png", None, self.tray_exit_callback)) self.tray_menu.append(self.traymenuitem("Close Menu", "close.png", None, self.close_tray_menu)) #maybe add: session info, clipboard, sharing, etc #control: disconnect clients self.tray_menu.connect("deactivate", self.tray_menu_deactivated) popup_menu_workaround(self.tray_menu, self.close_tray_menu) self.tray_widget = self.make_tray_widget() self.set_tray_icon(self.tray_icon or "server-notconnected") except ImportError as e: traylog.warn("Warning: failed to load systemtray:") traylog.warn(" %s", e) except Exception as e: traylog.error("Error setting up system tray", exc_info=True)
def popup_menu_workaround(self, menu): popup_menu_workaround(menu, self.close_menu)