/[papo]/gnue/forms/src/uidrivers/curses/UIdriver.py
ViewVC logotype

Diff of /gnue/forms/src/uidrivers/curses/UIdriver.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by styxman, Thu Nov 14 22:16:54 2002 UTC revision 1.1.2.1 by anthonyl, Tue Mar 4 22:18:23 2003 UTC
# Line 16  Line 16 
16  # write to the Free Software Foundation, Inc., 59 Temple Place  # write to the Free Software Foundation, Inc., 59 Temple Place
17  # - Suite 330, Boston, MA 02111-1307, USA.  # - Suite 330, Boston, MA 02111-1307, USA.
18  #  #
19  # Copyright 2000-2002 Free Software Foundation  # Copyright 2000-2003 Free Software Foundation
20  #  #
21  # FILE:  # FILE:
22  # UIdriver.py  # UIdriver.py
# Line 74  def GetSIO(): Line 74  def GetSIO():
74  #  #
75  class GFUserInterface(GFUserInterfaceBase):  class GFUserInterface(GFUserInterfaceBase):
76    def __init__(self, eventController, disableSplash = None):    def __init__(self, eventController, disableSplash = None):
77        GFUserInterfaceBase.__init__(self,eventController)
78    
79      self._WIDGETS = {'GFLabel'     : UILabel,      self._WIDGETS = {'GFLabel'     : UILabel,
80                       'GFBox'       : UIBox,                       'GFBox'       : UIBox,
81                       'GFPage'      : UIPage,                       'GFPage'      : UIPage,
# Line 87  class GFUserInterface(GFUserInterfaceBas Line 89  class GFUserInterface(GFUserInterfaceBas
89                       'messageBox'  :UIMessageBox,                       'messageBox'  :UIMessageBox,
90                       }                       }
91    
     self._aboutDialog = UIAbout  
     self._messageDialog = UIMessageBox  
   
92      self._disableSplash = disableSplash      self._disableSplash = disableSplash
93      GFUserInterfaceBase.__init__(self,eventController)  
94        self._objectMapping = {}
95    
96      global _EVENTPROCESSOR      global _EVENTPROCESSOR
97      _EVENTPROCESSOR = self.dispatchEvent      _EVENTPROCESSOR = self.dispatchEvent
98    
99      self.forms = {}      self.init(disableSplash)
   
     self.init()  
100    
101    
102    #    #
103    # init    # init
104    #    #
105    #    #
106    def init(self):    def init(self,disableSplash):
107      #      #
108      # Create the main window      # Create the main window
109      #      #
# Line 118  class GFUserInterface(GFUserInterfaceBas Line 116  class GFUserInterface(GFUserInterfaceBas
116      #      #
117      # SplashScreen      # SplashScreen
118      #      #
119      if not self._disableSplash:      if disableSplash:
120        text = 'GNU Enterprise Forms\n' \        text = 'GNU Enterprise Forms\n' \
121             + 'Version %s\n' % VERSION  \             + 'Version %s\n' % VERSION  \
122             + '(c)2000-2002 Free Software Foundation\n' \             + '(c)2000-2002 Free Software Foundation\n' \
# Line 239  class GFUserInterface(GFUserInterfaceBas Line 237  class GFUserInterface(GFUserInterfaceBas
237      return 1      return 1
238    
239    def activateForm(self, form):    def activateForm(self, form):
240      width = int(self._form.width)      width = self._form._layout.Char__width
241      height = int(self._form.height)      height = self._form._layout.Char__height
242    
243  ##     formSize = wxSize(width*int(self.widgetWidth),  ##     formSize = wxSize(width*int(self.widgetWidth),
244  ##                       int(height+self.menu_sb_space)*int(self.widgetHeight))  ##                       int(height+self.menu_sb_space)*int(self.widgetHeight))
# Line 252  class GFUserInterface(GFUserInterfaceBas Line 250  class GFUserInterface(GFUserInterfaceBas
250  ##     self.mainWindow.panel.SetSize(formSize)  ##     self.mainWindow.panel.SetSize(formSize)
251  ##     self._pageList[0].Show(1)  ##     self._pageList[0].Show(1)
252    
253  ##     # Only one page at a time can be visible      # Only one page at a time can be visible
254  ##     self.visiblePage = self._pageList[0]      self.visiblePage = self._pageList[0]
255    
256  ##     if _NOTEBOOK: # Adjust sizes  ##     if _NOTEBOOK: # Adjust sizes
257  ##       _NOTEBOOK.SetSize(formSize)  ##       _NOTEBOOK.SetSize(formSize)
# Line 265  class GFUserInterface(GFUserInterfaceBas Line 263  class GFUserInterface(GFUserInterfaceBas
263    
264  ##     self.mainWindow.CenterOnScreen()  ##     self.mainWindow.CenterOnScreen()
265    
266        self.mainWindow.KeystrokeHook = keyboardEvtHandler(_EVENTPROCESSOR)._processEvent
267    
268    
269    #############################################################################    #############################################################################
270    #    #
# Line 291  class GFUserInterface(GFUserInterfaceBas Line 291  class GFUserInterface(GFUserInterfaceBas
291    def _updateCreateEvent(self, event):    def _updateCreateEvent(self, event):
292      event.eventHandler = self.dispatchEvent      event.eventHandler = self.dispatchEvent
293      event.ui = self      event.ui = self
294      event.formWidth = int(self._form.width)      event.formWidth = int(self._form._layout.Char__width)
295      event.formHeight = int(self._form.height)      event.formHeight = int(self._form._layout.Char__height)
296      event.screenHeight = self._screen.MAXROW - 3      event.screenHeight = self._screen.MAXROW - 3
297      event.screenWidth = self._screen.MAXCOL      event.screenWidth = self._screen.MAXCOL
298      return event      return event
# Line 312  class GFUserInterface(GFUserInterfaceBas Line 312  class GFUserInterface(GFUserInterfaceBas
312    # fully activated    # fully activated
313    #    #
314    def mainLoop(self):    def mainLoop(self):
315        pass
316      self.mainWindow.Run()      self.mainWindow.Run()
317    
318    def _setStatusBar(self,tip, statusValue, insertValue, currentRecord, maxRecord, currentPage, maxPage):    def _setStatusBar(self,tip, statusValue, insertValue, currentRecord, maxRecord, currentPage, maxPage):
# Line 328  class GFUserInterface(GFUserInterfaceBas Line 329  class GFUserInterface(GFUserInterfaceBas
329    
330      if currentPage and  maxPage:      if currentPage and  maxPage:
331        self.statusBar.SetText(4,string.strip("%s/%s" % (currentPage,maxPage)))        self.statusBar.SetText(4,string.strip("%s/%s" % (currentPage,maxPage)))
332          
333          
334    #    #
335    # gotoPage    # gotoPage
336    #    #
337    # makes the requested page visible on the screen    # makes the requested page visible on the screen
338    #    #
339    def gotoPage(self, event):    def gotoPage(self, event):
340      pass      self.visiblePage.Hide()
341        self.visiblePage = self._objectMapping[event.data]
342        self.visiblePage.Show()
343    
344  ##     if not _NOTEBOOK:  ##     if not _NOTEBOOK:
345  ##       self.visiblePage.Show(FALSE)  ##       self.visiblePage.Show(FALSE)
346  ##       self.visiblePage = self._formToUI[event.data][0]  ##       self.visiblePage = self._formToUI[event.data][0]
# Line 433  class GFUserInterface(GFUserInterfaceBas Line 437  class GFUserInterface(GFUserInterfaceBas
437  #  #
438  # Provides a UI widget set of std functions to reduce the number of functions  # Provides a UI widget set of std functions to reduce the number of functions
439  # require in each UIclass listed below  # require in each UIclass listed below
440  class UIHelper:  class UIHelper(UIWidget):
441    def showModal(self):    def showModal(self):
442      pass # self.ShowModal()      pass # self.ShowModal()
443    
# Line 484  class UIHelper: Line 488  class UIHelper:
488  #  #
489  # Widget set specific function that creates a single instance of a label  # Widget set specific function that creates a single instance of a label
490  #  #
491  class UILabel(UIHelper, UIWidget):  class UILabel(UIHelper):
492    alignmentStyle = { 'left'  : 0,    alignmentStyle = { 'left'  : 0,
493                       'center': 0,                       'center': 0,
494                       'right' : 0,                       'right' : 0,
# Line 493  class UILabel(UIHelper, UIWidget): Line 497  class UILabel(UIHelper, UIWidget):
497    def _createWidget(self, event, spacer):    def _createWidget(self, event, spacer):
498      object = event.object      object = event.object
499      style = self.alignmentStyle[object.alignment]      style = self.alignmentStyle[object.alignment]
500      GDebug.printMesg(0,"*****Label Alert!!! (x,y)=(%s,%s) %s" % (object.x, object.y,event.container))      GDebug.printMesg(0,"*****Label Alert!!! (x,y)=(%s,%s) %s" % (object.Char__x, object.Char__y,event.container))
501      newWidget = Label(event.container,str(self),object.y+spacer,object.x,str(object.text))      newWidget = Label(event.container,str(self),object.Char__y+spacer,object.Char__x,str(object.text))
502      event.container.AddControl(newWidget)      event.container.AddControl(newWidget)
503      return newWidget      return newWidget
504    
# Line 503  class UILabel(UIHelper, UIWidget): Line 507  class UILabel(UIHelper, UIWidget):
507  #  #
508  # Widget set specific function that creates a single instance of a border box  # Widget set specific function that creates a single instance of a border box
509  #  #
510  class UIBox(UIHelper, UIWidget):  class UIBox(UIHelper):
511    def _createWidget(self, event, spacer):    def _createWidget(self, event, spacer):
512      object = event.object      object = event.object
513      newWidget = GroupBox(event.container,'name',object.y,object.x,      newWidget = GroupBox(event.container,'name',object.Char__y,object.Char__x,
514                        object.width, object.height,str(object.label))                        object.Char__width, object.Char__height,str(object.label))
515      event.container.AddControl(newWidget)      event.container.AddControl(newWidget)
516      return newWidget      return newWidget
517    
# Line 517  class UIBox(UIHelper, UIWidget): Line 521  class UIBox(UIHelper, UIWidget):
521  # Widget set specific function that creates a single instance of a scroll bar used  # Widget set specific function that creates a single instance of a scroll bar used
522  # to navigate multiple records  # to navigate multiple records
523  #  #
524  class UIScrollBar(UIHelper, UIWidget):  class UIScrollBar(UIHelper):
525    def _createWidget(self, event, spacer):    def _createWidget(self, event, spacer):
526      object = event.object      object = event.object
527    
528      if object.width > 1:      if object.Char__width > 1:
529        newWidget = ScrollBar(event.container,'name',object.y,object.x,object.width)        newWidget = ScrollBar(event.container,'name',object.Char__y,object.Char__x,object.Char__width)
530      else:      else:
531        newWidget = VScrollBar(event.container,'name',object.y,object.x,object.height)        newWidget = VScrollBar(event.container,'name',object.Char__y,object.Char__x,object.Char__height)
532      event.container.AddControl(newWidget)      event.container.AddControl(newWidget)
533        newWidget.Init(10)  ## TODO: This should be the number of rows
534      return newWidget      return newWidget
535    
536  #  #
# Line 533  class UIScrollBar(UIHelper, UIWidget): Line 538  class UIScrollBar(UIHelper, UIWidget):
538  #  #
539  # Widget set specific function that creates a single instance of a button  # Widget set specific function that creates a single instance of a button
540  #  #
541  class UIButton(UIHelper, UIWidget):  class UIButton(UIHelper):
542    def _createWidget(self, event, spacer):    def _createWidget(self, event, spacer):
543      object = event.object      object = event.object
544      newWidget = Button(event.container,'name',object.y+spacer,object.x,object.width,str(object.label))      newWidget = Button(event.container,'name',object.Char__y+spacer,object.Char__x,object.Char__width,str(object.label))
545      event.container.AddControl(newWidget)      event.container.AddControl(newWidget)
546      self.__trigger = object.trigger      self.__gf = object
547      newWidget.SetMethod("CLICK", self.buttonHandler)      newWidget.SetMethod("CLICK", self.buttonHandler)
548      return newWidget      return newWidget
549    
550    def buttonHandler(self, a1, a2, a3):    def buttonHandler(self, a1, a2, a3):
551        GDebug.printMesg(1,"Click!")
552  ##     if event.GetEventType() == wxEVT_COMMAND_BUTTON_CLICKED:  ##     if event.GetEventType() == wxEVT_COMMAND_BUTTON_CLICKED:
553  ##       action = None  ##       action = None
554  ##       object = _eventObjTowxWindow(event)  ##       object = _eventObjTowxWindow(event)
555  ##       id = object.GetId()  ##       id = object.GetId()
556  ##       gfObject     = _IdToGFObj[id]  ##       gfObject     = _IdToGFObj[id]
557    
558       _EVENTPROCESSOR(events.Event('fireTRIGGER',self.__trigger))      _EVENTPROCESSOR(events.Event('buttonActivated',self.__gf))
559    
560  ##     if action:  ##     if action:
561  ##       _EVENTPROCESSOR(action)  ##       _EVENTPROCESSOR(action)
# Line 562  class UIButton(UIHelper, UIWidget): Line 567  class UIButton(UIHelper, UIWidget):
567  #  #
568  # Note: The event trap for changing notebook pages is attached to the UIForm  # Note: The event trap for changing notebook pages is attached to the UIForm
569  #  #
570  class UIPage(UIHelper, UIWidget):  class UIPage(UIHelper):
571    def _createWidget(self, event, spacer):    def _createWidget(self, event, spacer):
572      object = event.object      object = event.object
573    
# Line 583  class UIPage(UIHelper, UIWidget): Line 588  class UIPage(UIHelper, UIWidget):
588        width = event.screenWidth        width = event.screenWidth
589    
590    
591      newWidget = Frame(event.container, y, x,  y+height-1, x+width-1 , object._parent.title)      newWidget = Frame(event.container, y, x,  y+height-1, x+width-1) #  , object._parent.title)
592      ###newWidget.DeActivate(0)      ###newWidget.DeActivate(0)
593      event.interface._pageList.append(newWidget)      event.interface._pageList.append(newWidget)
594        event.interface._objectMapping[object] = newWidget
595        event.interface._objectMapping[newWidget] = object
596    
597  ####    newWidget.KeystrokeHook = keyboardEvtHandler(_EVENTPROCESSOR)._processEvent      ####
598        newWidget.KeystrokeHook = keyboardEvtHandler(_EVENTPROCESSOR)._processEvent
599    
600      return newWidget      return newWidget
601    
# Line 596  class UIPage(UIHelper, UIWidget): Line 604  class UIPage(UIHelper, UIWidget):
604  #  #
605  # Widget set specific function that creates a single instance of a data entry widget  # Widget set specific function that creates a single instance of a data entry widget
606  #  #
607  class UIEntry(UIHelper, UIWidget):  class UIEntry(UIHelper):
608    def _createWidget(self, event, spacer):    def _createWidget(self, event, spacer):
609      object = event.object      object = event.object
610    
611      style = object.style      style = object.style
612      if style == 'dropdown':      if style == 'dropdown':
613        if event.initialize:        if event.initialize:
614          choices = object.allowedValues()[1]          choices = object._field.allowedValues()[1]
615        else:        else:
616          choices = [""]          choices = [""]
617        newWidget = ComboBox(event.container, 'name',object.y+spacer,object.x, object.width)        newWidget = ComboBox(event.container, 'name',object.Char__y+spacer,object.Char__x, object.Char__width)
618        for index in range(len(choices)):        for index in range(len(choices)):
619          newWidget.AddItem(index,choices[index])          newWidget.AddItem(index,choices[index])
620      elif style == 'label':      elif style == 'label':
621        newWidget = TextBox(event.container, 'name', object.y+spacer, object.x, object.width)        newWidget = TextBox(event.container, 'name', object.Char__y+spacer, object.Char__x, object.Char__width)
622      elif style == 'checkbox':      elif style == 'checkbox':
623        newWidget = CheckBox(event.container, 'name',object.y+spacer,object.x,'',0)        newWidget = CheckBox(event.container, 'name',object.Char__y+spacer,object.Char__x,'',0)
624      elif object.height > 1: # Normal text box/Multiline      elif hasattr(object,'Char__height') and object.Char__height > 1: # Normal text box/Multiline
625        newWidget = TextArea(event.container, 'name', object.y+spacer, object.x, object.width, object.height)        newWidget = TextArea(event.container, 'name', object.Char__y+spacer, object.Char__x, object.Char__width, object.Char__height)
626      else: # Normal text box      else: # Normal text box
627        newWidget = TextBox(event.container, 'name', object.y+spacer, object.x, object.width)        newWidget = TextBox(event.container, 'name', object.Char__y+spacer, object.Char__x, object.Char__width)
628    
629      event.container.AddControl(newWidget)      event.container.AddControl(newWidget)
630    
# Line 627  class UIEntry(UIHelper, UIWidget): Line 635  class UIEntry(UIHelper, UIWidget):
635  #  #
636  # Widget set specific function that creates a single instance of a Form widget  # Widget set specific function that creates a single instance of a Form widget
637  #  #
638  class UIForm(UIHelper, UIWidget):  class UIForm(UIHelper):
639    tabStyles = {'top':0,    tabStyles = {'top':0,
640                 'left':1,                 'left':1,
641                 'right':2,                 'right':2,
# Line 636  class UIForm(UIHelper, UIWidget): Line 644  class UIForm(UIHelper, UIWidget):
644    
645    def _createWidget(self, event, spacer):    def _createWidget(self, event, spacer):
646      object = event.object      object = event.object
647      newWidget = Dialog(event.container, 0, 0, event.interface._screen.MAXROW, event.interface._screen.MAXCOL )  ##    newWidget = Dialog(event.container, 0, 0, event.interface._screen.MAXROW, event.interface._screen.MAXCOL )
648    
649      return newWidget  ##    return newWidget
650    
651    
652  #####################################################################  #####################################################################
# Line 682  cursesKeyTranslations = { Line 690  cursesKeyTranslations = {
690    vk.F11       : curses.KEY_F11,       vk.F12      : curses.KEY_F12,    vk.F11       : curses.KEY_F11,       vk.F12      : curses.KEY_F12,
691    vk.INSERT    : curses.KEY_IC,        vk.DELETE   : curses.KEY_DC,    vk.INSERT    : curses.KEY_IC,        vk.DELETE   : curses.KEY_DC,
692    vk.HOME      : curses.KEY_HOME,      vk.END      : curses.KEY_END,    vk.HOME      : curses.KEY_HOME,      vk.END      : curses.KEY_END,
693    vk.PAGEUP    : curses.KEY_NPAGE,     vk.PAGEDOWN : curses.KEY_NPAGE,    vk.PAGEUP    : curses.KEY_PPAGE,     vk.PAGEDOWN : curses.KEY_NPAGE,
694    vk.UP        : curses.KEY_UP,        vk.DOWN     : curses.KEY_DOWN,    vk.UP        : curses.KEY_UP,        vk.DOWN     : curses.KEY_DOWN,
695    vk.LEFT      : curses.KEY_LEFT,      vk.RIGHT    : curses.KEY_RIGHT,    vk.LEFT      : curses.KEY_LEFT,      vk.RIGHT    : curses.KEY_RIGHT,
696    vk.TAB       : 9,                    vk.ENTER    : 10,    vk.TAB       : 9,                    vk.ENTER    : 10,
# Line 745  class keyboardEvtHandler(uiBaseEvtHandle Line 753  class keyboardEvtHandler(uiBaseEvtHandle
753      uiBaseEvtHandler.__init__(self, [], eventProcessor)      uiBaseEvtHandler.__init__(self, [], eventProcessor)
754    
755    def _processEvent(self, keystroke):    def _processEvent(self, keystroke):
756      return keystroke      ####return keystroke
757      action = None      action = None
758    
759      ##object = _eventObjTowxWindow(event)      ##object = _eventObjTowxWindow(event)
760    
761        
762        GDebug.printMesg(0,"key====== %s" % keystroke)
763      command = GFKeyMapper.KeyMapper.getEvent(      command = GFKeyMapper.KeyMapper.getEvent(
764          keystroke,          keystroke,
765          0, #event.ShiftDown(),          0, #event.ShiftDown(),
# Line 777  class keyboardEvtHandler(uiBaseEvtHandle Line 787  class keyboardEvtHandler(uiBaseEvtHandle
787          pass          pass
788    
789      if action:      if action:
790          # Add the object's _form to the outgoing event
791          # rather than every event in the function
792          action.__dict__.update({'_form':self._form})
793    
794                
795        self._eventProcessor(action)        self._eventProcessor(action)
796    
797      return None      return None

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.1.2.1

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26