[GRASS-SVN] r48876 - grass/trunk/gui/wxpython/gui_modules

svn_grass at osgeo.org svn_grass at osgeo.org
Wed Oct 19 23:12:31 EDT 2011


Author: cmbarton
Date: 2011-10-19 20:12:31 -0700 (Wed, 19 Oct 2011)
New Revision: 48876

Modified:
   grass/trunk/gui/wxpython/gui_modules/sqlbuilder.py
Log:
Fixing so that controls work in Mac environment. StaticBox windows must be instantiated before the controls that go into them or they cannot be accessed in OSX.

Modified: grass/trunk/gui/wxpython/gui_modules/sqlbuilder.py
===================================================================
--- grass/trunk/gui/wxpython/gui_modules/sqlbuilder.py	2011-10-20 01:50:36 UTC (rev 48875)
+++ grass/trunk/gui/wxpython/gui_modules/sqlbuilder.py	2011-10-20 03:12:31 UTC (rev 48876)
@@ -66,15 +66,51 @@
 
         # set dialog title
         self.SetTitle(_("GRASS SQL Builder (%(type)s): vector map <%(map)s>") % \
-                          { 'type' : qtype.upper(), 'map' : self.vectmap })
+                          { 'type' : self.qtype.upper(), 'map' : self.vectmap })
         
         self.panel = wx.Panel(parent = self, id = wx.ID_ANY)
 
         # statusbar
         self.statusbar = self.CreateStatusBar(number=1)
         self.statusbar.SetStatusText(_("SQL statement not verified"), 0)
+       
+        self._doLayout()
 
+    def _doLayout(self):
+        """!Do dialog layout"""
+      
+        pagesizer = wx.BoxSizer(wx.VERTICAL)
+
+        
+        # dbInfo
+        databasebox = wx.StaticBox(parent = self.panel, id = wx.ID_ANY,
+                                   label = " %s " % _("Database connection"))
+        databaseboxsizer = wx.StaticBoxSizer(databasebox, wx.VERTICAL)
+        databaseboxsizer.Add(item=dbm_base.createDbInfoDesc(self.panel, self.dbInfo, layer = self.layer),
+                             proportion=1,
+                             flag=wx.EXPAND | wx.ALL,
+                             border=3)
+
         #
+        # text areas
+        #
+        # sql box
+        sqlbox = wx.StaticBox(parent = self.panel, id = wx.ID_ANY,
+                              label = " %s " % _("Query"))
+        sqlboxsizer = wx.StaticBoxSizer(sqlbox, wx.VERTICAL)
+
+        self.text_sql = wx.TextCtrl(parent = self.panel, id = wx.ID_ANY,
+                                    value = '', size = (-1, 50),
+                                    style=wx.TE_MULTILINE)
+        if self.qtype.lower() == "select":
+            self.text_sql.SetValue("SELECT * FROM %s" % self.tablename)
+        self.text_sql.SetInsertionPointEnd()
+        self.text_sql.SetToolTipString(_("Example: %s") % "SELECT * FROM roadsmajor WHERE MULTILANE = 'no' OR OBJECTID < 10")
+        wx.CallAfter(self.text_sql.SetFocus)
+
+        sqlboxsizer.Add(item = self.text_sql, flag = wx.EXPAND)
+        
+        #
         # buttons
         #
         self.btn_clear  = wx.Button(parent = self.panel, id = wx.ID_CLEAR)
@@ -86,12 +122,6 @@
         self.btn_apply.SetToolTipString(_("Apply SQL statement and close the dialog"))
         self.btn_close  = wx.Button(parent = self.panel, id = wx.ID_CLOSE)
         self.btn_close.SetToolTipString(_("Close the dialog"))
-        self.btn_unique = wx.Button(parent = self.panel, id = wx.ID_ANY,
-                                    label = _("Get all values"))
-        self.btn_unique.Enable(False)
-        self.btn_uniquesample = wx.Button(parent = self.panel, id = wx.ID_ANY,
-                                          label = _("Get sample"))
-        self.btn_uniquesample.Enable(False)
         
         self.btn_lv = { 'is'    : ['=', ],
                         'isnot' : ['!=', ],
@@ -111,79 +141,6 @@
                             label = value[0])
             self.btn_lv[key].append(btn.GetId())
         
-        #
-        # text areas
-        #
-        self.text_sql = wx.TextCtrl(parent = self.panel, id = wx.ID_ANY,
-                                    value = '', size = (-1, 50),
-                                    style=wx.TE_MULTILINE)
-        if self.qtype.lower() == "select":
-            self.text_sql.SetValue("SELECT * FROM %s" % self.tablename)
-        self.text_sql.SetInsertionPointEnd()
-        self.text_sql.SetToolTipString(_("Example: %s") % "SELECT * FROM roadsmajor WHERE MULTILANE = 'no' OR OBJECTID < 10")
-        wx.CallAfter(self.text_sql.SetFocus)
-
-        #
-        # list boxes (columns, values)
-        #
-        self.list_columns = wx.ListBox(parent = self.panel, id = wx.ID_ANY,
-                                       choices = self.dbInfo.GetColumns(self.tablename),
-                                       style = wx.LB_MULTIPLE)
-        self.list_values = wx.ListBox(parent = self.panel, id = wx.ID_ANY,
-                                      choices = self.colvalues,
-                                      style = wx.LB_MULTIPLE)
-        
-        self.radio_cv = wx.RadioBox(parent = self.panel, id = wx.ID_ANY,
-                                    label = " %s " % _("Add on double-click"),
-                                    choices = [_("columns"), _("values")])
-        self.radio_cv.SetSelection(1) # default 'values'
-
-        self.close_onapply = wx.CheckBox(parent = self.panel, id = wx.ID_ANY,
-                                         label = _("Close dialog on apply"))
-        self.close_onapply.SetValue(True)
-        
-        #
-        # bindings
-        #
-        self.btn_unique.Bind(wx.EVT_BUTTON,       self.OnUniqueValues)
-        self.btn_uniquesample.Bind(wx.EVT_BUTTON, self.OnSampleValues)
-        
-        for key, value in self.btn_lv.iteritems():
-            self.FindWindowById(value[1]).Bind(wx.EVT_BUTTON, self.OnAddMark)
-        
-        self.btn_close.Bind(wx.EVT_BUTTON,       self.OnClose)
-        self.btn_clear.Bind(wx.EVT_BUTTON,       self.OnClear)
-        self.btn_verify.Bind(wx.EVT_BUTTON,      self.OnVerify)
-        self.btn_apply.Bind(wx.EVT_BUTTON,       self.OnApply)
-
-        self.list_columns.Bind(wx.EVT_LISTBOX,   self.OnAddColumn)
-        self.list_values.Bind(wx.EVT_LISTBOX,    self.OnAddValue)
-        
-        self.text_sql.Bind(wx.EVT_TEXT,          self.OnText)
-        
-        self._doLayout()
-
-    def _doLayout(self):
-        """!Do dialog layout"""
-      
-        # dbInfo
-        databasebox = wx.StaticBox(parent = self.panel, id = wx.ID_ANY,
-                                   label = " %s " % _("Database connection"))
-        databaseboxsizer = wx.StaticBoxSizer(databasebox, wx.VERTICAL)
-        databaseboxsizer.Add(item=dbm_base.createDbInfoDesc(self.panel, self.dbInfo, layer = self.layer),
-                             proportion=1,
-                             flag=wx.EXPAND | wx.ALL,
-                             border=3)
-
-        # sql box
-        sqlbox = wx.StaticBox(parent = self.panel, id = wx.ID_ANY,
-                              label = " %s " % _("Query"))
-        sqlboxsizer = wx.StaticBoxSizer(sqlbox, wx.VERTICAL)
-        sqlboxsizer.Add(item = self.text_sql, flag = wx.EXPAND)
-        
-        pagesizer = wx.BoxSizer(wx.VERTICAL)
-        
-        # buttons
         buttonsizer = wx.FlexGridSizer(cols = 4, hgap = 5, vgap = 5)
         buttonsizer.Add(item = self.btn_clear)
         buttonsizer.Add(item = self.btn_verify)
@@ -206,41 +163,70 @@
         buttonsizer2.Add(item = self.FindWindowById(self.btn_lv['brac'][1]), pos = (0, 3))
         buttonsizer2.Add(item = self.FindWindowById(self.btn_lv['prc'][1]), pos = (1, 3))
         buttonsizer2.Add(item = self.FindWindowById(self.btn_lv['and'][1]), pos = (2, 3))
-
-        buttonsizer3 = wx.BoxSizer(wx.HORIZONTAL)
-        buttonsizer3.Add(item = self.btn_uniquesample, proportion = 0,
-                         flag = wx.ALIGN_CENTER_HORIZONTAL | wx.RIGHT, border = 5)
-        buttonsizer3.Add(item = self.btn_unique, proportion = 0,
-                         flag = wx.ALIGN_CENTER_HORIZONTAL)
-
-        radiosizer = wx.BoxSizer(wx.HORIZONTAL)
-        radiosizer.Add(item = self.radio_cv, proportion = 1,
-                       flag = wx.ALIGN_CENTER_HORIZONTAL | wx.EXPAND, border = 5)
         
+        #
+        # list boxes (columns, values)
+        #
         hsizer = wx.BoxSizer(wx.HORIZONTAL)
         
         columnsbox = wx.StaticBox(parent = self.panel, id = wx.ID_ANY,
                                   label = " %s " % _("Columns"))
-        valuesbox = wx.StaticBox(parent = self.panel, id = wx.ID_ANY,
-                                 label = " %s " % _("Values"))
-        # hsizer1.Add(wx.StaticText(self.panel,-1, "Unique values: "), border=0, proportion=1)
         columnsizer = wx.StaticBoxSizer(columnsbox, wx.VERTICAL)
-        valuesizer = wx.StaticBoxSizer(valuesbox, wx.VERTICAL)
+        self.list_columns = wx.ListBox(parent = self.panel, id = wx.ID_ANY,
+                                       choices = self.dbInfo.GetColumns(self.tablename),
+                                       style = wx.LB_MULTIPLE)
         columnsizer.Add(item = self.list_columns, proportion = 1,
                         flag = wx.EXPAND)
+
+        radiosizer = wx.BoxSizer(wx.HORIZONTAL)
+        self.radio_cv = wx.RadioBox(parent = self.panel, id = wx.ID_ANY,
+                                    label = " %s " % _("Add on double-click"),
+                                    choices = [_("columns"), _("values")])
+        self.radio_cv.SetSelection(1) # default 'values'
+        radiosizer.Add(item = self.radio_cv, proportion = 1,
+                       flag = wx.ALIGN_CENTER_HORIZONTAL | wx.EXPAND, border = 5)
+
         columnsizer.Add(item = radiosizer, proportion = 0,
                         flag = wx.TOP | wx.EXPAND, border = 5)
+        # self.list_columns.SetMinSize((-1,130))
+        # self.list_values.SetMinSize((-1,100))
+
+        valuesbox = wx.StaticBox(parent = self.panel, id = wx.ID_ANY,
+                                 label = " %s " % _("Values"))
+        valuesizer = wx.StaticBoxSizer(valuesbox, wx.VERTICAL)
+        self.list_values = wx.ListBox(parent = self.panel, id = wx.ID_ANY,
+                                      choices = self.colvalues,
+                                      style = wx.LB_MULTIPLE)
         valuesizer.Add(item = self.list_values, proportion = 1,
                        flag = wx.EXPAND)
-        # self.list_columns.SetMinSize((-1,130))
-        # self.list_values.SetMinSize((-1,100))
+        
+        self.btn_unique = wx.Button(parent = self.panel, id = wx.ID_ANY,
+                                    label = _("Get all values"))
+        self.btn_unique.Enable(False)
+        self.btn_uniquesample = wx.Button(parent = self.panel, id = wx.ID_ANY,
+                                          label = _("Get sample"))
+        self.btn_uniquesample.Enable(False)
+
+        buttonsizer3 = wx.BoxSizer(wx.HORIZONTAL)
+        buttonsizer3.Add(item = self.btn_uniquesample, proportion = 0,
+                         flag = wx.ALIGN_CENTER_HORIZONTAL | wx.RIGHT, border = 5)
+        buttonsizer3.Add(item = self.btn_unique, proportion = 0,
+                         flag = wx.ALIGN_CENTER_HORIZONTAL)
+
         valuesizer.Add(item = buttonsizer3, proportion = 0,
                        flag = wx.TOP, border = 5)
+        
+        # hsizer1.Add(wx.StaticText(self.panel,-1, "Unique values: "), border=0, proportion=1)
+ 
         hsizer.Add(item = columnsizer, proportion = 1,
                    flag = wx.EXPAND)
         hsizer.Add(item = valuesizer, proportion = 1,
                    flag = wx.EXPAND)
         
+        self.close_onapply = wx.CheckBox(parent = self.panel, id = wx.ID_ANY,
+                                         label = _("Close dialog on apply"))
+        self.close_onapply.SetValue(True)
+ 
         pagesizer.Add(item = databaseboxsizer,
                       flag = wx.ALL | wx.EXPAND, border = 5)
         pagesizer.Add(item = hsizer, proportion = 1,
@@ -255,13 +241,34 @@
                       flag = wx.ALIGN_RIGHT | wx.ALL, border = 5)
         pagesizer.Add(item = self.close_onapply, proportion = 0,
                       flag = wx.LEFT | wx.RIGHT | wx.BOTTOM | wx.EXPAND, border = 5)
+
+        #
+        # bindings
+        #
+        self.btn_unique.Bind(wx.EVT_BUTTON,       self.OnUniqueValues)
+        self.btn_uniquesample.Bind(wx.EVT_BUTTON, self.OnSampleValues)
         
+        for key, value in self.btn_lv.iteritems():
+            self.FindWindowById(value[1]).Bind(wx.EVT_BUTTON, self.OnAddMark)
+        
+        self.btn_close.Bind(wx.EVT_BUTTON,       self.OnClose)
+        self.btn_clear.Bind(wx.EVT_BUTTON,       self.OnClear)
+        self.btn_verify.Bind(wx.EVT_BUTTON,      self.OnVerify)
+        self.btn_apply.Bind(wx.EVT_BUTTON,       self.OnApply)
+
+        self.list_columns.Bind(wx.EVT_LISTBOX,   self.OnAddColumn)
+        self.list_values.Bind(wx.EVT_LISTBOX,    self.OnAddValue)
+        
+        self.text_sql.Bind(wx.EVT_TEXT,          self.OnText)
+        
         self.panel.SetAutoLayout(True)
         self.panel.SetSizer(pagesizer)
         pagesizer.Fit(self.panel)
         
         self.Layout()
         self.SetMinSize((660, 525))
+        self.SetClientSize(self.panel.GetSize())
+        self.CenterOnParent()
         
     def OnUniqueValues(self, event, justsample = False):
         """!Get unique values"""



More information about the grass-commit mailing list