From bd6ea24b412b8c594c441f4f1b81c22a8d43c52c Mon Sep 17 00:00:00 2001 From: VFX - Visual Effects Date: Fri, 11 Jun 2021 12:33:19 -0300 Subject: [PATCH] 11/06/2021 --- .qt_for_python/uic/left_column.py | 133 -------------- .qt_for_python/uic/main_pages.py | 163 ------------------ .qt_for_python/uic/right_column.py | 111 ------------ gui/themes/default.json | 4 +- gui/themes/dracula.json | 28 +++ gui/uis/pages/main_pages.ui | 8 +- gui/uis/pages/ui_main_pages.py | 12 +- .../windows/main_window/setup_main_window.py | 67 +++++++ gui/uis/windows/main_window/ui_main.py | 6 +- gui/widgets/__init__.py | 10 +- gui/widgets/py_left_column/py_left_column.py | 4 +- gui/widgets/py_line_edit/__init__.py | 19 ++ gui/widgets/py_line_edit/py_line_edit.py | 95 ++++++++++ gui/widgets/py_table_widget/__init__.py | 19 ++ .../py_table_widget/py_table_widget.py | 90 ++++++++++ gui/widgets/py_table_widget/style.py | 135 +++++++++++++++ 16 files changed, 489 insertions(+), 415 deletions(-) delete mode 100644 .qt_for_python/uic/left_column.py delete mode 100644 .qt_for_python/uic/main_pages.py delete mode 100644 .qt_for_python/uic/right_column.py create mode 100644 gui/themes/dracula.json create mode 100644 gui/widgets/py_line_edit/__init__.py create mode 100644 gui/widgets/py_line_edit/py_line_edit.py create mode 100644 gui/widgets/py_table_widget/__init__.py create mode 100644 gui/widgets/py_table_widget/py_table_widget.py create mode 100644 gui/widgets/py_table_widget/style.py diff --git a/.qt_for_python/uic/left_column.py b/.qt_for_python/uic/left_column.py deleted file mode 100644 index f8f80fb..0000000 --- a/.qt_for_python/uic/left_column.py +++ /dev/null @@ -1,133 +0,0 @@ -# -*- coding: utf-8 -*- - -################################################################################ -## Form generated from reading UI file 'left_column.ui' -## -## Created by: Qt User Interface Compiler version 6.0.2 -## -## WARNING! All changes made in this file will be lost when recompiling UI file! -################################################################################ - -from PySide6.QtCore import * -from PySide6.QtGui import * -from PySide6.QtWidgets import * - - -class Ui_LeftColumn(object): - def setupUi(self, LeftColumn): - if not LeftColumn.objectName(): - LeftColumn.setObjectName(u"LeftColumn") - LeftColumn.resize(240, 600) - self.main_pages_layout = QVBoxLayout(LeftColumn) - self.main_pages_layout.setSpacing(0) - self.main_pages_layout.setObjectName(u"main_pages_layout") - self.main_pages_layout.setContentsMargins(5, 5, 5, 5) - self.menus = QStackedWidget(LeftColumn) - self.menus.setObjectName(u"menus") - self.menu_1 = QWidget() - self.menu_1.setObjectName(u"menu_1") - self.verticalLayout = QVBoxLayout(self.menu_1) - self.verticalLayout.setSpacing(5) - self.verticalLayout.setObjectName(u"verticalLayout") - self.verticalLayout.setContentsMargins(5, 5, 5, 5) - self.btn_1_widget = QWidget(self.menu_1) - self.btn_1_widget.setObjectName(u"btn_1_widget") - self.btn_1_widget.setMinimumSize(QSize(0, 40)) - self.btn_1_widget.setMaximumSize(QSize(16777215, 40)) - self.btn_1_layout = QVBoxLayout(self.btn_1_widget) - self.btn_1_layout.setSpacing(0) - self.btn_1_layout.setObjectName(u"btn_1_layout") - self.btn_1_layout.setContentsMargins(0, 0, 0, 0) - - self.verticalLayout.addWidget(self.btn_1_widget) - - self.btn_2_widget = QWidget(self.menu_1) - self.btn_2_widget.setObjectName(u"btn_2_widget") - self.btn_2_widget.setMinimumSize(QSize(0, 40)) - self.btn_2_widget.setMaximumSize(QSize(16777215, 40)) - self.btn_2_layout = QVBoxLayout(self.btn_2_widget) - self.btn_2_layout.setSpacing(0) - self.btn_2_layout.setObjectName(u"btn_2_layout") - self.btn_2_layout.setContentsMargins(0, 0, 0, 0) - - self.verticalLayout.addWidget(self.btn_2_widget) - - self.btn_3_widget = QWidget(self.menu_1) - self.btn_3_widget.setObjectName(u"btn_3_widget") - self.btn_3_widget.setMinimumSize(QSize(0, 40)) - self.btn_3_widget.setMaximumSize(QSize(16777215, 40)) - self.btn_3_layout = QVBoxLayout(self.btn_3_widget) - self.btn_3_layout.setSpacing(0) - self.btn_3_layout.setObjectName(u"btn_3_layout") - self.btn_3_layout.setContentsMargins(0, 0, 0, 0) - - self.verticalLayout.addWidget(self.btn_3_widget) - - self.label_1 = QLabel(self.menu_1) - self.label_1.setObjectName(u"label_1") - font = QFont() - font.setPointSize(16) - self.label_1.setFont(font) - self.label_1.setStyleSheet(u"font-size: 16pt") - self.label_1.setAlignment(Qt.AlignCenter) - - self.verticalLayout.addWidget(self.label_1) - - self.menus.addWidget(self.menu_1) - self.menu_2 = QWidget() - self.menu_2.setObjectName(u"menu_2") - self.verticalLayout_2 = QVBoxLayout(self.menu_2) - self.verticalLayout_2.setSpacing(5) - self.verticalLayout_2.setObjectName(u"verticalLayout_2") - self.verticalLayout_2.setContentsMargins(5, 5, 5, 5) - self.btn_4_widget = QWidget(self.menu_2) - self.btn_4_widget.setObjectName(u"btn_4_widget") - self.btn_4_widget.setMinimumSize(QSize(0, 40)) - self.btn_4_widget.setMaximumSize(QSize(16777215, 40)) - self.btn_4_layout = QVBoxLayout(self.btn_4_widget) - self.btn_4_layout.setSpacing(0) - self.btn_4_layout.setObjectName(u"btn_4_layout") - self.btn_4_layout.setContentsMargins(0, 0, 0, 0) - - self.verticalLayout_2.addWidget(self.btn_4_widget) - - self.label_2 = QLabel(self.menu_2) - self.label_2.setObjectName(u"label_2") - self.label_2.setFont(font) - self.label_2.setStyleSheet(u"font-size: 16pt") - self.label_2.setAlignment(Qt.AlignCenter) - - self.verticalLayout_2.addWidget(self.label_2) - - self.label_3 = QLabel(self.menu_2) - self.label_3.setObjectName(u"label_3") - font1 = QFont() - font1.setPointSize(9) - self.label_3.setFont(font1) - self.label_3.setStyleSheet(u"font-size: 9pt") - self.label_3.setAlignment(Qt.AlignCenter) - self.label_3.setWordWrap(True) - - self.verticalLayout_2.addWidget(self.label_3) - - self.menus.addWidget(self.menu_2) - - self.main_pages_layout.addWidget(self.menus) - - - self.retranslateUi(LeftColumn) - - self.menus.setCurrentIndex(0) - - - QMetaObject.connectSlotsByName(LeftColumn) - # setupUi - - def retranslateUi(self, LeftColumn): - LeftColumn.setWindowTitle(QCoreApplication.translate("LeftColumn", u"Form", None)) - self.label_1.setText(QCoreApplication.translate("LeftColumn", u"Menu 1 - Left Menu", None)) - self.label_2.setText(QCoreApplication.translate("LeftColumn", u"Menu 2 - Left Menu", None)) - self.label_3.setText(QCoreApplication.translate("LeftColumn", u"This is just an example menu.\n" -"Add Qt Widgets or your custom widgets here.", None)) - # retranslateUi - diff --git a/.qt_for_python/uic/main_pages.py b/.qt_for_python/uic/main_pages.py deleted file mode 100644 index 451f224..0000000 --- a/.qt_for_python/uic/main_pages.py +++ /dev/null @@ -1,163 +0,0 @@ -# -*- coding: utf-8 -*- - -################################################################################ -## Form generated from reading UI file 'main_pages.ui' -## -## Created by: Qt User Interface Compiler version 6.0.2 -## -## WARNING! All changes made in this file will be lost when recompiling UI file! -################################################################################ - -from PySide6.QtCore import * -from PySide6.QtGui import * -from PySide6.QtWidgets import * - - -class Ui_MainPages(object): - def setupUi(self, MainPages): - if not MainPages.objectName(): - MainPages.setObjectName(u"MainPages") - MainPages.resize(860, 600) - self.main_pages_layout = QVBoxLayout(MainPages) - self.main_pages_layout.setSpacing(0) - self.main_pages_layout.setObjectName(u"main_pages_layout") - self.main_pages_layout.setContentsMargins(5, 5, 5, 5) - self.pages = QStackedWidget(MainPages) - self.pages.setObjectName(u"pages") - self.page_1 = QWidget() - self.page_1.setObjectName(u"page_1") - self.page_1.setStyleSheet(u"font-size: 14pt") - self.page_1_layout = QVBoxLayout(self.page_1) - self.page_1_layout.setSpacing(5) - self.page_1_layout.setObjectName(u"page_1_layout") - self.page_1_layout.setContentsMargins(5, 5, 5, 5) - self.welcome_base = QFrame(self.page_1) - self.welcome_base.setObjectName(u"welcome_base") - self.welcome_base.setMinimumSize(QSize(300, 150)) - self.welcome_base.setMaximumSize(QSize(300, 150)) - self.welcome_base.setFrameShape(QFrame.NoFrame) - self.welcome_base.setFrameShadow(QFrame.Raised) - self.center_page_layout = QVBoxLayout(self.welcome_base) - self.center_page_layout.setSpacing(10) - self.center_page_layout.setObjectName(u"center_page_layout") - self.center_page_layout.setContentsMargins(0, 0, 0, 0) - self.logo = QFrame(self.welcome_base) - self.logo.setObjectName(u"logo") - self.logo.setMinimumSize(QSize(300, 120)) - self.logo.setMaximumSize(QSize(300, 120)) - self.logo.setFrameShape(QFrame.NoFrame) - self.logo.setFrameShadow(QFrame.Raised) - self.logo_layout = QVBoxLayout(self.logo) - self.logo_layout.setSpacing(0) - self.logo_layout.setObjectName(u"logo_layout") - self.logo_layout.setContentsMargins(0, 0, 0, 0) - - self.center_page_layout.addWidget(self.logo) - - self.label = QLabel(self.welcome_base) - self.label.setObjectName(u"label") - self.label.setAlignment(Qt.AlignCenter) - - self.center_page_layout.addWidget(self.label) - - - self.page_1_layout.addWidget(self.welcome_base, 0, Qt.AlignHCenter) - - self.pages.addWidget(self.page_1) - self.page_2 = QWidget() - self.page_2.setObjectName(u"page_2") - self.page_2_layout = QVBoxLayout(self.page_2) - self.page_2_layout.setSpacing(5) - self.page_2_layout.setObjectName(u"page_2_layout") - self.page_2_layout.setContentsMargins(5, 5, 5, 5) - self.scroll_area = QScrollArea(self.page_2) - self.scroll_area.setObjectName(u"scroll_area") - self.scroll_area.setStyleSheet(u"background: transparent;") - self.scroll_area.setFrameShape(QFrame.NoFrame) - self.scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) - self.scroll_area.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) - self.scroll_area.setWidgetResizable(True) - self.contents = QWidget() - self.contents.setObjectName(u"contents") - self.contents.setGeometry(QRect(0, 0, 840, 580)) - self.contents.setStyleSheet(u"background: transparent;") - self.verticalLayout = QVBoxLayout(self.contents) - self.verticalLayout.setSpacing(15) - self.verticalLayout.setObjectName(u"verticalLayout") - self.verticalLayout.setContentsMargins(5, 5, 5, 5) - self.title_label = QLabel(self.contents) - self.title_label.setObjectName(u"title_label") - self.title_label.setMaximumSize(QSize(16777215, 40)) - font = QFont() - font.setPointSize(16) - self.title_label.setFont(font) - self.title_label.setStyleSheet(u"font-size: 16pt") - self.title_label.setAlignment(Qt.AlignCenter) - - self.verticalLayout.addWidget(self.title_label) - - self.description_label = QLabel(self.contents) - self.description_label.setObjectName(u"description_label") - self.description_label.setAlignment(Qt.AlignHCenter|Qt.AlignTop) - self.description_label.setWordWrap(True) - - self.verticalLayout.addWidget(self.description_label) - - self.row_1_layout = QHBoxLayout() - self.row_1_layout.setObjectName(u"row_1_layout") - - self.verticalLayout.addLayout(self.row_1_layout) - - self.row_2_layout = QHBoxLayout() - self.row_2_layout.setObjectName(u"row_2_layout") - - self.verticalLayout.addLayout(self.row_2_layout) - - self.row_3_layout = QHBoxLayout() - self.row_3_layout.setObjectName(u"row_3_layout") - - self.verticalLayout.addLayout(self.row_3_layout) - - self.scroll_area.setWidget(self.contents) - - self.page_2_layout.addWidget(self.scroll_area) - - self.pages.addWidget(self.page_2) - self.page_3 = QWidget() - self.page_3.setObjectName(u"page_3") - self.page_3.setStyleSheet(u"QFrame {\n" -" background: lightgreen;\n" -" font-size: 16pt;\n" -" border-radius: 8px;\n" -"}") - self.page_3_layout = QVBoxLayout(self.page_3) - self.page_3_layout.setObjectName(u"page_3_layout") - self.empty_page_label = QLabel(self.page_3) - self.empty_page_label.setObjectName(u"empty_page_label") - self.empty_page_label.setFont(font) - self.empty_page_label.setAlignment(Qt.AlignCenter) - - self.page_3_layout.addWidget(self.empty_page_label) - - self.pages.addWidget(self.page_3) - - self.main_pages_layout.addWidget(self.pages) - - - self.retranslateUi(MainPages) - - self.pages.setCurrentIndex(1) - - - QMetaObject.connectSlotsByName(MainPages) - # setupUi - - def retranslateUi(self, MainPages): - MainPages.setWindowTitle(QCoreApplication.translate("MainPages", u"Form", None)) - self.label.setText(QCoreApplication.translate("MainPages", u"Welcome To PyOneDark GUI", None)) - self.title_label.setText(QCoreApplication.translate("MainPages", u"Custom Widgets Page", None)) - self.description_label.setText(QCoreApplication.translate("MainPages", u"Here will be all the custom widgets, they will be added over time on this page.\n" -"I will try to always record a new tutorial when adding a new Widget and updating the project on Patreon before launching on GitHub and GitHub after the public release.", None)) - self.empty_page_label.setText(QCoreApplication.translate("MainPages", u"Empty Page", None)) - # retranslateUi - diff --git a/.qt_for_python/uic/right_column.py b/.qt_for_python/uic/right_column.py deleted file mode 100644 index dfdf570..0000000 --- a/.qt_for_python/uic/right_column.py +++ /dev/null @@ -1,111 +0,0 @@ -# -*- coding: utf-8 -*- - -################################################################################ -## Form generated from reading UI file 'right_column.ui' -## -## Created by: Qt User Interface Compiler version 6.0.2 -## -## WARNING! All changes made in this file will be lost when recompiling UI file! -################################################################################ - -from PySide6.QtCore import * -from PySide6.QtGui import * -from PySide6.QtWidgets import * - - -class Ui_RightColumn(object): - def setupUi(self, RightColumn): - if not RightColumn.objectName(): - RightColumn.setObjectName(u"RightColumn") - RightColumn.resize(240, 600) - self.main_pages_layout = QVBoxLayout(RightColumn) - self.main_pages_layout.setSpacing(0) - self.main_pages_layout.setObjectName(u"main_pages_layout") - self.main_pages_layout.setContentsMargins(5, 5, 5, 5) - self.menus = QStackedWidget(RightColumn) - self.menus.setObjectName(u"menus") - self.menu_1 = QWidget() - self.menu_1.setObjectName(u"menu_1") - self.verticalLayout = QVBoxLayout(self.menu_1) - self.verticalLayout.setSpacing(5) - self.verticalLayout.setObjectName(u"verticalLayout") - self.verticalLayout.setContentsMargins(5, 5, 5, 5) - self.btn_1_widget = QWidget(self.menu_1) - self.btn_1_widget.setObjectName(u"btn_1_widget") - self.btn_1_widget.setMinimumSize(QSize(0, 40)) - self.btn_1_widget.setMaximumSize(QSize(16777215, 40)) - self.btn_1_layout = QVBoxLayout(self.btn_1_widget) - self.btn_1_layout.setSpacing(0) - self.btn_1_layout.setObjectName(u"btn_1_layout") - self.btn_1_layout.setContentsMargins(0, 0, 0, 0) - - self.verticalLayout.addWidget(self.btn_1_widget) - - self.label_1 = QLabel(self.menu_1) - self.label_1.setObjectName(u"label_1") - font = QFont() - font.setPointSize(16) - self.label_1.setFont(font) - self.label_1.setStyleSheet(u"font-size: 16pt") - self.label_1.setAlignment(Qt.AlignCenter) - - self.verticalLayout.addWidget(self.label_1) - - self.menus.addWidget(self.menu_1) - self.menu_2 = QWidget() - self.menu_2.setObjectName(u"menu_2") - self.verticalLayout_2 = QVBoxLayout(self.menu_2) - self.verticalLayout_2.setSpacing(5) - self.verticalLayout_2.setObjectName(u"verticalLayout_2") - self.verticalLayout_2.setContentsMargins(5, 5, 5, 5) - self.btn_2_widget = QWidget(self.menu_2) - self.btn_2_widget.setObjectName(u"btn_2_widget") - self.btn_2_widget.setMinimumSize(QSize(0, 40)) - self.btn_2_widget.setMaximumSize(QSize(16777215, 40)) - self.btn_2_layout = QVBoxLayout(self.btn_2_widget) - self.btn_2_layout.setSpacing(0) - self.btn_2_layout.setObjectName(u"btn_2_layout") - self.btn_2_layout.setContentsMargins(0, 0, 0, 0) - - self.verticalLayout_2.addWidget(self.btn_2_widget) - - self.label_2 = QLabel(self.menu_2) - self.label_2.setObjectName(u"label_2") - self.label_2.setFont(font) - self.label_2.setStyleSheet(u"font-size: 16pt") - self.label_2.setAlignment(Qt.AlignCenter) - - self.verticalLayout_2.addWidget(self.label_2) - - self.label_3 = QLabel(self.menu_2) - self.label_3.setObjectName(u"label_3") - font1 = QFont() - font1.setPointSize(9) - self.label_3.setFont(font1) - self.label_3.setStyleSheet(u"font-size: 9pt") - self.label_3.setAlignment(Qt.AlignCenter) - self.label_3.setWordWrap(True) - - self.verticalLayout_2.addWidget(self.label_3) - - self.menus.addWidget(self.menu_2) - - self.main_pages_layout.addWidget(self.menus) - - - self.retranslateUi(RightColumn) - - self.menus.setCurrentIndex(1) - - - QMetaObject.connectSlotsByName(RightColumn) - # setupUi - - def retranslateUi(self, RightColumn): - RightColumn.setWindowTitle(QCoreApplication.translate("RightColumn", u"Form", None)) - self.label_1.setText(QCoreApplication.translate("RightColumn", u"Menu 1 - Right Menu", None)) - self.label_2.setText(QCoreApplication.translate("RightColumn", u"Menu 2 - Right Menu", None)) - self.label_3.setText(QCoreApplication.translate("RightColumn", u"This is just an example menu.\n" -"Add Qt Widgets or your custom widgets here.", None)) - # retranslateUi - diff --git a/gui/themes/default.json b/gui/themes/default.json index 61aad6a..e1f86f0 100644 --- a/gui/themes/default.json +++ b/gui/themes/default.json @@ -21,6 +21,8 @@ "text_active" : "#dce1ec", "white" : "#f5f6f9", "pink" : "#ff007f", - "green" : "#00ff7f" + "green" : "#00ff7f", + "red" : "#ff5555", + "yellow" : "#f1fa8c" } } \ No newline at end of file diff --git a/gui/themes/dracula.json b/gui/themes/dracula.json new file mode 100644 index 0000000..2bad4b5 --- /dev/null +++ b/gui/themes/dracula.json @@ -0,0 +1,28 @@ +{ + "theme_name" : "dracula", + "app_color" : { + "dark_one" : "#282a36", + "dark_two" : "#2B2E3B", + "dark_three" : "#333645", + "dark_four" : "#3C4052", + "bg_one" : "#44475a", + "bg_two" : "#4D5066", + "bg_three" : "#595D75", + "icon_color" : "#c3ccdf", + "icon_hover" : "#dce1ec", + "icon_pressed" : "#ff79c6", + "icon_active" : "#f5f6f9", + "context_color" : "#ff79c6", + "context_hover" : "#FF84D7", + "context_pressed" : "#FF90DD", + "text_title" : "#dce1ec", + "text_foreground" : "#f8f8f2", + "text_description" : "#979EC7", + "text_active" : "#dce1ec", + "white" : "#f5f6f9", + "pink" : "#ff79c6", + "green" : "#00ff7f", + "red" : "#ff5555", + "yellow" : "#f1fa8c" + } +} \ No newline at end of file diff --git a/gui/uis/pages/main_pages.ui b/gui/uis/pages/main_pages.ui index 8661b2f..04bce61 100644 --- a/gui/uis/pages/main_pages.ui +++ b/gui/uis/pages/main_pages.ui @@ -253,6 +253,12 @@ I will try to always record a new tutorial when adding a new Widget and updating + + + + + + @@ -262,9 +268,7 @@ I will try to always record a new tutorial when adding a new Widget and updating QFrame { - background: lightgreen; font-size: 16pt; - border-radius: 8px; } diff --git a/gui/uis/pages/ui_main_pages.py b/gui/uis/pages/ui_main_pages.py index f832c87..74d7bc8 100644 --- a/gui/uis/pages/ui_main_pages.py +++ b/gui/uis/pages/ui_main_pages.py @@ -124,6 +124,16 @@ class Ui_MainPages(object): self.verticalLayout.addLayout(self.row_3_layout) + self.row_4_layout = QVBoxLayout() + self.row_4_layout.setObjectName(u"row_4_layout") + + self.verticalLayout.addLayout(self.row_4_layout) + + self.row_5_layout = QVBoxLayout() + self.row_5_layout.setObjectName(u"row_5_layout") + + self.verticalLayout.addLayout(self.row_5_layout) + self.scroll_area.setWidget(self.contents) self.page_2_layout.addWidget(self.scroll_area) @@ -132,9 +142,7 @@ class Ui_MainPages(object): self.page_3 = QWidget() self.page_3.setObjectName(u"page_3") self.page_3.setStyleSheet(u"QFrame {\n" -" background: lightgreen;\n" " font-size: 16pt;\n" -" border-radius: 8px;\n" "}") self.page_3_layout = QVBoxLayout(self.page_3) self.page_3_layout.setObjectName(u"page_3_layout") diff --git a/gui/uis/windows/main_window/setup_main_window.py b/gui/uis/windows/main_window/setup_main_window.py index acbdd33..c7b8183 100644 --- a/gui/uis/windows/main_window/setup_main_window.py +++ b/gui/uis/windows/main_window/setup_main_window.py @@ -16,7 +16,10 @@ # IMPORT PACKAGES AND MODULES # /////////////////////////////////////////////////////////////// +from gui.widgets.py_table_widget.py_table_widget import PyTableWidget +from . functions_main_window import * import sys +import os # IMPORT QT CORE # /////////////////////////////////////////////////////////////// @@ -443,6 +446,68 @@ class SetupMainWindow: self.push_button_2.setMinimumHeight(40) self.push_button_2.setIcon(self.icon_2) + # PY LINE EDIT + self.line_edit = PyLineEdit( + text = "", + place_holder_text = "Place holder text", + radius = 8, + border_size = 2, + color = self.themes["app_color"]["text_foreground"], + selection_color = self.themes["app_color"]["white"], + bg_color = self.themes["app_color"]["dark_one"], + bg_color_active = self.themes["app_color"]["dark_three"], + context_color = self.themes["app_color"]["context_color"] + ) + self.line_edit.setMinimumHeight(30) + + # TABLE WIDGETS + self.table_widget = PyTableWidget( + radius = 8, + color = self.themes["app_color"]["text_foreground"], + selection_color = self.themes["app_color"]["context_color"], + bg_color = self.themes["app_color"]["bg_two"], + header_horizontal_color = self.themes["app_color"]["dark_two"], + header_vertical_color = self.themes["app_color"]["bg_three"], + bottom_line_color = self.themes["app_color"]["bg_three"], + grid_line_color = self.themes["app_color"]["bg_one"], + scroll_bar_bg_color = self.themes["app_color"]["bg_one"], + scroll_bar_btn_color = self.themes["app_color"]["dark_four"], + context_color = self.themes["app_color"]["context_color"] + ) + self.table_widget.setColumnCount(3) + self.table_widget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) + self.table_widget.setSelectionMode(QAbstractItemView.ExtendedSelection) + self.table_widget.setSelectionBehavior(QAbstractItemView.SelectRows) + + # Columns / Header + self.column_1 = QTableWidgetItem() + self.column_1.setTextAlignment(Qt.AlignCenter) + self.column_1.setText("NAME") + + self.column_2 = QTableWidgetItem() + self.column_2.setTextAlignment(Qt.AlignCenter) + self.column_2.setText("NICK") + + self.column_3 = QTableWidgetItem() + self.column_3.setTextAlignment(Qt.AlignCenter) + self.column_3.setText("PASS") + + # Set column + self.table_widget.setHorizontalHeaderItem(0, self.column_1) + self.table_widget.setHorizontalHeaderItem(1, self.column_2) + self.table_widget.setHorizontalHeaderItem(2, self.column_3) + + for x in range(10): + row_number = self.table_widget.rowCount() + self.table_widget.insertRow(row_number) # Insert row + self.table_widget.setItem(row_number, 0, QTableWidgetItem(str("Wanderson"))) # Add name + self.table_widget.setItem(row_number, 1, QTableWidgetItem(str("vfx_on_fire_" + str(x)))) # Add nick + self.pass_text = QTableWidgetItem() + self.pass_text.setTextAlignment(Qt.AlignCenter) + self.pass_text.setText("12345" + str(x)) + self.table_widget.setItem(row_number, 2, self.pass_text) # Add pass + self.table_widget.setRowHeight(row_number, 22) + # ADD WIDGETS self.ui.load_pages.row_1_layout.addWidget(self.circular_progress_1) self.ui.load_pages.row_1_layout.addWidget(self.circular_progress_2) @@ -456,6 +521,8 @@ class SetupMainWindow: self.ui.load_pages.row_3_layout.addWidget(self.icon_button_3) self.ui.load_pages.row_3_layout.addWidget(self.push_button_1) self.ui.load_pages.row_3_layout.addWidget(self.push_button_2) + self.ui.load_pages.row_4_layout.addWidget(self.line_edit) + self.ui.load_pages.row_5_layout.addWidget(self.table_widget) # RIGHT COLUMN # /////////////////////////////////////////////////////////////// diff --git a/gui/uis/windows/main_window/ui_main.py b/gui/uis/windows/main_window/ui_main.py index 6a35cff..519e205 100644 --- a/gui/uis/windows/main_window/ui_main.py +++ b/gui/uis/windows/main_window/ui_main.py @@ -17,7 +17,6 @@ # IMPORT PACKAGES AND MODULES # /////////////////////////////////////////////////////////////// from gui.core.functions import Functions -from gui.widgets.py_credits_bar.py_credits import PyCredits # IMPORT QT CORE # /////////////////////////////////////////////////////////////// @@ -47,6 +46,10 @@ from gui.uis.pages.ui_main_pages import Ui_MainPages # /////////////////////////////////////////////////////////////// from gui.uis.columns.ui_right_column import Ui_RightColumn +# CREDITS +# /////////////////////////////////////////////////////////////// +from gui.widgets.py_credits_bar.py_credits import PyCredits + # PY WINDOW # /////////////////////////////////////////////////////////////// class UI_MainWindow(object): @@ -164,6 +167,7 @@ class UI_MainWindow(object): btn_color_pressed = self.themes['app_color']['bg_one'], icon_color = self.themes['app_color']['icon_color'], icon_color_hover = self.themes['app_color']['icon_hover'], + context_color = self.themes['app_color']['context_color'], icon_color_pressed = self.themes['app_color']['icon_pressed'], icon_close_path = Functions.set_svg_icon("icon_close.svg") ) diff --git a/gui/widgets/__init__.py b/gui/widgets/__init__.py index edbb386..95bd69e 100644 --- a/gui/widgets/__init__.py +++ b/gui/widgets/__init__.py @@ -60,4 +60,12 @@ from . py_circular_progress import PyCircularProgress # PY ICON BUTTON # /////////////////////////////////////////////////////////////// -from . py_icon_button import PyIconButton \ No newline at end of file +from . py_icon_button import PyIconButton + +# PY LINE EDIT +# /////////////////////////////////////////////////////////////// +from . py_line_edit import PyLineEdit + +# PY TABLE WIDGET +# /////////////////////////////////////////////////////////////// +from . py_table_widget import PyTableWidget \ No newline at end of file diff --git a/gui/widgets/py_left_column/py_left_column.py b/gui/widgets/py_left_column/py_left_column.py index ae6a07a..b39558b 100644 --- a/gui/widgets/py_left_column/py_left_column.py +++ b/gui/widgets/py_left_column/py_left_column.py @@ -51,6 +51,7 @@ class PyLeftColumn(QWidget): icon_color, icon_color_hover, icon_color_pressed, + context_color, icon_close_path, radius = 8 ): @@ -71,6 +72,7 @@ class PyLeftColumn(QWidget): self._icon_color = icon_color self._icon_color_hover = icon_color_hover self._icon_color_pressed = icon_color_pressed + self._context_color = context_color self._icon_close_path = icon_close_path self._radius = radius @@ -165,7 +167,7 @@ class PyLeftColumn(QWidget): icon_color_hover = self._icon_color_hover, icon_color_pressed = self._icon_color_pressed, icon_color_active = self._icon_color_pressed, - context_color = self._icon_color_pressed, + context_color = self._context_color, text_foreground = self._text_title_color, icon_path = self._icon_close_path, radius = 6, diff --git a/gui/widgets/py_line_edit/__init__.py b/gui/widgets/py_line_edit/__init__.py new file mode 100644 index 0000000..cb20e14 --- /dev/null +++ b/gui/widgets/py_line_edit/__init__.py @@ -0,0 +1,19 @@ +# /////////////////////////////////////////////////////////////// +# +# BY: WANDERSON M.PIMENTA +# PROJECT MADE WITH: Qt Designer and PySide6 +# V: 1.0.0 +# +# This project can be used freely for all uses, as long as they maintain the +# respective credits only in the Python scripts, any information in the visual +# interface (GUI) can be modified without any implication. +# +# There are limitations on Qt licenses if you want to use your products +# commercially, I recommend reading them on the official website: +# https://doc.qt.io/qtforpython/licenses.html +# +# /////////////////////////////////////////////////////////////// + +# PY LINE EDIT +# /////////////////////////////////////////////////////////////// +from . py_line_edit import PyLineEdit \ No newline at end of file diff --git a/gui/widgets/py_line_edit/py_line_edit.py b/gui/widgets/py_line_edit/py_line_edit.py new file mode 100644 index 0000000..26efd44 --- /dev/null +++ b/gui/widgets/py_line_edit/py_line_edit.py @@ -0,0 +1,95 @@ +# /////////////////////////////////////////////////////////////// +# +# BY: WANDERSON M.PIMENTA +# PROJECT MADE WITH: Qt Designer and PySide6 +# V: 1.0.0 +# +# This project can be used freely for all uses, as long as they maintain the +# respective credits only in the Python scripts, any information in the visual +# interface (GUI) can be modified without any implication. +# +# There are limitations on Qt licenses if you want to use your products +# commercially, I recommend reading them on the official website: +# https://doc.qt.io/qtforpython/licenses.html +# +# /////////////////////////////////////////////////////////////// + +# IMPORT QT CORE +# /////////////////////////////////////////////////////////////// +from qt_core import * + +# STYLE +# /////////////////////////////////////////////////////////////// +style = ''' +QLineEdit {{ + background-color: {_bg_color}; + border-radius: {_radius}px; + border: {_border_size}px solid transparent; + padding-left: 10px; + padding-right: 10px; + selection-color: {_selection_color}; + selection-background-color: {_context_color}; + color: {_color}; +}} +QLineEdit:focus {{ + border: {_border_size}px solid {_context_color}; + background-color: {_bg_color_active}; +}} +''' + +# PY PUSH BUTTON +# /////////////////////////////////////////////////////////////// +class PyLineEdit(QLineEdit): + def __init__( + self, + text = "", + place_holder_text = "", + radius = 8, + border_size = 2, + color = "#FFF", + selection_color = "#FFF", + bg_color = "#333", + bg_color_active = "#222", + context_color = "#00ABE8" + ): + super().__init__() + + # PARAMETERS + if text: + self.setText(text) + if place_holder_text: + self.setPlaceholderText(place_holder_text) + + # SET STYLESHEET + self.set_stylesheet( + radius, + border_size, + color, + selection_color, + bg_color, + bg_color_active, + context_color + ) + + # SET STYLESHEET + def set_stylesheet( + self, + radius, + border_size, + color, + selection_color, + bg_color, + bg_color_active, + context_color + ): + # APPLY STYLESHEET + style_format = style.format( + _radius = radius, + _border_size = border_size, + _color = color, + _selection_color = selection_color, + _bg_color = bg_color, + _bg_color_active = bg_color_active, + _context_color = context_color + ) + self.setStyleSheet(style_format) \ No newline at end of file diff --git a/gui/widgets/py_table_widget/__init__.py b/gui/widgets/py_table_widget/__init__.py new file mode 100644 index 0000000..240646c --- /dev/null +++ b/gui/widgets/py_table_widget/__init__.py @@ -0,0 +1,19 @@ +# /////////////////////////////////////////////////////////////// +# +# BY: WANDERSON M.PIMENTA +# PROJECT MADE WITH: Qt Designer and PySide6 +# V: 1.0.0 +# +# This project can be used freely for all uses, as long as they maintain the +# respective credits only in the Python scripts, any information in the visual +# interface (GUI) can be modified without any implication. +# +# There are limitations on Qt licenses if you want to use your products +# commercially, I recommend reading them on the official website: +# https://doc.qt.io/qtforpython/licenses.html +# +# /////////////////////////////////////////////////////////////// + +# PY TABLE WIDGET +# /////////////////////////////////////////////////////////////// +from . py_table_widget import PyTableWidget \ No newline at end of file diff --git a/gui/widgets/py_table_widget/py_table_widget.py b/gui/widgets/py_table_widget/py_table_widget.py new file mode 100644 index 0000000..2eacc62 --- /dev/null +++ b/gui/widgets/py_table_widget/py_table_widget.py @@ -0,0 +1,90 @@ +# /////////////////////////////////////////////////////////////// +# +# BY: WANDERSON M.PIMENTA +# PROJECT MADE WITH: Qt Designer and PySide6 +# V: 1.0.0 +# +# This project can be used freely for all uses, as long as they maintain the +# respective credits only in the Python scripts, any information in the visual +# interface (GUI) can be modified without any implication. +# +# There are limitations on Qt licenses if you want to use your products +# commercially, I recommend reading them on the official website: +# https://doc.qt.io/qtforpython/licenses.html +# +# /////////////////////////////////////////////////////////////// + +# IMPORT QT CORE +# /////////////////////////////////////////////////////////////// +from qt_core import * + +# IMPORT STYLE +# /////////////////////////////////////////////////////////////// +from . style import * + +# PY PUSH BUTTON +# /////////////////////////////////////////////////////////////// +class PyTableWidget(QTableWidget): + def __init__( + self, + radius = 8, + color = "#FFF", + bg_color = "#444", + selection_color = "#FFF", + header_horizontal_color = "#333", + header_vertical_color = "#444", + bottom_line_color = "#555", + grid_line_color = "#555", + scroll_bar_bg_color = "#FFF", + scroll_bar_btn_color = "#3333", + context_color = "#00ABE8" + ): + super().__init__() + + # PARAMETERS + + # SET STYLESHEET + self.set_stylesheet( + radius, + color, + bg_color, + header_horizontal_color, + header_vertical_color, + selection_color, + bottom_line_color, + grid_line_color, + scroll_bar_bg_color, + scroll_bar_btn_color, + context_color + ) + + # SET STYLESHEET + def set_stylesheet( + self, + radius, + color, + bg_color, + header_horizontal_color, + header_vertical_color, + selection_color, + bottom_line_color, + grid_line_color, + scroll_bar_bg_color, + scroll_bar_btn_color, + context_color + ): + # APPLY STYLESHEET + style_format = style.format( + _radius = radius, + _color = color, + _bg_color = bg_color, + _header_horizontal_color = header_horizontal_color, + _header_vertical_color = header_vertical_color, + _selection_color = selection_color, + _bottom_line_color = bottom_line_color, + _grid_line_color = grid_line_color, + _scroll_bar_bg_color = scroll_bar_bg_color, + _scroll_bar_btn_color = scroll_bar_btn_color, + _context_color = context_color + ) + self.setStyleSheet(style_format) \ No newline at end of file diff --git a/gui/widgets/py_table_widget/style.py b/gui/widgets/py_table_widget/style.py new file mode 100644 index 0000000..5c3afc0 --- /dev/null +++ b/gui/widgets/py_table_widget/style.py @@ -0,0 +1,135 @@ +# STYLE +# /////////////////////////////////////////////////////////////// +style = ''' +/* ///////////////////////////////////////////////////////////////////////////////////////////////// +QTableWidget */ + +QTableWidget {{ + background-color: {_bg_color}; + padding: 5px; + border-radius: {_radius}px; + gridline-color: {_grid_line_color}; + color: {_color}; +}} +QTableWidget::item{{ + border-color: none; + padding-left: 5px; + padding-right: 5px; + gridline-color: rgb(44, 49, 60); + border-bottom: 1px solid {_bottom_line_color}; +}} +QTableWidget::item:selected{{ + background-color: {_selection_color}; +}} +QHeaderView::section{{ + background-color: rgb(33, 37, 43); + max-width: 30px; + border: 1px solid rgb(44, 49, 58); + border-style: none; + border-bottom: 1px solid rgb(44, 49, 60); + border-right: 1px solid rgb(44, 49, 60); +}} +QTableWidget::horizontalHeader {{ + background-color: rgb(33, 37, 43); +}} +QTableWidget QTableCornerButton::section {{ + border: none; + background-color: {_header_horizontal_color}; + padding: 3px; + border-top-left-radius: {_radius}px; +}} +QHeaderView::section:horizontal +{{ + border: none; + background-color: {_header_horizontal_color}; + padding: 3px; +}} +QHeaderView::section:vertical +{{ + border: none; + background-color: {_header_vertical_color}; + padding-left: 5px; + padding-right: 5px; + border-bottom: 1px solid {_bottom_line_color}; + margin-bottom: 1px; +}} + + +/* ///////////////////////////////////////////////////////////////////////////////////////////////// +ScrollBars */ +QScrollBar:horizontal {{ + border: none; + background: {_scroll_bar_bg_color}; + height: 8px; + margin: 0px 21px 0 21px; + border-radius: 0px; +}} +QScrollBar::handle:horizontal {{ + background: {_context_color}; + min-width: 25px; + border-radius: 4px +}} +QScrollBar::add-line:horizontal {{ + border: none; + background: {_scroll_bar_btn_color}; + width: 20px; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + subcontrol-position: right; + subcontrol-origin: margin; +}} +QScrollBar::sub-line:horizontal {{ + border: none; + background: {_scroll_bar_btn_color}; + width: 20px; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + subcontrol-position: left; + subcontrol-origin: margin; +}} +QScrollBar::up-arrow:horizontal, QScrollBar::down-arrow:horizontal +{{ + background: none; +}} +QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal +{{ + background: none; +}} +QScrollBar:vertical {{ + border: none; + background: {_scroll_bar_bg_color}; + width: 8px; + margin: 21px 0 21px 0; + border-radius: 0px; +}} +QScrollBar::handle:vertical {{ + background: {_context_color}; + min-height: 25px; + border-radius: 4px +}} +QScrollBar::add-line:vertical {{ + border: none; + background: {_scroll_bar_btn_color}; + height: 20px; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + subcontrol-position: bottom; + subcontrol-origin: margin; +}} +QScrollBar::sub-line:vertical {{ + border: none; + background: {_scroll_bar_btn_color}; + height: 20px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + subcontrol-position: top; + subcontrol-origin: margin; +}} +QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical {{ + background: none; +}} + +QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {{ + background: none; +}} +''' \ No newline at end of file