Hello world,

I've been playing around with the interface in an attempt to match
HeeksCAD. But one of the problems that I've been running into is that
I can't entirely predict hwo many toolpanes are allowed at any one
time to be visible. I've defined up to six, but then overall a few are
dropped each time, sometimes it's the "Geometry" pane, and sometimes
it's the "Solids" pane, etc.

Here are the lines of interest in the AppFrame initialization method:

---------------------------
        m_geometryBar = wx.ToolBar(self, -1, wx.DefaultPosition,
wx.DefaultSize, wx.TB_NODIVIDER | wx.TB_FLAT)
        m_geometryBar.AddTool(ID_LINES, ToolImage("lines")) # Draw a sketch
        m_geometryBar.AddTool(ID_CIRCLES, ToolImage("circles")) # Start circle 
drawing
        m_geometryBar.AddTool(ID_ILINE, ToolImage("iline")) # Start drawing
infinite lines
        m_geometryBar.AddTool(ID_POINTS, ToolImage("point")) # Start drawing 
points
        m_geometryBar.AddTool(ID_REGSHAPES, ToolImage("regshapes")) # Draw
regular shapes; rectangles, polygons, obrounds
        m_geometryBar.AddTool(ID_TEXT, ToolImage("text")) # Add a text object
        m_geometryBar.AddTool(ID_COORDINATE_SYSTEM, ToolImage("coordsys")) #
Create a coordinate system
        m_geometryBar.AddTool(ID_DIMENSIONING, ToolImage("dimension")) # Add
a dimension
        
        m_solidBar = wx.ToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize,
wx.TB_NODIVIDER | wx.TB_FLAT)
        m_solidBar.AddTool(ID_SPHERE, ToolImage("sphere")) # Add a sphere
        m_solidBar.AddTool(ID_CUBE, ToolImage("cube")) # Add a cube
        m_solidBar.AddTool(ID_CYL, ToolImage("cyl")) # Add a cylinder
        m_solidBar.AddTool(ID_CONE, ToolImage("cone")) # Add a cone
        m_solidBar.AddTool(ID_RULED_SURFACE, ToolImage("ruled")) # Create a 
lofted face
        m_solidBar.AddTool(ID_EXTRUDE, ToolImage("extrude")) # Extrude a wire 
or face.
        m_solidBar.AddTool(ID_SUBTRACT, ToolImage("subtract")) # Cut one
solid from another.
        m_solidBar.AddTool(ID_FUSE, ToolImage("fuse")) # Fuse one solid to 
another
        m_solidBar.AddTool(ID_COMMON, ToolImage("common")) # Find common
solid between two solids.
        m_solidBar.AddTool(ID_FILLET, ToolImage("fillet")) # Make a fillet on
selected edges.
        m_solidBar.AddTool(ID_CHAMFER, ToolImage("chamfer")) # Make a chamfer
on selected edges.
        
        m_viewingBar = wx.ToolBar(self, -1, wx.DefaultPosition,
wx.DefaultSize, wx.TB_NODIVIDER | wx.TB_FLAT)
        m_viewingBar.AddTool(ID_MAG_PREVIOUS, ToolImage("magprev")) # Go back
to previous view
        m_viewingBar.AddTool(ID_MAG, ToolImage("mag")) # Zoom in to a dragged 
window
        m_viewingBar.AddTool(ID_MAG_EXTENTS, ToolImage("magextents")) # Zoom
in to fit the extents of the drawing into the graphics window
        m_viewingBar.AddTool(ID_MAG_NO_ROT, ToolImage("magnorot")) # Zoom in
to fit the extents of the drawing into the graphics window, but
without rotating the view
        m_viewingBar.AddTool(ID_VIEW_ROT, ToolImage("viewrot")) # Enter view
rotating mode
        m_viewingBar.AddTool(ID_VIEW_ZOOM, ToolImage("zoom")) # Drag to zoom in 
and out
        m_viewingBar.AddTool(ID_FULL_SCREEN, ToolImage("fullscreen")) #
Switch to full screen view (press escape to return)
        m_viewingBar.AddTool(ID_REDRAW, ToolImage("redraw")) # Redraw
        
        m_transformBar = wx.ToolBar(self, -1, wx.DefaultPosition,
wx.DefaultSize, wx.TB_NODIVIDER | wx.TB_FLAT)
        m_transformBar.AddTool(ID_MOVE_TRANSLATE, ToolImage("movet")) #
Translate selected items
        m_transformBar.AddTool(ID_COPY_TRANSLATE, ToolImage("copyt")) # Copy
and translate selected items
        m_transformBar.AddTool(ID_MOVE_ROTATE, ToolImage("mover")) # Rotate
selected items
        m_transformBar.AddTool(ID_COPY_ROTATE, ToolImage("copyr")) # Copy and
rotate selected items
        m_transformBar.AddTool(ID_MOVE_MIRROR, ToolImage("movem")) # Mirror
selected items
        m_transformBar.AddTool(ID_COPY_MIRROR, ToolImage("copym")) # Copy and
mirror selected items
        m_transformBar.AddTool(ID_MOVE_SCALE, ToolImage("moves")) # Scale
selected items
        
        m_toolBar2.SetMinSize(wx.Size(24,24))
        m_toolBar2.Realize()
        m_geometryBar.SetMinSize(wx.Size(24,24))
        m_geometryBar.Realize()
        m_solidBar.SetMinSize(wx.Size(24,24))
        m_solidBar.Realize()
        m_viewingBar.SetMinSize(wx.Size(24,24))
        m_viewingBar.Realize()
        m_transformBar.SetMinSize(wx.Size(24,24))
        m_transformBar.Realize()
        
        #self._mgr.AddPane(m_toolBar2,
wx.aui.AuiPaneInfo().Name("toolBar").Caption("Tools").ToolbarPane().Top().TopDockable(True).BottomDockable(True))
        self._mgr.AddPane(m_geometryBar,
wx.aui.AuiPaneInfo().Name("geometryBar").Caption("Geometry").ToolbarPane().Top().TopDockable(True).BottomDockable(True))
        self._mgr.AddPane(m_solidBar,
wx.aui.AuiPaneInfo().Name("solidBar").Caption("Solids").ToolbarPane().Top().TopDockable(True).BottomDockable(True))
        self._mgr.Update()
        #self._mgr.AddPane(m_viewingBar,
wx.aui.AuiPaneInfo().Name("viewingBar").Caption("Viewing").ToolbarPane().Top().TopDockable(True).BottomDockable(True))
        self._mgr.AddPane(m_transformBar,
wx.aui.AuiPaneInfo().Name("transformBar").Caption("Transforms").ToolbarPane().Top().TopDockable(True).BottomDockable(True))
        #self._mgr.Update()

        self.tb = self.CreateRightToolbar()
        self._mgr.AddPane(self.tb,
wx.aui.AuiPaneInfo().Name("View").Caption("View").ToolbarPane().Top().TopDockable(True).BottomDockable(True))

        self._mgr.Update()
        self._mgr.GetPane("Help").MinSize((-1,-1)) # now make it so
that the help pane can be resized
---------------------------

An earlier version of this code, where I put those modifications into
CreateRightToolBar(), can be found here:
http://heybryan.org/books/Manufacturing/pythonocc/iviewer.py

The latest version with the modifications listed above can be found here:
http://heybryan.org/books/Manufacturing/pythonocc/iviewer2.py

Some code that I've been testing with is self._mgr.AllPanes and then
assigning self._mgr.AllPanes[0..6] to separate variables and printing
their 'name' attribute. In most cases, I'm not finding all of the
panes that I had added. How strange. Any hints? Also, be sure to check
out 'HeeksFrame.cpp' for some reference code:

http://heekscad.googlecode.com/svn-history/r26/trunk/src/HeeksFrame.cpp

- Bryan
http://heybryan.org/
1 512 203 0507

_______________________________________________
Pythonocc-users mailing list
Pythonocc-users@gna.org
https://mail.gna.org/listinfo/pythonocc-users

Reply via email to