/[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 312 by bh, Wed Sep 11 13:59:37 2002 UTC revision 363 by jonathan, Mon Jan 27 11:40:13 2003 UTC
# Line 26  import view Line 26  import view
26  import tree  import tree
27  import proj4dialog  import proj4dialog
28  import tableview, identifyview  import tableview, identifyview
29    import classifier
30  from menu import Menu  from menu import Menu
31    
32  from context import Context  from context import Context
33  from command import registry, Command  from command import registry, Command, ToolCommand
34  from messages import SELECTED_SHAPE, VIEW_POSITION  from messages import SELECTED_SHAPE, VIEW_POSITION
35    
36    
# Line 112  class MainWindow(wxFrame): Line 113  class MainWindow(wxFrame):
113          return menu_bar          return menu_bar
114    
115      def build_menu(self, menudesc):      def build_menu(self, menudesc):
116          """Build and return a wxMenu from a menudescription"""          """Return a wxMenu built from the menu description menudesc"""
117          wxmenu = wxMenu()          wxmenu = wxMenu()
118          last = None          last = None
119          for item in menudesc.items:          for item in menudesc.items:
             # here the items must all be Menu instances themselves  
120              if item is None:              if item is None:
121                  # a separator. Only add one if the last item was not a                  # a separator. Only add one if the last item was not a
122                  # separator                  # separator
# Line 211  class MainWindow(wxFrame): Line 211  class MainWindow(wxFrame):
211          context = self.Context()          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))              sensitive = command.Sensitive(context)
215                event.Enable(sensitive)
216                if command.IsTool() and not sensitive and command.Checked(context):
217                    # When a checked tool command is disabled deselect all
218                    # tools. Otherwise the tool would remain active but it
219                    # might lead to errors if the tools stays active. This
220                    # problem occurred in GREAT-ER and this fixes it, but
221                    # it's not clear to me whether this is really the best
222                    # way to do it (BH, 20021206).
223                    self.canvas.SelectTool(None)
224              event.SetText(command.DynText(context))              event.SetText(command.DynText(context))
225              if command.IsCheckCommand():              if command.IsCheckCommand():
226                  event.Check(command.Checked(context))                      event.Check(command.Checked(context))
227    
228      def RunMessageBox(self, title, text, flags = wxOK | wxICON_INFORMATION):      def RunMessageBox(self, title, text, flags = wxOK | wxICON_INFORMATION):
229          """Run a modal message box with the given text, title and flags          """Run a modal message box with the given text, title and flags
230          and return the result"""          and return the result"""
231          dlg = wxMessageDialog(self, text, title, flags)          dlg = wxMessageDialog(self, text, title, flags)
232            dlg.CenterOnParent()
233          result = dlg.ShowModal()          result = dlg.ShowModal()
234          dlg.Destroy()          dlg.Destroy()
235          return result          return result
# Line 251  class MainWindow(wxFrame): Line 261  class MainWindow(wxFrame):
261              text = "(%10.10g, %10.10g)" % pos              text = "(%10.10g, %10.10g)" % pos
262          else:          else:
263              text = ""              text = ""
264            self.set_position_text(text)
265    
266        def set_position_text(self, text):
267            """Set the statusbar text showing the current position.
268    
269            By default the text is shown in field 0 of the status bar.
270            Override this method in derived classes to put it into a
271            different field of the statusbar.
272            """
273          self.SetStatusText(text)          self.SetStatusText(text)
274    
275      def save_modified_session(self, can_veto = 1):      def save_modified_session(self, can_veto = 1):
# Line 337  class MainWindow(wxFrame): Line 356  class MainWindow(wxFrame):
356          self.RunMessageBox("About",          self.RunMessageBox("About",
357                             ("Thuban is a program for\n"                             ("Thuban is a program for\n"
358                              "exploring geographic data.\n"                              "exploring geographic data.\n"
359                              "Copyright (C) 2001 Intevation GmbH.\n"                              "Copyright (C) 2001, 2002 Intevation GmbH.\n"
360                              "Thuban is licensed under the GPL"),                              "Thuban is licensed under the GPL"),
361                             wxOK | wxICON_INFORMATION)                             wxOK | wxICON_INFORMATION)
362    
# Line 485  class MainWindow(wxFrame): Line 504  class MainWindow(wxFrame):
504              map.SetProjection(proj)              map.SetProjection(proj)
505          proj4Dlg.Destroy()          proj4Dlg.Destroy()
506    
507        def Classify(self):
508            classifyDlg = classifier.Classifier(NULL, self.current_layer())
509    
510            classifyDlg.ShowModal()
511            classifyDlg.Destroy()
512    
513      def ZoomInTool(self):      def ZoomInTool(self):
514          self.canvas.ZoomInTool()          self.canvas.ZoomInTool()
515    
# Line 549  def make_check_current_tool(toolname): Line 574  def make_check_current_tool(toolname):
574  def _tool_command(name, title, method, toolname, helptext = "",  def _tool_command(name, title, method, toolname, helptext = "",
575                    icon = "", sensitive = None):                    icon = "", sensitive = None):
576      """Add a tool command"""      """Add a tool command"""
577      registry.Add(Command(name, title, call_method, args=(method,),      registry.Add(ToolCommand(name, title, call_method, args=(method,),
578                           helptext = helptext, icon = icon,                               helptext = helptext, icon = icon,
579                           checked = make_check_current_tool(toolname),                               checked = make_check_current_tool(toolname),
580                           sensitive = sensitive))                               sensitive = sensitive))
581    
582  def _has_selected_layer(context):  def _has_selected_layer(context):
583      """Return true if a layer is selected in the context"""      """Return true if a layer is selected in the context"""
# Line 593  _method_command("help_about", "&About", Line 618  _method_command("help_about", "&About",
618  # Map menu  # Map menu
619  _method_command("map_projection", "Pro&jection", "Projection")  _method_command("map_projection", "Pro&jection", "Projection")
620    
621    
622  _tool_command("map_zoom_in_tool", "&Zoom in", "ZoomInTool", "ZoomInTool",  _tool_command("map_zoom_in_tool", "&Zoom in", "ZoomInTool", "ZoomInTool",
623                helptext = "Switch to map-mode 'zoom-in'", icon = "zoom_in",                helptext = "Switch to map-mode 'zoom-in'", icon = "zoom_in",
624                sensitive = _has_visible_map)                sensitive = _has_visible_map)
# Line 648  _method_command("layer_show_table", "Sho Line 674  _method_command("layer_show_table", "Sho
674                  helptext = "Show the selected layer's table",                  helptext = "Show the selected layer's table",
675                  sensitive = _has_selected_layer)                  sensitive = _has_selected_layer)
676    
677    _method_command("layer_classifier", "Classify", "Classify",
678                    sensitive = _has_selected_layer)
679    
680  # the menu structure  # the menu structure
681  main_menu = Menu("<main>", "<main>",  main_menu = Menu("<main>", "<main>",
# Line 675  main_menu = Menu("<main>", "<main>", Line 703  main_menu = Menu("<main>", "<main>",
703                          None,                          None,
704                          "layer_show", "layer_hide",                          "layer_show", "layer_hide",
705                          None,                          None,
706                          "layer_show_table"]),                          "layer_show_table",
707                            None,
708                            "layer_classifier"]),
709                    Menu("help", "&Help",                    Menu("help", "&Help",
710                         ["help_about"])])                         ["help_about"])])
711    
712  # the main toolbar  # the main toolbar
713    
714  main_toolbar = Menu("<toolbar>", "<toolbar>",  main_toolbar = Menu("<toolbar>", "<toolbar>",
715                      ["map_zoom_in_tool", "map_zoom_out_tool", "map_pan_tool",                      ["map_zoom_in_tool", "map_zoom_out_tool", "map_pan_tool",
716                       "map_identify_tool", "map_label_tool", "map_full_extent"])                       "map_full_extent", None,
717                         "map_identify_tool", "map_label_tool"])

Legend:
Removed from v.312  
changed lines
  Added in v.363

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26