/[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 1782 by bh, Mon Oct 6 17:31:54 2003 UTC revision 2061 by bh, Fri Feb 13 10:46:44 2004 UTC
# Line 1  Line 1 
1  # Copyright (C) 2001, 2002, 2003 by Intevation GmbH  # Copyright (C) 2001, 2002, 2003, 2004 by Intevation GmbH
2  # Authors:  # Authors:
3  # Jan-Oliver Wagner <[email protected]>  # Jan-Oliver Wagner <[email protected]>
4  # Bernhard Herzog <[email protected]>  # Bernhard Herzog <[email protected]>
# Line 134  class MainWindow(DockFrame): Line 134  class MainWindow(DockFrame):
134          """          """
135          if channel in self.delegated_messages:          if channel in self.delegated_messages:
136              object = getattr(self, self.delegated_messages[channel])              object = getattr(self, self.delegated_messages[channel])
137              object.Unsubscribe(channel, *args)              try:
138                    object.Unsubscribe(channel, *args)
139                except wxPyDeadObjectError:
140                    # The object was a wxObject and has already been
141                    # destroyed. Hopefully it has unsubscribed all its
142                    # subscribers already so that it's OK if we do nothing
143                    # here
144                    pass
145    
146      def __getattr__(self, attr):      def __getattr__(self, attr):
147          """If attr is one of the delegated methods return that method          """If attr is one of the delegated methods return that method
# Line 371  class MainWindow(DockFrame): Line 378  class MainWindow(DockFrame):
378    
379      def OpenSession(self):      def OpenSession(self):
380          if self.save_modified_session() != wxID_CANCEL:          if self.save_modified_session() != wxID_CANCEL:
381              dlg = wxFileDialog(self, _("Open Session"), ".", "",              dlg = wxFileDialog(self, _("Open Session"),
382                                   self.application.Path("data"), "",
383                                 "Thuban Session File (*.thuban)|*.thuban",                                 "Thuban Session File (*.thuban)|*.thuban",
384                                 wxOPEN)                                 wxOPEN)
385              if dlg.ShowModal() == wxID_OK:              if dlg.ShowModal() == wxID_OK:
386                  self.application.OpenSession(dlg.GetPath(),                  self.application.OpenSession(dlg.GetPath(),
387                                               self.run_db_param_dialog)                                               self.run_db_param_dialog)
388                    self.application.SetPath("data", dlg.GetPath())
389              dlg.Destroy()              dlg.Destroy()
390    
391      def run_db_param_dialog(self, parameters, message):      def run_db_param_dialog(self, parameters, message):
# Line 391  class MainWindow(DockFrame): Line 400  class MainWindow(DockFrame):
400              self.application.SaveSession()              self.application.SaveSession()
401    
402      def SaveSessionAs(self):      def SaveSessionAs(self):
403          dlg = wxFileDialog(self, _("Save Session As"), ".", "",          dlg = wxFileDialog(self, _("Save Session As"),
404                               self.application.Path("data"), "",
405                             "Thuban Session File (*.thuban)|*.thuban",                             "Thuban Session File (*.thuban)|*.thuban",
406                             wxSAVE|wxOVERWRITE_PROMPT)                             wxSAVE|wxOVERWRITE_PROMPT)
407          if dlg.ShowModal() == wxID_OK:          if dlg.ShowModal() == wxID_OK:
408              self.application.session.SetFilename(dlg.GetPath())              self.application.session.SetFilename(dlg.GetPath())
409              self.application.SaveSession()              self.application.SaveSession()
410                self.application.SetPath("data",dlg.GetPath())
411          dlg.Destroy()          dlg.Destroy()
412    
413      def Exit(self):      def Exit(self):
# Line 461  class MainWindow(DockFrame): Line 472  class MainWindow(DockFrame):
472          dialog.Raise()          dialog.Raise()
473    
474      def AddLayer(self):      def AddLayer(self):
475          dlg = wxFileDialog(self, _("Select one or more data files"), ".", "",          dlg = wxFileDialog(self, _("Select one or more data files"),
476                             _("Shapefiles (*.shp)") + "|*.shp|" +                             self.application.Path("data"), "",
477                             _("All Files (*.*)") + "|*.*",                             _("Shapefiles (*.shp)") + "|*.shp;*.SHP|" +
478                               _("All Files (*.*)") + "|*.*",
479                             wxOPEN | wxMULTIPLE)                             wxOPEN | wxMULTIPLE)
480          if dlg.ShowModal() == wxID_OK:          if dlg.ShowModal() == wxID_OK:
481              filenames = dlg.GetPaths()              filenames = dlg.GetPaths()
# Line 484  class MainWindow(DockFrame): Line 496  class MainWindow(DockFrame):
496                          # if we're adding a layer to an empty map, fit the                          # if we're adding a layer to an empty map, fit the
497                          # new map to the window                          # new map to the window
498                          self.canvas.FitMapToWindow()                          self.canvas.FitMapToWindow()
499                        self.application.SetPath("data",filename)
500          dlg.Destroy()          dlg.Destroy()
501    
502      def AddRasterLayer(self):      def AddRasterLayer(self):
503          dlg = wxFileDialog(self, _("Select an image file"), ".", "", "*.*",          dlg = wxFileDialog(self, _("Select an image file"),
504                               self.application.Path("data"), "", "*.*",
505                             wxOPEN)                             wxOPEN)
506          if dlg.ShowModal() == wxID_OK:          if dlg.ShowModal() == wxID_OK:
507              filename = dlg.GetPath()              filename = dlg.GetPath()
# Line 506  class MainWindow(DockFrame): Line 520  class MainWindow(DockFrame):
520                      # if we're adding a layer to an empty map, fit the                      # if we're adding a layer to an empty map, fit the
521                      # new map to the window                      # new map to the window
522                      self.canvas.FitMapToWindow()                      self.canvas.FitMapToWindow()
523                    self.application.SetPath("data", filename)
524          dlg.Destroy()          dlg.Destroy()
525    
526      def AddDBLayer(self):      def AddDBLayer(self):
# Line 527  class MainWindow(DockFrame): Line 542  class MainWindow(DockFrame):
542                  self.RunMessageBox(_("Add Layer from database"),                  self.RunMessageBox(_("Add Layer from database"),
543                                     _("Can't open the database table '%s'")                                     _("Can't open the database table '%s'")
544                                     % dbtable)                                     % dbtable)
545                    return
546    
547              map = self.canvas.Map()              map = self.canvas.Map()
548    
# Line 576  class MainWindow(DockFrame): Line 592  class MainWindow(DockFrame):
592          """Return true if a layer is currently selected"""          """Return true if a layer is currently selected"""
593          return self.canvas.HasSelectedLayer()          return self.canvas.HasSelectedLayer()
594    
595        def has_selected_shape_layer(self):
596            """Return true if a shape layer is currently selected"""
597            return isinstance(self.current_layer(), Layer)
598    
599      def has_selected_shapes(self):      def has_selected_shapes(self):
600          """Return true if a shape is currently selected"""          """Return true if a shape is currently selected"""
601          return self.canvas.HasSelectedShapes()          return self.canvas.HasSelectedShapes()
# Line 711  class MainWindow(DockFrame): Line 731  class MainWindow(DockFrame):
731          return dialog is not None and dialog.IsShown()          return dialog is not None and dialog.IsShown()
732    
733      def TableOpen(self):      def TableOpen(self):
734          dlg = wxFileDialog(self, _("Open Table"), ".", "",          dlg = wxFileDialog(self, _("Open Table"),
735                               self.application.Path("data"), "",
736                             _("DBF Files (*.dbf)") + "|*.dbf|" +                             _("DBF Files (*.dbf)") + "|*.dbf|" +
737                             #_("CSV Files (*.csv)") + "|*.csv|" +                             #_("CSV Files (*.csv)") + "|*.csv|" +
738                             _("All Files (*.*)") + "|*.*",                             _("All Files (*.*)") + "|*.*",
# Line 727  class MainWindow(DockFrame): Line 748  class MainWindow(DockFrame):
748                                     _("Can't open the file '%s'.") % filename)                                     _("Can't open the file '%s'.") % filename)
749              else:              else:
750                  self.ShowTableView(table)                  self.ShowTableView(table)
751                    self.application.SetPath("data",filename)
752    
753      def TableClose(self):      def TableClose(self):
754          tables = self.application.session.UnreferencedTables()          tables = self.application.session.UnreferencedTables()
# Line 803  class MainWindow(DockFrame): Line 825  class MainWindow(DockFrame):
825    
826          # Second, let the user rename the layers          # Second, let the user rename the layers
827          for table in to_rename:          for table in to_rename:
828              dlg = wxTextEntryDialog(self, "Table Title: ", "Rename Table",              dlg = wxTextEntryDialog(self, _("Table Title:"), _("Rename Table"),
829                                      table.Title())                                      table.Title())
830              try:              try:
831                  if dlg.ShowModal() == wxID_OK:                  if dlg.ShowModal() == wxID_OK:
# Line 852  class MainWindow(DockFrame): Line 874  class MainWindow(DockFrame):
874          self.canvas.Print()          self.canvas.Print()
875    
876      def RenameMap(self):      def RenameMap(self):
877          dlg = wxTextEntryDialog(self, "Map Title: ", "Rename Map",          dlg = wxTextEntryDialog(self, _("Map Title:"), _("Rename Map"),
878                                  self.Map().Title())                                  self.Map().Title())
879          if dlg.ShowModal() == wxID_OK:          if dlg.ShowModal() == wxID_OK:
880              title = dlg.GetValue()              title = dlg.GetValue()
# Line 865  class MainWindow(DockFrame): Line 887  class MainWindow(DockFrame):
887          """Let the user rename the currently selected layer"""          """Let the user rename the currently selected layer"""
888          layer = self.current_layer()          layer = self.current_layer()
889          if layer is not None:          if layer is not None:
890              dlg = wxTextEntryDialog(self, "Layer Title: ", "Rename Layer",              dlg = wxTextEntryDialog(self, _("Layer Title:"), _("Rename Layer"),
891                                      layer.Title())                                      layer.Title())
892              try:              try:
893                  if dlg.ShowModal() == wxID_OK:                  if dlg.ShowModal() == wxID_OK:
# Line 964  def _has_selected_layer(context): Line 986  def _has_selected_layer(context):
986      """Return true if a layer is selected in the context"""      """Return true if a layer is selected in the context"""
987      return context.mainwindow.has_selected_layer()      return context.mainwindow.has_selected_layer()
988    
989    def _has_selected_shape_layer(context):
990        """Return true if a shape layer is selected in the context"""
991        return context.mainwindow.has_selected_shape_layer()
992    
993  def _has_selected_shapes(context):  def _has_selected_shapes(context):
994      """Return true if a layer is selected in the context"""      """Return true if a layer is selected in the context"""
995      return context.mainwindow.has_selected_shapes()      return context.mainwindow.has_selected_shapes()
# Line 1100  _method_command("layer_hide", _("&Hide") Line 1126  _method_command("layer_hide", _("&Hide")
1126                  sensitive = _has_selected_layer)                  sensitive = _has_selected_layer)
1127  _method_command("layer_show_table", _("Show Ta&ble"), "LayerShowTable",  _method_command("layer_show_table", _("Show Ta&ble"), "LayerShowTable",
1128                  helptext = _("Show the selected layer's table"),                  helptext = _("Show the selected layer's table"),
1129                  sensitive = _has_selected_layer)                  sensitive = _has_selected_shape_layer)
1130  _method_command("layer_properties", _("&Properties..."), "LayerEditProperties",  _method_command("layer_properties", _("&Properties..."), "LayerEditProperties",
1131                  sensitive = _has_selected_layer,                  sensitive = _has_selected_layer,
1132                  helptext = _("Edit the properties of the selected layer"))                  helptext = _("Edit the properties of the selected layer"))
1133  _method_command("layer_jointable", _("&Join Table..."), "LayerJoinTable",  _method_command("layer_jointable", _("&Join Table..."), "LayerJoinTable",
1134                  sensitive = _has_selected_layer,                  sensitive = _has_selected_shape_layer,
1135                  helptext = _("Join and attach a table to the selected layer"))                  helptext = _("Join and attach a table to the selected layer"))
1136    
1137  def _can_unjoin(context):  def _can_unjoin(context):

Legend:
Removed from v.1782  
changed lines
  Added in v.2061

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26