commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gnue/designer/src base/Instance.py base/MenuBar...


From: Jason Cater
Subject: gnue/designer/src base/Instance.py base/MenuBar...
Date: Fri, 23 May 2003 23:19:50 -0400

CVSROOT:        /cvsroot/gnue
Module name:    gnue
Changes by:     Jason Cater <address@hidden>    03/05/23 23:19:49

Modified files:
        designer/src/base: Instance.py MenuBar.py ToolDock.py 
                           ToolPanel.py 
        designer/src/forms/LayoutEditor: LayoutEditor.py 

Log message:
        committing my splitter logic before I completely rip it out... I don't 
like it.

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/base/Instance.py.diff?tr1=1.93&tr2=1.94&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/base/MenuBar.py.diff?tr1=1.43&tr2=1.44&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/base/ToolDock.py.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/base/ToolPanel.py.diff?tr1=1.9&tr2=1.10&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/LayoutEditor/LayoutEditor.py.diff?tr1=1.75&tr2=1.76&r1=text&r2=text

Patches:
Index: gnue/designer/src/base/Instance.py
diff -c gnue/designer/src/base/Instance.py:1.93 
gnue/designer/src/base/Instance.py:1.94
*** gnue/designer/src/base/Instance.py:1.93     Fri May 23 20:02:31 2003
--- gnue/designer/src/base/Instance.py  Fri May 23 23:19:49 2003
***************
*** 225,233 ****
  
    def _initTools(self):
  
!     self.horizSplitter = wxSplitterWindow(self, -1, style=wxSP_3D)
!     leftWin = ToolDock(self.horizSplitter, self, 'left')
!     rightWin = ToolDock(self.horizSplitter, self,'right')
  
      # Add each tool
      for id, title, baseclass, hotkey in self._toolCache:
--- 225,233 ----
  
    def _initTools(self):
  
!     self.__horizSplitter = wxSplitterWindow(self, -1, style=wxSP_3D)
!     self.__leftDock = leftWin = ToolDock(self.__horizSplitter, self, 'left')
!     self.__rightDock = rightWin = ToolDock(self.__horizSplitter, self,'right')
  
      # Add each tool
      for id, title, baseclass, hotkey in self._toolCache:
***************
*** 258,264 ****
            enableMenu = 1
          else:
            # Docked type
!           pane = SingleTooledPane(self.horizSplitter, self)
            control = pane.AddTool(title, baseclass, self.rootObject, self)
            if pos == 'left':
              window = leftWin
--- 258,264 ----
            enableMenu = 1
          else:
            # Docked type
!           pane = SingleTooledPane(self.__horizSplitter, self)
            control = pane.AddTool(title, baseclass, self.rootObject, self)
            if pos == 'left':
              window = leftWin
***************
*** 277,284 ****
  
      leftWin.refresh()
      rightWin.refresh()
!     self.horizSplitter.SplitVertically(leftWin, rightWin,
                RuntimeSettings.getint(self.runtime_section, 
'DockSplitter-TopBottom',500))
  
  
    def addTool(self, id, title, baseclass, hotkey=None):
--- 277,285 ----
  
      leftWin.refresh()
      rightWin.refresh()
!     self.__horizSplitter.SplitVertically(leftWin, rightWin,
                RuntimeSettings.getint(self.runtime_section, 
'DockSplitter-TopBottom',500))
+     leftWin.restoreSettings(self.runtime_section)
  
  
    def addTool(self, id, title, baseclass, hotkey=None):
***************
*** 325,332 ****
                   'height': height,
                   'width': width  }
  
!     if self.horizSplitter:
!       settings['docksplitter-topbottom'] = 
self.horizSplitter.GetSashPosition()
  
      return ( self.runtime_section, settings )
  
--- 326,336 ----
                   'height': height,
                   'width': width  }
  
!     if self.__horizSplitter:
!       settings['docksplitter-topbottom'] = 
self.__horizSplitter.GetSashPosition()
! 
!     settings.update(self.__leftDock.saveSettings())
!     settings.update(self.__rightDock.saveSettings())
  
      return ( self.runtime_section, settings )
  
Index: gnue/designer/src/base/MenuBar.py
diff -c gnue/designer/src/base/MenuBar.py:1.43 
gnue/designer/src/base/MenuBar.py:1.44
*** gnue/designer/src/base/MenuBar.py:1.43      Fri May 23 20:02:31 2003
--- gnue/designer/src/base/MenuBar.py   Fri May 23 23:19:49 2003
***************
*** 331,338 ****
  class ToolRunner:
    def __init__(self, toolFrame, title, hotkey, enabled):
       self.toolFrame = toolFrame
- 
- 
       self.hotkey = hotkey
       self.wxId = wxNewId()
       self.title = title + (hotkey and '\t%s'% hotkey or '')
--- 331,336 ----
Index: gnue/designer/src/base/ToolDock.py
diff -c gnue/designer/src/base/ToolDock.py:1.6 
gnue/designer/src/base/ToolDock.py:1.7
*** gnue/designer/src/base/ToolDock.py:1.6      Fri May 23 20:02:31 2003
--- gnue/designer/src/base/ToolDock.py  Fri May 23 23:19:49 2003
***************
*** 29,36 ****
  #
  
  from wxPython.wx import *
  
! SPLITTER_STYLE = wxSP_LIVE_UPDATE | wxSP_NOBORDER | wxSP_3DSASH
  
  class ToolDock(wxPanel):
    def __init__(self, parent, instance, name):
--- 29,37 ----
  #
  
  from wxPython.wx import *
+ from gnue.common.apps import RuntimeSettings
  
! SPLITTER_STYLE = wxSP_NOBORDER | wxSP_3DSASH # | wxSP_LIVE_UPDATE
  
  class ToolDock(wxPanel):
    def __init__(self, parent, instance, name):
***************
*** 41,47 ****
      self.panels = []
      self.splitters = []
      self.child = None
!     EVT_SIZE(self, self.OnSize)
  
    #
    # Rebuild our dock
--- 42,49 ----
      self.panels = []
      self.splitters = []
      self.child = None
!     self.sashSize = 0
!     EVT_SIZE(self, self.__OnSize)
  
    #
    # Rebuild our dock
***************
*** 99,105 ****
      index = 0
      for nothing, panel in self.panels:
        # Reparent...
-       print index, neededSplitters
        if index >= neededSplitters:
          # The last two tools share the same splitter as parents
          panel.Reparent(self.splitters[-1])
--- 101,106 ----
***************
*** 119,128 ****
  
      # ... and split the needed splitters
      for index in range(neededSplitters-1):
!       self.splitters[index].SplitHorizontally(self.panels[index][1], 
self.splitters[index+1], 200)
  
      # The last two are a special case...
!     self.splitters[-1].SplitHorizontally(self.panels[-2][1], 
self.panels[-1][1], 100)
  
      # We will need to resize the top-most splitter
      # manually, so make a note of it:
--- 120,135 ----
  
      # ... and split the needed splitters
      for index in range(neededSplitters-1):
!       splitter = self.splitters[index]
!       splitter.SplitHorizontally(self.panels[index][1],
!                                  self.splitters[index+1], 200)
! 
  
      # The last two are a special case...
!     splitter = self.splitters[-1]
!     splitter.SplitHorizontally(self.panels[-2][1],
!                                          self.panels[-1][1], 100)
!     splitter.SetMinimumPaneSize(self.panels[-1][1].minimumVerticalSize)
  
      # We will need to resize the top-most splitter
      # manually, so make a note of it:
***************
*** 131,136 ****
--- 138,154 ----
      # Redraw screen
      self.Refresh()
  
+     self.sashSize = self.GetClientSizeTuple()[1] - \
+                     self.splitters[0].GetWindow1().GetClientSizeTuple()[1] - \
+                     self.splitters[0].GetWindow2().GetClientSizeTuple()[1]
+ 
+ 
+     self.titlebarSize = self.panels[0][1].minimumVerticalSize -2
+     self.minimumPaneSize = self.titlebarSize + self.sashSize
+ 
+     for splitter in self.splitters:
+       splitter.SetMinimumPaneSize(self.minimumPaneSize)
+ 
  
    #
    # Add a tool panel to our control
***************
*** 147,152 ****
--- 165,193 ----
      # Save state information on the tool panel
      panel._dock_ = self
      panel._dock_index = indx
+     panel.SetManager(self)
+ 
+   #
+   # Restore sizes.. used by RuntimeSettings
+   #
+   def restoreSettings(self, section):
+     baseName = 'Docker%s-' % self.name
+     index = 0
+     for splitter in self.splitters:
+       splitter.SetSashPosition(RuntimeSettings.getint(section, baseName + 
str(index), 100))
+       index += 1
+ 
+   #
+   # Save sizes.. used by RuntimeSettings
+   #
+   def saveSettings(self):
+     baseName = 'Docker%s-' % self.name
+     rs = {}
+     index = 0
+     for splitter in self.splitters:
+       rs[baseName + str(index)] = splitter.GetSashPosition()
+       index += 1
+     return rs
  
  
    #
***************
*** 154,160 ****
    #
    def remove(self, panel):
      self.panels.remove((panel._dock_index, panel))
! 
  
    #
    # Redock a tool panel
--- 195,201 ----
    #
    def remove(self, panel):
      self.panels.remove((panel._dock_index, panel))
!     panel.SetManager(None)
  
    #
    # Redock a tool panel
***************
*** 166,180 ****
    # Minimize a tool, so only title bar is showing
    #
    def minimize(self, panel):
!     pass
  
    #
    # Restore a minimized tool
    #
    def restore(self, panel):
!     pass
  
  
!   def OnSize(self, event):
!     print "Setting size"
      self.child.SetSize(self.GetClientSize())
--- 207,306 ----
    # Minimize a tool, so only title bar is showing
    #
    def minimize(self, panel):
!     # No splitters in use?  Nothing to do.
!     # Already minimized? Ditto.
!     if not self.splitters or panel.minimized:
!       return
! 
!     # One splitter?  Treat as special case...
!     # Only one of the tools can be minimized.
!     if len(self.splitters) == 1:
!       other = self.panels[0][1] != panel and self.panels[0][1] or 
self.panels[1][1]
!       other.minimized = 0
!     else:
! 
!       # Find out how many are already minimized.
!       # One must remain visible at all times.
!       numMinimized = 0
!       for foo, p in self.panels:
!         if p.minimized:
!           numMinimized += 1
!       if numMinimized == len(self.splitters):
!         return
! 
! 
!     # Save the current size so
!     # tool can be restored later
!     panel.lastSize = panel.GetSizeTuple()[1]
!     panel.minimized = 1
! 
!     # Use the handy-dandy resize function
!     self.resize(panel, self.minimumPaneSize)
! 
  
    #
    # Restore a minimized tool
    #
    def restore(self, panel):
!     # No splitters in use?  Nothing to do.
!     # Already minimized? Ditto.
!     if not self.splitters or not panel.minimized:
!       return
! 
!     # Restore to the last known size
!     self.resize(panel, panel.lastSize or 100)
! 
!     panel.minimized = 0
! 
! 
!   #
!   # Resize a tool
!   #
!   def resize(self, panel, size):
  
+     # This is used several times...
+     numSplitters = len(self.splitters)
  
!     # No splitters in use?  Nothing to do.
!     if not numSplitters:
!       return
! 
!     # Current size of panel
!     currSize = panel.GetSizeTuple()[1]
!     delta = currSize - size
! 
!     # Determine number of panels minimized
!     numMinimized = 0
!     for foo, p in self.panels:
!       if p.minimized:
!         numMinimized += 1
! 
!     parent = panel.GetParent()
! 
!     direction = parent.GetWindow2() == panel or -1
!     parent.SetSashPosition(parent.GetSashPosition() + delta * direction)
! 
!     workableArea = self.GetClientSizeTuple()[1] \
!                  - numMinimized * self.titlebarSize \
!                  - numSplitters * self.sashSize \
!                  - (not panel.minimized) and delta
! 
! 
!   #
!   # Change the "minimized" state of a tool.
!   # i.e., if it is minimized, restore it;
!   # if it is not minimized, minimize it.
!   def toggleMinimized(self, panel):
!     if panel.minimized:
!       self.restore(panel)
!     else:
!       self.minimize(panel)
! 
! 
!   #
!   # Resize our child window (the
!   # wxSplitterWindow will take care
!   # of the rest)
!   #
!   def __OnSize(self, event):
      self.child.SetSize(self.GetClientSize())
Index: gnue/designer/src/base/ToolPanel.py
diff -c gnue/designer/src/base/ToolPanel.py:1.9 
gnue/designer/src/base/ToolPanel.py:1.10
*** gnue/designer/src/base/ToolPanel.py:1.9     Fri May 23 20:02:31 2003
--- gnue/designer/src/base/ToolPanel.py Fri May 23 23:19:49 2003
***************
*** 39,44 ****
--- 39,49 ----
      self.parent = parent
      self.instance = instance
  
+     # These are used exclusively by ToolDock
+     self.minimumVerticalSize = 0
+     self.lastSize = 0
+     self.minimized = 0
+ 
    def GetWindow(self):
      return self
  
***************
*** 63,115 ****
      print "WARNING: ToolPanel.setFeedback called directly"
      pass
  
!   def finalize(self): 
      pass
  
- class MultiTooledPane(wxNotebook, ToolPanel):
-   def __init__(self, parent, instance):
-     wxNotebook.__init__(self, parent, -1, style=wxCLIP_CHILDREN)
-     self.SetPadding(wxSize(4,4))
-     ToolPanel.__init__(self, parent, instance)
-     font = self.GetFont()
-     font.SetWeight(wxBOLD)
- ##    font.SetPointSize(font.GetPointSize()-2)
-     self.SetFont(font)
- 
-   def AddTool(self, title, baseclass, rootObject, instance):
-     if baseclass.uses_feedback_bar:
-       page = _MultiFeedBackHandler(self)
-       control = baseclass(instance, rootObject, page)
-       page.setControl(control)
-     else:
-       page = control = baseclass(instance, rootObject, self)
- 
- 
-     self.AddPage(page, title)
-     return control
- 
- class _MultiFeedBackHandler(wxPanel):
-   def __init__(self, parent):
-     wxPanel.__init__(self, parent, -1)
-     self.statusText = wxStaticText(self,-1, "Feedback", wxPoint(6,3))
-     font = self.statusText.GetFont()
-     font.SetWeight(wxBOLD)
-     self.statusText.SetFont(font)
-     w,h = self.statusText.GetSizeTuple()
-     self.y = h + 3
- 
-   def setControl(self, control):
-     self.control = control
-     control.setFeedback = self.setFeedback
-     control.Move((0,self.y))
-     EVT_SIZE(self, self.OnSize)
- 
-   def setFeedback(self, text):
-     self.statusText.SetLabel(text)
- 
-   def OnSize(self, event):
-     w,h = self.GetClientSizeTuple()
-     self.control.SetSize((w, h - self.y - 4))
  
  #
  #
--- 68,76 ----
      print "WARNING: ToolPanel.setFeedback called directly"
      pass
  
!   def finalize(self):
      pass
  
  
  #
  #
***************
*** 118,130 ****
    def __init__(self, parent, menutool):
      wxPanel.__init__(self, parent, -1)
      ToolPanel.__init__(self, parent, menutool)
  
    def AddTool(self, title, baseclass, rootObject, instance):
      self.control = control = baseclass(instance, rootObject, self)
  
      sizer = wxBoxSizer(wxVERTICAL)
  
!     tp = self.__titlePanel = wxPanel(self,-1, wxPoint(2,2))#, 
style=wxSIMPLE_BORDER)
      tp.SetBackgroundColour(TITLEBAR_ACTIVE)
      sizer.Add(tp,0, wxALL|wxEXPAND, border=2)
  
--- 79,95 ----
    def __init__(self, parent, menutool):
      wxPanel.__init__(self, parent, -1)
      ToolPanel.__init__(self, parent, menutool)
+     self.manager = None
+ 
+   def SetManager(self, manager):
+     self.manager = manager
  
    def AddTool(self, title, baseclass, rootObject, instance):
      self.control = control = baseclass(instance, rootObject, self)
  
      sizer = wxBoxSizer(wxVERTICAL)
  
!     tp = self.__titlePanel = wxPanel(self,-1, wxPoint(0,0))#, 
style=wxSIMPLE_BORDER)
      tp.SetBackgroundColour(TITLEBAR_ACTIVE)
      sizer.Add(tp,0, wxALL|wxEXPAND, border=2)
  
***************
*** 135,140 ****
--- 100,114 ----
      tt.SetFont(font)
      x, y = tt.GetSizeTuple()
  
+     tp.SetClientSize((tp.GetClientSizeTuple()[0], y+3))
+     self.minimumVerticalSize = y + 3
+ 
+     EVT_LEFT_DCLICK(tp, self.__LeftDClick)
+     EVT_LEFT_DCLICK(tt, self.__LeftDClick)
+ 
+     EVT_RIGHT_UP(tp, self.__RightClick)
+     EVT_RIGHT_UP(tt, self.__RightClick)
+ 
      if control.uses_toolbar:
        sizer.Add(control.createToolbar(self), 0, wxEXPAND)
  
***************
*** 149,155 ****
  
      return control
  
- 
    def setFeedback(self, text):
      self.statusText.SetLabel(text)
  
--- 123,166 ----
  
      return control
  
    def setFeedback(self, text):
      self.statusText.SetLabel(text)
+ 
+   def __LeftDClick(self, event):
+     if self.manager:
+       self.manager.toggleMinimized(self)
+ 
+   def __RightClick(self, event):
+     # Display a menu
+     menu = wxMenu()
+ 
+     nid = wxNewId()
+     menu.Append(nid, _("Hide Tool"))
+     EVT_MENU(self, nid, self.__Hide)
+     if self.minimized:
+       menu.Enable(nid, 0)
+ 
+     nid = wxNewId()
+     menu.Append(nid, _("Show Tool"))
+     EVT_MENU(self, nid, self.__Restore)
+     if not self.minimized:
+       menu.Enable(nid, 0)
+ 
+     menu.AppendSeparator()
+ 
+     nid = wxNewId()
+     menu.Append(nid, _("Release to Frame"))
+     EVT_MENU(self, nid, self.__BreakAway)
+     menu.Enable(nid, 0)  # TODO
+ 
+     self.PopupMenu(menu, event.GetPosition())
+ 
+   def __Hide(self, event):
+     self.manager.minimize(self)
+ 
+   def __Restore(self, event):
+     self.manager.restore(self)
+ 
+   def __BreakAway(self, event):
+     print _("This function not yet supported!") # TODO
  
Index: gnue/designer/src/forms/LayoutEditor/LayoutEditor.py
diff -c gnue/designer/src/forms/LayoutEditor/LayoutEditor.py:1.75 
gnue/designer/src/forms/LayoutEditor/LayoutEditor.py:1.76
*** gnue/designer/src/forms/LayoutEditor/LayoutEditor.py:1.75   Fri May 23 
20:02:31 2003
--- gnue/designer/src/forms/LayoutEditor/LayoutEditor.py        Fri May 23 
23:19:49 2003
***************
*** 217,234 ****
        try:      ft += 'Name: % (%s)' % (object.name, object._type[2:])
        except:   pass
  
!       try:      ft += '   x: %s' % object.Char__x
        except:   pass
  
!       try:      ft += '   y: %s' % object.Char__y
        except:   pass
  
!       try:      ft += '   w: %s' % object.Char__width
        except:   pass
  
        try:
          if object.Char__height > 1:
!           ft += ' h: %s' % object.Char__height
        except:
          pass
  
--- 217,234 ----
        try:      ft += 'Name: % (%s)' % (object.name, object._type[2:])
        except:   pass
  
!       try:      ft += '   Row: %s' % object.Char__x
        except:   pass
  
!       try:      ft += '   Col: %s' % object.Char__y
        except:   pass
  
!       try:      ft += '   Width: %s' % object.Char__width
        except:   pass
  
        try:
          if object.Char__height > 1:
!           ft += ' Height: %s' % object.Char__height
        except:
          pass
  
***************
*** 493,499 ****
      self.__cx = cx = int(x / self.gridWidth) + 1
      self.__cy = cy = int(y / self.gridHeight) + 1
  
!     self.setFeedback ('x: %s; y: %s' % (cx, cy))
  
      self.__brush = wxBrush(wxWHITE, style=wxTRANSPARENT)
  
--- 493,499 ----
      self.__cx = cx = int(x / self.gridWidth) + 1
      self.__cy = cy = int(y / self.gridHeight) + 1
  
!     self.setFeedback ('Col: %s   Row: %s' % (cx, cy))
  
      self.__brush = wxBrush(wxWHITE, style=wxTRANSPARENT)
  
***************
*** 532,538 ****
        cx1, cx2 = order(self.__cx, cx)
        cy1, cy2 = order(self.__cy, cy)
  
!       self.setFeedback('x: %s; y: %s, w=%s, h=%s'% (cx1, cy1, cx2 - cx1 + 1, 
cy2 - cy1 + 1))
  
  
  
--- 532,538 ----
        cx1, cx2 = order(self.__cx, cx)
        cy1, cy2 = order(self.__cy, cy)
  
!       self.setFeedback('Col: %s   Row: %s   Width: %s   Height: %s'% (cx1, 
cy1, cx2 - cx1 + 1, cy2 - cy1 + 1))
  
  
  




reply via email to

[Prev in Thread] Current Thread [Next in Thread]