Compare commits

...

2 Commits

Author SHA1 Message Date
Mike Khiretskiy 8ff5da24c2 Begin refactoring
10 years ago
Mike Khiretskiy da8a0d5da9 Добавлена обработка метода типа каталог.
10 years ago

@ -33,7 +33,7 @@ from session_function import ViewSessionInfo
from CertificateClass import CertClass
from pid_information import client_list_pid
from more import icon_visible, client_del_sid, show_msg
from more import icon_visible, client_del_sid, show_msg, read_root_methods
class MainWgt(QtGui.QMainWindow):
def __init__(self, ClientObj):
@ -146,11 +146,16 @@ class MainWgt(QtGui.QMainWindow):
self.left_frame.old_title = None
# icon_visible(self, 'Methods', False)
icon_visible(self, 'Back', False)
if not self.ClientObj.cwd:
icon_visible(self, 'Back', False)
self.resize(self.cur_size)
def back(self):
if len (self.ClientObj.back_step_list) < 2:
if type(self.MainFrameWgt) == DisplayMethod and self.ClientObj.cwd:
self.ClientObj.cwd.pop()
read_root_methods(self.ClientObj.client, self.ClientObj)
self.delete_MainFrameWgt()
self.MainFrameWgt = DisplayMethod(self, self.ClientObj)
@ -162,7 +167,8 @@ class MainWgt(QtGui.QMainWindow):
self.left_frame.old_title = None
# icon_visible(self, 'Methods', False)
icon_visible(self, 'Back', False)
if not self.ClientObj.cwd:
icon_visible(self, 'Back', False)
else:
# get WindowTitle and delete last item from back_step_list

@ -57,9 +57,9 @@ class MethodNameWgt(QtGui.QWidget):
self.hide()
def setMethodName(self, method_name):
for meth_inf in self.ClientObj.methods_list:
if meth_inf.string[1] == method_name:
self.meth_name.setText(meth_inf.string[2])
for method_info in self.ClientObj.methods_list:
if method_info.name == method_name:
self.meth_name.setText(method_info.title)
return
self.meth_name.setText(method_name)

@ -18,6 +18,7 @@ from PySide import QtGui, QtCore
from more import ButtonMenu, FlowLayout, get_sid, ClientServiceThread, \
get_view_params, show_msg
from collections import namedtuple
class DisplayMethod(QtGui.QWidget):
def __init__(self, parent, ClientObj):
@ -28,10 +29,6 @@ class DisplayMethod(QtGui.QWidget):
ClientObj.back_step_list = []
def initUI(self, results):
GROUP = 0 # Getting group name
METH = 1 # Getting method name
LABEL = 2 # Get translate label
IMAGE = 3 # Getting image path
self.lable_list = []
self.button_list = {}
self.layout = QtGui.QVBoxLayout()
@ -74,19 +71,15 @@ class DisplayMethod(QtGui.QWidget):
self.setLayout(self.layout)
self.show()
return 1
for num in range (0, len(results)):
groups_name = results[num].string[GROUP]
if results[num].string[GROUP] in [None,'None']:
self.ClientObj.method_names[results[num].string[METH]] = \
results[num].string[LABEL]
for method_info in results:
groups_name = method_info.category
if groups_name in [None,'None']:
self.ClientObj.method_names[method_info.name] = method_info.title
continue
if not groups_name in guiMethods.keys():
guiMethods[groups_name] = []
self.ClientObj.method_names[results[num].string[METH]] = \
results[num].string[LABEL]
guiMethods[groups_name].append(results[num].string[METH])
guiMethods[groups_name].append(results[num].string[LABEL])
guiMethods[groups_name].append(results[num].string[IMAGE])
self.ClientObj.method_names[method_info.name] = method_info.title
guiMethods[groups_name].append(method_info)
# display all groups and methods
for group in guiMethods:
@ -117,7 +110,7 @@ class DisplayMethod(QtGui.QWidget):
(sub_group_list)
Button = ButtonMenu(sub_group, sub_group, \
'folder-documents,folder', self)
'folder-documents,folder', parent=self)
Button.clicked.connect(self.groupActivated \
(self.button_list[sub_group][0], \
self.button_list[sub_group][1]))
@ -136,19 +129,13 @@ class DisplayMethod(QtGui.QWidget):
if not self.layout_dict.has_key(group):
self.layout_dict[group] = FlowLayout(self.groupbox_dict[group])
view_name_sort = filter(lambda x: guiMethods[group].index(x) % 3 \
== 1, guiMethods[group])
view_name_sort.sort()
guiMethods_sort = []
for sort_name in view_name_sort:
ind = guiMethods[group].index(sort_name)
for i in range(ind-1, ind+2):
guiMethods_sort.append(guiMethods[group][i])
for method_name in range (0, len(guiMethods_sort), 3):
Button = ButtonMenu(guiMethods_sort[method_name],\
guiMethods_sort[method_name + 1], \
guiMethods_sort[method_name + 2], \
self)
for method_info in sorted(guiMethods[group], key=lambda x:x.title):
#print method_info.status
Button = ButtonMenu(method_info.name,
method_info.title,
method_info.icon,
emblem=method_info.status,
parent=self)
Button.clicked.connect(self.onActivated)
# try:

@ -134,7 +134,7 @@ class LeftMenu(QtGui.QScrollArea):
(sub_group_list)
Button = ButtonMenu(sub_group, sub_group, \
'folder-documents,folder', self)
'folder-documents,folder', parent=self)
Button.clicked.connect(display_wgt.groupActivated \
(self.button_list[sub_group][0],\
self.button_list[sub_group][1]))
@ -147,7 +147,7 @@ class LeftMenu(QtGui.QScrollArea):
continue
except IndexError:
pass
Button = ButtonMenu(groups[i], groups[i + 1], groups[i + 2], self)
Button = ButtonMenu(groups[i], groups[i + 1], groups[i + 2], None, parent=self)
Button.clicked.connect(self.onActivated)
if not self.button_list.has_key(sub_groups[num]):
self.button_list[sub_groups[num]] = []

@ -275,8 +275,7 @@ class TrayIcon (QtGui.QSystemTrayIcon):
"""
pid = str(self._parent.sys_update_pid)
client_obj = self._parent.localhost_ClientObj
pids = map(str, client_list_pid(client_obj.client))
client_pid_info(client_obj, client_obj.client, 0)
pids = map(str, client_pid_info(client_obj, client_obj.client, 0))
if self._parent.localhost_ClientObj:
if pid and pid in client_obj.process_dict and pid in pids:
return pid

@ -2238,12 +2238,15 @@ class MainFrame(QtGui.QWidget):
sid = int(self.ClientObj.sid)
# call method on server
try:
import time
print time.time()
if self.param_object:
meth_result_temp = self.ClientObj.client.service[0] \
[self.method_name](sid, self.param_object)
else:
meth_result_temp = self.ClientObj.client.service[0] \
[self.method_name](sid)
print time.time()
except Exception, e:
self.calling_error = True
msg = e.message
@ -2256,6 +2259,16 @@ class MainFrame(QtGui.QWidget):
return 1
meth_result = []
error = False
# TODO: mark A
if any(x['method_type'] == 'directory'
for x in self.ClientObj.methods_list
if x['name'] == self.method_name):
self.ClientObj.methods_list = meth_result_temp[0]
self.ClientObj.cwd.append(self.method_name)
self.ClientObj.MainWidget.display_methods()
return 0
#print "DEBUG",self.ClientObj.methods_list
#print "DEBUG2",self.method_name
for res in meth_result_temp[0]:
meth_result.append(ReturnedMessage(res.type, res.field, \
res.message, res.expert))

@ -194,7 +194,17 @@ class HelpMenu(TopMenu):
TopMenu.mouseReleaseEvent(self, event)
class ButtonMenu(QtGui.QPushButton):
def __init__(self, name, label, images, parent):
def statusIcon(self, emblem, size):
status_icons = {'complete':('process-completed-symbolic',),
'warning': ('process-error-symbolic',),
'question': ('dialog-question',),
'process': ('clock',)
}
for icon in status_icons.get(emblem,['']):
return QtGui.QIcon.fromTheme(icon).pixmap(size)
def __init__(self, name, label, images, emblem=None, parent=None):
QtGui.QPushButton.__init__(self, parent)
self.layout = QtGui.QVBoxLayout(self)
self.layout.setAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignTop)
@ -211,25 +221,35 @@ class ButtonMenu(QtGui.QPushButton):
icon = QtGui.QIcon.fromTheme(image)
if not icon.isNull():
pm2 = icon.pixmap(128)
icon_flag = False
break
elif os.path.isfile(image):
ir = QtGui.QImageReader(image)
ir.setScaledSize(QtCore.QSize(32, 32))
img = ir.read()
pm2 = QtGui.QPixmap().fromImage(img)
icon_flag = False
break
if icon_flag:
else:
icon = QtGui.QIcon.fromTheme('applications-system')
pm2 = icon.pixmap(32)
pm2 = pm2.scaled(QtCore.QSize(32,32), QtCore.Qt.IgnoreAspectRatio, \
QtCore.Qt.SmoothTransformation)
self.image_lbl.setPixmap(pm2)
self.image_lbl.setMinimumHeight(32)
if emblem:
icon_size = 40
emblem_size = 18
pixmap = QtGui.QPixmap(icon_size,icon_size)
pixmap.fill(QtCore.Qt.transparent)
painter = QtGui.QPainter(pixmap)
painter.drawPixmap(0,0,pm2)
painter.drawPixmap(icon_size-emblem_size,(icon_size-emblem_size)*0.7,
self.statusIcon(emblem, emblem_size))
self.image_lbl.setPixmap(pixmap)
painter.end()
else:
self.image_lbl.setPixmap(pm2)
self.image_lbl.setMinimumHeight(48)
self.image_lbl.setAlignment(QtCore.Qt.AlignHCenter)
# add transparency
@ -241,7 +261,7 @@ class ButtonMenu(QtGui.QPushButton):
if not label:
label = name
self.lbl = LabelWordWrap(label, self)
self.lbl.setFixedHeight(30)
self.lbl.setFixedHeight(32)
self.lbl.setAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignTop)
self.lbl.resize(self.lbl.sizeHint())
self.lbl.setStyleSheet("QLabel {border: None;}")
@ -261,6 +281,8 @@ class ButtonMenu(QtGui.QPushButton):
"border-radius: 7px;}"
"QPushButton:hover:!pressed{background-color: "
"rgb(230,230,230); border-radius: 7px;}")
if emblem == 'disable':
self.setDisabled(True)
self.updateGeometry()
def text(self):
@ -2491,8 +2513,13 @@ def post_connect_action(client, ClientObj):
icon_visible(ClientObj.MainWidget, 'Connect', False)
icon_visible(ClientObj.MainWidget, 'Certificates', False)
read_root_methods(client, ClientObj)
def read_root_methods(client, ClientObj):
ClientObj.methods_list = client_list_methods(ClientObj.sid, client)
if ClientObj.methods_list == 1:
ClientObj.cwd = []
if ClientObj.methods_list is None:
show_msg (_('No methods available!'), parent = ClientObj.MainWidget)
ClientObj.MainWidget.disconnect(True)
return 1
@ -2547,23 +2574,21 @@ def client_del_sid(client):
def client_list_methods(sid, client):
""" get & show all available methods for this certificate """
DAT = 0 # Access to data soap structure
RES = 0 # Access to result
COM = 0 # Getting command group
try:
results = client.service.get_methods(sid, 'gui')
except urllib2.URLError, e:
_print ('client.service.get_methods in client_list_methods Exception')
return 1
if not results:
return 1
return None
# старый протокол
try:
if results[DAT][RES][RES][COM] == '0':
return 1
results[0][0].name
except:
pass
return results[DAT]
return None
if results[0][0][0][0] == 1:
return None
if not results:
return None
return results[0]
# get session id
def get_sid (client):

@ -63,9 +63,9 @@ def gen_pid_ls(client):
try:
list_pid = client_list_pid(client)
if not list_pid:
return 0
return []
except:
return 0
return []
return list_pid
def pid_inf(ClientObj, client, sid, pids):
@ -111,6 +111,7 @@ def client_pid_info(ClientObj, client, pid):
pid_ls = gen_pid_ls(client)
if pid_ls:
pid_inf(ClientObj, client, sid, pid_ls)
return pid_ls
# except:
# show_msg("Error get process information")
# return 1

Loading…
Cancel
Save