BrotherJack
BrotherJack

Reputation: 329

How Do You Change the Title of a Page in wx.aui.AuiNotebook?

So I'm working on a text editor to better learn wxPython (and to make a text editor that I really like :P). I have been having trouble finding much info on the wx.aui.AuiNotebook class. One thing I would like to know is how to interact with its pages. For example, I would really like to know how to change the title of a page (so that I can update the page title when a user saves or to mark it when there is unsaved changes). Any assistance on this matter would be most appreciated!

Upvotes: 1

Views: 665

Answers (2)

BrotherJack
BrotherJack

Reputation: 329

Apparently, in wxPython version 2.8 does not include wx.aui.AuiNotebook.GetCurrentPage(). What I apparently didn't realize is that a "page" in the wx.aui.AuiNotebook is equivalent to the panel that is being added to it. Thus the following code will work,

    self.panelBox = []
    newPanel = wx.Panel(self, wx.ID_ANY)

    #YADA YADA STUFF!        

    self.nb.AddPage(newPanel, "Untitled Document "+str(self.untitledDocCount))
    currPageIndex = self.nb.GetPageIndex(newPanel)
    currLabel = self.nb.GetPageText(currPageIndex)
    if not currLabel.endswith(' (*)'):
        self.nb.SetPageText(currPageIndex, currLabel+' (*)')
    self.panelBox.append(newPanel)

It's up to the programmer to ensure that the pages (panels) are accessible. I do this by storing the panel references in a "panel box" and then switching between them accordingly in conditions such as a "change tab" event. I don't know if this is the best way to do this, but it appears to work so far.

Upvotes: 1

Frank Niessink
Frank Niessink

Reputation: 1611

The method is called SetPageText, so you would do something like:

    current_page = notebook.GetCurrentPage()
    current_page_index = notebook.GetPageIndex(current_page)
    current_label = notebook.GetPageText(current_page_index)
    if not current_label.endswith(' (*)':
        notebook.SetPageText(current_page_index, current_label + ' (*)')

Upvotes: 2

Related Questions