/[thuban]/branches/WIP-pyshapelib-bramz/Thuban/UI/projdialog.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/Thuban/UI/projdialog.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1579 by bh, Tue Aug 12 12:34:07 2003 UTC revision 1795 by bh, Wed Oct 8 17:35:52 2003 UTC
# Line 13  __version__ = "$Revision$" Line 13  __version__ = "$Revision$"
13  # $Source$  # $Source$
14  # $Id$  # $Id$
15    
16  import os, sys, math  import os
17  from wxPython.wx import *  from wxPython.wx import *
18    
19  from Thuban import _  from Thuban import _
20    
21  from Thuban.Model.proj import Projection, ProjFile  from Thuban.Model.proj import Projection, ProjFile
22    
23  from Thuban.Model.resource import get_user_proj_files, get_system_proj_files, \  from Thuban.Model.resource import get_user_proj_file, get_system_proj_file, \
24                                    read_proj_file, write_proj_file                                    read_proj_file, write_proj_file
25  from Thuban.UI.dialogs import NonModalNonParentDialog  from Thuban.UI.dialogs import NonModalNonParentDialog
26    
# Line 207  class ProjFrame(NonModalNonParentDialog) Line 207  class ProjFrame(NonModalNonParentDialog)
207      def _OnProjAvail(self, event):      def _OnProjAvail(self, event):
208          self.__DoOnProjAvail()          self.__DoOnProjAvail()
209    
210        def show_warnings(self, title, filename, warnings):
211            """Show the warnings (a list of strings) in a dialog
212    
213            If the list is empty no dialog will be shown.
214            """
215            if warnings:
216                text = (_('Warnings when reading "%s":\n\n%s')
217                        % (filename, "\n\n".join(warnings)))
218                self.parent.RunMessageBox(title, text)
219    
220      def _OnImport(self, event):      def _OnImport(self, event):
221    
222          dlg = wxFileDialog(self, _("Import"), style = wxOPEN)          dlg = wxFileDialog(self, _("Import"), style = wxOPEN)
# Line 215  class ProjFrame(NonModalNonParentDialog) Line 225  class ProjFrame(NonModalNonParentDialog)
225              path = dlg.GetPath()              path = dlg.GetPath()
226    
227              try:              try:
228                  projFile = read_proj_file(path)                  projFile, warnings = read_proj_file(path)
229                    self.show_warnings(_("Warnings"), path, warnings)
230                  for proj in projFile.GetProjections():                  for proj in projFile.GetProjections():
231                      self.__usrProjFile.Add(proj)                      self.__usrProjFile.Add(proj)
232                  write_proj_file(self.__usrProjFile)                  write_proj_file(self.__usrProjFile)
# Line 394  class ProjFrame(NonModalNonParentDialog) Line 405  class ProjFrame(NonModalNonParentDialog)
405                  i = 0                  i = 0
406                  for projType, name, clazz in self.projPanels:                  for projType, name, clazz in self.projPanels:
407                      if myProjType == projType:                      if myProjType == projType:
408                            self.projchoice.Enable(True)
409                          self.projchoice.SetSelection(i)                          self.projchoice.SetSelection(i)
410                          self.__DoOnProjChoice()                          self.__DoOnProjChoice()
411    
# Line 404  class ProjFrame(NonModalNonParentDialog) Line 416  class ProjFrame(NonModalNonParentDialog)
416                          assert self.curProjPanel is not None                          assert self.curProjPanel is not None
417    
418                          self.curProjPanel.SetProjection(proj)                          self.curProjPanel.SetProjection(proj)
419                            break
420                      i += 1                      i += 1
421                    else:
422                        self.projchoice.Disable()
423                        self._show_proj_panel(UnknownProjPanel(self.panel_edit,
424                                                               self.receiver))
425    
426          self.__VerifyButtons()          self.__VerifyButtons()
427    
# Line 426  class ProjFrame(NonModalNonParentDialog) Line 443  class ProjFrame(NonModalNonParentDialog)
443    
444          sel = choice.GetSelection()          sel = choice.GetSelection()
445          if sel != -1:          if sel != -1:
   
446              clazz, obj = choice.GetClientData(sel)              clazz, obj = choice.GetClientData(sel)
   
447              if obj is None:              if obj is None:
448                  obj = clazz(self.panel_edit, self.receiver)                  obj = clazz(self.panel_edit, self.receiver)
449                  choice.SetClientData(sel, [clazz, obj])                  choice.SetClientData(sel, [clazz, obj])
450                self._show_proj_panel(obj)
451    
452        def _show_proj_panel(self, panel):
453            """Show the panel as the projection panel"""
454            if self.curProjPanel is not None:
455                self.curProjPanel.Hide()
456                self.sizer_projctrls.Remove(self.curProjPanel)
457    
458            self.curProjPanel = panel
459            self.curProjPanel.Show()
460    
461              if self.curProjPanel is not None:          self.sizer_projctrls.Add(self.curProjPanel, 1,
462                  self.curProjPanel.Hide()              wxALL|wxEXPAND|wxADJUST_MINSIZE, 3)
463                  self.sizer_projctrls.Remove(self.curProjPanel)          self.sizer_projctrls.Layout()
464            self.Layout()
465              self.curProjPanel = obj          self.topBox.SetSizeHints(self)
             self.curProjPanel.Show()  
   
             self.sizer_projctrls.Add(self.curProjPanel, 1,  
                 wxALL|wxEXPAND|wxADJUST_MINSIZE, 3)  
             self.sizer_projctrls.Layout()  
             self.Layout()  
             self.topBox.SetSizeHints(self)  
466    
467      def __SetProjection(self):      def __SetProjection(self):
468          """Set the receiver's projection."""          """Set the receiver's projection."""
# Line 500  class ProjFrame(NonModalNonParentDialog) Line 518  class ProjFrame(NonModalNonParentDialog)
518          #          #
519          self.availprojs.Append("<None>", (None, None))          self.availprojs.Append("<None>", (None, None))
520    
521          projfile = get_system_proj_files()          projfile, warnings = get_system_proj_file()
522          projfile = projfile[0]          self.show_warnings(_("Warnings"), projfile.GetFilename(), warnings)
523          for proj in projfile.GetProjections():          for proj in projfile.GetProjections():
524              self.availprojs.Append(proj.GetName(), [proj, projfile])              self.availprojs.Append(proj.GetName(), [proj, projfile])
525          self.__sysProjFile = projfile          self.__sysProjFile = projfile
526    
527          projfile = get_user_proj_files()          projfile, warnings = get_user_proj_file()
528          projfile = projfile[0]          self.show_warnings(_("Warnings"), projfile.GetFilename(), warnings)
529          for proj in projfile.GetProjections():          for proj in projfile.GetProjections():
530              self.availprojs.Append(proj.GetName(), [proj, projfile])              self.availprojs.Append(proj.GetName(), [proj, projfile])
531          self.__usrProjFile = projfile          self.__usrProjFile = projfile
# Line 544  class ProjFrame(NonModalNonParentDialog) Line 562  class ProjFrame(NonModalNonParentDialog)
562    
563          self.__FillAvailList(selectCurrent = True)          self.__FillAvailList(selectCurrent = True)
564    
         self.projname.SetMaxLength(32)  
   
565      def __do_layout(self):      def __do_layout(self):
566          # originally generated by wxGlade          # originally generated by wxGlade
567    
# Line 690  ID_TMPANEL_FALSE_NORTH = 4004 Line 706  ID_TMPANEL_FALSE_NORTH = 4004
706  ID_TMPANEL_SCALE = 4005  ID_TMPANEL_SCALE = 4005
707    
708  class UnknownProjPanel(ProjPanel):  class UnknownProjPanel(ProjPanel):
709    
710        """Panel for unknown projection types"""
711    
712      def __init__(self, parent, receiver):      def __init__(self, parent, receiver):
713          ProjPanel.__init__(self, parent)          ProjPanel.__init__(self, parent)
714    
# Line 700  class UnknownProjPanel(ProjPanel): Line 719  class UnknownProjPanel(ProjPanel):
719    
720          sizer.Add(wxStaticText(self, -1,          sizer.Add(wxStaticText(self, -1,
721                                 _("Thuban does not know the parameters for the"                                 _("Thuban does not know the parameters for the"
722                                   " current projection and cannot display a"                                   " current projection\n"
723                                   " configuration panel.")))                                   "and cannot display a configuration panel.")))
724    
725          ProjPanel._DoLayout(self, sizer)          ProjPanel._DoLayout(self, sizer)
726    

Legend:
Removed from v.1579  
changed lines
  Added in v.1795

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26