Exemplo n.º 1
0
    def _layout(self):

        self.select = wx.GridBagSizer(20, 5)

        #----------------------------
        #---------Input maps---------

        # Ask user for digital elevation model
        self.text1 = wx.StaticText(parent = self.panel, id = wx.ID_ANY, label = "INPUT : Elevation map (required)")
        self.select.Add(item = self.text1, flag = wx.LEFT, pos = (1,0), span = wx.DefaultSpan, border = 0)

        # Add the box for choosing the map
        self.select1 = gselect.Select(parent = self.panel, id = wx.ID_ANY, size = (250, -1),
                               type = 'raster', multiple = False)
        self.select.Add(item = self.select1, pos = (2,0), span = wx.DefaultSpan)

        # binder
        self.select1.Bind(wx.EVT_TEXT, self.OnSelectElev)

        #----------------------------

        # Ask user for Flow accumulation
        self.text2 = wx.StaticText(parent = self.panel, id = wx.ID_ANY, label = "INPUT/OUTPUT : Flow accumulation (required)")
        self.select.Add(item = self.text2, flag = wx.LEFT, pos = (3,0), span = wx.DefaultSpan)


        # Flow accum can be either existent or to be calculated
        # RadioButton
        self.hbox1 = wx.BoxSizer(wx.HORIZONTAL)

        self.cb1 = wx.RadioButton(parent = self.panel, id = wx.ID_ANY, label = "Custom (select existing map)", style = wx.RB_GROUP)
        self.hbox1.Add(item = self.cb1, flag = wx.LEFT)
        self.cb2 = wx.RadioButton(parent = self.panel, id = wx.ID_ANY, label = "Create by MFD algorithm")
        self.hbox1.Add(item = self.cb2, flag = wx.LEFT)
        self.cb3 = wx.RadioButton(parent = self.panel, id = wx.ID_ANY, label = "Create by SFD algorithm")
        self.hbox1.Add(item = self.cb3, flag = wx.LEFT)

        self.select.Add(item = self.hbox1, pos = (4,0))

        # Box to insert name of acc map
        self.select2 = gselect.Select(parent = self.panel, id = wx.ID_ANY, size = (250, -1),
                               type = 'raster', multiple = False) # select existing map
        self.select.Add(item = self.select2, pos = (5,0), span = wx.DefaultSpan)
        self.textOne = wx.TextCtrl(parent = self.panel, id = wx.ID_ANY, style = wx.TE_LEFT)
        self.select.Add(item = self.textOne, flag = wx.LEFT | wx.EXPAND, pos = (6,0), span = wx.DefaultSpan)


        # linking buttons and text
        self.texts = {"Custom (select existing map)": self.select2,
                      "Create by MFD algorithm": self.textOne,
                      "Create by SFD algorithm": self.textOne}


        self.selectedText = self.select2 # default is select existing map

        # Disable
        self.textOne.Enable(False)

        # RadioButton binders
        self.cb1.Bind(wx.EVT_RADIOBUTTON, self.OnSelectExistAcc)
        self.cb2.Bind(wx.EVT_RADIOBUTTON, self.OnSelectMFDAcc)
        self.cb3.Bind(wx.EVT_RADIOBUTTON, self.OnSelectSFDAcc)

        #----------------------------

        # Ask user for Mask
        self.text3 = wx.StaticText(parent = self.panel, id = wx.ID_ANY, label = "INPUT : Mask (optional)")
        self.select.Add(item = self.text3, flag = wx.LEFT, pos = (7,0), span = wx.DefaultSpan)

        # Add the box for choosing the map
        self.select3 = gselect.Select(parent = self.panel, id = wx.ID_ANY, size = (250, -1),
                               type = 'raster', multiple = False)
        self.select.Add(item = self.select3, pos = (8,0), span = wx.DefaultSpan)

        # binder
        self.select3.Bind(wx.EVT_TEXT, self.OnSelectMask)

        #----------------------------

        # Ask user for threshold
        self.text4 = wx.StaticText(parent = self.panel, id = wx.ID_ANY, label = "INPUT : Threshold (required)")
        self.select.Add(item = self.text4, flag = wx.LEFT, pos = (9,0), span = wx.DefaultSpan)

        # Box to insert threshold
        self.txtTwo = wx.TextCtrl(parent = self.panel, id = wx.ID_ANY, style = wx.TE_LEFT)
        self.select.Add(item = self.txtTwo, flag = wx.LEFT, pos = (10,0), span = wx.DefaultSpan)

        # binder
        self.txtTwo.Bind(wx.EVT_TEXT, self.OnSelecTh)


        #----------------------------
        #---------Output maps---------


        # Flow direction map
        self.text5 = wx.StaticText(parent = self.panel, id = wx.ID_ANY, label = "OUTPUT : Flow direction map (required)")
        self.select.Add(item = self.text5, flag = wx.LEFT | wx.EXPAND, pos = (11,0), span = wx.DefaultSpan)

        # Box to insert name of new flow dir map (to be created)
        self.txtThr = wx.TextCtrl(parent = self.panel, id = wx.ID_ANY, style = wx.TE_LEFT)
        self.select.Add(item = self.txtThr, flag = wx.LEFT | wx.EXPAND, pos = (12,0), span = wx.DefaultSpan)

        # binder
        self.txtThr.Bind(wx.EVT_TEXT, self.OnSelecFd)


        #----------------------------

        # Streams map
        self.text6 = wx.StaticText(parent = self.panel, id = wx.ID_ANY, label = "OUTPUT : Streams (required)")
        self.select.Add(item = self.text6, flag = wx.LEFT | wx.EXPAND, pos = (13,0), span = wx.DefaultSpan)

        # Box to insert name of new streams map (to be created)
        self.txtFou = wx.TextCtrl(parent = self.panel, id = wx.ID_ANY, style = wx.TE_LEFT)
        self.select.Add(item = self.txtFou, flag = wx.LEFT | wx.EXPAND, pos = (14,0), span = wx.DefaultSpan)

        # binder
        self.txtFou.Bind(wx.EVT_TEXT, self.OnSelecStr)

        #----------------------------

        # Network map
        self.text7 = wx.StaticText(parent = self.panel, id = wx.ID_ANY, label = "OUTPUT : Network (required)")
        self.select.Add(item = self.text7, flag = wx.LEFT | wx.EXPAND, pos = (15,0), span = wx.DefaultSpan)

        # Box to insert name of new streams map (to be created)
        self.txtFiv = wx.TextCtrl(parent = self.panel, id = wx.ID_ANY, style = wx.TE_LEFT)
        self.select.Add(item = self.txtFiv, flag = wx.LEFT | wx.EXPAND, pos = (16,0), span = wx.DefaultSpan)

        # binder
        self.txtFiv.Bind(wx.EVT_TEXT, self.OnSelecNet)


        #----------------------------

        self.panel.SetSizer(self.select)
        self.btnPanel = wx.Panel(self)

        #-------------Buttons-------------

        self.createButtonBar(self.btnPanel)
        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.panel, 1, wx.EXPAND)
        self.sizer.Add(self.btnPanel, 0, wx.EXPAND)
        self.SetSizer(self.sizer)
Exemplo n.º 2
0
    def __init__(self, parent, Rinstance, controller, *args, **kwargs):
        wx.Panel.__init__(self, parent, *args, **kwargs)

        self.parent = parent
        self.border = 4

        #    1. Input data
        InputBoxSizer = wx.StaticBoxSizer(wx.StaticBox(self,
                                                       id=wx.ID_ANY,
                                                       label=_("Input Data")),
                                          orient=wx.HORIZONTAL)

        flexSizer = wx.FlexGridSizer(cols=3, hgap=5, vgap=5)
        flexSizer.AddGrowableCol(1)

        flexSizer.Add(item=wx.StaticText(self,
                                         id=wx.ID_ANY,
                                         label=_("Point dataset:")),
                      flag=wx.ALIGN_CENTER_VERTICAL)
        self.InputDataMap = gselect.VectorSelect(parent=self, ftype='points')
        self.InputDataMap.SetFocus()
        flexSizer.Add(item=self.InputDataMap, flag=wx.ALIGN_CENTER_VERTICAL)

        RefreshButton = wx.Button(self, id=wx.ID_REFRESH)
        RefreshButton.Bind(wx.EVT_BUTTON, self.OnButtonRefresh)
        flexSizer.Add(item=RefreshButton, flag=wx.ALIGN_CENTER_VERTICAL)

        flexSizer.Add(item=wx.StaticText(self,
                                         id=wx.ID_ANY,
                                         label=_("Numeric column:")),
                      flag=wx.ALIGN_CENTER_VERTICAL)
        self.InputDataColumn = gselect.ColumnSelect(self, id=wx.ID_ANY)
        self.InputDataColumn.SetSelection(0)
        flexSizer.Add(item=self.InputDataColumn)

        self.InputDataMap.GetChildren()[0].Bind(wx.EVT_TEXT,
                                                self.OnInputDataChanged)

        InputBoxSizer.Add(item=flexSizer)

        #    2. Kriging. In book pages one for each R package. Includes variogram fit.
        KrigingSizer = wx.StaticBoxSizer(
            wx.StaticBox(self, id=wx.ID_ANY, label=_("Kriging")),
            wx.HORIZONTAL)

        self.RPackagesBook = FN.FlatNotebook(
            parent=self,
            id=wx.ID_ANY,
            style=FN.FNB_BOTTOM | FN.FNB_NO_NAV_BUTTONS | FN.FNB_FANCY_TABS
            | FN.FNB_NO_X_BUTTON)

        for Rpackage in [
                "gstat"
        ]:  # , "geoR"]: #@TODO: enable it if/when it'll be implemented.
            self.CreatePage(package=Rpackage,
                            Rinstance=Rinstance,
                            controller=controller)

        ## Command output. From menuform module, cmdPanel class
        self.goutput = goutput.GMConsole(
            parent=self,
            margin=False,
            pageid=self.RPackagesBook.GetPageCount(),
            notebook=self.RPackagesBook)
        self.goutputId = self.RPackagesBook.GetPageCount()
        self.outpage = self.RPackagesBook.AddPage(self.goutput,
                                                  text=_("Command output"))

        self.RPackagesBook.SetSelection(0)
        KrigingSizer.Add(self.RPackagesBook, proportion=1, flag=wx.EXPAND)

        #    3. Output Parameters.
        OutputSizer = wx.StaticBoxSizer(
            wx.StaticBox(self, id=wx.ID_ANY, label=_("Output")), wx.HORIZONTAL)

        OutputParameters = wx.GridBagSizer(hgap=5, vgap=5)
        OutputParameters.AddGrowableCol(1)
        OutputParameters.Add(item=wx.StaticText(
            self, id=wx.ID_ANY, label=_("Name for the output raster map:")),
                             flag=wx.ALIGN_CENTER_VERTICAL,
                             pos=(0, 0))
        self.OutputMapName = gselect.Select(parent=self,
                                            id=wx.ID_ANY,
                                            type='raster',
                                            mapsets=[grass.gisenv()['MAPSET']])
        OutputParameters.Add(item=self.OutputMapName,
                             flag=wx.EXPAND | wx.ALL,
                             pos=(0, 1))
        self.VarianceRasterCheckbox = wx.CheckBox(
            self, id=wx.ID_ANY, label=_("Export variance map as well: "))
        self.VarianceRasterCheckbox.SetValue(state=True)
        OutputParameters.Add(item=self.VarianceRasterCheckbox,
                             flag=wx.ALIGN_CENTER_VERTICAL,
                             pos=(1, 0))
        self.OutputVarianceMapName = gselect.Select(
            parent=self,
            id=wx.ID_ANY,
            type='raster',
            mapsets=[grass.gisenv()['MAPSET']])
        self.VarianceRasterCheckbox.Bind(wx.EVT_CHECKBOX,
                                         self.OnVarianceCBChecked)
        OutputParameters.Add(item=self.OutputVarianceMapName,
                             flag=wx.EXPAND | wx.ALL,
                             pos=(1, 1))

        self.OverwriteCheckBox = wx.CheckBox(
            self,
            id=wx.ID_ANY,
            label=_("Allow output files to overwrite existing files"))
        self.OverwriteCheckBox.SetValue(
            UserSettings.Get(group='cmd', key='overwrite', subkey='enabled'))
        OutputParameters.Add(item=self.OverwriteCheckBox,
                             pos=(2, 0),
                             span=(1, 2))

        OutputSizer.Add(OutputParameters,
                        proportion=0,
                        flag=wx.EXPAND | wx.ALL,
                        border=self.border)

        #    4. Run Button and Quit Button
        ButtonSizer = wx.BoxSizer(wx.HORIZONTAL)
        HelpButton = wx.Button(self, id=wx.ID_HELP)
        HelpButton.Bind(wx.EVT_BUTTON, self.OnHelpButton)
        QuitButton = wx.Button(self, id=wx.ID_EXIT)
        QuitButton.Bind(wx.EVT_BUTTON, self.OnCloseWindow)
        self.RunButton = wx.Button(
            self, id=wx.ID_ANY,
            label=_("&Run"))  # no stock ID for Run button..
        self.RunButton.Bind(wx.EVT_BUTTON, self.OnRunButton)
        self.RunButton.Enable(
            False
        )  # disable it on loading the interface, as input map is not set
        ButtonSizer.Add(HelpButton,
                        proportion=0,
                        flag=wx.ALIGN_LEFT | wx.ALL,
                        border=self.border)
        ButtonSizer.Add(QuitButton,
                        proportion=0,
                        flag=wx.ALIGN_RIGHT | wx.ALL,
                        border=self.border)
        ButtonSizer.Add(self.RunButton,
                        proportion=0,
                        flag=wx.ALIGN_RIGHT | wx.ALL,
                        border=self.border)

        #    Main Sizer. Add each child sizer as soon as it is ready.
        Sizer = wx.BoxSizer(wx.VERTICAL)
        Sizer.Add(InputBoxSizer,
                  proportion=0,
                  flag=wx.EXPAND | wx.ALL,
                  border=self.border)
        Sizer.Add(KrigingSizer,
                  proportion=1,
                  flag=wx.EXPAND | wx.ALL,
                  border=self.border)
        Sizer.Add(OutputSizer,
                  proportion=0,
                  flag=wx.EXPAND | wx.ALL,
                  border=self.border)
        Sizer.Add(ButtonSizer,
                  proportion=0,
                  flag=wx.ALIGN_RIGHT | wx.ALL,
                  border=self.border)
        self.SetSizerAndFit(Sizer)