first commit

This commit is contained in:
Jakub Trllo 2018-11-16 15:12:22 +01:00
parent caaa7cb1a1
commit b174fce9de
4 changed files with 182 additions and 4 deletions

View file

@ -1,7 +1,7 @@
import sys import sys
import os import os
import requests import requests
from PyQt5 import QtCore, QtGui, QtWidgets from app.vendor.Qt import QtCore, QtGui, QtWidgets
from app import style from app import style
from . import credentials, login_tools from . import credentials, login_tools
@ -11,7 +11,7 @@ class Login_Dialog_ui(QtWidgets.QWidget):
SIZE_W = 300 SIZE_W = 300
SIZE_H = 230 SIZE_H = 230
loginSignal = QtCore.pyqtSignal(object, object, object) loginSignal = QtCore.Signal(object, object, object)
_login_server_thread = None _login_server_thread = None
inputs = [] inputs = []
buttons = [] buttons = []

View file

@ -2,7 +2,7 @@ from http.server import BaseHTTPRequestHandler, HTTPServer
from urllib import parse from urllib import parse
import webbrowser import webbrowser
import functools import functools
from PyQt5 import QtCore from app.vendor.Qt import QtCore
# class LoginServerHandler(BaseHTTPServer.BaseHTTPRequestHandler): # class LoginServerHandler(BaseHTTPServer.BaseHTTPRequestHandler):
class LoginServerHandler(BaseHTTPRequestHandler): class LoginServerHandler(BaseHTTPRequestHandler):
@ -82,7 +82,7 @@ class LoginServerThread(QtCore.QThread):
'''Login server thread.''' '''Login server thread.'''
# Login signal. # Login signal.
loginSignal = QtCore.pyqtSignal(object, object, object) loginSignal = QtCore.Signal(object, object, object)
def start(self, url): def start(self, url):

129
pype/ftrack/tray.py Normal file
View file

@ -0,0 +1,129 @@
import os
import sys
import textwrap
from app.vendor.Qt import QtCore, QtGui, QtWidgets
menu_layout_dict = {'Ftrack': {
'Avalon Core': [
'Config core',
'Create new project',
None,
'Save database',
],
'Avalon Users': [
'Config User',
'Cre&ate new user',
],
'Avalon Workfiles': [
'Config Workfiles',
],
'Pyblish': [
'Config Pyblish',
'Create new micro-plugin',
None,
'Micro-plugins manager'
],
'Pipeline': [
'Config pipeline',
'Create new template',
None,
'Templates manager'
],
'CG-wire': [
'Config CG-wire',
None,
'Pull database',
'Push database'
]
},
'Minimalize': "action",
#'Close': "action"
}
# print(menu_layout_dict)
class SystemTrayIcon(QtWidgets.QSystemTrayIcon):
def __init__(self, icon, parent=None):
QtWidgets.QSystemTrayIcon.__init__(self, icon, parent)
self.tray = QtWidgets.QSystemTrayIcon(icon, parent)
# print(tray)
self.tray.setToolTip("Avalon Launcher")
menu = QtWidgets.QMenu(parent)
# self.menuBar()
# self.main_layout = QtWidgets.QVBoxLayout(self.menu)
# self.menu.setLayout(self.main_layout)
# project_name_lbl = QtWidgets.QLabel('<b>Project Name</b>')
# self.main_layout.addWidget(project_name_lbl)
menu.setProperty('menu', 'on')
label = QtWidgets.QLabel('Avalon', menu)
menu.setStyleSheet(textwrap.dedent('''
QWidget {
background-color: #444444;
color: #ffffff;
}
QLineEdit {
background-color: white;
}
QLineEdit:no-text-inside-it {
background-color: red;
}
QWidget[menu=on] {
background-color: #333333;
color: #ffffff;
}
'''
)
)
for key, value in menu_layout_dict.items():
if value == 'action':
# menu = QtWidgets.QMenu(menu)
# menu = QtWidgets.QMenu(menu)
separator = menu.addSeparator()
# spacer = QtWidgets.QWidget()
menu.addAction(key)
print(key, value)
else:
# menu = QtWidgets.QMenu(menu)
avalon_plugins = menu.addMenu(key)
avalon_plugins.setProperty('submenu', 'on')
self.eventFilter(avalon_plugins, QtCore.QEvent.HoverMove)
for skey, svalue in value.items():
avalon_plugin = avalon_plugins.addMenu(skey)
avalon_plugin.setProperty('submenu', 'on')
# print(skey, svalue)
# plugins_Menu = avalon_plugin.addMenu(skey)
for action in svalue:
if action == None:
avalon_plugin.addSeparator()
else:
plugins_Action = avalon_plugin.addAction(action)
menu.addMenu(avalon_plugins)
exitAction = menu.addAction("Exit")
self.eventFilter(exitAction, QtCore.QEvent.HoverMove)
self.setContextMenu(menu)
menu.triggered.connect(self.exit)
# main_layout.addWidget(menu)
def eventFilter(self, object, event):
print(self, object, event)
# if event.type() == QtCore.QEvent.MouseButtonPress:
# print("You pressed the button")
# return True
# #
if event == QtCore.QEvent.HoverMove:
print("C'mon! CLick-meeee!!!")
return True
def exit(self):
QtCore.QCoreApplication.exit()
def _sys_tray(image):
# code source: https://stackoverflow.com/questions/893984/pyqt-show-menu-in-a-system-tray-application - add answer PyQt5
#PyQt4 to PyQt5 version: https://stackoverflow.com/questions/20749819/pyqt5-failing-import-of-qtgui
app = QtWidgets.QApplication(sys.argv)
w = QtWidgets.QWidget()
trayIcon = SystemTrayIcon(QtGui.QIcon(image), w)
# menu =
trayIcon.show()
sys.exit(app.exec_())
if (__name__ == ('__main__')):
avalon_core_icon = r'C:\Users\jakub.trllo\CODE\pype-setup\repos\avalon-launcher\launcher\res\icon\main.png'
print(avalon_core_icon)
_sys_tray(avalon_core_icon)

49
pype/ftrack/tray2.py Normal file
View file

@ -0,0 +1,49 @@
from app.vendor.Qt import QtGui
from app.vendor.Qt import QtWidgets
import credentials
app = QApplication([])
app.setQuitOnLastWindowClosed(False)
# Create the icon
avalon_core_icon = r'C:\Users\jakub.trllo\CODE\pype-setup\repos\avalon-launcher\launcher\res\icon\main.png'
icon = QIcon(avalon_core_icon)
clipboard = QApplication.clipboard()
dialog = QColorDialog()
def logout():
credentials.
def copy_color_hsv():
if dialog.exec_():
color = dialog.currentColor()
clipboard.setText("hsv(%d, %d, %d)" % (
color.hue(), color.saturation(), color.value()
))
def exit():
self.close()
# Create the tray
tray = QSystemTrayIcon()
tray.setIcon(icon)
tray.setVisible(True)
# Create the menu
menu = QMenu()
exit = QAction("Exit")
exit.triggered.connect(exit)
logout = QAction("Logout")
logout.triggered.connect(logout)
action3 = QAction("HSV")
action3.triggered.connect(copy_color_hsv)
menu.addAction(exit)
# menu.addAction(action2)
# menu.addAction(action3)
# Add the menu to the tray
tray.setContextMenu(menu)
app.exec_()