def create_menubar(self): """Create the main menu.""" self.menu_bar = gtk.MenuBar() file_menu = gtk.Menu() file_menu_root = gtk.MenuItem('_File') file_menu_root.set_submenu(file_menu) exit_item = gtk.ImageMenuItem('E_xit') img = gtk.image_new_from_stock(gtk.STOCK_QUIT, gtk.ICON_SIZE_MENU) exit_item.set_image(img) exit_item.show() exit_item.connect("activate", self._on_destroy_event) file_menu.append(exit_item) view_menu = gtk.Menu() view_menu_root = gtk.MenuItem('_View') view_menu_root.set_submenu(view_menu) col_item = gtk.ImageMenuItem("_Columns...") img = gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_MENU) col_item.set_image(img) col_item.show() col_menu = gtk.Menu() for column_index, column in enumerate(self.treeview.get_columns()): name = column.get_title() is_visible = column.get_visible() column_item = gtk.CheckMenuItem(name.replace("_", "__")) column_item._connect_args = column_index column_item.set_active(is_visible) column_item.connect("toggled", self._on_toggle_column_visible) column_item.show() col_menu.append(column_item) col_item.set_submenu(col_menu) col_item.show_all() view_menu.append(col_item) view_menu.append(gtk.SeparatorMenuItem()) # Construct theme chooser items (same as cylc.gui.app_main). theme_item = gtk.ImageMenuItem('Theme...') img = gtk.image_new_from_stock(gtk.STOCK_SELECT_COLOR, gtk.ICON_SIZE_MENU) theme_item.set_image(img) thememenu = gtk.Menu() theme_item.set_submenu(thememenu) theme_item.show() theme_items = {} theme = "default" theme_items[theme] = gtk.RadioMenuItem(label=theme) thememenu.append(theme_items[theme]) theme_items[theme].theme_name = theme for theme in GcylcConfig.get_inst().get(['themes']): if theme == "default": continue theme_items[theme] = gtk.RadioMenuItem( group=theme_items['default'], label=theme) thememenu.append(theme_items[theme]) theme_items[theme].theme_name = theme # set_active then connect, to avoid causing an unnecessary toggle now. theme_items[self.theme_name].set_active(True) for theme in GcylcConfig.get_inst().get(['themes']): theme_items[theme].show() theme_items[theme].connect( 'toggled', lambda i: (i.get_active() and self._set_theme(i.theme_name))) view_menu.append(theme_item) theme_legend_item = gtk.ImageMenuItem("Show task state key") img = gtk.image_new_from_stock(gtk.STOCK_SELECT_COLOR, gtk.ICON_SIZE_MENU) theme_legend_item.set_image(img) theme_legend_item.show() theme_legend_item.connect("activate", self.popup_theme_legend) view_menu.append(theme_legend_item) view_menu.append(gtk.SeparatorMenuItem()) # Construct a configure scanned hosts item. hosts_item = gtk.ImageMenuItem("Configure Hosts") img = gtk.image_new_from_stock(gtk.STOCK_PREFERENCES, gtk.ICON_SIZE_MENU) hosts_item.set_image(img) hosts_item.show() hosts_item.connect( "activate", lambda w: launch_hosts_dialog(self.updater.hosts, self. updater.set_hosts)) view_menu.append(hosts_item) sep_item = gtk.SeparatorMenuItem() sep_item.show() help_menu = gtk.Menu() help_menu_root = gtk.MenuItem('_Help') help_menu_root.set_submenu(help_menu) self.menu_bar.append(file_menu_root) self.menu_bar.append(view_menu_root) self.menu_bar.append(help_menu_root) # Construct an about dialog item. info_item = gtk.ImageMenuItem("About") img = gtk.image_new_from_stock(gtk.STOCK_ABOUT, gtk.ICON_SIZE_MENU) info_item.set_image(img) info_item.show() info_item.connect( "activate", lambda w: launch_about_dialog("cylc gscan", self.updater.hosts)) help_menu.append(info_item) self.menu_bar.show_all()
def create_menubar(self): """Create the main menu.""" self.menu_bar = gtk.MenuBar() file_menu = gtk.Menu() file_menu_root = gtk.MenuItem('_File') file_menu_root.set_submenu(file_menu) exit_item = gtk.ImageMenuItem('E_xit') img = gtk.image_new_from_stock(gtk.STOCK_QUIT, gtk.ICON_SIZE_MENU) exit_item.set_image(img) exit_item.show() exit_item.connect("activate", self._on_destroy_event) file_menu.append(exit_item) view_menu = gtk.Menu() view_menu_root = gtk.MenuItem('_View') view_menu_root.set_submenu(view_menu) col_item = gtk.ImageMenuItem("_Columns...") img = gtk.image_new_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_MENU) col_item.set_image(img) col_item.show() col_menu = gtk.Menu() for column_index, column in enumerate(self.treeview.get_columns()): name = column.get_title() is_visible = column.get_visible() column_item = gtk.CheckMenuItem(name.replace("_", "__")) column_item._connect_args = column_index column_item.set_active(is_visible) column_item.connect("toggled", self._on_toggle_column_visible) column_item.show() col_menu.append(column_item) col_item.set_submenu(col_menu) col_item.show_all() view_menu.append(col_item) view_menu.append(gtk.SeparatorMenuItem()) # Construct theme chooser items (same as cylc.gui.app_main). theme_item = gtk.ImageMenuItem('Theme...') img = gtk.image_new_from_stock( gtk.STOCK_SELECT_COLOR, gtk.ICON_SIZE_MENU) theme_item.set_image(img) thememenu = gtk.Menu() theme_item.set_submenu(thememenu) theme_item.show() theme_items = {} theme = "default" theme_items[theme] = gtk.RadioMenuItem(label=theme) thememenu.append(theme_items[theme]) theme_items[theme].theme_name = theme for theme in gcfg.get(['themes']): if theme == "default": continue theme_items[theme] = gtk.RadioMenuItem( group=theme_items['default'], label=theme) thememenu.append(theme_items[theme]) theme_items[theme].theme_name = theme # set_active then connect, to avoid causing an unnecessary toggle now. theme_items[self.theme_name].set_active(True) for theme in gcfg.get(['themes']): theme_items[theme].show() theme_items[theme].connect( 'toggled', lambda i: (i.get_active() and self._set_theme(i.theme_name))) view_menu.append(theme_item) theme_legend_item = gtk.ImageMenuItem("Show task state key") img = gtk.image_new_from_stock( gtk.STOCK_SELECT_COLOR, gtk.ICON_SIZE_MENU) theme_legend_item.set_image(img) theme_legend_item.show() theme_legend_item.connect("activate", self.popup_theme_legend) view_menu.append(theme_legend_item) view_menu.append(gtk.SeparatorMenuItem()) # Construct a configure scanned hosts item. hosts_item = gtk.ImageMenuItem("Configure Hosts") img = gtk.image_new_from_stock( gtk.STOCK_PREFERENCES, gtk.ICON_SIZE_MENU) hosts_item.set_image(img) hosts_item.show() hosts_item.connect( "button-press-event", lambda b, e: launch_hosts_dialog( self.hosts, self.updater.set_hosts)) view_menu.append(hosts_item) sep_item = gtk.SeparatorMenuItem() sep_item.show() help_menu = gtk.Menu() help_menu_root = gtk.MenuItem('_Help') help_menu_root.set_submenu(help_menu) self.menu_bar.append(file_menu_root) self.menu_bar.append(view_menu_root) self.menu_bar.append(help_menu_root) # Construct an about dialog item. info_item = gtk.ImageMenuItem("About") img = gtk.image_new_from_stock(gtk.STOCK_ABOUT, gtk.ICON_SIZE_MENU) info_item.set_image(img) info_item.show() info_item.connect( "button-press-event", lambda b, e: launch_about_dialog("cylc gscan", self.hosts) ) help_menu.append(info_item) self.menu_bar.show_all()