Skip to content

Instantly share code, notes, and snippets.

@yamadaaaaaaa
Last active October 27, 2021 05:36
Show Gist options
  • Save yamadaaaaaaa/c0d371003facd72c858b8fa788bf59fc to your computer and use it in GitHub Desktop.
Save yamadaaaaaaa/c0d371003facd72c858b8fa788bf59fc to your computer and use it in GitHub Desktop.
ymd_launcher.py
# -*- coding: utf-8 -*-
#vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
# ymd_launcher.py
# VERSION : 1.0.0
# AUTHOR : yamada = ymd
# DATE : 2021/8/1
# DESCRIPTION : DCC Launcher for Windows.
# USAGE : ymd_launcher.mod copy to C:\Users\<user>\Documents\maya\<version>\modules
# Open ymd_launcher.mod and change the path to the location where you placed the ymd_launcher folder.
# just run this script in maya scriptEditor python tab
# Copyright (c) 2020 ymd
# The MIT License (MIT)
#vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
import sys
import os
import re
import traceback
import subprocess
import shutil
import csv
import string
import ctypes
import datetime
import glob
import functools
from PySide2 import QtCore, QtGui, QtWidgets
_qapp = -1
from shiboken2 import wrapInstance
ui = None
mainWindow = None
#background-color: rgb(146, 140, 54);
styleList = '''
QListWidget {
show-decoration-selected: 1;
selection-color: white;
selection-background-color: rgb(62, 98, 173);
color: rgb(255, 255, 255);
background-color: rgb(30, 30, 30);
}
QListWidget::item:!selected:hover{
background-color: rgb(80, 80, 80);
color: rgb(255, 255, 255);
}
QListWidget::item:selected:hover{
background-color: rgb(187, 85, 72);
color: rgb(255, 255, 255);
}
'''
# border-style: inset;
# border-width: 2px;
# border-color: rgb(62, 98, 173);
#background-color: rgb(146, 140, 54);
#background-color: rgb(62, 98, 173);
styleBtnA = '''
QPushButton {
background-color: rgba(0, 0, 0, 0);
selection-background-color: rgb(62, 98, 173);
color: rgb(255, 255, 255);
border-radius:10px;
}
QPushButton:hover {
background-color: rgb(62, 98, 173);
color: rgb(255, 255, 255);
border-radius:10px;
}
QPushButton:checked {
background-color: rgb(146, 140, 54);
color: rgb(255, 255, 255);
border-radius:10px;
}
QPushButton:checked:hover {
background-color: rgb(187, 85, 72);
color: rgb(255, 255, 255);
border-radius:10px;
}
'''
styleBtnD = '''
QPushButton {
background-color: rgb(110, 110, 110);
color: rgb(255, 255, 255);
border-radius:10px;
}
QPushButton:hover {
background-color: rgb(180, 180, 180);
color: rgb(255, 255, 255);
border-radius:10px;
}
QPushButton:pressed {
background-color: rgb(0, 0, 0);
color: rgb(255, 255, 255);
border-radius:10px;
}
QToolTip {
background-color: black;
color: white;
border: black solid 1px;
}
'''
def get_module():
path_module = os.path.dirname(sys.argv[0])
path_module = os.path.dirname(path_module)
path_modules = os.path.join(path_module,'modules')
path_icon = os.path.join(path_module,'icons')
path_conf = os.path.join(path_module,'prefs','ymd_launcher.json')
path_image = os.path.join(path_module,'images')
size_btn = 50
icon_listA = glob.glob(os.path.join(path_icon,"*.png"))
icon_listB = glob.glob(os.path.join(path_icon,"*.jpg"))
icon_listC = glob.glob(os.path.join(path_icon,"*.tif"))
icon_list = icon_listA + icon_listB + icon_listC
icon_list.sort()
return path_modules, icon_list, path_conf, size_btn, path_image
def get_drives():
list_drives = []
for _drive in string.ascii_uppercase:
if not os.path.exists(_drive + ":" + os.sep):continue
list_drives.append(_drive)
return list_drives
def save_prefs():
list_gui_value = list()
is_temp = "FALSE"
list_temp = list()
path_conf_dir = os.path.join(path_module,'prefs')
if not os.path.exists(path_conf_dir):
os.makedirs(path_conf_dir)
# 01 window size
window_width = mainWindow.width()
window_height = mainWindow.height()
window_size = [window_width,window_height]
list_gui_value.append(window_size)
# 02 gui settings
if ui.checkBox_dirMemory.checkState():
is_temp = "TRUE"
list_gui_value.append([is_temp,ui.comboBox_fileTypeFilter.currentText()])
is_temp = "FALSE"
# 03 gui dir
for i in range(1, max_dir):
gui_temp = getattr(ui, 'listWidget_dir' + str(i))
if not gui_temp.currentItem():continue
list_temp.append(gui_temp.currentItem().text().encode("utf-8"))
list_gui_value.append(list_temp)
list_temp = list()
# 04 bookmark
_root = ui_bookmark.treeWidget_bookmark.invisibleRootItem()
item_child = _root.childCount()
for id in range(item_child):
_item = _root.child(id)
list_temp.append(_item.text(0) + "::" + _item.text(1))
list_gui_value.append(list_temp)
list_temp = list()
with open(path_conf, 'w') as f:
csvWriter = csv.writer(f)
for item_gui_value in list_gui_value:
csvWriter.writerow(item_gui_value)
def load_prefs(_mode=""):
if not os.path.exists(path_conf):return
with open(path_conf, 'rb') as f:
csvReader = csv.reader(f)
list_csv_value = [_row for _row in csvReader]
if len(list_csv_value[0]) != 0:
str_value = list_csv_value[0]
mainWindow.resize(int(str_value[0]),int(str_value[1]))
if len(list_csv_value[1]) != 0:
str_value = list_csv_value[1]
ui.checkBox_dirMemory.setChecked(str_value[0] == "TRUE")
_id = ui.comboBox_fileTypeFilter.findText(str_value[1], QtCore.Qt.MatchFixedString)
if _id >= 0:
ui.comboBox_fileTypeFilter.setCurrentIndex(_id)
if len(list_csv_value[3]) != 0:
str_value = list_csv_value[3]
list_temp = list()
list_temp_tree = list()
for _item in str_value:
list_temp.append((_item.split("::")[0],_item.split("::")[1]))
for _item in list_temp:
item_tree = QtWidgets.QTreeWidgetItem(_item)
list_temp_tree.append(item_tree)
item_tree.setFlags(QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled | \
QtCore.Qt.ItemIsSelectable)
ui_bookmark.treeWidget_bookmark.addTopLevelItems(list_temp_tree)
if len(list_csv_value[2]) != 0:
str_value = list_csv_value[2]
str_path = ""
for _dir in str_value:
if re.search(":",_dir):
str_path = os.path.join(str_path, _dir + os.sep)
else:
str_path = os.path.join(str_path, _dir)
set_path_expand("expand", str_path)
'''
ui.listWidget_src.verticalScrollBar().valueChanged.connect(\
ui.listWidget_dst.verticalScrollBar().setValue)
ui.listWidget_dst.verticalScrollBar().valueChanged.connect(\
ui.listWidget_src.verticalScrollBar().setValue)
'''
class my_ScrollAreaDD(QtWidgets.QWidget):
dropped = QtCore.Signal(list)
def __init__(self, type, parent=None):
super(my_ScrollAreaDD, self).__init__(parent)
self.setAcceptDrops(True)
def dragEnterEvent(self, event):
if event.mimeData().hasUrls:
event.accept()
else:
event.ignore()
def dragMoveEvent(self, event):
if event.mimeData().hasUrls:
event.setDropAction(QtCore.Qt.CopyAction)
event.accept()
else:
event.ignore()
def dropEvent(self, event):
if event.mimeData().hasUrls:
event.setDropAction(QtCore.Qt.CopyAction)
event.accept()
file_path = [u.toLocalFile() for u in event.mimeData().urls()]
self.dropped.emit(file_path)
else:
event.ignore()
class my_widgetBtn(QtWidgets.QWidget):
def __init__(self, *argv, **keywords ):
super(my_widgetBtn,self).__init__(*argv,**keywords)
self.gui_btn = []
self.add_button()
def resizeEvent(self,event):
self.resize_move_btn(self.size().width())
def resize_move_btn(self, wid):
path_modules, icon_list, path_conf, size_btn, path_image = get_module()
base_y = 0
base_x = 0
size_x = base_x
size_y = base_y
for btn in self.gui_btn:
if wid > size_x + size_btn:
btn.move(size_x, size_y)
size_x = size_x + size_btn
else:
size_x = base_x
size_y = size_y + size_btn
btn.move(size_x, size_y)
size_x = size_x + size_btn
def add_button(self):
path_modules, icon_list, path_conf, size_btn, path_image = get_module()
self.gridLayout_btn = QtWidgets.QGridLayout(self)
self.gridLayout_btn.setContentsMargins(0, 0, 0, 0)
self.gridLayout_btn.setObjectName("gridLayout_btn")
for i in range(len(icon_list)):
item_btn = QtWidgets.QPushButton('',self)
self.gridLayout_btn.addWidget(item_btn)
self.gui_btn.append(item_btn)
item_btn.setMaximumSize(QtCore.QSize(size_btn, size_btn))
item_btn.setMinimumSize(QtCore.QSize(size_btn, size_btn))
item_btn.move(0, 0)
item_btn.setStyleSheet(styleBtnA)
class my_ScrollArea(QtWidgets.QScrollArea):
def __init__(self, parent=None):
QtWidgets.QScrollArea.__init__(self, parent)
#def moveEvent(self, event):
# sequence = self.findChildren(QtWidgets.QPushButton)
# height_btn = 0
# for obj_PushButton in sequence:
# height_btn = obj_PushButton.height()
# pos_y = obj_PushButton.y()
# if height_btn == 0:return
# size_bar = height_btn * (pos_y / height_btn)
# self.verticalScrollBar().setMaximum(size_bar)
# self.verticalScrollBar().update()
# print(size_bar)
def paintEvent(self, event):
sequence = self.findChildren(QtWidgets.QPushButton)
height_btn = 0
for obj_PushButton in sequence:
height_btn = obj_PushButton.height()
pos_y = obj_PushButton.y()
if height_btn == 0:return
size_bar = height_btn * (pos_y / height_btn)
if pos_y + height_btn < self.size().height():
size_bar = 0.0
if size_bar == 0.0:
self.verticalScrollBar().hide()
return
self.verticalScrollBar().show()
self.verticalScrollBar().setMaximum(size_bar)
#self.verticalScrollBar().update()
#def resizeEvent(self, event):
# self.verticalScrollBar().update()
# sequence = self.findChildren(QtWidgets.QPushButton)
# height_btn = 0
# for obj_PushButton in sequence:
# height_btn = obj_PushButton.height()
# pos_y = obj_PushButton.y()
# if height_btn == 0:return
# size_bar = height_btn * (pos_y / height_btn)
# self.verticalScrollBar().setMaximum(size_bar)
#def eventFilter(self, i_obj, i_event):
# print(str(i_event.type()))
class ymd_mainWindow(QtWidgets.QMainWindow):
def __init__(self, *args, **kwargs):
super(ymd_mainWindow, self).__init__(*args, **kwargs)
#self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
self.is_drag = False
self.pos = QtCore.QPoint(0, 0)
def mousePressEvent(self, event):
self.is_drag = True
self.pos = event.pos()
super(ymd_mainWindow, self).mousePressEvent(event)
def mouseReleaseEvent(self, event):
self.is_drag = False
super(ymd_mainWindow, self).mouseReleaseEvent(event)
def mouseMoveEvent(self, event):
if self.is_drag:
self.move(self.mapToParent(event.pos() - self.pos))
super(ymd_mainWindow, self).mouseMoveEvent(event)
class Ui_Window_ymd_launcher(object):
def setupUi(self, Window_ymd_launcher):
Window_ymd_launcher.setObjectName("Window_ymd_launcher")
Window_ymd_launcher.resize(441, 377)
Window_ymd_launcher.setMinimumSize(QtCore.QSize(0, 0))
Window_ymd_launcher.setStyleSheet("background-color: rgb(50, 50, 50);\n"
"color: rgb(255, 255, 255);\n"
"")
self.centralwidget = QtWidgets.QWidget(Window_ymd_launcher)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout_3 = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout_3.setObjectName("gridLayout_3")
self.widget_top = QtWidgets.QWidget(self.centralwidget)
self.widget_top.setObjectName("widget_top")
self.gridLayout_5 = QtWidgets.QGridLayout(self.widget_top)
self.gridLayout_5.setContentsMargins(0, 0, 0, 0)
self.gridLayout_5.setObjectName("gridLayout_5")
self.splitter = QtWidgets.QSplitter(self.widget_top)
self.splitter.setOrientation(QtCore.Qt.Vertical)
self.splitter.setObjectName("splitter")
self.scrollArea_up = my_ScrollArea(self.splitter)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.scrollArea_up.sizePolicy().hasHeightForWidth())
self.scrollArea_up.setSizePolicy(sizePolicy)
self.scrollArea_up.setMinimumSize(QtCore.QSize(0, 75))
self.scrollArea_up.setStyleSheet("background-color: rgb(30, 30, 30);")
self.scrollArea_up.setFrameShape(QtWidgets.QFrame.NoFrame)
self.scrollArea_up.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
self.scrollArea_up.setWidgetResizable(True)
self.scrollArea_up.setObjectName("scrollArea_up")
self.scrollAreaWidgetContents_2 = my_widgetBtn()
self.scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 405, 75))
self.scrollAreaWidgetContents_2.setObjectName("scrollAreaWidgetContents_2")
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
self.scrollArea_up.setWidget(self.scrollAreaWidgetContents_2)
self.frame_contents = QtWidgets.QFrame(self.splitter)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame_contents.sizePolicy().hasHeightForWidth())
self.frame_contents.setSizePolicy(sizePolicy)
self.frame_contents.setMinimumSize(QtCore.QSize(0, 0))
self.frame_contents.setMaximumSize(QtCore.QSize(16777212, 16777215))
self.frame_contents.setLayoutDirection(QtCore.Qt.LeftToRight)
self.frame_contents.setAutoFillBackground(False)
self.frame_contents.setStyleSheet("")
self.frame_contents.setFrameShape(QtWidgets.QFrame.NoFrame)
self.frame_contents.setFrameShadow(QtWidgets.QFrame.Plain)
self.frame_contents.setObjectName("frame_contents")
self.gridLayout_4 = QtWidgets.QGridLayout(self.frame_contents)
self.gridLayout_4.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint)
self.gridLayout_4.setContentsMargins(0, 0, 0, 0)
self.gridLayout_4.setSpacing(3)
self.gridLayout_4.setObjectName("gridLayout_4")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setSpacing(6)
self.horizontalLayout_2.setSizeConstraint(QtWidgets.QLayout.SetMinimumSize)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.comboBox_project = QtWidgets.QComboBox(self.frame_contents)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.comboBox_project.sizePolicy().hasHeightForWidth())
self.comboBox_project.setSizePolicy(sizePolicy)
self.comboBox_project.setMinimumSize(QtCore.QSize(0, 30))
self.comboBox_project.setMaximumSize(QtCore.QSize(16777215, 30))
self.comboBox_project.setToolTip("")
self.comboBox_project.setStyleSheet("background-color: rgb(30, 30, 30);")
self.comboBox_project.setObjectName("comboBox_project")
self.horizontalLayout_2.addWidget(self.comboBox_project)
self.gridLayout_4.addLayout(self.horizontalLayout_2, 0, 0, 1, 1)
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setSpacing(3)
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.listWidget_left = QtWidgets.QListWidget(self.frame_contents)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.listWidget_left.sizePolicy().hasHeightForWidth())
self.listWidget_left.setSizePolicy(sizePolicy)
self.listWidget_left.setMinimumSize(QtCore.QSize(200, 0))
self.listWidget_left.setMaximumSize(QtCore.QSize(16777215, 16777215))
self.listWidget_left.setStyleSheet("background-color: rgb(30, 30, 30);")
self.listWidget_left.setFrameShape(QtWidgets.QFrame.NoFrame)
self.listWidget_left.setObjectName("listWidget_left")
self.horizontalLayout_3.addWidget(self.listWidget_left)
self.listWidget_right = QtWidgets.QListWidget(self.frame_contents)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.listWidget_right.sizePolicy().hasHeightForWidth())
self.listWidget_right.setSizePolicy(sizePolicy)
self.listWidget_right.setMinimumSize(QtCore.QSize(200, 0))
self.listWidget_right.setMaximumSize(QtCore.QSize(16777215, 16777215))
self.listWidget_right.setStyleSheet("background-color: rgb(30, 30, 30);")
self.listWidget_right.setFrameShape(QtWidgets.QFrame.NoFrame)
self.listWidget_right.setObjectName("listWidget_right")
self.horizontalLayout_3.addWidget(self.listWidget_right)
self.gridLayout_4.addLayout(self.horizontalLayout_3, 1, 0, 1, 1)
self.scrollArea_un = QtWidgets.QScrollArea(self.splitter)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.scrollArea_un.sizePolicy().hasHeightForWidth())
self.scrollArea_un.setSizePolicy(sizePolicy)
self.scrollArea_un.setMinimumSize(QtCore.QSize(0, 75))
self.scrollArea_un.setStyleSheet("background-color: rgb(30, 30, 30);")
self.scrollArea_un.setFrameShape(QtWidgets.QFrame.NoFrame)
self.scrollArea_un.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
self.scrollArea_un.setWidgetResizable(True)
self.scrollArea_un.setObjectName("scrollArea_un")
self.scrollAreaWidgetContents = QtWidgets.QWidget()
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 405, 75))
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
self.gridLayout = QtWidgets.QGridLayout(self.scrollAreaWidgetContents)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setSpacing(0)
self.gridLayout.setObjectName("gridLayout")
self.scrollArea_un.setWidget(self.scrollAreaWidgetContents)
self.gridLayout_5.addWidget(self.splitter, 0, 0, 1, 1)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.checkBox_always = QtWidgets.QCheckBox(self.widget_top)
self.checkBox_always.setMinimumSize(QtCore.QSize(65, 30))
self.checkBox_always.setMaximumSize(QtCore.QSize(65, 30))
self.checkBox_always.setObjectName("checkBox_always")
self.horizontalLayout.addWidget(self.checkBox_always)
self.widget_copyright = QtWidgets.QWidget(self.widget_top)
self.widget_copyright.setMinimumSize(QtCore.QSize(0, 30))
self.widget_copyright.setMaximumSize(QtCore.QSize(16777215, 30))
self.widget_copyright.setLayoutDirection(QtCore.Qt.LeftToRight)
self.widget_copyright.setObjectName("widget_copyright")
self.gridLayout_6 = QtWidgets.QGridLayout(self.widget_copyright)
self.gridLayout_6.setContentsMargins(0, 0, 0, 0)
self.gridLayout_6.setObjectName("gridLayout_6")
self.label = QtWidgets.QLabel(self.widget_copyright)
self.label.setMinimumSize(QtCore.QSize(0, 14))
self.label.setMaximumSize(QtCore.QSize(16777215, 14))
self.label.setLayoutDirection(QtCore.Qt.LeftToRight)
self.label.setStyleSheet("color: rgb(0, 0, 0);")
self.label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.label.setObjectName("label")
self.gridLayout_6.addWidget(self.label, 0, 1, 1, 1)
self.horizontalLayout.addWidget(self.widget_copyright)
self.pushButton_close = QtWidgets.QPushButton(self.widget_top)
self.pushButton_close.setMinimumSize(QtCore.QSize(50, 20))
self.pushButton_close.setMaximumSize(QtCore.QSize(50, 20))
self.pushButton_close.setCursor(QtCore.Qt.PointingHandCursor)
self.pushButton_close.setStyleSheet("background-color: rgb(110, 110, 110);\n"
"color: rgb(255, 255, 255);border-radius:10px;")
self.pushButton_close.setFlat(True)
self.pushButton_close.setObjectName("pushButton_close")
self.horizontalLayout.addWidget(self.pushButton_close)
self.gridLayout_5.addLayout(self.horizontalLayout, 1, 0, 1, 1)
self.gridLayout_3.addWidget(self.widget_top, 0, 0, 1, 1)
Window_ymd_launcher.setCentralWidget(self.centralwidget)
self.statusBar = QtWidgets.QStatusBar(Window_ymd_launcher)
self.statusBar.setObjectName("statusBar")
Window_ymd_launcher.setStatusBar(self.statusBar)
self.actionHelp = QtWidgets.QAction(Window_ymd_launcher)
self.actionHelp.setObjectName("actionHelp")
self.retranslateUi(Window_ymd_launcher)
QtCore.QMetaObject.connectSlotsByName(Window_ymd_launcher)
def retranslateUi(self, Window_ymd_launcher):
Window_ymd_launcher.setWindowTitle(QtWidgets.QApplication.translate("Window_ymd_launcher", "ymd_launcher", None, -1))
self.checkBox_always.setText(QtWidgets.QApplication.translate("Window_ymd_launcher", "Always", None, -1))
self.label.setText(QtWidgets.QApplication.translate("Window_ymd_launcher", "(c) 2020 ymd", None, -1))
self.pushButton_close.setText(QtWidgets.QApplication.translate("Window_ymd_launcher", "close", None, -1))
self.actionHelp.setText(QtWidgets.QApplication.translate("Window_ymd_launcher", "Help", None, -1))
def selected_dcc(obj_PushButton, dic_icon, ui):
str_icon = dic_icon[obj_PushButton]
print(str_icon)
sequence = ui.scrollArea_up.findChildren(QtWidgets.QPushButton)
for obj_PushButton_tmp in sequence:
if obj_PushButton_tmp != obj_PushButton:
obj_PushButton_tmp.setChecked(False)
else:
obj_PushButton_tmp.setChecked(True)
ui.listWidget_left.addItem("2022 EN")
ui.listWidget_right.addItem("2022 JP")
class my_notificationArea(QtWidgets.QSystemTrayIcon):
def __init__(self,parent=None):
super(my_notificationArea,self).__init__(parent)
path_modules, icon_list, path_conf, size_btn, path_image = get_module()
icons = os.path.join(path_image,"ymd.png")
hover_text = u"ymd_Launcher 1.0.0"
self.actionQuit = QtWidgets.QAction(QtGui.QIcon(''),"&Quit",self,
statusTip="Quit", triggered=self.Quit)
self.actionShow = QtWidgets.QAction(QtGui.QIcon(''),"&show",self,
statusTip="show", triggered=self.show_window)
# contents context
self.notificationIconMenu = QtWidgets.QMenu(parent)
self.notificationIconMenu.addAction(self.actionShow)
self.notificationIconMenu.addAction(self.actionQuit)
# set context and icon
self.notificationIcon = QtWidgets.QSystemTrayIcon(self)
self.notificationIcon.setToolTip(hover_text)
self.notificationIcon.setContextMenu(self.notificationIconMenu)
self.notificationIcon.setIcon(QtGui.QIcon(icons))
self.notificationIcon.activated.connect(self.activatedNotification)
self.notificationIcon.show()
# set balloon
icon = QtWidgets.QSystemTrayIcon.Information
self.notificationIcon.showMessage(hover_text,u'run',icon,500)
def activatedNotification(self, reason):
if reason == QtWidgets.QSystemTrayIcon.Trigger:
self.show_window()
def Quit(self):
QtWidgets.QApplication.quit()
def show_window(self):
mainWindow.show()
def dropped_widget(filePaths):
print(filePaths)
def main():
global ui
global mainWindow
dic_icon = {}
path_modules, icon_list, path_conf, size_btn, path_image = get_module()
window_name = 'Window_ymd_launcher'
tool_name = 'ymd_launcher'
tool_ver = '1.0.0'
app = QtWidgets.QApplication(sys.argv)
mainWindow = ymd_mainWindow()
mainWindow.setWindowTitle(QtWidgets.QApplication.translate( \
window_name, \
tool_name+' ver'+tool_ver, \
None, _qapp))
##mainWindow.resize(100,500)
ui = Ui_Window_ymd_launcher()
ui.setupUi(mainWindow)
# ui settings --------------------------------------------
# icons
sequence = mainWindow.findChildren(QtWidgets.QPushButton)
idx = 0
for obj_PushButton in sequence:
if obj_PushButton.text() == 'close':continue
if not os.path.exists(icon_list[idx]):continue
image = QtGui.QImage(icon_list[idx])
for x in range(image.width()):
for y in range(image.height()):
pcolor = image.pixelColor(x, y)
if pcolor.alpha() > 0:
n_color = QtGui.QColor(pcolor)
n_color.setAlpha(pcolor.alpha()*0.9)
image.setPixelColor(x, y, n_color)
q_pixmap = QtGui.QPixmap(image)
q_icon = QtGui.QIcon(q_pixmap)
obj_PushButton.setIcon(QtGui.QIcon(q_icon))
obj_PushButton.setIconSize(QtCore.QSize(size_btn-10,size_btn-10))
icon_name = os.path.splitext(os.path.basename(icon_list[idx]))[0]
dic_icon.setdefault(obj_PushButton, icon_name)
idx = idx + 1
obj_PushButton.clicked.connect(functools.partial(selected_dcc,obj_PushButton,dic_icon,ui))
obj_PushButton.setCheckable(True)
mainWindow.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint | QtCore.Qt.FramelessWindowHint)
mainWindow.setAttribute(QtCore.Qt.WA_TranslucentBackground)
style_base = "background-color:rgba(146, 140, 54, 200);"
style_widget = "border-top-left-radius:10px;border-top-right-radius:10px;"
ui.centralwidget.setStyleSheet(style_base + style_widget)
style_bar = "min-height: 10;border-bottom-left-radius:10px;border-bottom-right-radius:10px;"
mainWindow.statusBar().setStyleSheet(style_base + style_bar)
#ui.widget_top.setStyleSheet(style_base + "border-radius:10px;")
ui.pushButton_close.setStyleSheet(styleBtnD)
ui.listWidget_left.setFont(QtGui.QFont('Meiryo', 12))
ui.listWidget_right.setFont(QtGui.QFont('Meiryo', 12))
# keyboard ------------------------------------------------
QtWidgets.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_Escape),mainWindow, mainWindow.hide)
#QtGui.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_F5),MainWindow, ui.set_project)
# ui connect -----------------------------------------------
QtCore.QObject.connect(ui.pushButton_close, QtCore.SIGNAL("clicked()"), mainWindow.hide)
#ui.scrollArea_un.dropped.connect(dropped_widget)
# ---------------------------------------------------------
#load_prefs()
#mainWindow.show()
mainWindow.setAttribute(QtCore.Qt.WA_DeleteOnClose)
# systray
if not QtWidgets.QSystemTrayIcon.isSystemTrayAvailable() == True:
raise OSError(u"not use")
QtWidgets.QApplication.setQuitOnLastWindowClosed(False)
my_notificationArea(mainWindow)
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment