/[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 270 by bh, Thu Aug 22 13:46:46 2002 UTC revision 310 by bh, Tue Sep 10 16:45:22 2002 UTC
# Line 193  class MainWindow(wxFrame): Line 193  class MainWindow(wxFrame):
193              else:              else:
194                  print "Unknown command %s" % name                  print "Unknown command %s" % name
195    
196        def Context(self):
197            """Return the context object for a command invoked from this window
198            """
199            return Context(self.application, self.application.Session(), self)
200    
201      def invoke_command(self, event):      def invoke_command(self, event):
202          name = self.id_to_name.get(event.GetId())          name = self.id_to_name.get(event.GetId())
203          if name is not None:          if name is not None:
204              command = registry.Command(name)              command = registry.Command(name)
205              context = Context(self.application, self.application.Session(),              command.Execute(self.Context())
                               self)  
             command.Execute(context)  
206          else:          else:
207              print "Unknown command ID %d" % event.GetId()              print "Unknown command ID %d" % event.GetId()
208    
209      def update_command_ui(self, event):      def update_command_ui(self, event):
210          #print "update_command_ui", self.id_to_name[event.GetId()]          #print "update_command_ui", self.id_to_name[event.GetId()]
211          context = Context(self.application, self.application.Session(), self)          context = self.Context()
212          command = registry.Command(self.id_to_name[event.GetId()])          command = registry.Command(self.id_to_name[event.GetId()])
213          if command is not None:          if command is not None:
214              event.Enable(command.Sensitive(context))              event.Enable(command.Sensitive(context))
# Line 306  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 357  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 435  class MainWindow(wxFrame): Line 459  class MainWindow(wxFrame):
459              name = "table_view" + str(id(table))              name = "table_view" + str(id(table))
460              dialog = self.get_open_dialog(name)              dialog = self.get_open_dialog(name)
461              if dialog is None:              if dialog is None:
462                  dialog = tableview.TableFrame(self, self.interactor, name,                  dialog = tableview.LayerTableFrame(self, self.interactor, name,
463                                                "Table: %s" % layer.Title(),                                                     "Table: %s" % layer.Title(),
464                                                layer, table)                                                     layer, table)
465                  self.add_dialog(name, dialog)                  self.add_dialog(name, dialog)
466                  dialog.Show(true)                  dialog.Show(true)
467              else:              else:
# Line 523  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 554  _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 572  _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.270  
changed lines
  Added in v.310

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26