/[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 911 by frank, Fri May 16 16:24:17 2003 UTC revision 1001 by frank, Thu May 22 19:40:27 2003 UTC
# Line 19  __ThubanVersion__ = "0.2" #"$THUBAN_0_2$ Line 19  __ThubanVersion__ = "0.2" #"$THUBAN_0_2$
19  import os  import os
20    
21  from wxPython.wx import *  from wxPython.wx import *
22    from wxPython.wx import __version__ as wxPython_version
23    
24  import Thuban  import Thuban
25    import Thuban.version
26    
27  from Thuban import _  from Thuban import _
28  from Thuban.Model.session import create_empty_session  from Thuban.Model.session import create_empty_session
29  from Thuban.Model.layer import Layer  from Thuban.Model.layer import Layer, RasterLayer
30  from Thuban.Model.color import Color  from Thuban.Model.color import Color
31  from Thuban.Model.proj import Projection  from Thuban.Model.proj import Projection
32    
# Line 101  class MainWindow(DockFrame): Line 104  class MainWindow(DockFrame):
104    
105          self.init_dialogs()          self.init_dialogs()
106    
107          EVT_CLOSE(self, self._OnClose)          EVT_CLOSE(self, self.OnClose)
108    
109      def Subscribe(self, channel, *args):      def Subscribe(self, channel, *args):
110          """Subscribe a function to a message channel.          """Subscribe a function to a message channel.
# Line 360  class MainWindow(DockFrame): Line 363  class MainWindow(DockFrame):
363                  d.Close()                  d.Close()
364    
365      def NewSession(self):      def NewSession(self):
366          self.save_modified_session()          if self.save_modified_session() != wxID_CANCEL:
367          self.prepare_new_session()              self.prepare_new_session()
368          self.application.SetSession(create_empty_session())              self.application.SetSession(create_empty_session())
369    
370      def OpenSession(self):      def OpenSession(self):
371          self.save_modified_session()          if self.save_modified_session() != wxID_CANCEL:
372          dlg = wxFileDialog(self, _("Open Session"), ".", "",              dlg = wxFileDialog(self, _("Open Session"), ".", "",
373                             "Thuban Session File (*.thuban)|*.thuban", wxOPEN)                                 "Thuban Session File (*.thuban)|*.thuban",
374          if dlg.ShowModal() == wxID_OK:                                 wxOPEN)
375              self.prepare_new_session()              if dlg.ShowModal() == wxID_OK:
376              self.application.OpenSession(dlg.GetPath())                  self.prepare_new_session()
377          dlg.Destroy()                  self.application.OpenSession(dlg.GetPath())
378                dlg.Destroy()
379    
380      def SaveSession(self):      def SaveSession(self):
381          if self.application.session.filename == None:          if self.application.session.filename == None:
# Line 391  class MainWindow(DockFrame): Line 395  class MainWindow(DockFrame):
395      def Exit(self):      def Exit(self):
396          self.Close(False)          self.Close(False)
397    
398      def _OnClose(self, event):      def OnClose(self, event):
399          result = self.save_modified_session(can_veto = event.CanVeto())          result = self.save_modified_session(can_veto = event.CanVeto())
400          if result == wxID_CANCEL:          if result == wxID_CANCEL:
401              event.Veto()              event.Veto()
# Line 400  class MainWindow(DockFrame): Line 404  class MainWindow(DockFrame):
404              # wx's destroy event, but that isn't implemented for wxGTK              # wx's destroy event, but that isn't implemented for wxGTK
405              # yet.              # yet.
406              self.canvas.Unsubscribe(VIEW_POSITION, self.view_position_changed)              self.canvas.Unsubscribe(VIEW_POSITION, self.view_position_changed)
407              DockFrame._OnClose(self, event)              DockFrame.OnClose(self, event)
408              self.Destroy()              self.Destroy()
409    
410      def SetMap(self, map):      def SetMap(self, map):
# Line 433  class MainWindow(DockFrame): Line 437  class MainWindow(DockFrame):
437    
438      def About(self):      def About(self):
439          self.RunMessageBox(_("About"),          self.RunMessageBox(_("About"),
440                             _("Thuban v%s\n"                             _("Thuban %s\n"
441                              #"Build Date: %s\n"                              #"Build Date: %s\n"
442                              "\n"                              "using:\n"
443                                "  %s\n"
444                                "  %s\n\n"
445                              "Thuban is a program for\n"                              "Thuban is a program for\n"
446                              "exploring geographic data.\n"                              "exploring geographic data.\n"
447                              "Copyright (C) 2001-2003 Intevation GmbH.\n"                              "Copyright (C) 2001-2003 Intevation GmbH.\n"
448                              "Thuban is licensed under the GNU GPL"                              "Thuban is licensed under the GNU GPL"
449                             % __ThubanVersion__), #__BuildDate__)),                              % (Thuban.version.longversion,
450                                   "wxPython %s" % wxPython_version,
451                                   "Python %d.%d.%d" % sys.version_info[:3]
452                                  )),
453    #                           % __ThubanVersion__), #__BuildDate__)),
454                             wxOK | wxICON_INFORMATION)                             wxOK | wxICON_INFORMATION)
455    
456      def AddLayer(self):      def AddLayer(self):
# Line 449  class MainWindow(DockFrame): Line 459  class MainWindow(DockFrame):
459          if dlg.ShowModal() == wxID_OK:          if dlg.ShowModal() == wxID_OK:
460              filename = dlg.GetPath()              filename = dlg.GetPath()
461              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)  
462              map = self.canvas.Map()              map = self.canvas.Map()
463              has_layers = map.HasLayers()              has_layers = map.HasLayers()
464              try:              try:
465                  map.AddLayer(layer)                  store = self.application.Session().OpenShapefile(filename)
466              except IOError:              except IOError:
467                  # the layer couldn't be opened                  # the layer couldn't be opened
468                  self.RunMessageBox(_("Add Layer"),                  self.RunMessageBox(_("Add Layer"),
469                                     _("Can't open the file '%s'.") % filename)                                     _("Can't open the file '%s'.") % filename)
470              else:              else:
471                    layer = Layer(title, store)
472                    map.AddLayer(layer)
473                    if not has_layers:
474                        # if we're adding a layer to an empty map, fit the
475                        # new map to the window
476                        self.canvas.FitMapToWindow()
477            dlg.Destroy()
478    
479        def AddRasterLayer(self):
480            dlg = wxFileDialog(self, _("Select an image file"), ".", "", "*.*",
481                               wxOPEN)
482            if dlg.ShowModal() == wxID_OK:
483                filename = dlg.GetPath()
484                title = os.path.splitext(os.path.basename(filename))[0]
485                map = self.canvas.Map()
486                has_layers = map.HasLayers()
487                try:
488                    layer = RasterLayer(title, filename)
489                except IOError:
490                    # the layer couldn't be opened
491                    self.RunMessageBox(_("Add Image Layer"),
492                                       _("Can't open the file '%s'.") % filename)
493                else:
494                    map.AddLayer(layer)
495                  if not has_layers:                  if not has_layers:
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
# Line 636  class MainWindow(DockFrame): Line 668  class MainWindow(DockFrame):
668          print "TableHide"          print "TableHide"
669    
670      def TableJoin(self):      def TableJoin(self):
         print "TableJoin"  
671          dlg = JoinDialog(self, _("Join Tables"), self.application.session)          dlg = JoinDialog(self, _("Join Tables"), self.application.session)
672          if dlg.ShowModal() == wxID_OK:          dlg.ShowModal()
             print "OK"  
673    
674      def ZoomInTool(self):      def ZoomInTool(self):
675          self.canvas.ZoomInTool()          self.canvas.ZoomInTool()
# Line 828  _method_command("map_rename", _("&Rename Line 858  _method_command("map_rename", _("&Rename
858                  helptext = _("Rename the map"))                  helptext = _("Rename the map"))
859  _method_command("layer_add", _("&Add Layer..."), "AddLayer",  _method_command("layer_add", _("&Add Layer..."), "AddLayer",
860                  helptext = _("Add a new layer to active map"))                  helptext = _("Add a new layer to active map"))
861    _method_command("rasterlayer_add", _("&Add Image Layer..."), "AddRasterLayer",
862                    helptext = _("Add a new image layer to active map"))
863  _method_command("layer_remove", _("&Remove Layer"), "RemoveLayer",  _method_command("layer_remove", _("&Remove Layer"), "RemoveLayer",
864                  helptext = _("Remove selected layer(s)"),                  helptext = _("Remove selected layer(s)"),
865                  sensitive = _can_remove_layer)                  sensitive = _can_remove_layer)
# Line 865  _method_command("table_hide", _("&Hide") Line 897  _method_command("table_hide", _("&Hide")
897  _method_command("table_join", _("&Join..."), "TableJoin")  _method_command("table_join", _("&Join..."), "TableJoin")
898    
899  #  Export only under Windows ...  #  Export only under Windows ...
900  map_menu = ["layer_add", "layer_remove", "map_rename",  map_menu = ["layer_add", "rasterlayer_add", "layer_remove", "map_rename",
901                          None,                          None,
902                          "map_projection",                          "map_projection",
903                          None,                          None,

Legend:
Removed from v.911  
changed lines
  Added in v.1001

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26