コード例 #1
0
ファイル: TabManager.py プロジェクト: Jonas18175/ProjectPlan
class Tab(Gtk.Notebook, TabWidgets):
    def __init__(self, ClassRegister):
        Gtk.Notebook.__init__(self)
        TabWidgets.__init__(self)

        self.Tabs = Enum()
        self.TempTabs = Enum()
        self.NamedTabs = Enum()

        self.Scrollabe = False
        self.ClassRegister = ClassRegister

        self.connect("switch-page", self.tabChanged)

    def addTab(self, TabWidget, TabLabel, Pos=None):
        CurrentPage = self.get_n_pages()
        if Pos:
            CurrentPage = Pos

        self.Tabs[CurrentPage] = Enum(TabWidget=TabWidget, TabLabel=TabLabel)
        TabLabel.connect("close-clicked", self.removeTabByWidget, TabWidget)

        if hasattr(TabLabel, "get_text"):
            self.NamedTabs[TabLabel.get_text()] = CurrentPage

        self.insert_page(TabWidget, TabLabel, CurrentPage)
        return True

    def removeTabByWidget(self, TabLabel=None, TabWidget=None):
        self.remove_page(self.page_num(TabWidget))

    def hasTab(self, name):
        return self.NamedTabs.has_key(name)

    def tabChanged(self, notebook, current_page, index):
        if self.ClassRegister.CreatingTabsIsFinish:
            if hasattr(self.Tabs[index].TabWidget, "preload"):
                if not self.Tabs[index].TabWidget.IsLoad:
                    self.Tabs[index].TabWidget.preload()
        if not index:
            return
        try:
            title = self.Tabs[index].TabWidget.title
        except AttributeError:
            title = ""
        if title:
            self.ClassRegister.Window.set_title("{0} - {1}".format(self.ClassRegister.Windowname, title))

    def setScrollabe(self, state=None):
        if state:
            self.set_scrollable(state)
        else:
            self.set_scrollable(not self.Scrollabe)
            self.Scrollabe = not self.Scrollabe