# HG changeset patch # User souliane # Date 1424457491 -3600 # Node ID ac5881d683d3027cd455c456ea0bc231e04f93bc # Parent 11a0a32144a59189b2418c310d15a4ef585f60c1 browser_side: move SatWebFrontend.addTab to MainTabPanel.addWidgetsTab and rename MainTabPanel.add to MainTabPanel.addTab diff -r 11a0a32144a5 -r ac5881d683d3 src/browser/libervia_main.py --- a/src/browser/libervia_main.py Fri Feb 20 19:50:00 2015 +0100 +++ b/src/browser/libervia_main.py Fri Feb 20 19:38:11 2015 +0100 @@ -80,7 +80,6 @@ self.uni_box = None # FIXME: to be removed self.status_panel = HTML('
') self.panel = panels.MainPanel(self) - self.discuss_panel = self.panel.discuss_panel self.tab_panel = self.panel.tab_panel self.tab_panel.addTabListener(self) self._register_box = None @@ -234,25 +233,6 @@ lib_wid.refresh() self.resize() - def addTab(self, label, wid=None, select=False): - """Create a new tab and eventually add a widget to it. - - @param label (unicode): label of the tab - @param wid (LiberviaWidget): optional widget to add - @param select (bool): True to select the added tab - @return: WidgetsPanel - """ - widgets_panel = base_widget.WidgetsPanel(self) - self.tab_panel.add(widgets_panel, label) - tab_index = self.tab_panel.getWidgetCount() - 1 - if wid is not None: - self.addWidget(wid, tab_index) - if select: - self.tab_panel.selectTab(tab_index) - if wid is not None: - self.setSelected(wid) - return widgets_panel - def addWidget(self, wid, tab_index=None): """ Add a widget at the bottom of the current or specified tab @@ -606,7 +586,8 @@ kwargs['on_new_widget'] = None kwargs['on_existing_widget'] = C.WIDGET_RECREATE wid = self.widgets.getOrCreateWidget(class_, target, *args, **kwargs) - self.addTab(new_tab, wid) + self.tab_panel.addWidgetsTab(new_tab) + self.addWidget(wid) return wid kwargs['on_existing_widget'] = C.WIDGET_RAISE diff -r 11a0a32144a5 -r ac5881d683d3 src/browser/sat_browser/base_widget.py --- a/src/browser/sat_browser/base_widget.py Fri Feb 20 19:50:00 2015 +0100 +++ b/src/browser/sat_browser/base_widget.py Fri Feb 20 19:38:11 2015 +0100 @@ -587,10 +587,17 @@ class WidgetsPanel(ScrollPanelWrapper): def __init__(self, host, locked=False): + """ + + @param host (SatWebFrontend): host instance + @param locked (bool): If True, the tab containing self will not be + removed when there are no more widget inside self. If False, the + tab will be removed with self's last widget. + """ ScrollPanelWrapper.__init__(self) self.setSize('100%', '100%') self.host = host - self.locked = locked # if True: tab will not be removed when there are no more widgets inside + self.locked = locked self.selected = None self.flextable = FlexTable() self.flextable.setSize('100%', '100%') @@ -831,7 +838,7 @@ label = default_label except: # this happens when the user prevents the page to open the prompt dialog label = default_label - self.host.addTab(label, select=True) + self.addWidgetsTab(label, select=True) def getCurrentPanel(self): """ Get the panel of the currently selected tab @@ -853,9 +860,30 @@ self.setWidth("%s%s" % (ideal_width, "px")) self.setHeight("%s%s" % (ideal_height, "px")) - def add(self, widget, text=''): - tab = DropTab(self, text) - TabPanel.add(self, widget, tab, False) + def addTab(self, widget, label, select=False): + """Create a new tab for the given widget. + + @param widget (Widget): widget to associate to the tab + @param label (unicode): label of the tab + @param select (bool): True to select the added tab + """ + TabPanel.add(self, widget, DropTab(self, label), False) + if select: + self.selectTab(self.getWidgetCount() - 1) + + def addWidgetsTab(self, label, select=False, locked=False): + """Create a new tab for containing LiberviaWidgets. + + @param label (unicode): label of the tab + @param select (bool): True to select the added tab + @param locked (bool): If True, the tab will not be removed when there + are no more widget inside. If False, the tab will be removed with + the last widget. + @return: WidgetsPanel + """ + widgets_panel = WidgetsPanel(self, locked=locked) + self.addTab(widgets_panel, label) + return widgets_panel def onWidgetPanelRemove(self, panel): """ Called when a child WidgetsPanel is empty and need to be removed """ diff -r 11a0a32144a5 -r ac5881d683d3 src/browser/sat_browser/panels.py --- a/src/browser/sat_browser/panels.py Fri Feb 20 19:50:00 2015 +0100 +++ b/src/browser/sat_browser/panels.py Fri Feb 20 19:38:11 2015 +0100 @@ -21,6 +21,7 @@ from sat.core.log import getLogger log = getLogger(__name__) +from sat.core.i18n import _ from sat_frontends.tools.strings import addURLToText from pyjamas.ui.AbsolutePanel import AbsolutePanel @@ -509,9 +510,7 @@ # tabs self.tab_panel = base_widget.MainTabPanel(host) - self.discuss_panel = base_widget.WidgetsPanel(self.host, locked=True) - self.tab_panel.add(self.discuss_panel, "Discussions") - self.tab_panel.selectTab(0) + self.tab_panel.addWidgetsTab(_(u"Discussions"), select=True, locked=True) self.header = AbsolutePanel() self.header.add(self.menu)