52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
|
# Based on iwidgets2.2.0/promptdialog.itk code.
|
||
|
|
||
|
import Pmw
|
||
|
|
||
|
# A Dialog with an entryfield
|
||
|
|
||
|
class PromptDialog(Pmw.Dialog):
|
||
|
def __init__(self, parent = None, **kw):
|
||
|
# Define the megawidget options.
|
||
|
INITOPT = Pmw.INITOPT
|
||
|
optiondefs = (
|
||
|
('borderx', 20, INITOPT),
|
||
|
('bordery', 20, INITOPT),
|
||
|
)
|
||
|
self.defineoptions(kw, optiondefs)
|
||
|
|
||
|
# Initialise the base class (after defining the options).
|
||
|
Pmw.Dialog.__init__(self, parent)
|
||
|
|
||
|
# Create the components.
|
||
|
interior = self.interior()
|
||
|
aliases = (
|
||
|
('entry', 'entryfield_entry'),
|
||
|
('label', 'entryfield_label'),
|
||
|
)
|
||
|
self._promptDialogEntry = self.createcomponent('entryfield',
|
||
|
aliases, None,
|
||
|
Pmw.EntryField, (interior,))
|
||
|
self._promptDialogEntry.pack(fill='x', expand=1,
|
||
|
padx = self['borderx'], pady = self['bordery'])
|
||
|
|
||
|
if not kw.has_key('activatecommand'):
|
||
|
# Whenever this dialog is activated, set the focus to the
|
||
|
# EntryField's entry widget.
|
||
|
tkentry = self.component('entry')
|
||
|
self.configure(activatecommand = tkentry.focus_set)
|
||
|
|
||
|
# Check keywords and initialise options.
|
||
|
self.initialiseoptions()
|
||
|
|
||
|
# Supply aliases to some of the entry component methods.
|
||
|
def insertentry(self, index, text):
|
||
|
self._promptDialogEntry.insert(index, text)
|
||
|
|
||
|
def deleteentry(self, first, last=None):
|
||
|
self._promptDialogEntry.delete(first, last)
|
||
|
|
||
|
def indexentry(self, index):
|
||
|
return self._promptDialogEntry.index(index)
|
||
|
|
||
|
Pmw.forwardmethods(PromptDialog, Pmw.EntryField, '_promptDialogEntry')
|