dabo Commit
Revision 4081
Date: 2008-05-12 06:47:58 -0700 (Mon, 12 May 2008)
Author: Ed
Trac: http://svn.dabodev.com/trac/dabo/changeset/4081

Changed:
U   branches/ed-ide/Studio.py
U   branches/ed-ide/components/ClassDesigner/__init__.py
U   branches/ed-ide/components/TextEditor/__init__.py

Log:
incremental commit. Nothing earth-shattering yet, but began fleshing out 
support for components and plugins.

Diff:
Modified: branches/ed-ide/Studio.py
===================================================================
--- branches/ed-ide/Studio.py   2008-05-12 13:42:49 UTC (rev 4080)
+++ branches/ed-ide/Studio.py   2008-05-12 13:47:58 UTC (rev 4081)
@@ -8,6 +8,7 @@
 dabo.ui.loadUI("wx")
 from dabo.dLocalize import _
 import dabo.dEvents as dEvents
+import components
 from components.ClassDesigner import ClassDesigner
 from components.CxnEditor import CxnEditor
 from components.MenuDesigner import MenuDesigner
@@ -38,7 +39,6 @@
 
        def onEditFile(self, evt):
                if not self._context:
-                       print "WASSIP with dat?"
                        return
                nd = self._context["node"]
                pth = self._context["filepath"]
@@ -46,31 +46,92 @@
                        self.controller.editFile(pth)                   
 
 
+class StudioToolBar(dabo.ui.dToolBar):
+       """Overrides the _appendInsertButton() method, so that we get actual 
Dabo
+       dBitmapButton or dToggleButton controls instead of the default 
wx.ToolBarItem
+       buttons that are difficult to work with.
+       """
+       def _appendInsertButton(self, pos, caption, pic, bindfunc, toggle, tip, 
help, *args, **kwargs):
+               buttonClass = {True: dabo.ui.dToggleButton, False: 
dabo.ui.dBitmapButton}[toggle]
+               if not toggle:
+                       kwargs["AutoSize"] = True
+               ctl = buttonClass(self, Caption=caption, Picture=pic, 
ToolTipText=tip, *args, **kwargs)
+               # Don't show the caption if there is an image
+               def _dyncap(obj):
+                       if obj.Picture:
+                               return ""
+                       else:
+                               return obj._caption
+               ctl.DynamicCaption = (_dyncap, ctl)
+               return self.insertControl(pos, ctl, bindfunc=bindfunc)
 
-class StudioForm(dabo.ui.dSplitForm):
+
+class StudioForm(dabo.ui.dDockForm):
        def initProperties(self):
                self.Caption = _("Dabo Developer Studio")
                self.Orientation = "h"
 
 
        def afterInit(self):
-               dabo.ui.setAfter(self.Splitter, "SashPercent", 30)
-               pnl1 = self.Panel1
-               pnl1.Sizer.Orientation = "v"
-               btn = dabo.ui.dButton(pnl1, Caption="Open Project", 
OnHit=self.onOpenProject)
-               pnl1.Sizer.append(btn, halign="center", border=30)
-               self.tree = ProjectTree(pnl1)
+               treePnl = self.projectTreePanel = 
self.addPanel(Caption=_("Projects"), Docked=True, 
+                               DockSide="Left", ShowPinButton=True)
+               sz = self.projectTreePanel.Sizer = dabo.ui.dSizer("v")
+               btn = dabo.ui.dButton(treePnl, Caption="Open Project", 
OnHit=self.onOpenProject)
+               sz.append(btn, halign="center", border=30)
+               self.tree = ProjectTree(treePnl)
                self.tree.controller = self
-               pnl1.Sizer.append1x(self.tree)
-               pnl2 = self.Panel2
-               self.pgfEditors = dabo.ui.dPageFrame(pnl2, PageCount=0)
-               pnl2.Sizer.append1x(self.pgfEditors)
+               sz.append1x(self.tree)
+               
+               self.toolbar = self.addPanel(Toolbar=True, Docked=True, 
DockSide="Top",
+                               ShowCaption=False, ShowGripper=True, 
BottomDockable=False, 
+                               LeftDockable=False, RightDockable=False)
+               self.toolbar.Sizer = dabo.ui.dSizer("h")
+               cp = self.CenterPanel
+               csz = cp.Sizer = dabo.ui.dSizer("v")
+#              self.toolbar = self.ToolBar = StudioToolBar(self)
+#              csz.append(self.toolbar)
+               self._toolSets = {None: []}
+               self._currentToolBar = None
+               self.pgfEditors = dabo.ui.dPageFrame(self.CenterPanel, 
PageCount=0)
+               csz.append1x(self.pgfEditors)
+               
+               # Enable the various parts of the IDE.
+               self.registerComponents()
+               self.registerPlugins()
 
+               # Make sure that all components are visible
+               dabo.ui.callAfter(self._showAllPanels)
 
+
+       def _showAllPanels(self):
+               self.toolbar.Visible = self.projectTreePanel.Visible = True
+               self.toolbar.Show()
+               self._refreshState()
+
+       def registerComponents(self):
+               import types
+               comps = [getattr(components, comp) for comp in dir(components) 
+                               if isinstance(getattr(components, comp), 
types.ModuleType)]
+               for comp in comps:
+                       try:
+                               comp.register(self)
+                       except AttributeError:
+                               dabo.errorLog.write(_("Component '%s' lacks a 
'register()' method.") % comp)
+
+
+       def registerPlugins(self):
+               pass
+
+
+       def setToolBarGroup(self, key, grp):
+               self._toolSets[key] = grp
+
+
        def editFile(self, pth):
                pg = self.pgfEditors.appendPage(TextEditorPage)
                pg.openFile(pth)
                self.pgfEditors.SelectedPage = pg
+               self.CurrentToolBar = "TextEditor"
 
 
        def onOpenProject(self, evt):
@@ -84,8 +145,41 @@
                        self.tree.getRootNode().Expanded = True
 
 
+       def _getCurrentToolBar(self):
+               return self._currentToolBar
+
+       def _setCurrentToolBar(self, val):
+               if self._constructed():
+                       if val == self._currentToolBar:
+                               return
+                       if val not in self._toolSets:
+                               dabo.errorLog.write(_("Invalid toolbar 
specified: '%s'") % val)
+                               
+                               print self._toolSets.keys()
+                               return
+                       # Hide all visible buttons
+                       for btn in self.toolbar.Children[::-1]:
+                               self.toolbar.remove(btn, False)
+                       self._currentToolBar = val
+                       # Show the new button set
+                       for btn in self._toolSets[self._currentToolBar]:
+                               try:
+                                       self.toolbar.appendItem(btn)
+                               except AttributeError:
+                                       # A control, not a tool item
+                                       btn.Visible = True
+               else:
+                       self._properties["CurrentToolBar"] = val
+
+
+       CurrentToolBar = property(_getCurrentToolBar, _setCurrentToolBar, None,
+                       _("Name of the current toolbar to display. Changing 
this will change the buttons that are visible in the editing area.  (str)"))
+
+
+
 def main():
        app = dabo.dApp()
+       app.BasePrefKey = "DeveloperStudio"
        app.MainFormClass = StudioForm
        app.start()
        

Modified: branches/ed-ide/components/ClassDesigner/__init__.py
===================================================================
--- branches/ed-ide/components/ClassDesigner/__init__.py        2008-05-12 
13:42:49 UTC (rev 4080)
+++ branches/ed-ide/components/ClassDesigner/__init__.py        2008-05-12 
13:47:58 UTC (rev 4081)
@@ -1,36 +1,13 @@
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
 
-# from ClassDesignerPropSheet import PropSheet
-# from ClassDesignerPropSheet import PropertyGrid
-# from ClassDesignerComponents import LayoutSaverMixin
-# from ClassDesignerComponents import LayoutPanel
-# from ClassDesignerComponents import LayoutSpacerPanel
-# from ClassDesignerComponents import LayoutSizerMixin
-# from ClassDesignerComponents import LayoutSizer
-# from ClassDesignerComponents import LayoutBorderSizer
-# from ClassDesignerComponents import LayoutGridSizer
-# from ClassDesignerComponents import LayoutBasePanel
-# from ClassDesignerComponents import NoSizerBasePanel
-# from ClassDesignerTreeSheet import TreeSheet
-# from ClassDesignerObjectPropertySheet import ObjectPropertySheet
-# from ClassDesignerCustomPropertyDialog import 
ClassDesignerCustomPropertyDialog
-# from ClassDesignerControlMixin import ClassDesignerControlMixin
-# from ClassDesignerFormMixin import ClassDesignerFormMixin
-# from ClassDesignerEditor import EditorControl
-# from ClassDesignerEditor import EditorForm
-# from ClassDesignerPemForm import PemForm
-# from ClassDesignerMethodSheet import MethodSheet
-# from ClassDesignerSizerPalette import ContentBoxSizerPanel
-# from ClassDesignerSizerPalette import ContentGridSizerPanel
-# from ClassDesignerSizerPalette import BoxSizerSelfPanel
-# from ClassDesignerSizerPalette import GridSizerSelfPanel
-# from ClassDesignerSizerPalette import SizerInfoFrame
-# from ClassDesignerSizerPalette import SizerContentFrame
-# from ClassDesignerSizerPalette import SizerSelfFrame
-# from ClassDesignerSizerPalette import AbstractSizerPanel
-# from ClassDesignerSizerPalette import SizerContentPanel
-# from ClassDesignerSizerPalette import SizerSelfPanel
-# from ClassDesignerSizerPalette import SizerPaletteForm
 from ClassDesigner import ClassDesigner
 from ClassDesignerExceptions import PropertyUpdateException
+
+
+def register(master):
+       print "Class Designer is registered"
+#      toolbar
+#      editor class
+#      extensions
+       

Modified: branches/ed-ide/components/TextEditor/__init__.py
===================================================================
--- branches/ed-ide/components/TextEditor/__init__.py   2008-05-12 13:42:49 UTC 
(rev 4080)
+++ branches/ed-ide/components/TextEditor/__init__.py   2008-05-12 13:47:58 UTC 
(rev 4081)
@@ -1,4 +1,48 @@
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
 
+import dabo
+import dabo.dEvents as dEvents
+from dabo.dLocalize import _
+import TextEditor
 from TextEditor import EditorPage as TextEditorPage
+
+masterForm = None
+
+def register(master):
+       global masterForm
+       masterForm = master
+       tb = master.toolbar
+
+       funcBtn = tb.appendButton(_("Functions"), 
+                       dabo.ui.bitmapFromData(TextEditor.funcButtonData()),
+                       toggle=False,
+                       OnMouseLeftDown=onFuncButton)
+       bmkBtn = tb.appendButton(_("Bookmarks"), 
+                       dabo.ui.bitmapFromData(TextEditor.bmkButtonData()),
+                       toggle=False,
+                       OnMouseLeftDown=onBmkButton)
+       printBtn = tb.appendButton(_("Print"), 
+                       "print",
+                       toggle=False,
+                       OnHit=onPrint)
+       lexSelector = dabo.ui.dDropdownList(tb, ValueMode="String",
+               Choices = dabo.ui.dEditor.getAvailableLanguages(),
+               OnHit = onLexSelect)
+       tb.appendControl(lexSelector)
+
+       master.setToolBarGroup("TextEditor", [funcBtn, bmkBtn, printBtn, 
lexSelector])
+
+
+def onFuncButton(evt):
+       masterForm.Caption = "FUNC BUTT"
+def onBmkButton(evt):
+       masterForm.Caption = "BMK BUTT"
+def onPrint(evt):
+       masterForm.Caption = "PRINT BUTT"
+def onLexSelect(evt):
+       masterForm.Caption = evt.EventObject.Value
+
+       def updateLex(self):
+                       if not self.lexSelector.Choices:
+                               self.lexSelector.Choices = 
self.CurrentEditor.getAvailableLanguages()




_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-dev
Searchable Archives: http://leafe.com/archives/search/dabo-dev
This message: http://leafe.com/archives/byMID/[EMAIL PROTECTED]

Reply via email to