Esempio n. 1
0
    def __init__(self):
        super().__init__()
        title = QLabel("Analysis Complete!")
        title.setObjectName("title")

        self.file_path = QLabel()
        self.file_path.setWordWrap(True)
        self.file_path.setObjectName("details")
        self.file_path.setFixedHeight(50)

        result = QPushButton("View Results")
        result.clicked.connect(partial(self.open_result))

        start_over = QPushButton("Start Over")
        start_over.clicked.connect(self.reset)

        button_layout = QHBoxLayout()
        button_layout.addWidget(result)
        button_layout.addWidget(start_over)

        layout = QVBoxLayout()
        layout.addWidget(title)
        layout.addWidget(self.file_path)
        layout.insertSpacing(3, 75)
        layout.addLayout(button_layout)
        self.setLayout(layout)
Esempio n. 2
0
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)

        def inttocheck(value):
            if value:
                return Qt.Checked
            return Qt.Unchecked

        cparser = PuddleConfig()

        self.extpattern = QLineEdit()
        self.extpattern.setText(
            cparser.load('playlist', 'extpattern', '%artist% - %title%'))

        self.extinfo = QCheckBox(
            translate("Playlist Settings", '&Write extended info'), self)
        self.extinfo.stateChanged.connect(self.extpattern.setEnabled)
        self.extinfo.setCheckState(
            inttocheck(cparser.load('playlist', 'extinfo', 1, True)))
        self.extpattern.setEnabled(self.extinfo.checkState())

        self.reldir = QCheckBox(
            translate("Playlist Settings",
                      'Entries &relative to working directory'))
        self.reldir.setCheckState(
            inttocheck(cparser.load('playlist', 'reldir', 0, True)))

        self.windows_separator = QCheckBox(
            translate("Playlist Settings", 'Use windows path separator (\\)'))
        self.windows_separator.setCheckState(
            inttocheck(cparser.load('playlist', 'windows_separator', 0, True)))

        self.filename = QLineEdit()
        self.filename.setText(
            cparser.load('playlist', 'filepattern', 'puddletag.m3u'))
        label = QLabel(translate("Playlist Settings", '&Filename pattern.'))
        label.setBuddy(self.filename)

        hbox = QHBoxLayout()
        hbox.addSpacing(10)
        hbox.addWidget(self.extpattern)

        vbox = QVBoxLayout()
        [
            vbox.addWidget(z)
            for z in (self.extinfo, self.reldir, self.windows_separator, label,
                      self.filename)
        ]
        vbox.insertLayout(1, hbox)
        vbox.addStretch()
        vbox.insertSpacing(3, 5)
        vbox.insertSpacing(5, 5)
        self.setLayout(vbox)
Esempio n. 3
0
    def init_ui(self):

        # v.box
        box = QVBoxLayout()
        box.setSpacing(5)
        box2 = QVBoxLayout()
        box2.setSpacing(0)

        l1 = QLabel('Red Discord Bot', self)
        l1.setFont(QtGui.QFont("Times", 14))
        box.addWidget(l1, 0, Qt.AlignTop)
        box.insertSpacing(1, 10)

        b1 = QPushButton("Start Red", self)
        b1.setMinimumWidth(100)
        box.addWidget(b1, 0, Qt.AlignHCenter)
        b2 = QPushButton("Start Red Loop", self)
        b2.setMinimumWidth(100)
        box.addWidget(b2, 0, Qt.AlignHCenter)
        box.insertSpacing(4, 10)

        b3 = QPushButton("Update Red", self)
        b3.setMinimumWidth(80)
        box2.addWidget(b3, 0, Qt.AlignHCenter)
        b4 = QPushButton("Install Requirements", self)
        b4.setMinimumWidth(120)
        box2.addWidget(b4, 0, Qt.AlignHCenter)
        b5 = QPushButton("Maintenance", self)
        b5.setMinimumWidth(100)
        box2.addWidget(b5, 0, Qt.AlignHCenter)

        # b2.setEnabled(False)
        box.setAlignment(Qt.AlignHCenter)
        box2.addStretch(5)
        box.addLayout(box2)
        self.setLayout(box)

        # binds
        b1.clicked.connect(lambda: self.startred(autorestart=False))
        b2.clicked.connect(lambda: self.startred(autorestart=True))
        b3.clicked.connect(lambda: self.switchwindow(window=UpdateWindow()))
        b4.clicked.connect(
            lambda: self.switchwindow(window=RequirementsWindow()))
        b5.clicked.connect(
            lambda: self.switchwindow(window=MaintenanceWindow()))

        # window
        self.setFixedSize(220, 210)
        self.setWindowIcon(QtGui.QIcon('red.ico'))
        self.setWindowTitle('Red Bot')
        self.show()
Esempio n. 4
0
    def __init__(self, parent=None):
        super().__init__(parent)
        outer_container = QWidget()
        self.email = QLineEdit()
        self.email.setPlaceholderText('Email')
        self.email.setFixedSize(300, 25)
        self.username = QLineEdit()
        self.username.setPlaceholderText('Username')
        self.username.setFixedSize(300, 25)
        self.password = QLineEdit()
        self.password.setPlaceholderText('Password')
        self.password.setEchoMode(QLineEdit.Password)
        self.password.setFixedSize(300, 25)
        self.confirm_password = QLineEdit()
        self.confirm_password.setPlaceholderText('Confirm Password')
        self.confirm_password.setEchoMode(QLineEdit.Password)
        self.confirm_password.setFixedSize(300, 25)
        self.error_reporter = QLabel()
        self.error_reporter.setStyleSheet('color: red;')
        self.error_reporter.setFixedSize(300, 25)
        self.register_btn = QPushButton('Register')
        self.register_btn.clicked.connect(self.emit)
        self.register_btn.setFixedSize(100, 30)
        self.back_btn = QPushButton('Back')
        self.back_btn.clicked.connect(lambda: self.action_chosen.emit(0))
        self.back_btn.setFixedSize(100, 30)

        mlayout = QVBoxLayout()
        mlayout.setAlignment(Qt.AlignCenter)
        mlayout.addWidget(outer_container)

        layout = QVBoxLayout()
        layout.addWidget(self.email, 0, Qt.AlignCenter)
        layout.addWidget(self.username, 0, Qt.AlignCenter)
        layout.addWidget(self.password, 0, Qt.AlignCenter)
        layout.addWidget(self.confirm_password, 0, Qt.AlignCenter)
        layout.addWidget(self.error_reporter, 0, Qt.AlignCenter)
        layout.insertSpacing(5, 20)

        btn_layout = QHBoxLayout()
        btn_layout.addWidget(self.back_btn)
        btn_layout.addWidget(self.register_btn)
        layout.addLayout(btn_layout)

        outer_container.setLayout(layout)
        self.setLayout(mlayout)
Esempio n. 5
0
    def init_ui(self):
        vbl_0 = QVBoxLayout(self)

        self.label_title = QLabel(self)
        font = QFont()
        font.setPointSize(18)
        font.setBold(True)
        self.label_title.setFont(font)
        self.label_title.setContentsMargins(2, 5, 5, 7)
        self.label_title.setStyleSheet(Style.h2())
        lbl_color = QLabel("   ", self)
        lbl_color.setStyleSheet(Style.configure_title())
        hbox1 = QHBoxLayout()
        hbox1.addWidget(lbl_color)
        hbox1.addWidget(self.label_title, 1)
        self.btn_help = QPushButton(_("Help..."), self)
        self.btn_help.clicked.connect(self.on_button_help_clicked)
        hbox1.addWidget(self.btn_help)
        hbox1.setContentsMargins(0, 0, 0, 5)
        vbl_0.addLayout(hbox1)
        vbl_0.insertSpacing(2, 25)

        grid = QGridLayout()
        grid.setContentsMargins(0, 0, 0, 0)  # left, top, right, bottom
        grid.setVerticalSpacing(5)

        self.para_widgets = {
            "resource_dir":
            ParaLine(self, "resource_dir", ParaWidget.str_conv(), grid, 3,
                     True),
            "metadata_dir":
            ParaLine(self, "metadata_dir", ParaWidget.str_conv(), grid, 5,
                     False),
            "description_dir":
            ParaLine(self, "description_dir", ParaWidget.str_conv(), grid, 7,
                     True),
            "plugin_dir":
            ParaLine(self, "plugin_dir", ParaWidget.str_conv(), grid, 9, True),
            "url_prefix":
            ParaLine(self, "url_prefix", ParaWidget.str_conv(), grid, 11,
                     False),
            "strategy":
            ParaStrategyDrop(self, "strategy", grid, 15),
            "max_items_in_list":
            ParaLine(self,
                     "max_items_in_list",
                     ParaWidget.int_conv(),
                     grid,
                     17,
                     False,
                     width=100),
            "zero_fill_filename":
            ParaLine(self,
                     "zero_fill_filename",
                     ParaWidget.int_conv(),
                     grid,
                     19,
                     False,
                     width=100),
            "is_saving_pretty_xml":
            ParaCheck(self, "is_saving_pretty_xml", grid, 21),
            "is_saving_sitemaps":
            ParaCheck(self, "is_saving_sitemaps", grid, 22),
            "has_wellknown_at_root":
            ParaCheck(self, "has_wellknown_at_root", grid, 23)
        }

        self.button_reset = QPushButton(_("Reset"), self)
        self.button_reset.clicked.connect(self.on_button_reset_clicked)
        grid.addWidget(self.button_reset, 24, 3)

        vbl_0.addLayout(grid)
        vbl_0.addStretch(1)
        self.setLayout(vbl_0)
Esempio n. 6
0
    def init_ui(self):
        vbl_0 = QVBoxLayout(self)

        self.label_title = QLabel(self)
        font = QFont()
        font.setPointSize(18)
        font.setBold(True)
        self.label_title.setFont(font)
        self.label_title.setContentsMargins(2, 5, 5, 7)
        self.label_title.setStyleSheet(Style.h2())
        lbl_color = QLabel("   ", self)
        lbl_color.setStyleSheet(Style.transport_title())
        hbox1 = QHBoxLayout()
        hbox1.addWidget(lbl_color)
        hbox1.addWidget(self.label_title, 1)
        self.btn_help = QPushButton(_("Help..."), self)
        self.btn_help.clicked.connect(self.on_button_help_clicked)
        hbox1.addWidget(self.btn_help)
        hbox1.setContentsMargins(0, 0, 0, 5)
        vbl_0.addLayout(hbox1)

        grid1 = QGridLayout()
        grid1.setContentsMargins(0, 0, 0, 0)  # left, top, right, bottom
        grid1.setVerticalSpacing(2)
        grid1.setHorizontalSpacing(2)

        self.lbl_metadata_key = SelectableLabel(self)
        self.lbl_metadata_value = SelectableLabel(self)
        grid1.addWidget(self.lbl_metadata_key, 2, 1)
        grid1.addWidget(self.lbl_metadata_value, 2, 2)

        self.lbl_last_execution_key = SelectableLabel(self)
        self.lbl_last_execution_value = SelectableLabel(self)
        grid1.addWidget(self.lbl_last_execution_key, 3, 1)
        grid1.addWidget(self.lbl_last_execution_value, 3, 2)

        hbox2 = QHBoxLayout()
        hbox2.addLayout(grid1)
        hbox2.addStretch(1)
        vbl_0.addLayout(hbox2)
        vbl_0.insertSpacing(2, 25)

        # # scp group
        grid2 = QGridLayout()
        grid2.setContentsMargins(0, 0, 0, 0)  # left, top, right, bottom
        grid2.setVerticalSpacing(5)
        grid2.setHorizontalSpacing(10)

        self.grp_scp = QGroupBox(_("Transfer files with Secure Copy Protocol (scp)"))
        vbox3 = QVBoxLayout()

        self.para_scp_widgets = {
            "exp_scp_server": ParaLine(self, "exp_scp_server", ParaWidget.str_conv(), grid2, 3, False),
            "exp_scp_port": ParaLine(self, "exp_scp_port", ParaWidget.int_conv(), grid2, 5, False, width=100),
            "exp_scp_user": ParaLine(self, "exp_scp_user", ParaWidget.str_conv(), grid2, 7, False),
            "exp_scp_document_root": ParaLine(self, "exp_scp_document_root", ParaWidget.str_conv(), grid2, 9, False),
        }
        self.lbl_server_path = QLabel(_("server_path_label"))
        self.edt_server_path = QLabel(self.ctrl.paras.server_path())
        self.edt_server_path.setStyleSheet(Style.derived())
        self.edt_server_path.setTextInteractionFlags(Qt.TextSelectableByMouse)
        grid2.addWidget(self.lbl_server_path, 11, 1)
        grid2.addWidget(self.edt_server_path, 11, 2)

        self.grp_scp.setLayout(vbox3)
        vbox3.addLayout(grid2)

        hbox_scp = QHBoxLayout()
        hbox_scp.addStretch(1)
        self.scp_radio_all = QRadioButton(_("Export all resources"))
        self.scp_radio_all.setChecked(False)
        self.scp_radio_latest = QRadioButton(_("Export latest changes"))
        self.scp_radio_latest.setChecked(True)
        hbox_scp.addWidget(self.scp_radio_all)
        hbox_scp.addWidget(self.scp_radio_latest)
        self.scp_button_start = QPushButton(_("Start transfer"))
        self.scp_button_start.clicked.connect(self.on_scp_button_start_clicked)
        hbox_scp.addWidget(self.scp_button_start)
        vbox3.addLayout(hbox_scp)

        vbl_0.addWidget(self.grp_scp)
        vbl_0.insertSpacing(4, 15)

        # # zip group
        grid3 = QGridLayout()
        grid3.setContentsMargins(0, 0, 0, 0)  # left, top, right, bottom
        grid3.setVerticalSpacing(5)
        grid3.setHorizontalSpacing(10)

        self.grp_zip = QGroupBox(_("Create a .zip file"))
        vbox4 = QVBoxLayout()

        self.para_zip_widgets = {
            "zip_filename": ParaLine(self, "zip_filename", ParaWidget.str_conv(), grid3, 3, browse="SaveFileName")
        }

        self.grp_zip.setLayout(vbox4)
        vbox4.addLayout(grid3)

        hbox_zip = QHBoxLayout()
        hbox_zip.addStretch(1)
        self.zip_radio_all = QRadioButton(_("Zip all resources"))
        self.zip_radio_all.setChecked(False)
        self.zip_radio_latest = QRadioButton(_("Zip latest changes"))
        self.zip_radio_latest.setChecked(True)
        hbox_zip.addWidget(self.zip_radio_all)
        hbox_zip.addWidget(self.zip_radio_latest)
        self.zip_button_start = QPushButton(_("Start creation"))
        self.zip_button_start.clicked.connect(self.on_zip_button_start_clicked)
        hbox_zip.addWidget(self.zip_button_start)
        vbox4.addLayout(hbox_zip)

        vbl_0.addWidget(self.grp_zip)

        vbl_0.addStretch(1)
        self.setLayout(vbl_0)
Esempio n. 7
0
    def init_ui(self):
        vbl_0 = QVBoxLayout(self)

        self.label_title = QLabel(self)
        font = QFont()
        font.setPointSize(18)
        font.setBold(True)
        self.label_title.setFont(font)
        self.label_title.setContentsMargins(2, 5, 5, 7)
        self.label_title.setStyleSheet(Style.h2())
        lbl_color = QLabel("   ", self)
        lbl_color.setStyleSheet(Style.import_title())
        hbox1 = QHBoxLayout()
        hbox1.addWidget(lbl_color)
        hbox1.addWidget(self.label_title, 1)
        self.btn_help = QPushButton(_("Help..."), self)
        self.btn_help.clicked.connect(self.on_button_help_clicked)
        hbox1.addWidget(self.btn_help)
        hbox1.setContentsMargins(0, 0, 0, 5)
        vbl_0.addLayout(hbox1)
        vbl_0.insertSpacing(2, 25)

        # # scp group
        grid1 = QGridLayout()
        grid1.setContentsMargins(0, 0, 0, 0)  # left, top, right, bottom
        grid1.setVerticalSpacing(5)
        grid1.setHorizontalSpacing(10)

        self.grp_scp = QGroupBox(
            _("Import files with Secure Copy Protocol (scp)"))
        vbox1 = QVBoxLayout()

        self.para_scp_widgets = {
            "imp_scp_server":
            ParaLine(self, "imp_scp_server", ParaWidget.str_conv(), grid1, 3,
                     False),
            "imp_scp_port":
            ParaLine(self,
                     "imp_scp_port",
                     ParaWidget.int_conv(),
                     grid1,
                     5,
                     False,
                     width=100),
            "imp_scp_user":
            ParaLine(self, "imp_scp_user", ParaWidget.str_conv(), grid1, 7,
                     False),
            "imp_scp_remote_path":
            ParaLine(self, "imp_scp_remote_path", ParaWidget.str_conv(), grid1,
                     9, False),
            "imp_scp_local_path":
            ParaLine(self, "imp_scp_local_path", ParaWidget.str_conv(), grid1,
                     11, True),
        }

        self.grp_scp.setLayout(vbox1)
        vbox1.addLayout(grid1)

        hbox_scp = QHBoxLayout()
        hbox_scp.addStretch(1)
        self.scp_button_start = QPushButton(_("Start"))
        self.scp_button_start.clicked.connect(self.on_scp_button_start_clicked)
        hbox_scp.addWidget(self.scp_button_start)
        vbox1.addLayout(hbox_scp)

        vbl_0.addWidget(self.grp_scp)

        vbl_0.addStretch(1)
        self.setLayout(vbl_0)
Esempio n. 8
0
class exampleQMainWindow (QWidget):

    def __init__(self):
        super(exampleQMainWindow, self).__init__()
        # Create QListWidget
        self.myQListWidget = QListWidget(self)
        self.myQListWidget.setStyleSheet("""
            QListWidget:item:selected:active {
            background-color:#A6A4FF;}
            """)

        self.setMinimumSize(350, 500)
        self.config = configparser.ConfigParser()
        self.config.read('prefs.cfg')

        self.extention = QLineEdit()
        self.filename = QLineEdit()
        self.add_type = QPushButton("add type")
        self.del_type = QPushButton("del type")
        self.color_button = color_picker(parent=self)
        self.pattern_icon = Pattern_button(parent=self)
        self.radio_button_one = QRadioButton('Classic')
        self.radio_button_two = QRadioButton('Magellan')
        self.radio_group = QGroupBox('operation mode')
        self.radio_group.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
        self.pattern_group = QGroupBox('window pattern and text color')
        self.pattern_group.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)

        self.button_group = QButtonGroup()
        self.button_group.addButton(self.radio_button_one)
        self.button_group.addButton(self.radio_button_two)
        self.button_group.setId(self.radio_button_one, 1)
        self.button_group.setId(self.radio_button_two, 2)

        self.mainlayout = QVBoxLayout()
        self.holdgroups_layout = QHBoxLayout()
        self.radio_button_layout = QVBoxLayout()
        self.pattern_label_layout = QHBoxLayout()
        self.add_filetype_layout = QFormLayout()
        self.add_del_button_layout = QHBoxLayout()

        # adding
        self.holdgroups_layout.addWidget(self.radio_group)
        self.holdgroups_layout.addWidget(self.pattern_group)

        self.pattern_label_layout.addWidget(self.pattern_icon)
        self.pattern_label_layout.addStretch(1)
        self.pattern_label_layout.addWidget(self.color_button)
        self.pattern_label_layout.addStretch(1)
        self.pattern_group.setLayout(self.pattern_label_layout)

        self.radio_button_layout.addWidget(self.radio_button_one)
        self.radio_button_layout.addWidget(self.radio_button_two)
        self.radio_group.setLayout(self.radio_button_layout)

        self.add_filetype_layout.addRow('extention', self.extention)
        self.add_filetype_layout.addRow('path to icon', self.filename)
        self.add_del_button_layout.addWidget(self.add_type)
        self.add_del_button_layout.addWidget(self.del_type)

        # layouts settings 
        # self.radio_button_layout.setGeometry(QRect(10, 10, 10, 10))
        self.add_filetype_layout.setFieldGrowthPolicy(QFormLayout.ExpandingFieldsGrow)
        # self.pattern_icon.setPixmap(QPixmap("./images/pattern.png").scaledToWidth(80)) 
        self.mainlayout.setContentsMargins(5, 5, 5, 0)
        self.mainlayout.setSpacing(7)   

        # reading stored settings
        for key, value in self.config.items('icons'):
            myQCustomQWidget = QCustomQWidget()
            myQCustomQWidget.setTextUp("filetype: " + key.upper())
            myQCustomQWidget.setTextDown(value)
            myQCustomQWidget.setIcon(os.path.dirname(os.path.realpath(__file__)) + value)
            myQListWidgetItem = QListWidgetItem(self.myQListWidget) 
            myQListWidgetItem.setSizeHint(myQCustomQWidget.sizeHint()) 
            self.myQListWidget.addItem(myQListWidgetItem)
            self.myQListWidget.setItemWidget(myQListWidgetItem, myQCustomQWidget) 

        # adding elements to layout
        self.mainlayout.addLayout(self.holdgroups_layout)
        self.mainlayout.insertSpacing(10, 10)
        self.mainlayout.addWidget(self.myQListWidget)
        self.mainlayout.addLayout(self.add_filetype_layout)    
        self.mainlayout.addLayout(self.add_del_button_layout)
        self.setLayout(self.mainlayout) 
Esempio n. 9
0
class UiRootWindow:
    """ Root window UI class """
    def __init__(self):
        # ELEMENTS
        # ------------------------------ TOP ELEMENTS -------------------------------------
        self.logo = QLabel()
        self.add_new = QToolButton()
        self.pass_input = QLineEdit()
        # ------------------------------ MENU PANEL ELEMENTS ------------------------------
        self.b1 = MenuButton("Web Sites", ":/web", 30, 16)
        self.b2 = MenuButton("Credit Cards", ":/credit", 26, 16)
        self.b3 = MenuButton("Secrets", ":/secret", 26, 16)
        self.b4 = MenuButton("E-commerce", ":/ecommerce", 27, 16)
        self.b5 = MenuButton("Web Accounts", ":/webaccount", 30, 16)
        self.b6 = MenuButton("Emails", ":/email", 27, 16)
        self.b7 = MenuButton("Forums", ":/forum", 30, 16)
        self.b8 = MenuButton("Software", ":/software", 30, 16)
        self.export_dump = QToolButton()
        self.import_dump = QToolButton()
        # ------------------------------ TABLE PANEL ELEMENTS -----------------------------
        self.search_field = QLineEdit()
        # WIDGETS
        # ------------------------------ TOP WIDGETS --------------------------------------
        self.bar_top = QWidget()
        self.bar_menu = QWidget()
        self.bar_key = QWidget()
        # ------------------------------ TABLE PANEL WIDGETS ------------------------------
        self.table = QTableWidget()
        # Layouts
        self.main_layout = QVBoxLayout()
        self.first_layout = QHBoxLayout()
        self.second_layout = QHBoxLayout()
        self.second_layout_menu_bottom_extra = QHBoxLayout()
        self.second_layout_menu = QVBoxLayout()
        self.second_layout_keys = QVBoxLayout()
        self.second_layout_keys_childs = QHBoxLayout()

    def setup_ui(self, root_window) -> None:
        """ setup ui """

        root_window.setStyleSheet(qwidget_css.root_style)
        self.init_elements()
        self.init_widgets()
        self.init_layouts(root_window)
        self.table.setGraphicsEffect(self.init_effects(root_window))

    @staticmethod
    def init_effects(root_window: QWidget) -> QGraphicsDropShadowEffect:
        """
        Initialize base effects
        :return: QGraphicsDropShadowEffect
        """

        # ------------------------------ EFFECTS ------------------------------------------
        effect = QGraphicsDropShadowEffect(root_window)
        effect.setXOffset(0)
        effect.setYOffset(0)
        effect.setBlurRadius(10)
        effect.setColor(QColor("#b4b4b4"))
        return effect

    def init_elements(self) -> None:
        """
        Initialize main elements
        :return: None
        """

        # ------------------------------ TOP ELEMENTS -------------------------------------
        # LOGO with monkey face
        self.logo.setObjectName("logo")
        self.logo.setFixedSize(200, 50)
        self.logo.setPixmap(QPixmap(":/logo"))
        # ADD NEW button
        self.add_new.setObjectName("add_new")
        self.add_new.setText("+ add")
        self.add_new.setFixedHeight(50)
        self.add_new.setCursor(Qt.PointingHandCursor)
        # PASSWORD input field
        self.pass_input.setObjectName("pass_input")
        self.pass_input.setFixedHeight(50)
        self.pass_input.setPlaceholderText("secret key")
        self.pass_input.setEchoMode(QLineEdit.Password)
        self.pass_input.installEventFilter(self)
        # ------------------------------ MENU PANEL ELEMENTS ------------------------------
        self.export_dump.setMinimumSize(14, 14)
        self.export_dump.setIcon(QIcon("images/export.svg"))
        self.export_dump.setCursor(Qt.PointingHandCursor)
        self.export_dump.setToolTip("Export db to csv")
        self.export_dump.setStyleSheet(qwidget_css.menu_extra_buttons)
        self.import_dump.setMinimumSize(14, 14)
        self.import_dump.setIcon(QIcon("images/import.svg"))
        self.import_dump.setCursor(Qt.PointingHandCursor)
        self.import_dump.setToolTip("Import db from csv")
        self.import_dump.setStyleSheet(qwidget_css.menu_extra_buttons)
        # ------------------------------ TABLE PANEL ELEMENTS -----------------------------
        # SEARCH field
        self.search_field.setMinimumHeight(46)
        self.search_field.setMaxLength(50)
        self.search_field.setPlaceholderText(
            "Search: [title, name, email, url]")
        self.search_field.installEventFilter(self)
        self.search_field.setStyleSheet(qwidget_css.search_field_style)

    def init_widgets(self) -> None:
        """
        Initialize main widgets
        :return: None
        """

        # ------------------------------ TOP WIDGETS --------------------------------------
        self.bar_top.setObjectName("bar_top")
        self.bar_top.setFixedHeight(50)
        # ------------------------------ MENU WIDGETS -------------------------------------
        self.bar_menu.setObjectName("bar_menu")
        self.bar_menu.setFixedWidth(200)
        # ------------------------------ TABLE PANEL WIDGETS ------------------------------
        self.bar_key.setObjectName("bar_key")
        self.table.setColumnCount(8)
        self.table.setColumnWidth(0, 160)
        self.table.setColumnWidth(1, 150)
        self.table.setColumnWidth(2, 160)
        self.table.setColumnWidth(3, 150)
        self.table.setColumnWidth(4, 180)
        self.table.setColumnWidth(5, 150)
        self.table.setColumnWidth(6, 150)
        self.table.setColumnWidth(7, 150)
        self.table.setHorizontalHeaderItem(0, QTableWidgetItem("TITLE"))
        self.table.setHorizontalHeaderItem(1, QTableWidgetItem("NAME"))
        self.table.setHorizontalHeaderItem(2, QTableWidgetItem("EMAIL"))
        self.table.setHorizontalHeaderItem(3, QTableWidgetItem("PASSWORD"))
        self.table.setHorizontalHeaderItem(4, QTableWidgetItem("URL"))
        self.table.setHorizontalHeaderItem(5, QTableWidgetItem("PHONE"))
        self.table.setHorizontalHeaderItem(6, QTableWidgetItem("CREATED"))
        self.table.setHorizontalHeaderItem(7, QTableWidgetItem("MODIFIED"))
        self.table.horizontalHeader().setStretchLastSection(True)
        self.table.horizontalHeader().setDefaultAlignment(Qt.AlignLeft
                                                          | Qt.AlignVCenter)
        self.table.setShowGrid(False)
        self.table.setSelectionBehavior(QAbstractItemView.SelectRows)
        self.table.setSelectionMode(QAbstractItemView.SingleSelection)
        self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)
        self.table.installEventFilter(self)

    def init_layouts(self, root_window) -> None:
        """
        Initialize main layouts
        :return: None
        """

        self.main_layout.setContentsMargins(0, 0, 0, 0)
        self.main_layout.setSpacing(0)

        self.second_layout_keys.setSpacing(0)
        self.second_layout_keys.setContentsMargins(40, 0, 40, 0)
        self.second_layout_keys.setAlignment(Qt.AlignTop)
        self.second_layout_keys_childs.setSpacing(0)
        self.second_layout_keys_childs.setContentsMargins(0, 0, 0, 4)
        self.second_layout_keys_childs.setAlignment(Qt.AlignLeft)

        self.first_layout.setContentsMargins(0, 0, 0, 0)
        self.first_layout.addWidget(self.logo, alignment=Qt.AlignLeft)
        self.first_layout.addStretch(1)
        self.first_layout.addWidget(self.add_new, alignment=Qt.AlignCenter)
        self.first_layout.addWidget(self.pass_input, alignment=Qt.AlignCenter)
        self.bar_top.setLayout(self.first_layout)

        self.second_layout_menu_bottom_extra.setContentsMargins(10, 0, 10, 10)
        self.second_layout_menu_bottom_extra.addWidget(self.export_dump,
                                                       alignment=Qt.AlignLeft)
        self.second_layout_menu_bottom_extra.addSpacing(7)
        self.second_layout_menu_bottom_extra.addWidget(self.import_dump,
                                                       alignment=Qt.AlignLeft)
        self.second_layout_menu_bottom_extra.addStretch(1)

        self.second_layout_menu.setContentsMargins(0, 0, 0, 0)
        self.second_layout_menu.setSpacing(0)
        self.second_layout_menu.addSpacing(20)
        self.second_layout_menu.addWidget(self.b1, alignment=Qt.AlignCenter)
        self.second_layout_menu.addWidget(self.b5, alignment=Qt.AlignCenter)
        self.second_layout_menu.addWidget(self.b6, alignment=Qt.AlignCenter)
        self.second_layout_menu.addWidget(self.b2, alignment=Qt.AlignCenter)
        self.second_layout_menu.addWidget(self.b4, alignment=Qt.AlignCenter)
        self.second_layout_menu.addWidget(self.b3, alignment=Qt.AlignCenter)
        self.second_layout_menu.addWidget(self.b7, alignment=Qt.AlignCenter)
        self.second_layout_menu.addWidget(self.b8, alignment=Qt.AlignCenter)
        self.second_layout_menu.addStretch(1)
        self.second_layout_menu.addLayout(self.second_layout_menu_bottom_extra)
        self.bar_menu.setLayout(self.second_layout_menu)

        self.second_layout_keys.insertSpacing(0, 20)
        self.second_layout_keys.addWidget(self.search_field,
                                          alignment=Qt.AlignBaseline)
        self.second_layout_keys.insertSpacing(2, 20)
        self.second_layout_keys.addLayout(self.second_layout_keys_childs)
        self.second_layout_keys.insertSpacing(4, 7)
        self.second_layout_keys.addWidget(self.table)
        self.second_layout_keys.insertSpacing(6, 5)
        self.bar_key.setLayout(self.second_layout_keys)

        self.second_layout.setContentsMargins(0, 0, 0, 0)
        self.second_layout.addWidget(self.bar_menu, alignment=Qt.AlignLeft)
        self.second_layout.addWidget(self.bar_key)

        self.main_layout.addWidget(self.bar_top, alignment=Qt.AlignBaseline)
        self.main_layout.addLayout(self.second_layout)

        root_window.setLayout(self.main_layout)
        self.pass_input.setFocus(True)
Esempio n. 10
0
    def initUI(self):
        self.centralWidget = QWidget()
        self.setCentralWidget(self.centralWidget)

        self.receivedTextEdit = QTextEdit()
        self.receivedTextEdit.setAcceptRichText(False)
        monospaceFont = QFont("Monospace")
        monospaceFont.setStyleHint(QFont.Monospace)
        self.receivedTextEdit.setFont(monospaceFont)
        
        playExerciseButton = QPushButton("Play exercise text")
        playExerciseButton.clicked.connect(self.playExercise)
        
        stopButton = QPushButton("Stop playing")
        stopButton.clicked.connect(self.stopPlaying)
        
        validateButton = QPushButton("Check input / Generate next exercise")
        validateButton.clicked.connect(self.checkInput)
        
        self.wpmLineEdit = QLineEdit(self.settings.value("wpm"))
        self.wpmLineEdit.textChanged.connect(functools.partial(self.saveChangedText, self.wpmLineEdit, "wpm"))
        wpmLabel = QLabel("WPM")
        
        self.ewpmLineEdit = QLineEdit(self.settings.value("effectiveWpm"))
        self.ewpmLineEdit.textChanged.connect(functools.partial(self.saveChangedText, self.ewpmLineEdit, "effectiveWpm"))
        ewpmLabel = QLabel("effective WPM")
        
        self.freqLineEdit = QLineEdit(self.settings.value("frequency"))
        self.freqLineEdit.textChanged.connect(functools.partial(self.saveChangedText, self.freqLineEdit, "frequency"))
        freqLabel = QLabel("Frequency (Hz)")
        
        self.durationLineEdit = QLineEdit(self.settings.value("duration"))
        self.durationLineEdit.textChanged.connect(functools.partial(self.saveChangedText, self.durationLineEdit, "duration"))
        durationLabel = QLabel("Duration (min)")
        
        self.lessonGrid = QGridLayout()
        
        lessonCombo = QComboBox()
        lessonCombo.setStyleSheet("combobox-popup: 0;")
        lessonCombo.addItem("1 - K M")
        for lesson in range(2, len(KOCH_LETTERS)):
            lessonCombo.addItem(str(lesson) + " - " + KOCH_LETTERS[lesson])
        lessonCombo.setCurrentIndex(int(self.settings.value("currentLesson"))-1)
        lessonCombo.currentIndexChanged.connect(self.newLessonSelected)
        
        lessonIdLabel = QLabel("Lesson:")
        
        lessonBox = QHBoxLayout()
        lessonBox.addWidget(lessonIdLabel)
        lessonBox.addWidget(lessonCombo)
        lessonBox.addStretch(-1)

        self.createLessonLetterButtons(self.lessonGrid)
        
        mainLayout = QVBoxLayout()

        inputAndParameters = QHBoxLayout()
        parameterField = QVBoxLayout()
        inputAndParameters.addWidget(self.receivedTextEdit, stretch=1)
        self.receivedTextEdit.setSizePolicy(QSizePolicy(QSizePolicy.Expanding, QSizePolicy.MinimumExpanding))
        inputAndParameters.addLayout(parameterField, stretch=0)

        parameterField.addWidget(playExerciseButton)
        parameterField.addWidget(stopButton)
        parameterField.addWidget(validateButton)

        parameterGrid = QGridLayout()
        parameterGrid.addWidget(self.wpmLineEdit, 0, 0)
        parameterGrid.addWidget(wpmLabel, 0, 1)
        parameterGrid.addWidget(self.ewpmLineEdit, 1, 0)
        parameterGrid.addWidget(ewpmLabel, 1, 1)
        parameterGrid.addWidget(self.freqLineEdit, 2, 0)
        parameterGrid.addWidget(freqLabel, 2, 1)
        parameterGrid.addWidget(self.durationLineEdit, 3, 0)
        parameterGrid.addWidget(durationLabel, 3, 1)
        parameterField.addLayout(parameterGrid)
        parameterField.insertSpacing(-1, 15)
        parameterField.addLayout(lessonBox)
        parameterField.insertStretch(-1)

        mainLayout.addLayout(inputAndParameters)
        mainLayout.addLayout(self.lessonGrid)
        
        self.centralWidget.setLayout(mainLayout)
        
        self.setWindowTitle('PyMorsetrainer')
        self.show()
Esempio n. 11
0
    def initUI(self):
        self.centralWidget = QWidget()
        self.setCentralWidget(self.centralWidget)

        self.receivedTextEdit = QTextEdit()
        self.receivedTextEdit.setAcceptRichText(False)
        monospaceFont = QFont("Monospace")
        monospaceFont.setStyleHint(QFont.Monospace)
        self.receivedTextEdit.setFont(monospaceFont)

        playExerciseButton = QPushButton("Play exercise text")
        playExerciseButton.clicked.connect(self.playExercise)

        stopButton = QPushButton("Stop playing")
        stopButton.clicked.connect(self.stopPlaying)

        validateButton = QPushButton("Check input / Generate next exercise")
        validateButton.clicked.connect(self.checkInput)

        self.wpmLineEdit = QLineEdit(self.settings.value("wpm"))
        self.wpmLineEdit.textChanged.connect(
            functools.partial(self.saveChangedText, self.wpmLineEdit, "wpm"))
        wpmLabel = QLabel("WPM")

        self.ewpmLineEdit = QLineEdit(self.settings.value("effectiveWpm"))
        self.ewpmLineEdit.textChanged.connect(
            functools.partial(self.saveChangedText, self.ewpmLineEdit,
                              "effectiveWpm"))
        ewpmLabel = QLabel("effective WPM")

        self.freqLineEdit = QLineEdit(self.settings.value("frequency"))
        self.freqLineEdit.textChanged.connect(
            functools.partial(self.saveChangedText, self.freqLineEdit,
                              "frequency"))
        freqLabel = QLabel("Frequency (Hz)")

        self.durationLineEdit = QLineEdit(self.settings.value("duration"))
        self.durationLineEdit.textChanged.connect(
            functools.partial(self.saveChangedText, self.durationLineEdit,
                              "duration"))
        durationLabel = QLabel("Duration (min)")

        self.lessonGrid = QGridLayout()

        lessonCombo = QComboBox()
        lessonCombo.setStyleSheet("combobox-popup: 0;")
        lessonCombo.addItem("1 - K M")
        for lesson in range(2, len(KOCH_LETTERS)):
            lessonCombo.addItem(str(lesson) + " - " + KOCH_LETTERS[lesson])
        lessonCombo.setCurrentIndex(
            int(self.settings.value("currentLesson")) - 1)
        lessonCombo.currentIndexChanged.connect(self.newLessonSelected)

        lessonIdLabel = QLabel("Lesson:")

        lessonBox = QHBoxLayout()
        lessonBox.addWidget(lessonIdLabel)
        lessonBox.addWidget(lessonCombo)
        lessonBox.addStretch(-1)

        self.createLessonLetterButtons(self.lessonGrid)

        mainLayout = QVBoxLayout()

        inputAndParameters = QHBoxLayout()
        parameterField = QVBoxLayout()
        inputAndParameters.addWidget(self.receivedTextEdit, stretch=1)
        self.receivedTextEdit.setSizePolicy(
            QSizePolicy(QSizePolicy.Expanding, QSizePolicy.MinimumExpanding))
        inputAndParameters.addLayout(parameterField, stretch=0)

        parameterField.addWidget(playExerciseButton)
        parameterField.addWidget(stopButton)
        parameterField.addWidget(validateButton)

        parameterGrid = QGridLayout()
        parameterGrid.addWidget(self.wpmLineEdit, 0, 0)
        parameterGrid.addWidget(wpmLabel, 0, 1)
        parameterGrid.addWidget(self.ewpmLineEdit, 1, 0)
        parameterGrid.addWidget(ewpmLabel, 1, 1)
        parameterGrid.addWidget(self.freqLineEdit, 2, 0)
        parameterGrid.addWidget(freqLabel, 2, 1)
        parameterGrid.addWidget(self.durationLineEdit, 3, 0)
        parameterGrid.addWidget(durationLabel, 3, 1)
        parameterField.addLayout(parameterGrid)
        parameterField.insertSpacing(-1, 15)
        parameterField.addLayout(lessonBox)
        parameterField.insertStretch(-1)

        mainLayout.addLayout(inputAndParameters)
        mainLayout.addLayout(self.lessonGrid)

        self.centralWidget.setLayout(mainLayout)

        self.setWindowTitle('PyMorsetrainer')
        self.show()
Esempio n. 12
0
    def init_UI(self):
        self.setWindowTitle("Insert Dates")
        self.setWindowModality(Qt.ApplicationModal)
        self.resize(400, 400)

        intervalLabel = QLabel("Rotation Interval:")
        mRotationsRBtn = QRadioButton("Monthly")
        wRotationsRBtn = QRadioButton("Weekly")
        dRotationsRBtn = QRadioButton("Daily")
        cRotationsRBtn = QRadioButton("Custom:")
        customEntry = QSpinBox()
        customEntry.setRange(0, 365)
        customEntry.setFixedWidth(80)

        intervalBox = QVBoxLayout()
        intervalBox.addWidget(intervalLabel)
        intervalBox.addWidget(mRotationsRBtn)
        intervalBox.addWidget(wRotationsRBtn)
        intervalBox.addWidget(dRotationsRBtn)
        intervalBox.addWidget(cRotationsRBtn)
        intervalBox.addWidget(customEntry)

        startCalLabel = QLabel("Start Date:")

        startCal = QCalendarWidget()
        startCal.setGridVisible(True)

        startCalBox = QVBoxLayout()
        startCalBox.addWidget(startCalLabel)
        startCalBox.addWidget(startCal)

        endCalLabel = QLabel("End Date:")

        endCal = QCalendarWidget()
        endCal.setGridVisible(True)

        endCalBox = QVBoxLayout()
        endCalBox.addWidget(endCalLabel)
        endCalBox.addWidget(endCal)

        calBox = QHBoxLayout()
        calBox.addLayout(startCalBox)
        calBox.addLayout(endCalBox)

        okButton = QPushButton("OK", self)

        closeButton = QPushButton("Close", self)

        btnBox = QHBoxLayout()
        btnBox.addStretch(1)
        btnBox.addWidget(okButton)
        btnBox.addWidget(closeButton)

        vertBox = QVBoxLayout()
        vertBox.addLayout(intervalBox)
        vertBox.insertSpacing(20, 20)
        vertBox.addLayout(calBox)
        vertBox.addLayout(btnBox)

        self.setLayout(vertBox)

        self.show()