def __init__(self): GObject.GObject.__init__(self) # XDotWidget xdotwidget = self.xdotwidget = xdot.DotWidget() # Toolbar uimanager = Gtk.UIManager() actiongroup = Gtk.ActionGroup('Actions') actiongroup.add_actions(( ('ZoomIn', Gtk.STOCK_ZOOM_IN, None, None, None, self.xdotwidget.on_zoom_in), ('ZoomOut', Gtk.STOCK_ZOOM_OUT, None, None, None, self.xdotwidget.on_zoom_out), ('ZoomFit', Gtk.STOCK_ZOOM_FIT, None, None, None, self.xdotwidget.on_zoom_fit), ('Zoom100', Gtk.STOCK_ZOOM_100, None, None, None, self.xdotwidget.on_zoom_100), )) uimanager.insert_action_group(actiongroup, 0) uimanager.add_ui_from_string(self.ui) toolbar = uimanager.get_widget('/ToolBar') toolbar.set_icon_size(Gtk.IconSize.SMALL_TOOLBAR) toolbar.set_style(Gtk.ToolbarStyle.ICONS) toolbar.set_show_arrow(False) label = self.label = Gtk.Label() hbox = Gtk.HBox(False, 5) hbox.pack_start(toolbar, False) hbox.pack_start(label, False) self.pack_start(hbox, False) self.pack_start(xdotwidget, True, True, 0)
def __init__(self, parent, linkmap, navigation): Dialog.__init__(self, parent, 'LinkMap', defaultwindowsize=(400, 400), buttons=Gtk.ButtonsType.CLOSE) self.linkmap = linkmap self.navigation = navigation hbox = Gtk.HBox(spacing=5) self.vbox.pack_start(hbox, True, True, 0) self.xdotview = xdot.DotWidget() self.xdotview.set_filter('fdp') self.xdotview.set_dotcode(linkmap.get_dotcode()) self.xdotview.connect('clicked', self.on_node_clicked) hbox.add(self.xdotview) vbox = Gtk.VBox() hbox.pack_start(vbox, False, False, 0) for stock, method in ( (Gtk.STOCK_ZOOM_IN, self.xdotview.on_zoom_in), (Gtk.STOCK_ZOOM_OUT, self.xdotview.on_zoom_out), (Gtk.STOCK_ZOOM_FIT, self.xdotview.on_zoom_fit), (Gtk.STOCK_ZOOM_100, self.xdotview.on_zoom_100), ): button = IconButton(stock) button.connect('clicked', method) vbox.pack_start(button, False, True, 0)
def __init__(self, suite, suiterc, template_vars, orientation="TB", should_hide=False, start_point_string=None, stop_point_string=None, interactive=True): self.suite = suite self.suiterc = None self.template_vars = template_vars self.orientation = orientation self.should_hide = should_hide self.start_point_string = start_point_string self.stop_point_string = stop_point_string self.interactive = interactive self.outfile = None self.disable_output_image = False self.file = suiterc self.filter_recs = [] util.setup_icons() gtk.Window.__init__(self) self.graph = xdot.Graph() self.set_icon(util.get_icon()) self.set_default_size(512, 512) self.vbox = gtk.VBox() self.add(self.vbox) self.widget = xdot.DotWidget()
def __init__(self): gtk.Window.__init__(self) self.set_title('Dot Viewer') self.set_default_size(512, 512) vbox = gtk.VBox() self.add(vbox) self.graph = xdot.Graph() self.widget = xdot.DotWidget() self.uimanager = gtk.UIManager() accelgroup = self.uimanager.get_accel_group() self.add_accel_group(accelgroup) actiongroup = gtk.ActionGroup('Actions') actiongroup.add_actions(( ('Reload', gtk.STOCK_REFRESH, None, None, None, self.on_reload), ('ZoomIn', gtk.STOCK_ZOOM_IN, None, None, None, self.widget.on_zoom_in), ('ZoomOut', gtk.STOCK_ZOOM_OUT, None, None, None, self.widget.on_zoom_out), ('ZoomFit', gtk.STOCK_ZOOM_FIT, None, None, None, self.widget.on_zoom_fit), ('Zoom100', gtk.STOCK_ZOOM_100, None, None, None, self.widget.on_zoom_100), )) self.uimanager.insert_action_group(actiongroup, 0) self.uimanager.add_ui_from_string(self.ui) toolbar = self.uimanager.get_widget('/ToolBar') vbox.pack_start(toolbar, False) vbox.pack_start(self.widget) self.set_focus(self.widget) self.show_all()
def _draw_real(self, q, evt): new_widget = xdot.DotWidget() self._somethingnew = False dotcode = "graph G {%s}" % "\n".join(self.nodos_code) new_widget.set_dotcode(dotcode) evt.set() q.put(new_widget)
def __init__(self): gtk.Window.__init__(self) self.set_icon_from_file(W3AF_ICON) self.graph = xdot.Graph() window = self window.set_title('HTTP Response Cluster') window.set_default_size(512, 512) vbox = gtk.VBox() window.add(vbox) self.widget = xdot.DotWidget() # Create a UIManager instance uimanager = self.uimanager = gtk.UIManager() # Add the accelerator group to the toplevel window accelgroup = uimanager.get_accel_group() window.add_accel_group(accelgroup) # Create an ActionGroup actiongroup = gtk.ActionGroup('Actions') self.actiongroup = actiongroup # Create actions actiongroup.add_actions(( ('ZoomIn', gtk.STOCK_ZOOM_IN, None, None, None, self.widget.on_zoom_in), ('ZoomOut', gtk.STOCK_ZOOM_OUT, None, None, None, self.widget.on_zoom_out), ('ZoomFit', gtk.STOCK_ZOOM_FIT, None, None, None, self.widget.on_zoom_fit), ('Zoom100', gtk.STOCK_ZOOM_100, None, None, None, self.widget.on_zoom_100), )) # Add the actiongroup to the uimanager uimanager.insert_action_group(actiongroup, 0) # Add a UI description uimanager.add_ui_from_string(self.ui) # Create a Toolbar toolbar = uimanager.get_widget('/ToolBar') vbox.pack_start(toolbar, False) vbox.pack_start(self.widget) self.set_focus(self.widget) self.show_all()
def __init__(self, model=None, parent=None): """ """ View.__init__(self, model=model, parent=parent) self.parent_ui=pui=gsm().getUtility( icc.rake.views.interfaces.IApplication ) # self.ui.graph_image.clear() self.add_actions_to_toolbar(self.ui.ag_simulation, important_only=False) self.add_actions_to_menu(self.ui.ag_simulation, label="Simulation") frame=self.get_main_frame() vbox=self.ui.sim_box fig = Figure(figsize=(5,4), dpi=120, subplotpars=matplotlib.figure.SubplotParams( left=0.1, right=0.96, bottom=0.1, top=0.96) ) self.ui.fig = fig #self.ui.ax = fig.add_subplot(111) canvas=FigureCanvas(fig) self.ui.canvas=canvas canvas.set_size_request(600,400) vbox.pack_start(canvas, True, True, 0) toolbar=DMENavigatorToolbar(canvas, self) parent.connect("project-open", self.on_project_open) parent.connect("project-save", self.on_project_save) dot_widget=self.ui.dot_widget = xdot.DotWidget() self.ui.graph_viewport.add(dot_widget) xdot_setup=xdot.DotWindowSetup(pui.ui.window, dot_widget) xdot_setup()
def __init__(self): # ################################################################################################################################# # # Load and apply gtkrc # ################################################################# # # No exception control because rc_parse doesn't throw exception on fail... sad but true ;) # ORIGDIR = os.getcwd() # os.chdir('lib/ui/data/Brave/gtk-2.0/') # gtk.rc_parse('gtkrc') # os.chdir(ORIGDIR) # Load Output Manager self.gom = om.OutputManager('gui') ################################################################################################################################# # Create a new window ################################################################# splash.push(("Creatin main window...")) self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_focus = True # self.window.connect("destroy", lambda w: gtk.main_quit()) self.window.connect("delete_event", self.quit) splash.push(("Loading...")) gtk.settings_get_default().set_long_property("gtk-button-images", True, "main") # Title self.window.set_title(MAINTITLE) # Positions self.window.resize(800, 600) self.window.move(25, 25) # Maximize window self.window.maximize() ################################################################################################################################# # Load core... ################################################################# #Initialize KB splash.push(("Loading KB...")) self.uicore = core.UIcore() self.uicore.add_local_asn() self.gom.set_core(self.uicore) # Check module window prefs setattr(self.uicore, 'SHOW_MODULE_WIN', config.SHOW_MODULE_WIN) self.uicore.set_om(self.gom) ################################################################################################################################# # Main VBox ################################################################# mainvbox = gtk.VBox(False, 1) mainvbox.set_border_width(1) self.window.add(mainvbox) mainvbox.show() ################################################################################################################################# # Tool Bars HBox ################################################################# tbhbox = gtk.HBox(False, 1) mainvbox.pack_start(tbhbox, False, False, 1) tbhbox.show() ################################################################################################################################# # UIManager for MAP Toolbar ################################################################# # to make it nice we'll put the toolbar into the handle box, # so that it can be detached from the main window self.handlebox = gtk.HandleBox() tbhbox.pack_start(self.handlebox, True, True, 1) # Create a UIManager instance splash.push(("Creating menu and toolbar...")) uimanager = gtk.UIManager() accelgroup = uimanager.get_accel_group() self.window.add_accel_group(accelgroup) self._actiongroup = actiongroup = gtk.ActionGroup('UIManager') # Create actions actiongroup.add_actions([ # xml_name, icon, real_menu_text, accelerator, tooltip, callback ('Load', gtk.STOCK_OPEN, ('Load'), None, (''), self.loadKB), ('Save', gtk.STOCK_SAVE, ('Save'), None, (''), self.saveKB), ('Import', gtk.STOCK_CONVERT, ('Import'), None, (''), self.importScan), ('Edit', gtk.STOCK_EDIT, ('Edit'), None, (''), self.loadEditor), ('Proxy', gtk.STOCK_CONNECT, ('Proxy'), None, (''), gtk.main_quit), ('Web Server', gtk.STOCK_EXECUTE, ('Web'), None, ('Web'), gtk.main_quit), #('Sniffer', gtk.STOCK_NETWORK, ('Sniffer'), None, (''), gtk.main_quit), ('Sniffer', gtk.STOCK_NETWORK, ('Sniffer'), None, (''), self.run_sniffer), ('Scapy', gtk.STOCK_HELP, ('Scapy'), None, (''), self.show_term), ('Add Target', gtk.STOCK_ADD, ('Add Target'), None, (''), self.addTarget), ('Preferences', gtk.STOCK_PREFERENCES, ('Preferences'), None, (''), self.showPref), ('Show Log', gtk.STOCK_DND, ('Show Log'), None, (''), self.show_log), ('Show KB', gtk.STOCK_DND, ('Show KB'), None, (''), self.show_kb), ('Report', gtk.STOCK_DND, ('Report'), None, (''), self.report), ('Quit', gtk.STOCK_QUIT, ('Quit'), None, (''), gtk.main_quit), ]) # Add the actiongroup to the uimanager uimanager.insert_action_group(actiongroup, 0) uimanager.add_ui_from_string(ui_menu) # Toolbar toolbar = uimanager.get_widget('/Toolbar') toolbar.set_style(gtk.TOOLBAR_BOTH) # Disabled until I get them working button_proxy = uimanager.get_widget('/Toolbar/Proxy') button_proxy.set_sensitive(False) button_web = uimanager.get_widget('/Toolbar/Web Server') button_web.set_sensitive(False) # Disable if not GtkSourceView2 if not config.HAS_SOURCEVIEW: button_edit = uimanager.get_widget('/Toolbar/Edit') button_edit.set_sensitive(False) # Disable if not Vte if not config.HAS_VTE: button_sniffer = uimanager.get_widget('/Toolbar/Sniffer') button_sniffer.set_sensitive(False) button_scapy = uimanager.get_widget('/Toolbar/Scapy') button_scapy.set_sensitive(False) self.handlebox.add(toolbar) toolbar.show() self.handlebox.show() ################################################################################################################################# # Map tab ################################################################# # Will contain on top the notebook and on bottom log window self.vpaned = gtk.VPaned() # Will contain xdot widget and kb window self.hpaned = gtk.HPaned() ################################################################# # KB Textview ################################################################# self.textview = kbwin.KBwindow() #self.gom.set_kbwin(self.textview) ################################################################# # KB TreeView ################################################################# self.treeview = kbtree.KBtree() self.tree = self.treeview.createTree() self.treeview.updateTree() self.gom.set_kbwin(self.treeview) self.tree.show() ################################################################# # xdot map ################################################################# from . import inxdot # self.context = cmenu.contextMenu() # self.context.createMenus(self.textview, self.gom) # # self.xdotw = inxdot.MyDotWidget(self.context, self.uicore) # nodeMenu initialization stuff self.uiman = nodeMenu.UIManager(self.gom, self.uicore, config) self.uiman.set_data(None) accel = self.uiman.get_accel_group() self.window.add_accel_group(accel) # graphMenu initialization stuff self.graph_uiman = graphMenu.UIManager(self.gom, self.uicore) #self.graph_uiman.set_data(None) graph_accel = self.graph_uiman.get_accel_group() self.window.add_accel_group(graph_accel) self.xdotw = inxdot.MyDotWidget(self.uiman, self.graph_uiman, self.uicore) setattr(self.graph_uiman, 'xdot', self.xdotw) self.xdotw.set_size_request(900,450) self.gom.set_map(self.xdotw) setattr(self.uicore, 'xdot', self.xdotw) self.uicore.getDot(doASN=False) self.xdotw.set_dotcode( self.uicore.get_kbfield('dotcode') ) self.xdotw.zoom_image(1.0) ################################################################# # Graph Menu ################################################################# gmenu = graphTBar.GraphMenu(self.xdotw, self.uicore) ################################################################# # HBox for Map and GraphMenu ################################################################# menubox = gtk.HBox() menubox.pack_start(self.xdotw, True, True) menubox.pack_start(gmenu, False, False) # Show elements gmenu.show() menubox.show() ################################################################# # Scrolled Window ################################################################# self.scrolled_window = gtk.ScrolledWindow() self.scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.scrolled_window.set_size_request(100,100) # Add Textview to Scrolled Window #self.scrolled_window.add_with_viewport(self.textview) self.scrolled_window.add_with_viewport(self.tree) ################################################################# # Map Iface ################################################################# bufferf = "Map" frame = gtk.Frame(bufferf) frame.set_border_width(5) frame.show() label = gtk.Label('Map') # Test XDOT MAP frame.add(self.hpaned) #self.hpaned.add1(self.xdotw) self.hpaned.add1(menubox) self.hpaned.add2(self.scrolled_window) self.textview.show() # Check visibility on config preferences if config.SHOW_KBTREE: self.scrolled_window.show() self.scrolled_window.is_visible = True else: self.scrolled_window.is_visible = False self.hpaned.show() self.xdotw.show() label = gtk.Label('Map') label.set_angle(90) b_factory = gtk.VBox b = b_factory(spacing=1) i = gtk.Image() i.set_from_stock(gtk.STOCK_NETWORK, gtk.ICON_SIZE_SMALL_TOOLBAR) b.pack_start(label) b.pack_start(i) b.show_all() ################################################################# # Notebook ################################################################# self.notebook = gtk.Notebook() self.notebook.set_tab_pos(gtk.POS_LEFT) #notebook.append_page(frame, label) self.notebook.append_page(frame, b) self.notebook.connect("switch_page", self.onSwitch) ################################################################################################################################# # Consoles Tab ################################################################# label = gtk.Label('Term') label.set_angle(90) b_factory = gtk.VBox b = b_factory(spacing=1) i = gtk.Image() i.set_from_stock(gtk.STOCK_EXECUTE, gtk.ICON_SIZE_SMALL_TOOLBAR) b.pack_start(label) b.pack_start(i) b.show_all() term_box = gtk.VBox() term_button = gtk.Button("New Tab") # Disable if VTE not available if not config.HAS_VTE: term_button.set_sensitive(False) term_box.pack_start(term_button,False) self.term_notebook = libTerminal.TerminalNotebook() #term_button.connect("clicked", term_notebook.new_tab) term_button.connect("clicked", self.new_tab) term_box.pack_start(self.term_notebook) setattr(self.uiman, 'termnb', self.term_notebook) setattr(self.uiman, 'mainnb', self.notebook) self.notebook.append_page(term_box, b) term_box.show_all() ################################################################################################################################# # RCE Iface ################################################################# # xdot rce import xdot self.xdotr = xdot.DotWidget() self.xdotr.set_size_request(600,512) self.xdotr.show() bufferf = "RCE" frame = gtk.Frame(bufferf) frame.set_border_width(5) frame.set_size_request(400, 400) label = gtk.Label('RCE') label.set_angle(90) b_factory = gtk.VBox b = b_factory(spacing=1) i = gtk.Image() i.set_from_stock(gtk.STOCK_REFRESH, gtk.ICON_SIZE_SMALL_TOOLBAR) b.pack_start(label) b.pack_start(i) b.show_all() self.notebook.append_page(frame, b) # RCE graph menu self.rmenu = rceTBar.RceMenu(self.xdotr, rcecore) self.dasmenu = rceTBar.DasmMenu() ################################################################################################################################# # UIManager for RCE Toolbar ################################################################# # to make it nice we'll put the toolbar into the handle box, # so that it can be detached from the main window self.rcehb = gtk.HandleBox() tbhbox.pack_start(self.rcehb, True, True, 1) # Create a UIManager instance rceuiman = gtk.UIManager() rceaccelgroup = rceuiman.get_accel_group() self.window.add_accel_group(rceaccelgroup) self._actiongroup = actiongroup = gtk.ActionGroup('UIManager') # Create actions actiongroup.add_actions([ # xml_name, icon, real_menu_text, accelerator, tooltip, callback ('New', gtk.STOCK_NEW, ('New'), None, (''), self.newBin), ('Load', gtk.STOCK_OPEN, ('Load'), None, (''), self.loadBin), ('Show Log', gtk.STOCK_DND, ('Show Log'), None, (''), self.show_log), #('Debugger', gtk.STOCK_EXECUTE, ('Debugger'), None, (''), gtk.main_quit), ('Debugger', gtk.STOCK_EXECUTE, ('Debugger'), None, (''), self.run_debugger), #('Report', gtk.STOCK_DND, ('Report'), None, (''), gtk.main_quit), ('Quit', gtk.STOCK_QUIT, ('Quit'), None, (''), gtk.main_quit), ]) # Add the actiongroup to the rceuiman rceuiman.insert_action_group(actiongroup, 0) rceuiman.add_ui_from_string(rce_menu) # Toolbar rcetoolbar = rceuiman.get_widget('/RceToolbar') self.rcehb.add(rcetoolbar) self.rcehb.hide() ################################################################# # RCE HBox and VBoxes ################################################################# rcepaned = gtk.HPaned() lrcevb = gtk.VBox(False, 1) rrcevb = gtk.VBox(False, 1) rcepaned.add1(lrcevb) rcepaned.add2(rrcevb) lrcevb.pack_start(self.rmenu, False, False, 1) rrcevb.pack_start(self.dasmenu, False, False, 1) rcepaned.show_all() ################################################################# # Textview RCE ################################################################# rcetv = gtk.TextView(buffer=None) rcetv.set_wrap_mode(gtk.WRAP_NONE) rcetv.set_editable(False) fontdesc = pango.FontDescription("MonoSpace 10") #fontdesc = pango.FontDescription("Purisa 10") rcetv.modify_font(fontdesc) rcetv.show() self.textbuffer = rcetv.get_buffer() # Scrolled Window rce_scrolled_window = gtk.ScrolledWindow() rce_scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) rce_scrolled_window.show() # Add Textview to Scrolled Window rce_scrolled_window.add_with_viewport(rcetv) # Add xdotr and textview to rcehbox lrcevb.pack_start(self.xdotr, True, True, 2) rrcevb.pack_start(rce_scrolled_window, True, True, 2) frame.add(rcepaned) frame.show() rcepaned.show() ################################################################################################################################# # Xploit Iface ################################################################# bufferf = "Exploit" frame = gtk.Frame(bufferf) frame.set_border_width(5) frame.show() label = gtk.Label('Exploit') frame.add(label) label.show() label = gtk.Label('Exploit') label.set_angle(90) b_factory = gtk.VBox b = b_factory(spacing=1) i = gtk.Image() i.set_from_stock(gtk.STOCK_PREFERENCES, gtk.ICON_SIZE_SMALL_TOOLBAR) b.pack_start(label) b.pack_start(i) b.show_all() self.exploitsInst = exploits.Exploits(config, self.term_notebook) exploitsGui = self.exploitsInst.get_widget() exploitsGui.show_all() self.notebook.append_page(exploitsGui, b) #mainvbox.pack_start(notebook, True, True, 1) self.vpaned.add1(self.notebook) self.notebook.show() ################################################################################################################################# # Log Window ################################################################# self.logtext = gtk.TextView(buffer=None) self.logtext.set_wrap_mode(gtk.WRAP_NONE) self.logtext.set_editable(False) #self.logtext.set_size_request(40,40) self.logbuffer = self.logtext.get_buffer() self.logbuffer.set_text('Loading Inguma...\n') self.logtext.show() ################################################################# # Log Scrolled Window ################################################################# self.log_scrolled_window = gtk.ScrolledWindow() self.log_scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS) self.log_scrolled_window.is_visible = True #Always on bottom on change self.vajd = self.log_scrolled_window.get_vadjustment() self.vajd.connect('changed', lambda a, s=self.log_scrolled_window: self.rescroll(a,s)) #self.log_scrolled_window.set_size_request(40,40) #self.logtext.set_size_request(20,20) # Add Textview to Scrolled Window self.log_scrolled_window.add_with_viewport(self.logtext) # Set logtext as output for gui self.gom.set_gui(self.logbuffer) # Add Scrolled Log Window to Bottom Notebook ############################################ # Notebook for bottom panel self.bottom_nb = gtk.Notebook() self.bottom_nb.set_tab_pos(gtk.POS_LEFT) # Icon and label for Logs tab label = gtk.Label('Logs') label.set_angle(90) b_factory = gtk.VBox b = b_factory(spacing=1) i = gtk.Image() i.set_from_stock(gtk.STOCK_JUSTIFY_FILL, gtk.ICON_SIZE_SMALL_TOOLBAR) b.pack_start(label) b.pack_start(i) b.show_all() self.bottom_nb.append_page(self.log_scrolled_window, b) # Icon and label for Actions tab label = gtk.Label('Actions') label.set_angle(90) b_factory = gtk.VBox b = b_factory(spacing=1) i = gtk.Image() i.set_from_stock(gtk.STOCK_EXECUTE, gtk.ICON_SIZE_SMALL_TOOLBAR) b.pack_start(label) b.pack_start(i) b.show_all() # Add Threads TreeView self.threadsInst = threadstv.ThreadsTv() threadsGui = self.threadsInst.get_widget() setattr(self.threadsInst, 'uicore', self.uicore) threadsGui.show_all() self.bottom_nb.append_page(threadsGui, b) #self.bottom_nb.set_scrollable(True) self.bottom_nb.set_current_page(0) # Check visibility on config preferences if config.SHOW_LOG: self.bottom_nb.is_visible = True self.bottom_nb.show() else: self.bottom_nb.is_visible = False self.vpaned.add2(self.bottom_nb) mainvbox.pack_start(self.vpaned, True, True, 1) self.log_scrolled_window.show() # Add threadtv to core self.uicore.set_threadtv(self.threadsInst) setattr(self.graph_uiman, 'threadtv', self.threadsInst) # ################################################################################################################################# # # Progress Bar # ################################################################# # self.progressbar = pbar.PBar() # self.progressbar.set_stopped() # mainvbox.pack_start(self.progressbar, False, False, 1) ################################################################################################################################# #StatusBar ################################################################# statusbar = gtk.Statusbar() mainvbox.pack_end(statusbar, False, False, 1) context_id = statusbar.get_context_id("Inguma 0.2") message_id = statusbar.push(context_id, 'Inguma 0.2') statusbar.show() ################################################################################################################################# # finish it ################################################################# self.vpaned.show() self.window.show() splash.destroy() # Check for autosaved KB and ask for loading libAutosave.checkDir() if not libAutosave.checkKB(): print "Autosaved KB not found, skipping..." else: toload = libAutosave.askDialog() if toload: kbpath = libAutosave.getKbPath() self.uicore.loadKB(kbpath) libAutosave.removeKB() # Update KB textview self.textview.updateWin() self.treeview.updateTree() # Adding text to Log window self.gom.echo( 'Loaded' , False) else: libAutosave.removeKB() # Update Map self.xdotw.set_dotcode( self.uicore.get_kbfield('dotcode') ) self.xdotw.zoom_image(1.0) gtk.main()
def __init__(self, suite, suiterc, start_point_string, stop_point_string, template_vars, orientation="TB", subgraphs_on=False, ignore_suicide=True, should_hide=False): self.outfile = None self.disable_output_image = False self.suite = suite self.file = suiterc self.suiterc = None self.orientation = orientation self.subgraphs_on = subgraphs_on self.template_vars = template_vars self.ignore_suicide = ignore_suicide self.start_point_string = start_point_string self.stop_point_string = stop_point_string self.filter_recs = [] util.setup_icons() gtk.Window.__init__(self) self.graph = xdot.Graph() window = self window.set_title('Cylc Suite Dependency Graph Viewer') window.set_default_size(512, 512) window.set_icon(util.get_icon()) vbox = gtk.VBox() window.add(vbox) self.widget = xdot.DotWidget() # Create a UIManager instance uimanager = self.uimanager = gtk.UIManager() # Add the accelerator group to the toplevel window accelgroup = uimanager.get_accel_group() window.add_accel_group(accelgroup) # Create an ActionGroup actiongroup = gtk.ActionGroup('Actions') self.actiongroup = actiongroup # create new stock icons for group and ungroup actions imagedir = os.environ['CYLC_DIR'] + '/images/icons' factory = gtk.IconFactory() for i in ['group', 'ungroup']: pixbuf = gtk.gdk.pixbuf_new_from_file(imagedir + '/' + i + '.png') iconset = gtk.IconSet(pixbuf) factory.add(i, iconset) factory.add_default() actiongroup.add_actions(( ('ZoomIn', gtk.STOCK_ZOOM_IN, None, None, 'Zoom In', self.widget.on_zoom_in), ('ZoomOut', gtk.STOCK_ZOOM_OUT, None, None, 'Zoom Out', self.widget.on_zoom_out), ('ZoomFit', gtk.STOCK_ZOOM_FIT, None, None, 'Zoom Fit', self.widget.on_zoom_fit), ('Zoom100', gtk.STOCK_ZOOM_100, None, None, 'Zoom 100', self.widget.on_zoom_100), ('Group', 'group', 'Group', None, 'Group All Families', self.group_all), ('UnGroup', 'ungroup', 'Ungroup', None, 'Ungroup All Families', self.ungroup_all), ('Refresh', gtk.STOCK_REFRESH, None, None, 'Refresh', self.on_refresh), ('Save', gtk.STOCK_SAVE_AS, None, None, 'Save', self.save_action), )) actiongroup.add_toggle_actions( (('LeftToRight', 'transpose', 'Transpose', None, 'Transpose the graph', self.on_left_to_right), )) actiongroup.add_toggle_actions( (('Subgraphs', gtk.STOCK_LEAVE_FULLSCREEN, 'Cycle Point Subgraphs', None, 'Organise by cycle point', self.on_subgraphs), )) actiongroup.add_toggle_actions( (('IgnoreSuicide', gtk.STOCK_CANCEL, 'Ignore Suicide Triggers', None, 'Ignore Suicide Triggers', self.on_igsui), )) # Add the actiongroup to the uimanager uimanager.insert_action_group(actiongroup, 0) # Add a UI descrption uimanager.add_ui_from_string(self.ui) left_to_right_toolitem = uimanager.get_widget('/ToolBar/LeftToRight') left_to_right_toolitem.set_active(self.orientation == "LR") subgraphs_toolitem = uimanager.get_widget('/ToolBar/Subgraphs') subgraphs_toolitem.set_active(self.subgraphs_on) igsui_toolitem = uimanager.get_widget('/ToolBar/IgnoreSuicide') igsui_toolitem.set_active(self.ignore_suicide) # Create a Toolbar toolbar = uimanager.get_widget('/ToolBar') vbox.pack_start(toolbar, False) vbox.pack_start(self.widget) eb = gtk.EventBox() eb.add(gtk.Label("right-click on nodes to control family grouping")) eb.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#8be')) vbox.pack_start(eb, False) self.set_focus(self.widget) if not should_hide: self.show_all() self.load_config()
def __init__(self, suite, suiterc, template_vars, orientation="TB", should_hide=False): self.outfile = None self.disable_output_image = False self.suite = suite self.file = suiterc self.suiterc = None self.orientation = orientation self.template_vars = template_vars self.start_point_string = None self.stop_point_string = None self.filter_recs = [] util.setup_icons() gtk.Window.__init__(self) self.graph = xdot.Graph() window = self window.set_title('Cylc Suite Runtime Inheritance Graph Viewer') window.set_default_size(512, 512) window.set_icon(util.get_icon()) vbox = gtk.VBox() window.add(vbox) self.widget = xdot.DotWidget() # Create a UIManager instance uimanager = self.uimanager = gtk.UIManager() # Add the accelerator group to the toplevel window accelgroup = uimanager.get_accel_group() window.add_accel_group(accelgroup) # Create an ActionGroup actiongroup = gtk.ActionGroup('Actions') self.actiongroup = actiongroup actiongroup.add_actions(( ('ZoomIn', gtk.STOCK_ZOOM_IN, None, None, 'Zoom In', self.widget.on_zoom_in), ('ZoomOut', gtk.STOCK_ZOOM_OUT, None, None, 'Zoom Out', self.widget.on_zoom_out), ('ZoomFit', gtk.STOCK_ZOOM_FIT, None, None, 'Zoom Fit', self.widget.on_zoom_fit), ('Zoom100', gtk.STOCK_ZOOM_100, None, None, 'Zoom 100', self.widget.on_zoom_100), ('Refresh', gtk.STOCK_REFRESH, None, None, 'Refresh', self.on_refresh), ('Save', gtk.STOCK_SAVE_AS, None, None, 'Save', self.save_action), )) actiongroup.add_toggle_actions( (('LeftToRight', 'transpose', 'Transpose', None, 'Transpose the graph', self.on_left_to_right), )) # Add the actiongroup to the uimanager uimanager.insert_action_group(actiongroup, 0) # Add a UI descrption uimanager.add_ui_from_string(self.ui) left_to_right_toolitem = uimanager.get_widget('/ToolBar/LeftToRight') left_to_right_toolitem.set_active(self.orientation == "LR") # Create a Toolbar toolbar = uimanager.get_widget('/ToolBar') vbox.pack_start(toolbar, False) vbox.pack_start(self.widget) self.set_focus(self.widget) if not should_hide: self.show_all() self.load_config()
dotcode = G.string() # update vizualisation gtk.gdk.threads_enter() widget.set_dotcode(dotcode) widget.zoom_to_fit() gtk.gdk.threads_leave() # create gtk window window = gtk.Window() window.set_title('script viewer') window.set_default_size(600, 800) vbox = gtk.VBox() window.add(vbox) widget = xdot.DotWidget() widget.set_dotcode(dotcode) widget.zoom_to_fit() vbox.pack_start(widget) window.show_all() window.connect('destroy', gtk.main_quit) rospy.init_node('script_viewer', anonymous=True) rospy.Subscriber("/script_server/graph", String, graph_cb) rospy.Subscriber("/script_server/state", ScriptState, state_cb) gtk.main()
def setupWindowContents(self): self.citationmapperwindow = gtk.Window() self.citationmapperwindow.set_title("Citation mapper") self.citationmapperwindow.set_size_request(500, 200) # Create a UIManager instance uimanager = self.uimanager = gtk.UIManager() # Outer vertical box vbox = gtk.VBox(False, 0) # Network window self.mapview = xdot.DotWidget() # Action bar # Create an ActionGroup actiongroup = gtk.ActionGroup('Actions') self.actiongroup = actiongroup # Create actions actiongroup.add_actions(( ('Open', gtk.STOCK_OPEN, None, None, None, self.on_open), ('Reload', gtk.STOCK_REFRESH, None, None, None, self.on_reload), ('ZoomIn', gtk.STOCK_ZOOM_IN, None, None, None, self.mapview.on_zoom_in), ('ZoomOut', gtk.STOCK_ZOOM_OUT, None, None, None, self.mapview.on_zoom_out), ('ZoomFit', gtk.STOCK_ZOOM_FIT, None, None, None, self.mapview.on_zoom_fit), ('Zoom100', gtk.STOCK_ZOOM_100, None, None, None, self.mapview.on_zoom_100), )) actiongroup.add_actions([ ('Quit', gtk.STOCK_QUIT, '_Quit', None, None, gtk.main_quit), ('CloseArticleDetailsWindows', None, '_Close all article details windows', 'C', None, self.articleDetailsWindows.closeAll), ('ExportToPDF', None, '_Export to pdf', 'E', None, self.exportToPDF), ('About', None, '_About', None, None, self.showAboutDialog), ('File', None, '_File'), ('Help', None, '_Help') ]) # Add the actiongroup to the uimanager uimanager.insert_action_group(actiongroup, 0) # Add the accelerator group to the toplevel window accelgroup = uimanager.get_accel_group() self.citationmapperwindow.add_accel_group(accelgroup) # Add a UI descrption uimanager.add_ui_from_string(self.ui) # Create a menu menuline = uimanager.get_widget('/MenuBar') vbox.pack_start(menuline, False) # Create a Toolbar toolbar = uimanager.get_widget('/ToolBar') vbox.pack_start(toolbar, False) #vbox.pack_start(labelReferences, False, True, 0) vbox.pack_start(self.mapview, True, True, 0) vbox.show_all() self.citationmapperwindow.add(vbox) self.citationmapperwindow.show() self.mapview.set_dotcode(self.dotcode)
def __init__(self, suite, suiterc, template_vars, template_vars_file, watch, orientation="TB" ): self.outfile = None self.disable_output_image = False self.suite = suite self.file = suiterc self.suiterc = None self.watch = [] self.orientation = orientation self.template_vars = template_vars self.template_vars_file = template_vars_file gtk.Window.__init__(self) self.graph = xdot.Graph() window = self window.set_title('Suite Runtime Namespace Graph Viewer') window.set_default_size(512, 512) window.set_icon( util.get_icon() ) vbox = gtk.VBox() window.add(vbox) self.widget = xdot.DotWidget() # Create a UIManager instance uimanager = self.uimanager = gtk.UIManager() # Add the accelerator group to the toplevel window accelgroup = uimanager.get_accel_group() window.add_accel_group(accelgroup) # Create an ActionGroup actiongroup = gtk.ActionGroup('Actions') self.actiongroup = actiongroup # create new stock icons for group and ungroup actions imagedir = os.environ[ 'CYLC_DIR' ] + '/images/icons' factory = gtk.IconFactory() for i in [ 'group', 'ungroup' ]: pixbuf = gtk.gdk.pixbuf_new_from_file( imagedir + '/' + i + '.png' ) iconset = gtk.IconSet(pixbuf) factory.add( i, iconset ) factory.add_default() # Create actions actiongroup.add_actions(( ('ZoomIn', gtk.STOCK_ZOOM_IN, None, None, 'Zoom In', self.widget.on_zoom_in), ('ZoomOut', gtk.STOCK_ZOOM_OUT, None, None, 'Zoom Out', self.widget.on_zoom_out), ('ZoomFit', gtk.STOCK_ZOOM_FIT, None, None, 'Zoom Fit', self.widget.on_zoom_fit), ('Zoom100', gtk.STOCK_ZOOM_100, None, None, 'Zoom 100', self.widget.on_zoom_100), ('Save', gtk.STOCK_SAVE_AS, None, None, 'Save', self.save_action ), )) actiongroup.add_toggle_actions(( ('Landscape', gtk.STOCK_JUMP_TO, None, None, 'Landscape', self.on_landscape), )) # Add the actiongroup to the uimanager uimanager.insert_action_group(actiongroup, 0) # Add a UI descrption uimanager.add_ui_from_string(self.ui) landscape_toolitem = uimanager.get_widget('/ToolBar/Landscape') landscape_toolitem.set_active(self.orientation == "LR") # Create a Toolbar toolbar = uimanager.get_widget('/ToolBar') vbox.pack_start(toolbar, False) vbox.pack_start(self.widget) #eb = gtk.EventBox() #eb.add( gtk.Label( "right-click on nodes to control family grouping" ) ) #eb.modify_bg( gtk.STATE_NORMAL, gtk.gdk.color_parse( '#8be' ) ) #vbox.pack_start( eb, False ) self.set_focus(self.widget) # find all suite.rc include-files self.rc_mtimes = {} self.rc_last_mtimes = {} for rc in watch: while True: try: self.rc_last_mtimes[rc] = os.stat(rc).st_mtime except OSError: # this happens occasionally when the file is being edited ... print >> sys.stderr, "Failed to get rc file mod time, trying again in 1 second" time.sleep(1) else: #self.rc_mtimes[rc] = self.rc_last_mtimes[rc] break self.show_all() while True: if self.load_config(): break else: time.sleep(1)
def __init__(self): gtk.Window.__init__(self) self.graph = xdot.Graph() window = self window.set_default_size(800, 600) window.set_position(gtk.WIN_POS_CENTER) DBConnection.open_connection() # Global variables needed for interface. self.pid = None self.tid = None self.aid = None self.selectparent = False self.selectchild = False self.tooltips = gtk.Tooltips() # Treeview containing all tags. self.taglist = gtk.ListStore(str) self.tagtree = gtk.TreeView(self.taglist) tagselection = self.tagtree.get_selection() tagselection.set_mode(gtk.SELECTION_MULTIPLE) self.tagtree.set_enable_search(True) self.tagtree.set_search_column(0) self.tagtree.get_selection().connect( 'changed', lambda s: self.on_tagtreeview_selection_changed(s)) self.tagtree.append_column( gtk.TreeViewColumn("", gtk.CellRendererText(), text=0)) self.tagtree.set_headers_visible(False) # Treeview containing projects. self.projectlist = gtk.ListStore(int, str, str) self.projecttree = gtk.TreeView(self.projectlist) self.projecttree.get_selection().set_mode(gtk.SELECTION_MULTIPLE) self.projecttree.set_enable_search(True) self.projecttree.set_search_column(1) self.projecttree.append_column( gtk.TreeViewColumn("Projects", gtk.CellRendererText(), text=1, foreground=2)) self.projecttree.get_selection().connect( 'changed', lambda s: self.on_projecttreeview_selection_changed(s)) self.projecttree.set_headers_visible(False) # Treeview containing actions self.actionlist = gtk.ListStore(int, str, int, bool) self.actiontree = gtk.TreeView(self.actionlist) self.actiontree.get_selection().connect( 'changed', lambda s: self.on_actiontreeview_selection_changed(s)) actionselection = self.tagtree.get_selection() actionselection.set_mode(gtk.SELECTION_MULTIPLE) self.checkbox = gtk.CellRendererToggle() self.checkbox.set_property('activatable', True) self.column1 = gtk.TreeViewColumn("Completed", self.checkbox) self.column1.add_attribute(self.checkbox, "active", 3) self.column1.set_max_width(100) self.checkbox.connect('toggled', self.on_action_toggled, self.actionlist) self.actiontree.append_column(self.column1) self.actiontree.append_column( gtk.TreeViewColumn("Action", gtk.CellRendererText(), text=1)) self.actiontree.set_headers_visible(False) # Code to visualise the properties of a project. self.projectproperties = gtk.VBox() self.projectproperties.set_size_request(175, 155) label = gtk.Label() label.set_alignment(0, 0) label.set_markup("<big><b>Project Details</b></big>") self.projectproperties.pack_start(label, False) label = gtk.Label("Name") label.set_alignment(0.0, 0.0) self.projectproperties.pack_start(label, False) self.ProjectNameEntry = gtk.Entry(max=50) self.ProjectNameEntry.set_sensitive(False) self.ProjectNameEntry.modify_text(gtk.STATE_INSENSITIVE, gtk.gdk.color_parse("#000000")) self.projectproperties.pack_start(self.ProjectNameEntry, False) hbox = gtk.HBox() vbox = gtk.VBox() label = gtk.Label("Status") label.set_alignment(0.0, 0.0) vbox.pack_start(label) self.ProjectStatusCombo = gtk.combo_box_new_text() for status in statuslist: self.ProjectStatusCombo.append_text(status) self.handlerid = self.ProjectStatusCombo.connect( 'changed', self.on_status_change_project) vbox.pack_start(self.ProjectStatusCombo) self.ProjectPriorityEntry = gtk.Entry(max=3) self.ProjectPriorityEntry.set_sensitive(False) self.ProjectPriorityEntry.modify_text(gtk.STATE_INSENSITIVE, gtk.gdk.color_parse("#000000")) hbox.pack_start(vbox, False) vbox = gtk.VBox() label = gtk.Label("Priority") label.set_alignment(0.0, 0.0) vbox.pack_start(label) vbox.pack_start(self.ProjectPriorityEntry) hbox.pack_start(vbox) self.projectproperties.pack_start(hbox, False, padding=5) # Code to visualise the properties of a task. self.TaskProperties = gtk.VBox() self.TaskProperties.set_size_request(200, 155) header = gtk.HBox() label = gtk.Label() label.set_alignment(0, 0) label.set_markup("<big><b>Task</b></big>") header.pack_start(label) image = gtk.Image() image.set_from_file("data/add.png") btnaddtask = gtk.Button() self.tooltips.set_tip(btnaddtask, "Add Task") btnaddtask.add(image) btnaddtask.connect('clicked', self.add_task) image = gtk.Image() image.set_from_file("data/remove.png") btnremtask = gtk.Button() self.tooltips.set_tip(btnremtask, "Remove Task") btnremtask.add(image) btnremtask.connect('clicked', self.remove_task) image = gtk.Image() image.set_from_file("data/edit.png") btnedttask = gtk.Button() self.tooltips.set_tip(btnedttask, "Edit Task") btnedttask.add(image) btnedttask.connect('clicked', self.edit_task) header.pack_start(btnaddtask, False) header.pack_start(btnremtask, False) header.pack_start(btnedttask, False) self.TaskProperties.pack_start(header, False) label = gtk.Label("Name") label.set_alignment(0, 0) self.TaskProperties.pack_start(label, False) self.TaskNameEntry = gtk.Entry(max=50) self.TaskNameEntry.set_sensitive(False) self.TaskNameEntry.modify_text(gtk.STATE_INSENSITIVE, gtk.gdk.color_parse("#000000")) self.TaskProperties.pack_start(self.TaskNameEntry, False) hbox = gtk.HBox() vbox = gtk.VBox() label = gtk.Label("Status") label.set_alignment(0, 0) vbox.pack_start(label) self.TaskStatusCombo = gtk.combo_box_new_text() for status in statuslist: self.TaskStatusCombo.append_text(status) self.TaskStatusCombo.connect('changed', self.on_status_change_task) vbox.pack_start(self.TaskStatusCombo) self.TaskDueDateEntry = gtk.Entry(max=10) self.TaskDueDateEntry.set_sensitive(False) self.TaskDueDateEntry.modify_text(gtk.STATE_INSENSITIVE, gtk.gdk.color_parse("#000000")) hbox.pack_start(vbox, False) vbox = gtk.VBox() label = gtk.Label("Due Date") label.set_alignment(0, 0) vbox.pack_start(label) vbox.pack_start(self.TaskDueDateEntry) hbox.pack_start(vbox) self.TaskProperties.pack_start(hbox, False, padding=5) hbox = gtk.HBox() btntoggleparent = gtk.Button('Toggle Parent') btntoggleparent.connect('clicked', self.toggle_parent_selection) hbox.pack_start(btntoggleparent) btntogglechild = gtk.Button('Toggle Child') btntogglechild.connect('clicked', self.toggle_child_selection) hbox.pack_start(btntogglechild) self.TaskProperties.pack_start(hbox) # Code to visualise all actions belonging to a task. self.actions = gtk.VBox() self.actions.set_size_request(400, 155) header = gtk.HBox() label = gtk.Label() label.set_alignment(0, 0) label.set_markup("<big><b>Actions</b></big>") header.pack_start(label) image = gtk.Image() image.set_from_file("data/add.png") btnaddact = gtk.Button() self.tooltips.set_tip(btnaddact, "Add Action") btnaddact.add(image) btnaddact.connect('clicked', self.add_action) image = gtk.Image() image.set_from_file("data/remove.png") btnremact = gtk.Button() self.tooltips.set_tip(btnremact, "Remove Action") btnremact.add(image) btnremact.connect('clicked', self.remove_action) image = gtk.Image() image.set_from_file("data/edit.png") btnedtact = gtk.Button() self.tooltips.set_tip(btnedtact, "Edit Action") btnedtact.add(image) btnedtact.connect('clicked', self.edit_action) btncnvact = gtk.Button('To Task') self.tooltips.set_tip(btncnvact, "Convert Action to Task") btncnvact.connect('clicked', self.convert_action_to_task) header.pack_start(btnaddact, False) header.pack_start(btnremact, False) header.pack_start(btnedtact, False) header.pack_start(btncnvact, False) self.actions.pack_start(header, False) scroller = gtk.ScrolledWindow() scroller.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) scroller.add(self.actiontree) self.actions.pack_start(scroller) #set xdot self.widget = xdot.DotWidget() # Create a UIManager instance uimanager = self.uimanager = gtk.UIManager() # Add the accelerator group to the toplevel windowilttei accelgroup = uimanager.get_accel_group() window.add_accel_group(accelgroup) # Create an ActionGroup actiongroup = gtk.ActionGroup('actions') self.actiongroup = actiongroup # Create actions actiongroup.add_actions(( ('ZoomIn', gtk.STOCK_ZOOM_IN, None, None, None, self.widget.on_zoom_in), ('ZoomOut', gtk.STOCK_ZOOM_OUT, None, None, None, self.widget.on_zoom_out), ('ZoomFit', gtk.STOCK_ZOOM_FIT, None, None, None, self.widget.on_zoom_fit), ('Zoom100', gtk.STOCK_ZOOM_100, None, None, None, self.widget.on_zoom_100), )) # Add the actiongroup to the uimanager uimanager.insert_action_group(actiongroup, 0) # Add a UI description uimanager.add_ui_from_string(self.ui) # Set up layout hbox = gtk.HBox() window.add(hbox) #set Tag/Project box self.navbox = gtk.VBox() self.navbox.set_size_request(175, 300) header = gtk.HBox() label = gtk.Label() label.set_alignment(0, 0) label.set_markup("<big><b>Categories</b></big>") header.pack_start(label) self.navbox.pack_start(header, False) scroller = gtk.ScrolledWindow() scroller.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) scroller.add(self.tagtree) self.navbox.pack_start(scroller) hseparator = gtk.HSeparator() self.navbox.pack_start(hseparator, False) header = gtk.HBox() label = gtk.Label() label.set_alignment(0, 0) label.set_markup("<big><b>Projects</b></big>") header.pack_start(label) image = gtk.Image() image.set_from_file("data/add.png") btnaddpro = gtk.Button() self.tooltips.set_tip(btnaddpro, "Add Project") btnaddpro.add(image) btnaddpro.connect('clicked', self.add_project) image = gtk.Image() image.set_from_file("data/remove.png") btnrempro = gtk.Button() self.tooltips.set_tip(btnrempro, "Remove Project") btnrempro.add(image) btnrempro.connect('clicked', self.remove_project) image = gtk.Image() image.set_from_file("data/edit.png") btnedtpro = gtk.Button() self.tooltips.set_tip(btnedtpro, "Edit Project") btnedtpro.add(image) btnedtpro.connect('clicked', self.edit_project) header.pack_start(btnaddpro, False) header.pack_start(btnrempro, False) header.pack_start(btnedtpro, False) self.navbox.pack_start(header, False) scroller = gtk.ScrolledWindow() scroller.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) scroller.add(self.projecttree) self.navbox.pack_start(scroller) hbox.pack_start(self.navbox, False) vseparator = gtk.VSeparator() hbox.pack_start(vseparator, False) vbox = gtk.VBox() hbox.pack_start(vbox) # Setup property box hbox = gtk.HBox() hbox.pack_start(self.projectproperties, False) vseparator = gtk.VSeparator() hbox.pack_start(vseparator, False, padding=3) hbox.pack_start(self.TaskProperties, False) vseparator = gtk.VSeparator() hbox.pack_start(vseparator, False, padding=3) hbox.pack_start(self.actions, False) # Create a Toolbar toolbar = uimanager.get_widget('/ToolBar') vbox.pack_start(toolbar, False) vbox.pack_start(self.widget) hseparator = gtk.HSeparator() vbox.pack_start(hseparator, False) vbox.pack_start(hbox, False) self.set_focus(self.widget) self.refresh_tags() self.refresh_projects() self.widget.connect('clicked', self.on_url_clicked) self.show_all()