On Tue, 2003-09-30 at 17:59, F. GEIGER wrote:
Thank you Martin,
but I've still troubles, because the tab has the new name now, but the page
is in PMW still known with the old name.
I see this because I've registered for the raisecommand event:
def _onSelect_(self , pageName):
Proxy.DataProxy ().containerSel ect(pageName)
return
And here pageName is the old name despite the fact that the new name is
displayed on the tab.
Kind regards
Franz GEIGER
"Martin Franklin" <mf********@gat wick.westerngec o.slb.com> schrieb im
Newsbeitrag news:ma******** *************** **********@pyth on.org... On Tue, 2003-09-30 at 14:49, F. GEIGER wrote: Hi again,
I'd like to rename a page of a notebook. Deleting the page and adding a new one is not really an option, because the page is filled with other controls already. So I looked into Pmw.Notebook. There are quite a few lists and
dicts which were to be changed and I wasn't successful in the first try.
However, if nobody has ever done this, I'd have to rebuild the whole page after deleting/adding. I really hope there's an other way to go.
Kind regards
Franz GEIGER
You need to get hold of the "tab" widget and change it's text.
nb = Pmw.NoteBook(ro ot)
nb.pack()
nb.add("Page1")
nb.add("Page2")
nb.add("Page3")
tab = nb.tab("Page1")
tab["text"]= "Martin1"
I've been trying to 'get round' this..... without much success
internally the NoteBook keeps track of it's pages using both a list of
names and a dictionary of name : page attributes
so I thought you could mess around with these...
notebook._pageA ttrs[newname] = notebook._pageA ttrs[oldname]
notebook.tab(ol dname)["text"]=newname
notebook._pageN ames[index]=newname
del notebook._pageA ttrs[oldname]
However when you try to raise your newly renamed page it fails :-(
because the callback that lifts the page to the top has the page name
stuck in it like so:
if self._withTabs:
# Create the button for the tab.
def raiseThisPage(s elf = self, pageName = pageName):
self.selectpage (pageName)
tabOptions['command'] = raiseThisPage
Where pageName is the name given at the time the page was created
(the above code is from the insert method in PmwNotebook)
So you would have to do quite a lot of messing around....
replacing the above callback with your own at least... This is where I
stopped trying...
So in order to keep it simple I would (in your own code) keep a
dictionary of old vs new page names or something simple like that.
So you above method would look something like this:-
def _onSelect_(self , pageName):
realPageName = self.myPageDict[pageName]
Proxy.DataProxy ().containerSel ect(realPageNam e)
return
Or failing that convert the pageName into a page index (an integer)
using the notebook.index( pageName) method.
HTH
Martin
P.S Most people on this list do not top post. (I'm not saying this is
good _or_ bad ;-)
--
Martin Franklin <mf********@gat wick.westerngec o.slb.com>