def test_tables_columns(self, mock_iface):
     res = midvatten_defs.tables_columns()
     assert res
     assert isinstance(res, dict)
     for k, v in res.iteritems():
         assert isinstance(k, unicode)
         assert isinstance(v, (tuple, list))
         for x in v:
             assert isinstance(x, (tuple, list))
             assert x
Esempio n. 2
0
    def __init__(self, parent, midv_settings):
        self.iface = parent

        self.ms = midv_settings
        PyQt4.QtGui.QDialog.__init__(self, parent)
        self.setAttribute(PyQt4.QtCore.Qt.WA_DeleteOnClose)
        self.setupUi(self)  # Required by Qt4 to initialize the UI
        self.setWindowTitle("Export to FieldLogger") # Set the title for the dialog

        tables_columns = defs.tables_columns()

        self.export_objects = None
        self.stored_settingskey = u'fieldlogger_export'

        self.export_objects = self.create_export_objects_using_stored_settings(self.get_stored_settings(self.ms, self.stored_settingskey),
                                                                               tables_columns,
                                                                               self.connect)
        if self.export_objects is None or not self.export_objects:
            self.export_objects = [ExportObject(self.connect)]

        self.splitter = PyQt4.QtGui.QSplitter(PyQt4.QtCore.Qt.Vertical)
        self.main_vertical_layout.addWidget(self.splitter)

        #This is about adding a messagebar to the fieldlogger window. But for some reason qgis crashes or closes
        #when the timer ends for the regular messagebar
        #self.lbl = MessageBar(self.splitter)
        #qgis.utils.iface.optional_bar = self.lbl

        self.widgets_layouts = self.init_splitters_layouts(self.splitter)

        if self.export_objects:
            for export_object in self.export_objects:
                self.add_export_object_to_gui(self.widgets_layouts, export_object)

        #ParameterUnitBrowser
        browser = ParameterUnitBrowser(tables_columns, self.connect)
        self.gridLayout_buttons.addWidget(browser.widget, 0, 0)
        

        #Buttons
        self.save_settings_button = PyQt4.QtGui.QPushButton(u'Save settings')
        self.save_settings_button.setToolTip(u'Saves the current parameter setup to midvatten settings.')
        self.gridLayout_buttons.addWidget(self.save_settings_button, 1, 0)
        self.connect(self.save_settings_button, PyQt4.QtCore.SIGNAL("clicked()"),
                         lambda : self.save_stored_settings(self.ms,
                                                            self.update_stored_settings(self.export_objects),
                                                            self.stored_settingskey))

        self.add_one_parameter_button = PyQt4.QtGui.QPushButton(u'New parameter')
        self.add_one_parameter_button.setToolTip(u'Creates an additional empty parameter setting.')
        self.gridLayout_buttons.addWidget(self.add_one_parameter_button, 2, 0)
        #Lambda and map is used to run several functions for every button click
        self.connect(self.add_one_parameter_button, PyQt4.QtCore.SIGNAL("clicked()"),
                     lambda: map(lambda x: x(),
                                 [lambda: self.export_objects.append(ExportObject(self.connect)),
                                  lambda: self.add_export_object_to_gui(self.widgets_layouts, self.export_objects[-1])]))

        self.export_button = PyQt4.QtGui.QPushButton(u'Export')

        self.export_button.setToolTip(u'Exports to a Fieldlogger wells file.')
        self.gridLayout_buttons.addWidget(self.export_button, 3, 0)
        # Lambda and map is used to run several functions for every button click
        self.connect(self.export_button, PyQt4.QtCore.SIGNAL("clicked()"),
                                  lambda: map(lambda x: x(),
                                 [lambda: self.save_stored_settings(self.ms,
                                                                    self.update_stored_settings(self.export_objects),
                                                                    self.stored_settingskey),
                                  lambda: self.write_printlist_to_file(self.create_export_printlist(self.export_objects))]))

        self.gridLayout_buttons.setRowStretch(4, 1)

        self.show()
Esempio n. 3
0
    def __init__(self, parent, midv_settings):
        self.iface = parent

        self.ms = midv_settings
        PyQt4.QtGui.QDialog.__init__(self, parent)
        self.setAttribute(PyQt4.QtCore.Qt.WA_DeleteOnClose)
        self.setupUi(self)  # Required by Qt4 to initialize the UI
        self.setWindowTitle("Export to FieldLogger file") # Set the title for the dialog

        self.widget.setMinimumWidth(180)

        tables_columns = defs.tables_columns()

        self.parameter_groups = None

        self.stored_settingskey = 'fieldlogger_export_pgroups'
        self.stored_settingskey_parameterbrowser = 'fieldlogger_export_pbrowser'

        for settingskey in [self.stored_settingskey, self.stored_settingskey_parameterbrowser]:
            if settingskey not in self.ms.settingsdict:
                utils.MessagebarAndLog.warning(bar_msg=settingskey + " did not exist in settingsdict")

        self.parameter_groups = self.create_parameter_groups_using_stored_settings(self.get_stored_settings(self.ms, self.stored_settingskey),
                                                                                   self.connect)
        if self.parameter_groups is None or not self.parameter_groups:
            self.parameter_groups = [ParameterGroup(self.connect)]


        self.main_vertical_layout.addWidget(PyQt4.QtGui.QLabel(u'Fieldlogger input fields and locations:'))
        self.main_vertical_layout.addWidget(get_line())
        self.splitter = PyQt4.QtGui.QSplitter(PyQt4.QtCore.Qt.Vertical)
        self.main_vertical_layout.addWidget(self.splitter)

        #This is about adding a messagebar to the fieldlogger window. But for some reason qgis crashes or closes
        #when the timer ends for the regular messagebar
        #self.lbl = MessageBar(self.splitter)
        #qgis.utils.iface.optional_bar = self.lbl

        self.widgets_layouts = self.init_splitters_layouts(self.splitter)

        if self.parameter_groups:
            for export_object in self.parameter_groups:
                self.add_parameter_group_to_gui(self.widgets_layouts, export_object)

        #Buttons

        #ParameterUnitBrowser
        self.parameter_browser = ParameterBrowser(tables_columns, self.connect, self.widget)
        self.parameter_browser_button = PyQt4.QtGui.QPushButton(u'Create Input Fields')
        self.gridLayout_buttons.addWidget(self.parameter_browser_button, 0, 0)
        self.connect(self.parameter_browser_button, PyQt4.QtCore.SIGNAL("clicked()"),
                     lambda : self.parameter_browser.show())

        self.update_parameter_browser_using_stored_settings(self.get_stored_settings(self.ms, self.stored_settingskey_parameterbrowser), self.parameter_browser)

        self.add_parameter_group = PyQt4.QtGui.QPushButton(u'More Fields and Locations')
        self.add_parameter_group.setToolTip(u'Creates an additional empty input field group.')
        self.gridLayout_buttons.addWidget(self.add_parameter_group, 1, 0)
        #Lambda and map is used to run several functions for every button click
        self.connect(self.add_parameter_group, PyQt4.QtCore.SIGNAL("clicked()"),
                     lambda: map(lambda x: x(),
                                 [lambda: self.parameter_groups.append(ParameterGroup(self.connect)),
                                  lambda: self.add_parameter_group_to_gui(self.widgets_layouts, self.parameter_groups[-1])]))

        self.gridLayout_buttons.addWidget(get_line(), 2, 0)

        #Buttons
        self.save_settings_button = PyQt4.QtGui.QPushButton(u'Save settings')
        self.save_settings_button.setToolTip(u'Saves the current input fields settings to midvatten settings.')
        self.gridLayout_buttons.addWidget(self.save_settings_button, 3, 0)
        self.connect(self.save_settings_button, PyQt4.QtCore.SIGNAL("clicked()"),
                        lambda: map(lambda x: x(),
                                 [lambda: self.save_stored_settings(self.ms,
                                                            self.update_stored_settings(self.parameter_groups),
                                                            self.stored_settingskey),
                                  lambda: self.save_stored_settings(self.ms,
                                                                    self.update_stored_settings([self.parameter_browser]),
                                                                    self.stored_settingskey_parameterbrowser)]))

        self.clear_settings_button = PyQt4.QtGui.QPushButton(u'Clear settings')
        self.clear_settings_button.setToolTip(u'Clear input fields and settings.\nReopen Fieldlogger export gui to it reset,\nor press "Save settings" to undo.')
        self.gridLayout_buttons.addWidget(self.clear_settings_button, 4, 0)
        self.connect(self.clear_settings_button, PyQt4.QtCore.SIGNAL("clicked()"),
                     lambda: map(lambda x: x(),
                                 [lambda: self.save_stored_settings(self.ms, [], self.stored_settingskey),
                                  lambda: self.save_stored_settings(self.ms, [], self.stored_settingskey_parameterbrowser),
                                  lambda: utils.pop_up_info(u'Settings cleared. Restart Export Fieldlogger dialog')]))

        self.gridLayout_buttons.addWidget(get_line(), 5, 0)

        self.export_button = PyQt4.QtGui.QPushButton(u'Export')
        self.export_button.setToolTip(u'Exports the current combination of locations, sublocations and input fields to a Fieldlogger wells file.')
        self.gridLayout_buttons.addWidget(self.export_button, 7, 0)
        # Lambda and map is used to run several functions for every button click
        self.connect(self.export_button, PyQt4.QtCore.SIGNAL("clicked()"), self.export)

        self.gridLayout_buttons.setRowStretch(8, 1)

        self.show()