Files
PyOneDark_Qt_Widgets_Modern…/main.py
VFX - Visual Effects af70f0e15d 01/06/2021
2021-06-01 12:50:11 -03:00

241 lines
8.4 KiB
Python

# ///////////////////////////////////////////////////////////////
#
# 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 PACKAGES AND MODULES
# ///////////////////////////////////////////////////////////////
from gui.uis.windows.main_window.functions_main_window import *
import sys
import os
# IMPORT QT CORE
# ///////////////////////////////////////////////////////////////
from qt_core import *
# IMPORT SETTINGS
# ///////////////////////////////////////////////////////////////
from gui.core.json_settings import Settings
# IMPORT PY ONE DARK WINDOWS
# ///////////////////////////////////////////////////////////////
# MAIN WINDOW
from gui.uis.windows.main_window import *
# IMPORT PY ONE DARK WIDGETS
# ///////////////////////////////////////////////////////////////
from gui.widgets import *
# ADJUST QT FONT DPI FOR HIGHT SCALE
# ///////////////////////////////////////////////////////////////
os.environ["QT_FONT_DPI"] = "96"
# MAIN WINDOW
# ///////////////////////////////////////////////////////////////
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# SETUP MAIN WINDOw
# Load widgets from "gui\uis\main_window\ui_main.py"
# ///////////////////////////////////////////////////////////////
self.ui = UI_MainWindow()
self.ui.setup_ui(self)
# LOAD SETTINGS
# ///////////////////////////////////////////////////////////////
settings = Settings()
self.settings = settings.items
# SETUP MAIN WINDOW
# ///////////////////////////////////////////////////////////////
self.hide_grips = True # Show/Hide resize grips
SetupMainWindow.setup_gui(self)
# LEFT MENUS / GET SIGNALS WHEN LEFT MENU BTN IS CLICKED / RELEASED
# ///////////////////////////////////////////////////////////////
# ADD MENUS
self.ui.left_menu.add_menus(SetupMainWindow.add_left_menus)
# SET SIGNALS
self.ui.left_menu.clicked.connect(self.btn_clicked)
self.ui.left_menu.released.connect(self.btn_released)
# TITLE BAR / ADD EXTRA BUTTONS
# ///////////////////////////////////////////////////////////////
# ADD MENUS
self.ui.title_bar.add_menus(SetupMainWindow.add_title_bar_menus)
# SET SIGNALS
self.ui.title_bar.clicked.connect(self.btn_clicked)
self.ui.title_bar.released.connect(self.btn_released)
# ADD Title
if self.settings["custom_title_bar"]:
self.ui.title_bar.set_title(self.settings["app_name"])
else:
self.ui.title_bar.set_title("Welcome to PyOneDark")
# LEFT COLUMN SET SIGNALS
# ///////////////////////////////////////////////////////////////
self.ui.left_column.clicked.connect(self.btn_clicked)
self.ui.left_column.released.connect(self.btn_released)
# SET INITIAL PAGE / SET LEFT AND RIGHT COLUMN MENUS
# ///////////////////////////////////////////////////////////////
MainFunctions.set_page(self, self.ui.load_pages.page_1)
MainFunctions.set_left_column_menu(
self,
menu = self.ui.left_column.menus.menu_1,
title = "Settings Left Column",
icon_path = Functions.set_svg_icon("icon_settings.svg")
)
MainFunctions.set_right_column_menu(self, self.ui.right_column.menu_1)
# SHOW MAIN WINDOW
# ///////////////////////////////////////////////////////////////
self.show()
# LEFT MENU BTN IS CLICKED
# Run function when btn is clicked
# Check funtion by object name / btn_id
# ///////////////////////////////////////////////////////////////
def btn_clicked(self):
# GET BT CLICKED
btn = SetupMainWindow.setup_btns(self)
# LEFT MENU
# ///////////////////////////////////////////////////////////////
# Load Home
if btn.objectName() == "btn_home":
# Select Menu
self.ui.left_menu.select_only_one(btn.objectName())
# Load Page 1
MainFunctions.set_page(self, self.ui.load_pages.page_1)
# Load Widgets Page
if btn.objectName() == "btn_widgets":
# Select Menu
self.ui.left_menu.select_only_one(btn.objectName())
# Load Page 2
MainFunctions.set_page(self, self.ui.load_pages.page_2)
MainFunctions.set_right_column_menu(self, self.ui.right_column.menu_1)
# Load Add User
if btn.objectName() == "btn_add_user":
# Select Menu
self.ui.left_menu.select_only_one(btn.objectName())
# Load Page 3
MainFunctions.set_page(self, self.ui.load_pages.page_3)
# Change Left Column Menu
MainFunctions.set_left_column_menu(
self,
menu = self.ui.left_column.menus.menu_2,
title = "Add Users",
icon_path = Functions.set_svg_icon("icon_settings.svg")
)
# Settings Left
if btn.objectName() == "btn_settings" or btn.objectName() == "btn_close_left_column":
# Toogle Active
if not MainFunctions.left_column_is_visible(self):
btn.set_active(True)
# Show / Hide
MainFunctions.toggle_left_column(self)
else:
btn.set_active(False)
# Show / Hide
MainFunctions.toggle_left_column(self)
# Remove Selection If Clicked By "btn_close_left_column"
if btn.objectName() != "btn_settings":
btn_settings = MainFunctions.get_left_menu_btn(self, "btn_settings")
btn_settings.set_active(False)
# Get Title Bar Btn
top_settings = MainFunctions.get_title_bar_btn(self, "btn_top_settings")
top_settings.set_active(False)
# Change Left Column Menu
MainFunctions.set_left_column_menu(
self,
menu = self.ui.left_column.menus.menu_1,
title = "Settings Left Column",
icon_path = Functions.set_svg_icon("icon_settings.svg")
)
# TITLE BAR MENU
# ///////////////////////////////////////////////////////////////
if btn.objectName() == "btn_top_settings":
# Toogle Active
if not MainFunctions.right_column_is_visible(self):
btn.set_active(True)
# Show / Hide
MainFunctions.toggle_right_column(self)
else:
btn.set_active(False)
# Show / Hide
MainFunctions.toggle_right_column(self)
# Get Left Menu Btn
top_settings = MainFunctions.get_left_menu_btn(self, "btn_settings")
top_settings.set_active(False)
# DEBUG
print(f"Button {btn.objectName()}, clicked!")
# LEFT MENU BTN IS RELEASED
# Run function when btn is released
# Check funtion by object name / btn_id
# ///////////////////////////////////////////////////////////////
def btn_released(self):
# GET BT CLICKED
btn = SetupMainWindow.setup_btns(self)
# DEBUG
print(f"Button {btn.objectName()}, released!")
# RESIZE EVENT
# ///////////////////////////////////////////////////////////////
def resizeEvent(self, event):
SetupMainWindow.resize_grips(self)
# MOUSE CLICK EVENTS
# ///////////////////////////////////////////////////////////////
def mousePressEvent(self, event):
# SET DRAG POS WINDOW
self.dragPos = event.globalPos()
# SETTINGS WHEN TO START
# Set the initial class and also additional parameters of the "QApplication" class
# ///////////////////////////////////////////////////////////////
if __name__ == "__main__":
# APPLICATION
app = QApplication(sys.argv)
# app.setWindowIcon(QIcon("icon.ico"))
window = MainWindow()
sys.exit(app.exec_())