def __init__(self):
        super().__init__()
        self.mapper_1 = QtWidgets.QDataWidgetMapper()
        self.mapper_2 = QtWidgets.QDataWidgetMapper()

        hbox = QtWidgets.QHBoxLayout(self)
        self.setLayout(hbox)

        self.ui_name = QtWidgets.QLabel('unknown')

        self.btn_group = QtWidgets.QButtonGroup()
        self.btn_group.setExclusive(True)
        self.btn_group.buttonClicked.connect(self.onClicked)

        self.ui_btn1 = QtWidgets.QPushButton('?', self)
        self.ui_btn2 = QtWidgets.QPushButton('?', self)
        self.ui_btn1.setCheckable(True)
        self.ui_btn2.setCheckable(True)

        self.btn_group.addButton(self.ui_btn1, 0)
        self.btn_group.addButton(self.ui_btn2, 1)

        hbox.addWidget(self.ui_name)
        hbox.addWidget(QtWidgets.QLabel(': '))
        hbox.addWidget(self.ui_btn1)
        hbox.addWidget(self.ui_btn2)
        hbox.addStretch(1)

        self.via_this_button = False
        self.btn_group.buttonClicked.connect(self.mapper_1.submit)
        self.mapper_1.currentIndexChanged.connect(
            self.mapper_2.setCurrentIndex)
Beispiel #2
0
    def __init__(self, parent=None, model=None):
        super(MDBEditGenres, self).__init__(parent)
        # ===== Set-up Model =====
        if model is None:
            # This should never be seen.
            QtWidgets.QMessageBox.critical(
                self, "Model Error", "No model passed to edit genres dialog.",
                QtWidgets.QMessageBox.Ok)
        else:
            self.model_genres = model

        # ===== Set-up UI =====
        self.ui = Ui_dlg_edit_genres()
        self.ui.setupUi(self)
        self.ui.lst_genres.setModel(self.model_genres)
        self.ui.lst_genres.setModelColumn(
            1)  # 1 is 'genre' column of the 'genres' table.
        # List view selection model
        self.selection = self.ui.lst_genres.selectionModel()

        # ===== Create Widget Mapper =====
        self.widget_mapper = QtWidgets.QDataWidgetMapper(self)
        self.widget_mapper.setModel(self.model_genres)
        self.widget_mapper.setSubmitPolicy(
            QtWidgets.QDataWidgetMapper.AutoSubmit)
        self.widget_mapper.addMapping(self.ui.le_genre_name, 1)
        self.widget_mapper.addMapping(self.ui.te_genre_description, 2)
        self.widget_mapper.addMapping(self.ui.te_genre_examples, 3)

        # ===== Create Signal/Slots =====
        self.selection.selectionChanged.connect(self.display_selected_entry)
        # Buttons
        self.ui.btn_add_genre.clicked.connect(self.add_genre)
        self.ui.btn_delete_genre.clicked.connect(self.delete_genre)
        self.ui.btn_done.clicked.connect(lambda: self.hide())
Beispiel #3
0
    def __init__(self):
        super().__init__()

        self.widgets=OrderedDict()
        self.dataMapper = QtWidgets.QDataWidgetMapper()
        self.setupUi()
        self.updateCheck.connect(self.on_upateCheck)
    def __init__(self, parent=None):
        super(manual_device_view_base, self).__init__()
        self.setupUi(self)

        print("HERE")
        self._model = None
        self._mapper = QtWidgets.QDataWidgetMapper()
Beispiel #5
0
    def __init__(self, model, parent=None):
        super(EditRestPhrase, self).__init__(parent)

        self.model = model
        self.mapper = QtWidgets.QDataWidgetMapper(self)
        self.vertical_order = QtWidgets.QLineEdit()
        self._init_ui()
    def __init__(self):
        super().__init__()
        self.mapper = QtWidgets.QDataWidgetMapper()
        self.mapper = QtWidgets.QDataWidgetMapper()

        hbox = QtWidgets.QHBoxLayout()
        self.setLayout(hbox)

        self.ui_name = QtWidgets.QLabel('unknown')
        self.ui_value = ScientificDoubleSpinBox()
        self.ui_units = QtWidgets.QLabel('units')
        hbox.addWidget(self.ui_name)
        hbox.addWidget(QtWidgets.QLabel(': '))
        hbox.addWidget(self.ui_value)
        hbox.addWidget(self.ui_units)
        hbox.addStretch(1)
    def __init__(self, coffees_model, reviews_model):
        super().__init__()
        self.setLayout(qtw.QFormLayout())

        # Coffee Fields
        self.coffee_brand = qtw.QLineEdit()
        self.layout().addRow('Brand: ', self.coffee_brand)
        self.coffee_name = qtw.QLineEdit()
        self.layout().addRow('Name: ', self.coffee_name)
        self.roast = qtw.QComboBox()
        self.layout().addRow('Roast: ', self.roast)

        # Map the coffee fields
        self.coffees_model = coffees_model
        self.mapper = qtw.QDataWidgetMapper(self)
        self.mapper.setModel(self.coffees_model)
        self.mapper.setItemDelegate(
            qts.QSqlRelationalDelegate(self))
        self.mapper.addMapping(
            self.coffee_brand,
            self.coffees_model.fieldIndex('coffee_brand')
        )
        self.mapper.addMapping(
            self.coffee_name,
            self.coffees_model.fieldIndex('coffee_name')
        )
        self.mapper.addMapping(
            self.roast,
            self.coffees_model.fieldIndex('description')
        )
        # retrieve a model for the roasts and setup the combo box
        roasts_model = coffees_model.relationModel(
            self.coffees_model.fieldIndex('description'))
        self.roast.setModel(roasts_model)
        self.roast.setModelColumn(1)
        # Cause data to be written when changed

        # Reviews
        self.reviews = qtw.QTableView()
        self.layout().addRow(self.reviews)
        self.reviews.setModel(reviews_model)
        self.reviews.hideColumn(0)
        self.reviews.hideColumn(1)
        self.reviews.horizontalHeader().setSectionResizeMode(
            4, qtw.QHeaderView.Stretch)


        # Using a custom delegate
        self.dateDelegate = DateDelegate()
        self.reviews.setItemDelegateForColumn(
            reviews_model.fieldIndex('review_date'),
            self.dateDelegate)

        # add and delete reviews
        self.new_review = qtw.QPushButton(
            'New Review', clicked=self.add_review)
        self.delete_review = qtw.QPushButton(
            'Delete Review', clicked=self.delete_review)
        self.layout().addRow(self.new_review, self.delete_review)
    def __init__(self):
        super().__init__()
        self._device_mapper = QtWidgets.QDataWidgetMapper()
        self._bt_mapper = QtWidgets.QDataWidgetMapper()

        hbox = QtWidgets.QHBoxLayout(self)
        self.setLayout(hbox)

        self.ui_name = QtWidgets.QLabel('unknown')
        self.ui_combo = QtWidgets.QComboBox()
        self.ui_combo.addItems([""])

        hbox.addWidget(self.ui_name)
        hbox.addWidget(self.ui_combo)
        hbox.addStretch(1)

        self.via_this_button = False
        self.btn_group.buttonClicked.connect(self.mapper_1.submit)
Beispiel #9
0
    def create_form(parent, config_widgets, model):
        tool_mapper = QtWidgets.QDataWidgetMapper(parent)
        tool_mapper.setModel(model)
        tool_mapper.addMapping(config_widgets[TabWidgets.NAME], 0)

        # PlainText mapping because without the descriptions render without
        # newline
        tool_mapper.addMapping(config_widgets[TabWidgets.DESCRIPTION], 1,
                               b"plainText")

        return tool_mapper
Beispiel #10
0
    def __init__(self, *args, **kwargs):
        super(MyMainWindow, self).__init__(*args, **kwargs)

        self.mapper = QtWidgets.QDataWidgetMapper(self)
        self.db = open_db()
        self.model = QSqlQueryModel(self)
        self.model.setQuery('SELECT DISTINCT form FROM test')
        self.mapper.setModel(self.model)
        self.mapper.addMapping(self.label, 0, b'text')
        self.mapper.toFirst()

        self.button_left.clicked.connect(self.mapper.toPrevious)
        self.button_right.clicked.connect(self.mapper.toNext)
Beispiel #11
0
    def create_form(
            parent: QtWidgets.QWidget, config_widgets: Dict[TabWidgets,
                                                            QtWidgets.QWidget],
            model: "models.WorkflowListModel") -> QtWidgets.QDataWidgetMapper:
        tool_mapper = QtWidgets.QDataWidgetMapper(parent)
        tool_mapper.setModel(model)
        tool_mapper.addMapping(config_widgets[TabWidgets.NAME], 0)

        # PlainText mapping because without the descriptions render without
        # newline
        tool_mapper.addMapping(config_widgets[TabWidgets.DESCRIPTION], 1,
                               b"plainText")

        return tool_mapper
    def __init__(self):
        """
        Loads the UI window and initialise the class variables.
        """

        super(ComponentEditor, self).__init__()
        self.setupUi(self)

        self.model = None
        self.manufactureModel = None
        self.statusModel = None
        self.currentIndex = qtc.QModelIndex()
        self.mapper = qtw.QDataWidgetMapper()

        self._enableSelf()
    def alchemyObject(self, saObject):
        self.__alchemyObject=saObject

        self.generalModel=checks.gui.models.CheckSettingsModel(abstractItem=saObject)
        self.dataMapper = QtWidgets.QDataWidgetMapper()
        self.dataMapper.setModel(self.generalModel)
        self.widgets = OrderedDict()
        self.delegate = gui.qtalcmapper.generateQtDelegate(saObject)


        columns = self.alchemyObject._qt_columns()

        for colNr, column in enumerate(columns):
            if colNr in self.delegate.delegates.keys():
#                lblWidget = QtWidgets.QLabel(column.info.get('qt_label'))
                wid = gui.qtalcmapper.getQtWidgetForAlchemyType(column)
                self.dataMapper.addMapping(wid, colNr)
            else:
                wid=Table(self.alchemyObject, column.key)

            self.widgetReference.addWidget(wid, name=column.key, info=column.info)

        standardSelection=['IT_USER', 'IT_GROUP', 'IT_UGROUP']
        selectionCriteria_rolesProfiles=[]
        selectionCriteria_authorizations=[]
        selectionCriteria_defaultValues=[]
        selectionCriteria_logonData=[]
        selectionCriteria_documentation=[]



        param_set_name_widget=QtWidgets.QWidget()
        param_set_name_layout=QtWidgets.QFormLayout()
        param_set_name_widget.setLayout(param_set_name_layout)
        label=self.widgetReference.getLabel('param_set_name')
        widget=self.widgetReference.getWidget('param_set_name')
        widget.setStyleSheet('')
        param_set_name_layout.addRow(label, widget)
        self.coreVboxLayout.insertWidget(0, param_set_name_widget)

        for name in standardSelection:
            self.standardSelection_layout.addRow(self.widgetReference.getLabel(name),
                                                 self.widgetReference.getWidget(name))

        for name in selectionCriteria_logonData:
            self.selectionCriteria_logonData_layout

        self.dataMapper.toFirst()
    def __init__(self):
        super().__init__()
        self.mapper = QtWidgets.QDataWidgetMapper()
        hbox = QtWidgets.QHBoxLayout()
        self.setLayout(hbox)

        self._val = False
        self.ui_name = QtWidgets.QLabel('unknown')
        self.ui_val = QtWidgets.QLabel('?')
        self._off_name = ""
        self._on_name = ""

        hbox.addWidget(self.ui_name)
        hbox.addWidget(QtWidgets.QLabel(': '))
        hbox.addWidget(self.ui_val)
        hbox.addStretch(1)
Beispiel #15
0
    def __init__(self, parent, flow_data, idx: int) -> None:
        super().__init__(parent,
                         qc.Qt.WindowTitleHint | qc.Qt.WindowSystemMenuHint)
        self.setWindowTitle('Edit actor')
        self.setMinimumWidth(500)
        self.flow_data = flow_data
        self.mapper = q.QDataWidgetMapper(self)
        self.mapper.setSubmitPolicy(q.QDataWidgetMapper.ManualSubmit)
        self.mapper.setModel(flow_data.actor_model)

        self.initWidgets(idx)
        self.initLayout()
        self.connectWidgets()

        self.mapper.setCurrentIndex(idx)
        self.prev_identifier = ActorIdentifier(self.name_edit.text(),
                                               self.sub_name_edit.text())
Beispiel #16
0
    def __init__(self, parent=None, flags=Qt.Window):
        super(MainWindow, self).__init__(parent, flags)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.data_mapper = QtWidgets.QDataWidgetMapper()
        self.model = PinModel(PIN_LIST)
        self.current_model_index = None

        # Set the model to data mapper and to list view
        self.data_mapper.setModel(self.model)
        self.ui.listView.setModel(self.model)

        # Set mapping for data mapper
        self.data_mapper.addMapping(self.ui.lineEdit_name, 0)
        self.data_mapper.addMapping(self.ui.comboBox_type, 1)
        self.data_mapper.addMapping(self.ui.comboBox_mode, 2)
        self.data_mapper.toFirst()

        # When list view's current index changes then set_selection is called
        self.ui.listView.selectionModel().currentChanged.connect(
            self.set_selection)

        # Instantiate the others controllers and add them to the layout
        self.license_controller = LicenseController()
        self.digital_input_controller = DigitalInputController(self)
        self.digital_output_controller = DigitalOutputController(
            self.model, self)
        self.pwm_controller = PulseWidthModulationController(self.model, self)
        self.ui.layout_values.addWidget(self.digital_input_controller)
        self.ui.layout_values.addWidget(self.digital_output_controller)
        self.ui.layout_values.addWidget(self.pwm_controller)

        # Set slots for combo boxes signals and button enable
        self.ui.comboBox_type.currentTextChanged.connect(self.on_type_changed)
        self.ui.comboBox_mode.currentTextChanged.connect(self.on_mode_changed)
        self.ui.button_enable.clicked.connect(self.on_button_enable)

        # Set slots for actions triggers signals
        self.ui.action_exit.triggered.connect(QtWidgets.qApp.quit)
        self.ui.action_license.triggered.connect(self.license_controller.show)
        self.ui.action_about.triggered.connect(self.on_action_about)
        self.ui.action_load.triggered.connect(self.on_action_load)
        self.ui.action_save.triggered.connect(self.on_action_save)
    def __init__(self):
        super().__init__()
        self.mapper = QtWidgets.QDataWidgetMapper()

        hbox = QtWidgets.QHBoxLayout()
        self.setLayout(hbox)

        self._val = 0
        self._display_digits = 3
        self._display_scientific = False

        self.ui_name = QtWidgets.QLabel('unknown')
        self.ui_val = QtWidgets.QLabel('?')
        self.ui_units = QtWidgets.QLabel('')

        hbox.addWidget(self.ui_name)
        hbox.addWidget(QtWidgets.QLabel(': '))
        hbox.addWidget(self.ui_val)
        hbox.addWidget(self.ui_units)
        hbox.addStretch(1)
Beispiel #18
0
    def __init__(self, parent=None):
        super().__init__(parent)

        self.label = QtWidgets.QLabel()
        self.button_left = QtWidgets.QPushButton('<')
        self.button_right = QtWidgets.QPushButton('>')
        blayout = QtWidgets.QHBoxLayout()
        blayout.addWidget(self.button_left)
        blayout.addWidget(self.button_right)
        layout = QtWidgets.QVBoxLayout(self)
        layout.addWidget(self.label)
        layout.addLayout(blayout)

        self.mapper = QtWidgets.QDataWidgetMapper(self)
        self.db = create_db()
        self.model = QSqlQueryModel(self)
        self.model.setQuery('SELECT * FROM test')
        self.mapper.setModel(self.model)
        self.mapper.addMapping(self.label, 0, b'text')
        self.mapper.toFirst()

        self.button_left.clicked.connect(self.mapper.toPrevious)
        self.button_right.clicked.connect(self.mapper.toNext)
Beispiel #19
0
    def __init__(self, parent, master, *args, **kwargs):
        super().__init__(parent, *args, **kwargs)

        self._actions = []
        self.master = master

        vbox = qt.QVBoxLayout(self)
        vbox.setContentsMargins(0, 0, 0, 0)

        frame = qt.QGroupBox('Details')
        vbox.addWidget(frame)

        labels = qt.QFormLayout(frame)
        mapper = qt.QDataWidgetMapper(self)
        mapper.setModel(master.model())

        col_titles = {'FromAlias': 'From', 'ToAlias': 'To'}
        for text in ('FromAlias', 'ToAlias', 'Title', 'Date', 'IPFS', 'Hash'):
            left = qt.QLabel(col_titles.get(text, text) + ':')
            right = qt.QLabel('')
            right.setTextInteractionFlags(Qt.TextSelectableByMouse)
            labels.addRow(left, right)
            section = mapper.model().findColumn(text)
            if section is not None:
                mapper.addMapping(right, section, b'text')

        master.selectionModel().currentRowChanged.connect(
            mapper.setCurrentModelIndex)

        docs_tree = qt.QTreeView()
        docs_tree.setModel(master.model().document_model)
        vbox.addWidget(docs_tree)

        master.selectionModel().currentRowChanged.connect(
            master.model().setCurrentDocumentBatch)

        self.initContextMenu(docs_tree)
Beispiel #20
0
 def __init__(self, parent=None):
     super(TransformEditor, self).__init__(parent)
     self.setupUi(self)
     self._dataWrapper = QtWidgets.QDataWidgetMapper()
     self._dataWrapper.setItemDelegate(TransformDelegate())
     self.show()
Beispiel #21
0
 def __init__(self, parent=None):
     super(obj3dBase, self).__init__(parent)
     self.setupUi(self)
     self.show()
     self._dataWrapper = QtWidgets.QDataWidgetMapper()
Beispiel #22
0
 def __init__(self, parent=None):
     super(RoadView, self).__init__(parent)
     self.setupUi(self)
     self.mapper = QtWidgets.QDataWidgetMapper(self)
Beispiel #23
0
    def __init__(self, parent=None):
        super().__init__()

        self.parent = parent
        self.cfg = parent.cfg

        self.state = mesoSPIM_StateSingleton()

        loadUi('gui/mesoSPIM_AcquisitionManagerWindow.ui', self)
        self.setWindowTitle('mesoSPIM Acquisition Manager')

        self.MoveUpButton.clicked.connect(self.move_selected_row_up)
        self.MoveDownButton.clicked.connect(self.move_selected_row_down)

        ''' Parent Enable / Disable GUI'''
        self.parent.sig_enable_gui.connect(lambda boolean: self.setEnabled(boolean))

        self.statusBar = QtWidgets.QStatusBar()

        ''' Setting the model up '''
        self.model = AcquisitionModel()

        self.table.setModel(self.model)
        self.model.dataChanged.connect(self.set_state)
        self.model.dataChanged.connect(self.update_acquisition_time_prediction)

        ''' Table selection behavior '''
        self.table.setSelectionBehavior(self.table.SelectRows)
        self.table.setSelectionMode(self.table.ExtendedSelection)
        self.table.setDragDropMode(self.table.InternalMove)
        self.table.setDragDropOverwriteMode(False)
        self.table.setDragEnabled(True)
        self.table.setAcceptDrops(True)
        self.table.setDropIndicatorShown(True)
        self.table.setSortingEnabled(True)

        self.set_item_delegates()

        ''' Set our custom style - this draws the drop indicator across the whole row '''
        self.table.setStyle(MyStyle())

        self.selection_model = self.table.selectionModel()
        self.selection_mapper = QtWidgets.QDataWidgetMapper()

        self.AddButton.clicked.connect(self.add_row)
        self.DeleteButton.clicked.connect(self.delete_row)
        self.CopyButton.clicked.connect(self.copy_row)

        self.SaveButton.clicked.connect(self.save_table)
        self.LoadButton.clicked.connect(self.load_table)

        self.MarkCurrentXYButton.clicked.connect(self.mark_current_xy_position)
        self.MarkCurrentFocusButton.clicked.connect(self.mark_current_focus)
        self.MarkCurrentRotationButton.clicked.connect(self.mark_current_rotation)
        self.MarkCurrentStateButton.clicked.connect(self.mark_current_state)
        self.MarkCurrentETLParametersButton.clicked.connect(self.mark_current_etl_parameters)
        self.PreviewSelectionButton.clicked.connect(self.preview_acquisition)

        self.TilingWizardButton.clicked.connect(self.run_tiling_wizard)
        self.FilenameWizardButton.clicked.connect(self.generate_filenames)
        self.FocusTrackingWizardButton.clicked.connect(self.run_focus_tracking_wizard)
        self.ImageProcessingWizardButton.clicked.connect(self.run_image_processing_wizard)

        self.DeleteAllButton.clicked.connect(self.delete_all_rows)
        # self.SetRotationPointButton.clicked.connect(lambda bool: self.set_rotation_point() if bool is True else self.delete_rotation_point())
        self.SetFoldersButton.clicked.connect(self.set_folder_names)


        logger.info('Thread ID at Startup: '+str(int(QtCore.QThread.currentThreadId())))

        self.selection_model.selectionChanged.connect(self.selected_row_changed)

        ''' Display initial time prediction '''
        self.update_acquisition_time_prediction()

        '''XML writing testcode'''
Beispiel #24
0
    def __init__(self, parent=None, in_designer=False):
        super().__init__(parent=parent)

        self.in_designer = in_designer

        self.ui = epyqlib.nvview_ui.Ui_Form()
        self.ui.setupUi(self)

        self.ui.module_to_nv_button.clicked.connect(self.module_to_nv)
        self.ui.write_to_module_button.clicked.connect(self.write_to_module)
        self.ui.read_from_module_button.clicked.connect(self.read_from_module)
        self.ui.write_to_file_button.clicked.connect(self.write_to_file)
        self.ui.write_to_value_set_file_button.clicked.connect(
            self.write_to_value_set_file, )
        self.ui.write_to_overlay_value_set_file_button.clicked.connect(
            self.write_to_overlay_value_set_file, )
        self.ui.write_to_sparse_value_set_file_button.clicked.connect(
            self.write_to_sparse_value_set_file, )
        self.ui.read_from_file_button.clicked.connect(self.read_from_file)
        self.ui.read_from_value_set_file_button.clicked.connect(
            self.read_from_value_set_file, )
        self.ui.write_to_auto_parameters_button.clicked.connect(
            self.write_to_auto_parameters, )

        view = self.ui.tree_view

        view.setContextMenuPolicy(Qt.CustomContextMenu)
        view.customContextMenuRequested.connect(self.context_menu)

        view.header().setContextMenuPolicy(Qt.CustomContextMenu)
        view.header().customContextMenuRequested.connect(
            self.header_context_menu, )

        view.setSelectionBehavior(view.SelectItems)
        view.setSelectionMode(view.ExtendedSelection)
        view.row_columns = {
            epyqlib.nv.Columns.indexes.name,
        }
        self.meta_columns = {
            getattr(epyqlib.nv.Columns.indexes, meta.name)
            for meta in epyqlib.nv.MetaEnum
        }
        no_update_columns = set(epyqlib.nv.Columns.indexes)
        no_update_columns -= {
            epyqlib.nv.Columns.indexes.name,
        }
        no_update_columns -= self.meta_columns
        no_update_columns.remove(epyqlib.nv.Columns.indexes.scratch)
        view.no_update_columns = no_update_columns

        self.resize_columns = epyqlib.nv.Columns(
            name=True,
            comment=True,
        )

        self.progress = None

        self.ui.tree_view.clicked.connect(self.clicked)
        self.ui.tree_view.header().setMinimumSectionSize(0)

        self.ui.searchbox.connect_to_view(
            view=self.ui.tree_view,
            column=epyqlib.nv.Columns.indexes.name,
        )

        self.can_contents = None
        self.can_suffix = None
        self.set_access_level_signal_path(path=None)

        self.password_mapper = QtWidgets.QDataWidgetMapper()
        self.password_mapper.setSubmitPolicy(
            QtWidgets.QDataWidgetMapper.ManualSubmit, )
        self.access_level_mapper = QtWidgets.QDataWidgetMapper()
        self.access_level_mapper.setSubmitPolicy(
            QtWidgets.QDataWidgetMapper.ManualSubmit, )

        self.ui.access_level_password.setPlaceholderText("Access Code...")

        self.metas = None
        self.set_metas(())

        self.resize_modes = None

        self.device = None

        self.diff_proxy = None

        self.ui.diff_reference_column.currentIndexChanged[int].connect(
            self.diff_reference_column_changed, )

        self.ui.auto_read.stateChanged.connect(lambda state: (
            self.auto_read_checked.emit()
            if state == Qt.Checked else self.auto_read_unchecked.emit()))

        self.auth_key = None
    def __init__(self, model, parent=None):
        super(ActiveBreathingPhrase, self).__init__(parent)

        self.model = model
        self.mapper = QtWidgets.QDataWidgetMapper(self)
        self._init_ui()
Beispiel #26
0
    def initUI(self, Macro_Dialog):
        Macro_Dialog.setObjectName("Macro_Dialog")
        Macro_Dialog.resize(600, 675)

        self.macro_title = QtWidgets.QLineEdit(Macro_Dialog)
        self.macro_title.setGeometry(QtCore.QRect(100, 20, 400, 30))
        self.macro_title.setMaxLength(75)
        self.macro_title.setAlignment(QtCore.Qt.AlignCenter)
        self.macro_title.setObjectName("macro_title")

        self.macro_description = QtWidgets.QTextEdit(Macro_Dialog)
        self.macro_description.setGeometry(QtCore.QRect(20, 70, 560, 100))
        self.macro_description.setObjectName("macro_description")

        self.Label_sheets = QtWidgets.QLabel(Macro_Dialog)
        self.Label_sheets.setGeometry(QtCore.QRect(45, 210, 210, 20))
        self.Label_sheets.setAlignment(QtCore.Qt.AlignCenter)
        self.Label_sheets.setObjectName("Label_sheets")

        self.Label_cell_entries = QtWidgets.QLabel(Macro_Dialog)
        self.Label_cell_entries.setGeometry(QtCore.QRect(345, 210, 210, 20))
        self.Label_cell_entries.setAlignment(QtCore.Qt.AlignCenter)
        self.Label_cell_entries.setObjectName("Label_cell_entries")

        self.tableWidget_sheets = QtWidgets.QTableWidget(Macro_Dialog)
        self.tableWidget_sheets.setGeometry(QtCore.QRect(45, 240, 218, 320))
        self.tableWidget_sheets.setEditTriggers(
            QtWidgets.QAbstractItemView.DoubleClicked
            | QtWidgets.QAbstractItemView.AnyKeyPressed)
        self.tableWidget_sheets.setSelectionBehavior(
            QtWidgets.QAbstractItemView.SelectRows)
        self.tableWidget_sheets.setColumnCount(2)
        self.tableWidget_sheets.setObjectName("tableWidget_sheets")
        self.tableWidget_sheets.setRowCount(
            0)  # << Set to 0 myself. Use commented code later if needed
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_sheets.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_sheets.setHorizontalHeaderItem(1, item)

        self.tableWidget_cells = QtWidgets.QTableWidget(Macro_Dialog)
        self.tableWidget_cells.setGeometry(QtCore.QRect(345, 240, 218, 320))
        self.tableWidget_cells.setEditTriggers(
            QtWidgets.QAbstractItemView.DoubleClicked
            | QtWidgets.QAbstractItemView.AnyKeyPressed)
        self.tableWidget_cells.setSelectionBehavior(
            QtWidgets.QAbstractItemView.SelectRows)
        self.tableWidget_cells.setObjectName("tableWidget_cell_entries")
        self.tableWidget_cells.setColumnCount(2)
        self.tableWidget_cells.setRowCount(
            0)  # << Set to 0 myself. Use commented code later if needed
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_cells.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget_cells.setHorizontalHeaderItem(1, item)

        if self.model:  # If this window was opened with "Edit" button (Not "New" button)
            self.mapper = QtWidgets.QDataWidgetMapper(
                self, submitPolicy=QtWidgets.QDataWidgetMapper.ManualSubmit)
            self.mapper.setModel(self.model)
            self.mapper.addMapping(self.macro_title,
                                   self.model.record().indexOf("title"))
            self.mapper.addMapping(self.macro_description,
                                   self.model.record().indexOf("description"))
            self.mapper.setCurrentIndex(self.index)

        self.Button_del_sheets = QtWidgets.QPushButton(Macro_Dialog)
        self.Button_del_sheets.setGeometry(QtCore.QRect(90, 570, 50, 30))
        self.Button_del_sheets.setAutoDefault(False)
        self.Button_del_sheets.setObjectName("Button_del_sheets")
        self.Button_del_sheets.clicked.connect(lambda: self.remove_row(
            self.tableWidget_sheets))  # Del Sheet entry

        self.Button_add_sheets = QtWidgets.QPushButton(Macro_Dialog)
        self.Button_add_sheets.setGeometry(QtCore.QRect(170, 570, 50, 30))
        self.Button_add_sheets.setAutoDefault(False)
        self.Button_add_sheets.setObjectName("Button_add_sheets")
        self.Button_add_sheets.clicked.connect(lambda: self.add_row(
            self.tableWidget_sheets))  # Add entry to sheet table

        self.Button_del_cell_entries = QtWidgets.QPushButton(Macro_Dialog)
        self.Button_del_cell_entries.setGeometry(QtCore.QRect(
            390, 570, 50, 30))
        self.Button_del_cell_entries.setAutoDefault(False)
        self.Button_del_cell_entries.setObjectName("Button_del_cell_entries")
        self.Button_del_cell_entries.clicked.connect(
            lambda: self.remove_row(self.tableWidget_cells))  # Del cell entry

        self.Button_add_cell_entries = QtWidgets.QPushButton(Macro_Dialog)
        self.Button_add_cell_entries.setGeometry(QtCore.QRect(
            470, 570, 50, 30))
        self.Button_add_cell_entries.setAutoDefault(False)
        self.Button_add_cell_entries.setObjectName("Button_add_cell_entries")
        self.Button_add_cell_entries.clicked.connect(lambda: self.add_row(
            self.tableWidget_cells))  # Add entry to cell entry table

        self.Button_cancel = QtWidgets.QPushButton(Macro_Dialog)
        self.Button_cancel.setGeometry(QtCore.QRect(190, 630, 100, 30))
        self.Button_cancel.setAutoDefault(False)
        self.Button_cancel.setObjectName("Button_cancel")
        self.Button_cancel.clicked.connect(
            lambda: Macro_Dialog.close())  # << Exit Dialog

        self.Button_save = QtWidgets.QPushButton(Macro_Dialog)
        self.Button_save.setGeometry(QtCore.QRect(310, 630, 100, 30))
        self.Button_save.setObjectName("Button_save")
        self.Button_save.clicked.connect(
            self.accept)  # << Save/Update Dialog to sqlite
        if self.model:
            self.Button_save.clicked.connect(self.mapper.submit)

        self.retranslateUi(Macro_Dialog)
        QtCore.QMetaObject.connectSlotsByName(Macro_Dialog)
Beispiel #27
0
    def __init__(self, db_name="Media-Database.db", parent=None):
        super(MDB, self).__init__(parent)
        # ===== Database =====
        self.db = QtSql.QSqlDatabase.addDatabase("QSQLITE")
        self.db.setDatabaseName(db_name)
        if not self.db.open():
            QtWidgets.QMessageBox.warning(
                self, "Media Database",
                "Error connecting to database:\n{}".format(
                    self.db.lastError().text()), QtWidgets.QMessageBox.Ok)
            sys.exit(1)

        if self.db.driver().hasFeature(QtSql.QSqlDriver.Transactions):
            logger.info("Database driver can commit and rollback.")
        self.create_tables()

        # ===== Create Models =====
        # main entries model
        self.model_media = QtSql.QSqlTableModel(self)
        self.model_media.setTable("media")
        self.model_media.setEditStrategy(QtSql.QSqlTableModel.OnFieldChange)
        self.model_media.sort(
            1, QtCore.Qt.AscendingOrder
        )  # Column 1 is the 'title' column of the 'media' table.
        self.model_media.select()
        # proxy model for search feature.
        self.model_media_proxy = QtCore.QSortFilterProxyModel(self)
        self.model_media_proxy.setSourceModel(self.model_media)
        self.model_media_proxy.sort(
            1, QtCore.Qt.AscendingOrder
        )  # Column 1 is the 'title' column of the 'media' table.
        self.model_media_proxy.setFilterKeyColumn(1)
        self.model_media_proxy.setFilterCaseSensitivity(
            QtCore.Qt.CaseInsensitive)
        # genres model
        self.model_genres = QtSql.QSqlTableModel(self)
        self.model_genres.setTable("genres")
        self.model_genres.sort(
            1, QtCore.Qt.AscendingOrder
        )  # Column 1 is the 'genre' column of the 'genres' table.
        self.model_genres.setEditStrategy(QtSql.QSqlTableModel.OnFieldChange)
        self.model_genres.select()
        # media types model
        self.model_types = QtSql.QSqlTableModel(self)
        self.model_types.setTable("media_types")
        self.model_types.sort(
            1, QtCore.Qt.AscendingOrder
        )  # Column 1 is the 'title' column of the 'media' table.
        self.model_types.setEditStrategy(QtSql.QSqlTableModel.OnFieldChange)
        self.model_types.select()

        # ===== Create the UI =====
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.lst_media_list.setModel(self.model_media_proxy)
        self.ui.lst_media_list.setModelColumn(
            1)  # Column 1 is the 'title' column of the 'media' table.
        self.ui.cb_genre.setModel(self.model_genres)
        self.ui.cb_genre.setModelColumn(
            1)  # Column 1 is the 'genre' column of the 'genres' table.
        self.ui.cb_media_type.setModel(self.model_types)
        self.ui.cb_media_type.setModelColumn(
            1)  # Column 1 is the 'type' column of the 'media_types' table.
        # List view selection model
        self.selection = self.ui.lst_media_list.selectionModel()
        # Sub-Windows
        self.ui_edit_genres = MDBEditGenres(
            self,
            self.model_genres)  # Give the genres model to the pop-up dialog.
        self.ui_edit_types = MDBEditTypes(
            self,
            self.model_types)  # Give the types model to the pop-up dialog.
        self.ui_converter = MDBConverter(self)

        # ===== Create Widget Mapper =====
        self.widget_mapper = QtWidgets.QDataWidgetMapper(self)
        self.widget_mapper.setModel(self.model_media_proxy)
        self.widget_mapper.setSubmitPolicy(
            QtWidgets.QDataWidgetMapper.AutoSubmit)
        self.widget_mapper.addMapping(self.ui.le_title,
                                      1)  # 'title' column text
        self.widget_mapper.addMapping(self.ui.te_description,
                                      2)  # 'description' column text
        self.widget_mapper.addMapping(self.ui.le_age_rating,
                                      3)  # 'age_rating' column text
        self.widget_mapper.addMapping(self.ui.cb_genre,
                                      4)  # 'genre' column text
        self.widget_mapper.addMapping(self.ui.sb_season,
                                      5)  # 'season' column int
        self.widget_mapper.addMapping(self.ui.sb_disc_count,
                                      6)  # 'disc_count' column int
        self.widget_mapper.addMapping(self.ui.cb_media_type,
                                      7)  # 'media_type' column text
        self.widget_mapper.addMapping(self.ui.sb_play_time,
                                      8)  # 'play_time' column int
        self.widget_mapper.addMapping(self.ui.te_notes,
                                      9)  # 'notes' column text
        self.widget_mapper.toFirst()

        # ===== Display Entry Count =====
        self.count_entries_by_type()

        # ===== Create Signal/Slots =====
        logger.info("Creating Qt Signal/Slot Connections...")
        # Search Options:
        self.ui.rb_title.toggled.connect(lambda: self.model_media_proxy.
                                         setFilterKeyColumn(1))  # Title Column
        self.ui.rb_description.toggled.connect(
            lambda: self.model_media_proxy.setFilterKeyColumn(
                2))  # Description Column
        self.ui.rb_genre.toggled.connect(lambda: self.model_media_proxy.
                                         setFilterKeyColumn(4))  # Genre Column
        self.ui.rb_notes.toggled.connect(lambda: self.model_media_proxy.
                                         setFilterKeyColumn(9))  # Notes Column
        # File Menu:
        self.ui.actionQuit.triggered.connect(self.closeEvent)
        # View Menu:
        self.ui.actionClear_UI.triggered.connect(self.clear_ui)
        # Data Menu:
        self.ui.actionAdd_Entry.triggered.connect(self.add_entry)
        self.ui.actionDelete_Entry.triggered.connect(self.delete_entry)
        self.ui.actionEdit_Genres.triggered.connect(
            self.show_edit_genres_window)
        # self.ui.actionConvert_Genres.triggered.connect()
        self.ui.actionEdit_Media_Types.triggered.connect(
            self.show_edit_types_window)
        # self.ui.actionConvert_Types.triggered.connect()
        # Help Menu:
        self.ui.actionAbout.triggered.connect(
            lambda: QtWidgets.QMessageBox.information(
                self, f"About MDB {__version__}",
                f"Media Database created by {__author__}\nVersion: {__version__}",
                QtWidgets.QMessageBox.Ok))
        # Other UI Elements:
        self.ui.le_search_bar.textChanged.connect(
            self.model_media_proxy.setFilterRegExp)
        self.ui.actionDisplay_by_Type.triggered.connect(
            lambda: self.display_count(self.ui.actionDisplay_by_Type))
        self.ui.actionDisplay_by_Genre.triggered.connect(
            lambda: self.display_count(self.ui.actionDisplay_by_Genre))
        self.selection.selectionChanged.connect(self.display_selected_entry)
        logger.info("Qt Connections Done.")