/[thuban]/branches/WIP-pyshapelib-bramz/Thuban/UI/mainwindow.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/Thuban/UI/mainwindow.py

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

revision 281 by bh, Mon Aug 26 18:16:36 2002 UTC revision 316 by bh, Thu Sep 12 18:46:01 2002 UTC
# Line 112  class MainWindow(wxFrame): Line 112  class MainWindow(wxFrame):
112          return menu_bar          return menu_bar
113    
114      def build_menu(self, menudesc):      def build_menu(self, menudesc):
115          """Build and return a wxMenu from a menudescription"""          """Return a wxMenu built from the menu description menudesc"""
116          wxmenu = wxMenu()          wxmenu = wxMenu()
117          last = None          last = None
118          for item in menudesc.items:          for item in menudesc.items:
             # here the items must all be Menu instances themselves  
119              if item is None:              if item is None:
120                  # a separator. Only add one if the last item was not a                  # a separator. Only add one if the last item was not a
121                  # separator                  # separator
# Line 220  class MainWindow(wxFrame): Line 219  class MainWindow(wxFrame):
219          """Run a modal message box with the given text, title and flags          """Run a modal message box with the given text, title and flags
220          and return the result"""          and return the result"""
221          dlg = wxMessageDialog(self, text, title, flags)          dlg = wxMessageDialog(self, text, title, flags)
222            dlg.CenterOnParent()
223          result = dlg.ShowModal()          result = dlg.ShowModal()
224          dlg.Destroy()          dlg.Destroy()
225          return result          return result
# Line 309  class MainWindow(wxFrame): Line 309  class MainWindow(wxFrame):
309          if result == wxID_CANCEL:          if result == wxID_CANCEL:
310              event.Veto()              event.Veto()
311          else:          else:
312                # FIXME: it would be better to tie the unsubscription to
313                # wx's destroy event, but that isn't implemented for wxGTK
314                # yet.
315                self.canvas.Unsubscribe(VIEW_POSITION, self.view_position_changed)
316              self.Destroy()              self.Destroy()
317    
318      def SetMap(self, map):      def SetMap(self, map):
319          self.canvas.SetMap(map)          self.canvas.SetMap(map)
320    
321        def Map(self):
322            """Return the map displayed by this mainwindow"""
323            return self.canvas.Map()
324    
325      def ShowSessionTree(self):      def ShowSessionTree(self):
326          name = "session_tree"          name = "session_tree"
327          dialog = self.get_open_dialog(name)          dialog = self.get_open_dialog(name)
# Line 360  class MainWindow(wxFrame): Line 368  class MainWindow(wxFrame):
368          if layer is not None:          if layer is not None:
369              self.canvas.Map().RemoveLayer(layer)              self.canvas.Map().RemoveLayer(layer)
370    
371        def CanRemoveLayer(self):
372            """Return true if the currently selected layer can be deleted.
373    
374            If no layer is selected return false.
375    
376            The return value of this method determines whether the remove
377            layer command is sensitive in menu.
378            """
379            layer = self.current_layer()
380            if layer is not None:
381                return self.canvas.Map().CanRemoveLayer(layer)
382            return 0
383    
384      def RaiseLayer(self):      def RaiseLayer(self):
385          layer = self.current_layer()          layer = self.current_layer()
386          if layer is not None:          if layer is not None:
# Line 526  def make_check_current_tool(toolname): Line 547  def make_check_current_tool(toolname):
547      return check_current_tool      return check_current_tool
548    
549  def _tool_command(name, title, method, toolname, helptext = "",  def _tool_command(name, title, method, toolname, helptext = "",
550                    icon = ""):                    icon = "", sensitive = None):
551      """Add a tool command"""      """Add a tool command"""
552      registry.Add(Command(name, title, call_method, args=(method,),      registry.Add(Command(name, title, call_method, args=(method,),
553                           helptext = helptext, icon = icon,                           helptext = helptext, icon = icon,
554                           checked = make_check_current_tool(toolname)))                           checked = make_check_current_tool(toolname),
555                             sensitive = sensitive))
556    
557  def _has_selected_layer(context):  def _has_selected_layer(context):
558      """Return true if a layer is selected in the context"""      """Return true if a layer is selected in the context"""
559      return context.mainwindow.has_selected_layer()      return context.mainwindow.has_selected_layer()
560    
561    def _can_remove_layer(context):
562        return context.mainwindow.CanRemoveLayer()
563    
564  def _has_tree_window_shown(context):  def _has_tree_window_shown(context):
565      """Return true if the tree window is shown"""      """Return true if the tree window is shown"""
566      return context.mainwindow.get_open_dialog("session_tree") is None      return context.mainwindow.get_open_dialog("session_tree") is None
567    
568    def _has_visible_map(context):
569        """Return true iff theres a visible map in the mainwindow.
570    
571        A visible map is a map with at least one visible layer."""
572        map = context.mainwindow.Map()
573        if map is not None:
574            for layer in map.Layers():
575                if layer.Visible():
576                    return 1
577        return 0
578    
579    
580  # File menu  # File menu
581  _method_command("new_session", "&New Session", "NewSession")  _method_command("new_session", "&New Session", "NewSession")
582  _method_command("open_session", "&Open Session", "OpenSession")  _method_command("open_session", "&Open Session", "OpenSession")
# Line 547  _method_command("save_session", "&Save S Line 584  _method_command("save_session", "&Save S
584  _method_command("save_session_as", "Save Session &As", "SaveSessionAs")  _method_command("save_session_as", "Save Session &As", "SaveSessionAs")
585  _method_command("show_session_tree", "Show Session &Tree", "ShowSessionTree",  _method_command("show_session_tree", "Show Session &Tree", "ShowSessionTree",
586                  sensitive = _has_tree_window_shown)                  sensitive = _has_tree_window_shown)
587  _method_command("exit", "&Exit", "Exit")  _method_command("exit", "E&xit", "Exit")
588    
589  # Help menu  # Help menu
590  _method_command("help_about", "&About", "About")  _method_command("help_about", "&About", "About")
# Line 557  _method_command("help_about", "&About", Line 594  _method_command("help_about", "&About",
594  _method_command("map_projection", "Pro&jection", "Projection")  _method_command("map_projection", "Pro&jection", "Projection")
595    
596  _tool_command("map_zoom_in_tool", "&Zoom in", "ZoomInTool", "ZoomInTool",  _tool_command("map_zoom_in_tool", "&Zoom in", "ZoomInTool", "ZoomInTool",
597                helptext = "Switch to map-mode 'zoom-in'", icon = "zoom_in")                helptext = "Switch to map-mode 'zoom-in'", icon = "zoom_in",
598                  sensitive = _has_visible_map)
599  _tool_command("map_zoom_out_tool", "Zoom &out", "ZoomOutTool", "ZoomOutTool",  _tool_command("map_zoom_out_tool", "Zoom &out", "ZoomOutTool", "ZoomOutTool",
600                helptext = "Switch to map-mode 'zoom-out'", icon = "zoom_out")                helptext = "Switch to map-mode 'zoom-out'", icon = "zoom_out",
601                  sensitive = _has_visible_map)
602  _tool_command("map_pan_tool", "&Pan", "PanTool", "PanTool",  _tool_command("map_pan_tool", "&Pan", "PanTool", "PanTool",
603                helptext = "Switch to map-mode 'pan'", icon = "pan")                helptext = "Switch to map-mode 'pan'", icon = "pan",
604                  sensitive = _has_visible_map)
605  _tool_command("map_identify_tool", "&Identify", "IdentifyTool", "IdentifyTool",  _tool_command("map_identify_tool", "&Identify", "IdentifyTool", "IdentifyTool",
606                helptext = "Switch to map-mode 'identify'", icon = "identify")                helptext = "Switch to map-mode 'identify'", icon = "identify",
607                  sensitive = _has_visible_map)
608  _tool_command("map_label_tool", "&Label", "LabelTool", "LabelTool",  _tool_command("map_label_tool", "&Label", "LabelTool", "LabelTool",
609                helptext = "Add/Remove labels", icon = "label")                helptext = "Add/Remove labels", icon = "label",
610                  sensitive = _has_visible_map)
611  _method_command("map_full_extent", "&Full extent", "FullExtent",  _method_command("map_full_extent", "&Full extent", "FullExtent",
612                 helptext = "Full Extent", icon = "fullextent")                 helptext = "Full Extent", icon = "fullextent",
613                  sensitive = _has_visible_map)
614  _method_command("map_print", "Prin&t", "PrintMap", helptext = "Print the map")  _method_command("map_print", "Prin&t", "PrintMap", helptext = "Print the map")
615    
616  # Layer menu  # Layer menu
# Line 575  _method_command("layer_add", "&Add Layer Line 618  _method_command("layer_add", "&Add Layer
618                  helptext = "Add a new layer to active map")                  helptext = "Add a new layer to active map")
619  _method_command("layer_remove", "&Remove Layer", "RemoveLayer",  _method_command("layer_remove", "&Remove Layer", "RemoveLayer",
620                  helptext = "Remove selected layer(s)",                  helptext = "Remove selected layer(s)",
621                  sensitive = _has_selected_layer)                  sensitive = _can_remove_layer)
622  _method_command("layer_fill_color", "&Fill Color", "LayerFillColor",  _method_command("layer_fill_color", "&Fill Color", "LayerFillColor",
623                  helptext = "Set the fill color of selected layer(s)",                  helptext = "Set the fill color of selected layer(s)",
624                  sensitive = _has_selected_layer)                  sensitive = _has_selected_layer)

Legend:
Removed from v.281  
changed lines
  Added in v.316

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26