###############################################################################
# Name: ed_tab.py #
# Purpose: Notebook tab inteface class #
# Author: Cody Precord <cprecord@editra.org> #
# Copyright: (c) 2008 Cody Precord <staff@editra.org> #
# License: wxWindows License #
###############################################################################
"""
Base class for all views that want to be able to be viewable in the main
notebook.
@summary: Main notebook tab base class
"""
__author__ = "Cody Precord <cprecord@editra.org>"
__svnid__ = "$Id: ed_tab.py 63569 2010-02-28 07:50:05Z CJP $"
__revision__ = "$Revision: 63569 $"
#--------------------------------------------------------------------------#
# Imports
#--------------------------------------------------------------------------#
class EdTabBase(object):
"""Base class for all tab views to derive from, this class just defines
the abstract interface and some common basic methods. Initialize this
base class after initializing the wx control instance of the subclass.
"""
def __init__(self):
"""Initialize the tab base class"""
object.__init__(self)
# Attributes
self._lbl = u''
self._idx = -1
@property
def _nb(self):
"""Get the notebook that owns this tab"""
return self.GetParent()
#---- Methods to override in subclasses ----#
def DoDeactivateTab(self):
"""Called when the tab is moved from the foreground to background"""
pass
def DoOnIdle(self):
"""Called when the notebook is idle and this instance is the active
tab.
"""
pass
def DoTabClosing(self):
"""Called when the tab has been selected to be closed in the notebook"""
pass
def DoTabOpen(self, ):
"""Called to open a new tab"""
pass
def DoTabSelected(self):
"""Called when the page is selected in the notebook"""
pass
def GetName(self):
"""Get the unique name for this tab control.
@return: (unicode) string
"""
raise NotImplementedError, "GetName Must be implemented!!"
def GetTabMenu(self):
"""Get the context menu to show on the tab
@return: wx.Menu or None
"""
return None
def GetTitleString(self):
"""Get the title string to display in the MainWindows title bar
@return: (unicode) string
"""
return u''
def CanCloseTab(self):
"""Called when checking if tab can be closed or not
@return: bool
"""
return True
def OnTabMenu(self, evt):
"""Handle events from this tabs menu
@param evt: menu event
"""
evt.Skip()
#---- Common Base Methods ----#
def GetTabIndex(self):
"""Return the index of the tab in the notebook
@return: int
"""
return self._idx
def GetTabLabel(self):
"""Get the tabs label
@return: string
"""
return self._lbl
def SetTabIndex(self, idx):
"""Set the tab index
@param idx: int
"""
self._idx = idx
def SetTabLabel(self, lbl):
"""Set the tabs label
@param lbl: string
"""
self._lbl = lbl
def SetTabTitle(self, title):
"""Set the notebooks title text for this tab"""
obj_id = self.GetId()
# Find which page we are and update the text
for page in range(self._nb.GetPageCount()):
ctrl = self._nb.GetPage(page)
if ctrl.GetId() == obj_id:
self._nb.SetPageText(page, title)
break
else:
# TODO: notify of error?
pass
#--------------------------------------------------------------------------#
|