/[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 951 by frank, Wed May 21 14:20:32 2003 UTC revision 1056 by frank, Tue May 27 11:29:46 2003 UTC
# Line 21  import os Line 21  import os
21  from wxPython.wx import *  from wxPython.wx import *
22  from wxPython.wx import __version__ as wxPython_version  from wxPython.wx import __version__ as wxPython_version
23    
24    from wxPython.lib.dialogs import wxMultipleChoiceDialog
25    
26  import Thuban  import Thuban
27  import Thuban.version  import Thuban.version
28    
# Line 404  class MainWindow(DockFrame): Line 406  class MainWindow(DockFrame):
406              # wx's destroy event, but that isn't implemented for wxGTK              # wx's destroy event, but that isn't implemented for wxGTK
407              # yet.              # yet.
408              self.canvas.Unsubscribe(VIEW_POSITION, self.view_position_changed)              self.canvas.Unsubscribe(VIEW_POSITION, self.view_position_changed)
409              DockFrame._OnClose(self, event)              DockFrame.OnClose(self, event)
410                for dlg in self.dialogs.values():
411                    dlg.Destroy()
412                self.canvas.Destroy()
413              self.Destroy()              self.Destroy()
414    
415      def SetMap(self, map):      def SetMap(self, map):
# Line 459  class MainWindow(DockFrame): Line 464  class MainWindow(DockFrame):
464          if dlg.ShowModal() == wxID_OK:          if dlg.ShowModal() == wxID_OK:
465              filename = dlg.GetPath()              filename = dlg.GetPath()
466              title = os.path.splitext(os.path.basename(filename))[0]              title = os.path.splitext(os.path.basename(filename))[0]
             store = self.application.Session().OpenShapefile(filename)  
             layer = Layer(title, store)  
467              map = self.canvas.Map()              map = self.canvas.Map()
468              has_layers = map.HasLayers()              has_layers = map.HasLayers()
469              try:              try:
470                  map.AddLayer(layer)                  store = self.application.Session().OpenShapefile(filename)
471              except IOError:              except IOError:
472                  # the layer couldn't be opened                  # the layer couldn't be opened
473                  self.RunMessageBox(_("Add Layer"),                  self.RunMessageBox(_("Add Layer"),
474                                     _("Can't open the file '%s'.") % filename)                                     _("Can't open the file '%s'.") % filename)
475              else:              else:
476                    layer = Layer(title, store)
477                    map.AddLayer(layer)
478                  if not has_layers:                  if not has_layers:
479                      # if we're adding a layer to an empty map, fit the                      # if we're adding a layer to an empty map, fit the
480                      # new map to the window                      # new map to the window
# Line 482  class MainWindow(DockFrame): Line 487  class MainWindow(DockFrame):
487          if dlg.ShowModal() == wxID_OK:          if dlg.ShowModal() == wxID_OK:
488              filename = dlg.GetPath()              filename = dlg.GetPath()
489              title = os.path.splitext(os.path.basename(filename))[0]              title = os.path.splitext(os.path.basename(filename))[0]
             layer = RasterLayer(title, filename)  
490              map = self.canvas.Map()              map = self.canvas.Map()
491              has_layers = map.HasLayers()              has_layers = map.HasLayers()
492              try:              try:
493                  map.AddLayer(layer)                  layer = RasterLayer(title, filename)
494              except IOError:              except IOError:
495                  # the layer couldn't be opened                  # the layer couldn't be opened
496                  self.RunMessageBox(_("Add Image Layer"),                  self.RunMessageBox(_("Add Image Layer"),
497                                     _("Can't open the file '%s'.") % filename)                                     _("Can't open the file '%s'.") % filename)
498              else:              else:
499                    map.AddLayer(layer)
500                  if not has_layers:                  if not has_layers:
501                      # if we're adding a layer to an empty map, fit the                      # if we're adding a layer to an empty map, fit the
502                      # new map to the window                      # new map to the window
# Line 559  class MainWindow(DockFrame): Line 564  class MainWindow(DockFrame):
564              dialog = self.get_open_dialog(name)              dialog = self.get_open_dialog(name)
565              if dialog is None:              if dialog is None:
566                  dialog = tableview.LayerTableFrame(self, name,                  dialog = tableview.LayerTableFrame(self, name,
567                                                 _("Table: %s") % layer.Title(),                                           _("Layer Table: %s") % layer.Title(),
568                                                     layer, table)                                           layer, table)
569                  self.add_dialog(name, dialog)                  self.add_dialog(name, dialog)
570                  dialog.Show(true)                  dialog.Show(True)
571              else:              else:
572                  # FIXME: bring dialog to front here                  # FIXME: bring dialog to front here
573                  pass                  pass
# Line 617  class MainWindow(DockFrame): Line 622  class MainWindow(DockFrame):
622          dialog.Raise()          dialog.Raise()
623    
624      def LayerJoinTable(self):      def LayerJoinTable(self):
625          print "LayerJoinTable"          print "LayerJoinTable: Not implemented."
626    
627      def LayerUnjoinTable(self):      def LayerUnjoinTable(self):
628          print "LayerUnjoinTable"          print "LayerUnjoinTable: Not implemented."
629    
630      def ShowLegend(self):      def ShowLegend(self):
631          if not self.LegendShown():          if not self.LegendShown():
# Line 646  class MainWindow(DockFrame): Line 651  class MainWindow(DockFrame):
651          return dialog is not None and dialog.IsShown()          return dialog is not None and dialog.IsShown()
652    
653      def TableOpen(self):      def TableOpen(self):
         print "TableOpen"  
654          dlg = wxFileDialog(self, _("Open Table"), ".", "",          dlg = wxFileDialog(self, _("Open Table"), ".", "",
655                             "DBF Files (*.dbf)|*.dbf|" +                             _("DBF Files (*.dbf)") + "|*.dbf|" +
656                             "CSV Files (*.csv)|*.csv|" +                             #_("CSV Files (*.csv)") + "|*.csv|" +
657                             "All Files (*.*)|*.*",                             _("All Files (*.*)") + "|*.*",
658                             wxOPEN)                             wxOPEN)
659          if dlg.ShowModal() == wxID_OK:          if dlg.ShowModal() == wxID_OK:
660              #self.application.session.OpenTable(dlg.GetPath())              filename = dlg.GetPath()
661              pass              dlg.Destroy()
662                try:
663          dlg.Destroy()                  table = self.application.session.OpenTableFile(filename)
664                except IOError:
665                    # the layer couldn't be opened
666                    self.RunMessageBox(_("Open Table"),
667                                       _("Can't open the file '%s'.") % filename)
668                else:
669                    self.ShowTableView(table)
670    
671      def TableClose(self):      def TableClose(self):
672          print "TableClose"          print "TableClose: not implemented"
673    
674      def TableShow(self):      def TableShow(self):
675          print "TableShow"          """Offer a multi-selection dialog for tables to be displayed
676    
677      def TableHide(self):          The windows for the selected tables are opened or brought to
678          print "TableHide"          the front.
679            """
680            tables = self.application.session.Tables()
681    
682            dlg = wxMultipleChoiceDialog(self, _("Pick the table to show:"),
683                                         _("Show Table"),
684                                         [t.Title() for t in tables],
685                                         size = (400,300), style = wxRESIZE_BORDER)
686            if (dlg.ShowModal() == wxID_OK):
687                for i in dlg.GetValue():
688                    # XXX: if the table belongs to a layer, open a
689                    # LayerTableFrame instead of QueryTableFrame
690                    self.ShowTableView(tables[i])
691    
692      def TableJoin(self):      def TableJoin(self):
         print "TableJoin"  
693          dlg = JoinDialog(self, _("Join Tables"), self.application.session)          dlg = JoinDialog(self, _("Join Tables"), self.application.session)
694          if dlg.ShowModal() == wxID_OK:          dlg.ShowModal()
695              print "OK"  
696        def ShowTableView(self, table):
697            """Open a table view for the table and optionally"""
698            name = "table_view%d" % id(table)
699            dialog = self.get_open_dialog(name)
700            if dialog is None:
701                dialog = tableview.QueryTableFrame(self, name,
702                                                   _("Table: %s") % table.Title(),
703                                                   table)
704                self.add_dialog(name, dialog)
705                dialog.Show(True)
706            # FIXME: else bring dialog to front
707    
708      def ZoomInTool(self):      def ZoomInTool(self):
709          self.canvas.ZoomInTool()          self.canvas.ZoomInTool()
# Line 895  _method_command("layer_unjointable", _(" Line 927  _method_command("layer_unjointable", _("
927  _method_command("table_open", _("&Open..."), "TableOpen")  _method_command("table_open", _("&Open..."), "TableOpen")
928  _method_command("table_close", _("&Close"), "TableClose")  _method_command("table_close", _("&Close"), "TableClose")
929  _method_command("table_show", _("&Show"), "TableShow")  _method_command("table_show", _("&Show"), "TableShow")
 _method_command("table_hide", _("&Hide"), "TableHide")  
930  _method_command("table_join", _("&Join..."), "TableJoin")  _method_command("table_join", _("&Join..."), "TableJoin")
931    
932  #  Export only under Windows ...  #  Export only under Windows ...
# Line 940  main_menu = Menu("<main>", "<main>", Line 971  main_menu = Menu("<main>", "<main>",
971                    Menu("table", _("&Table"),                    Menu("table", _("&Table"),
972                         ["table_open", "table_close",                         ["table_open", "table_close",
973                         None,                         None,
974                         "table_show", "table_hide",                         "table_show",
975                         None,                         None,
976                         "table_join"]),                         "table_join"]),
977                    Menu("help", _("&Help"),                    Menu("help", _("&Help"),

Legend:
Removed from v.951  
changed lines
  Added in v.1056

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26