Changeset 3283
- Timestamp:
- 08/01/08 18:36:34 (5 years ago)
- Location:
- branch/PacketManipulator
- Files:
-
- 11 modified
-
MainWindow.py (modified) (7 diffs)
-
Tabs/ConsoleTab.py (modified) (1 diff)
-
Tabs/HackTab.py (modified) (1 diff)
-
Tabs/MainTab.py (modified) (1 diff)
-
Tabs/PropertyTab.py (modified) (2 diffs)
-
Tabs/ProtocolSelectorTab.py (modified) (1 diff)
-
Tabs/VteTab.py (modified) (1 diff)
-
fallbackpaned.py (modified) (3 diffs)
-
paned.py (modified) (1 diff)
-
views.py (modified) (1 diff)
-
widgets/Expander.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branch/PacketManipulator/MainWindow.py
r3260 r3283 22 22 23 23 try: 24 from paned import *24 from panedz import * 25 25 except ImportError: 26 26 print "moo not installed. Using fallback UmitPaned .." … … 47 47 self.set_size_request(600, 400) 48 48 49 self.registered_tabs = []49 self.registered_tabs = {} 50 50 51 51 self.__create_widgets() … … 71 71 ('Preferences', gtk.STOCK_PREFERENCES, _('_Preferences'), '<Control>p', None, self.__on_preferences), 72 72 73 ('Views', None, _('Views'), None), 74 73 75 ('Help', None, _('Help'), None), 74 76 ('About', gtk.STOCK_ABOUT, _('About'), None, None, self.__on_about), … … 89 91 <menuitem action='Preferences'/> 90 92 </menu> 93 <menu action='Views'/> 91 94 <menu action='Help'> 92 95 <menuitem action='About'/> … … 117 120 # Central widgets 118 121 self.main_paned = UmitPaned() 119 self.main_tab = MainTab()120 121 # Tabs122 self.vte_tab = VteTab()123 self.hack_tab = HackTab()124 self.protocols_tab = ProtocolSelectorTab()125 self.property_tab = PropertyTab()126 self.console_tab = ConsoleTab()127 128 # This should be moved to UmitPaned btw...129 self.registered_tabs.append(self.main_tab)130 self.registered_tabs.append(self.vte_tab)131 self.registered_tabs.append(self.hack_tab)132 self.registered_tabs.append(self.protocols_tab)133 self.registered_tabs.append(self.property_tab)134 self.registered_tabs.append(self.console_tab)135 122 136 123 self.vbox = gtk.VBox(False, 2) 124 125 def get_tab(self, name): 126 return self.registered_tabs[name] 127 128 def register_tab(self, tab, show=True): 129 item = self.ui_manager.get_widget('/menubar/Views') 130 menu = item.get_submenu() 131 132 item.show() 133 134 if not menu: 135 menu = gtk.Menu() 136 item.set_submenu(menu) 137 138 if tab.label_text in self.registered_tabs: 139 raise Exception("Tab already present") 140 141 # Ok we should add a CheckMenuItem to this fucking menu 142 self.registered_tabs[tab.label_text] = tab 143 144 print "Tab %s registered" % tab.label_text 145 146 if not tab.tab_position: 147 # This is the central widget so it should be added 148 # with no MenuItem 149 self.main_paned.add_view(tab) 150 return 151 152 new_item = gtk.CheckMenuItem(tab.label_text) 153 new_item.connect('toggled', self.__on_toggle_tab_menu, tab) 154 155 if show: 156 new_item.set_active(True) 157 158 menu.append(new_item) 159 menu.show_all() 137 160 138 161 def __pack_widgets(self): … … 147 170 self.vbox.pack_start(self.main_paned) 148 171 149 self.main_paned.add_view(PANE_CENTER, self.main_tab, False) 150 151 self.main_paned.add_view(PANE_RIGHT, self.protocols_tab, False) 152 self.main_paned.add_view(PANE_RIGHT, self.property_tab, False) 153 154 self.main_paned.add_view(PANE_BOTTOM, self.vte_tab, False) 155 self.main_paned.add_view(PANE_BOTTOM, self.console_tab, False) 156 self.main_paned.add_view(PANE_BOTTOM, self.hack_tab, False) 172 # Tabs 173 self.register_tab(MainTab()) 174 self.register_tab(VteTab()) 175 self.register_tab(HackTab()) 176 self.register_tab(ProtocolSelectorTab()) 177 self.register_tab(PropertyTab()) 178 self.register_tab(ConsoleTab()) 157 179 158 180 self.add(self.vbox) … … 165 187 "Used to connect signals between tabs" 166 188 167 for tab in self.registered_tabs:189 for key, tab in self.registered_tabs.items(): 168 190 tab.connect_tab_signals() 169 191 192 def __on_toggle_tab_menu(self, menuitem, tab): 193 if menuitem.get_active(): 194 self.main_paned.add_view(tab) 195 else: 196 self.main_paned.remove_view(tab) 197 170 198 def __on_save_template(self, action): 171 session = self. main_tab.get_current_session()199 session = self.get_tab("MainTab").get_current_session() 172 200 173 201 if not session: -
branch/PacketManipulator/Tabs/ConsoleTab.py
r3188 r3283 26 26 class ConsoleTab(UmitView): 27 27 label_text = "Packet Shell" 28 tab_position = gtk.POS_BOTTOM 28 29 29 30 def __create_widgets(self): -
branch/PacketManipulator/Tabs/HackTab.py
r3262 r3283 247 247 class HackTab(UmitView): 248 248 icon_name = gtk.STOCK_CONVERT 249 tab_position = gtk.POS_BOTTOM 249 250 label_text = "Hack Tab" 250 251 -
branch/PacketManipulator/Tabs/MainTab.py
r3261 r3283 134 134 135 135 class MainTab(UmitView): 136 tab_position = None 137 label_text = "MainTab" 138 136 139 def __create_widgets(self): 137 140 "Create the widgets" -
branch/PacketManipulator/Tabs/PropertyTab.py
r3230 r3283 27 27 label_text = "Properties" 28 28 icon_name = gtk.STOCK_INDEX 29 tab_position = gtk.POS_RIGHT 29 30 30 31 def create_ui(self): … … 42 43 43 44 from App import PMApp 44 tab = PMApp().main_window.main_tab 45 tab = PMApp().main_window.get_tab("MainTab") 46 print tab 45 47 tab.session_notebook.connect('switch-page', self.__on_repopulate) 46 48 -
branch/PacketManipulator/Tabs/ProtocolSelectorTab.py
r3184 r3283 163 163 icon_name = gtk.STOCK_CONNECT 164 164 label_text = "Protocols" 165 tab_position = gtk.POS_RIGHT 165 166 166 167 def create_ui(self): -
branch/PacketManipulator/Tabs/VteTab.py
r3261 r3283 73 73 icon_name = gtk.STOCK_OK 74 74 label_text = "Terminal" 75 tab_position = gtk.POS_BOTTOM 75 76 76 77 def create_ui(self): -
branch/PacketManipulator/fallbackpaned.py
r3209 r3283 50 50 self.show_all() 51 51 52 def add_view(self, pos,tab, unused=False):52 def add_view(self, tab, unused=False): 53 53 widget = tab.get_toplevel() 54 54 55 if pos == PANE_CENTER:55 if not tab.tab_position: 56 56 if not self.hpaned.get_child2(): 57 57 self.hpaned.pack2(widget, True, False) … … 62 62 image = gtk.image_new_from_stock(tab.icon_name, gtk.ICON_SIZE_MENU) 63 63 64 pos = tab.tab_position 65 64 66 label.pack_start(image, False, False) 65 67 label.pack_start(gtk.Label(tab.label_text)) … … 68 70 print "Adding widget", widget, "to", pos 69 71 70 if pos == PANE_RIGHT or pos == PANE_LEFT:72 if pos == gtk.POS_RIGHT or pos == gtk.POS_LEFT: 71 73 self.hnotebook.append_page(widget, label) 72 elif pos == PANE_TOP or pos == PANE_BOTTOM:74 elif pos == gtk.POS_TOP or pos == gtk.POS_BOTTOM: 73 75 self.vnotebook.append_page(widget, label) 76 77 def remove_view(self, tab): 78 pos = tab.tab_position 79 80 if pos == gtk.POS_RIGHT or pos == gtk.POS_LEFT: 81 nb = self.hnotebook 82 elif pos == gtk.POS_TOP or pos == gtk.POS_BOTTOM: 83 nb = self.vnotebook 84 85 num = nb.page_num(tab.get_toplevel()) 86 if num > -1: 87 nb.remove_page(num) 88 else: 89 raise Exception("Cannot found the widget") 74 90 75 91 if __name__ == "__main__": -
branch/PacketManipulator/paned.py
r3179 r3283 32 32 yield self.get_paned(pos) 33 33 34 def add_view(self, name,view, removable=True):35 if n ame == PANE_CENTER:34 def add_view(self, view, removable=True): 35 if not view.tab_position: 36 36 self.add_child(view.get_toplevel()) 37 37 else: 38 POS = POS_MAP[name]38 POS = view.tab_position 39 39 lab = PaneLabel(view.icon_name, None, view.label_text) 40 40 pane = self.insert_pane(view.get_toplevel(), lab, POS, POS) -
branch/PacketManipulator/views.py
r3188 r3283 67 67 68 68 class UmitViewMixin(object): 69 70 69 icon_name = gtk.STOCK_INFO 71 70 label_text = 'Umit View' 71 tab_position = gtk.POS_RIGHT 72 72 73 73 def __init__(self, toplevel=None): -
branch/PacketManipulator/widgets/Expander.py
r3282 r3283 444 444 self.pack_start(self._layout) 445 445 446 self.set_size_request(40, 100) 446 447 self.show_all() 448 449 def do_size_allocate(self, allocation): 450 # We should force a size allocate to avoid bugs 451 # when the widget is getting too small! 452 gtk.VBox.do_size_allocate(self, allocation) 453 self._layout.size_allocate(self._layout.allocation) 447 454 448 455 def do_realize(self): … … 466 473 467 474 def add(self, widget): 468 self.add_widget(widget, True)475 self.add_widget(widget, False) #FIXME 469 476 470 477 def get_label(self):
