master-3.5
parent 4dccdb1d5e
commit cf39aa8fa1

@ -1,4 +1,4 @@
#-*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
# Copyright 2012-2016 Mir Calculate. http://www.calculate-linux.org
#
@ -35,7 +35,8 @@ from CertificateClass import CertClass
from pid_information import client_list_pid
from more import icon_visible, client_del_sid, show_msg
class MainWgt(QtGui.QMainWindow):
class MainWgt(QtGui.QMainWindow):
def __init__(self, ClientObj):
QtGui.QMainWindow.__init__(self)
self.ClientObj = ClientObj
@ -43,7 +44,7 @@ class MainWgt(QtGui.QMainWindow):
def initUI(self):
# Create bottom status bar
# self.statusbar = self.statusBar()
# self.statusbar = self.statusBar()
self.Main = QtGui.QWidget(self)
@ -73,18 +74,18 @@ class MainWgt(QtGui.QMainWindow):
self.main_frame.setStyleSheet("#MF " "{background-color: #FFFFFF;}")
self.MainFrameWgt = StartWidget(self)
self.main_frame.setWidget (self.MainFrameWgt)
self.main_frame.setWidget(self.MainFrameWgt)
self.main_frame.setWidgetResizable(True)
self.layout.addWidget(self.left_frame, 1, 0, 2, 1)
self.layout.addWidget(self.main_frame, 1, 1)
self.layout.addWidget(self.control_button, 2, 1)
self.layout.setContentsMargins(0,0,0,0)
self.layout.setContentsMargins(0, 0, 0, 0)
self.layout.setSpacing(0)
self.vlayout.addWidget(self.layout_wgt)
self.vlayout.setContentsMargins(0,0,0,0)
self.vlayout.setContentsMargins(0, 0, 0, 0)
self.vlayout.setSpacing(0)
self.setCentralWidget(self.Main)
@ -100,12 +101,12 @@ class MainWgt(QtGui.QMainWindow):
self.ConnectWidget.initUI(self, self.ClientObj._parent)
self.ConnectWidget.show()
def connect_to_localhost(self, host = None, port = None):
def connect_to_localhost(self, host=None, port=None):
self.cur_size = self.size()
self.ConnectWidget = FrameConnection(self, self.ClientObj)
if not host:
host = 'localhost'
self.ConnectWidget.connect_to_host(host, port, auto = True)
self.ConnectWidget.connect_to_host(host, port, auto=True)
# 3 methods for help menu
def help(self):
@ -115,9 +116,9 @@ class MainWgt(QtGui.QMainWindow):
def hand_book(self):
if self.ClientObj.lang == 'ru':
site="http://www.calculate-linux.ru/main/ru/calculate-console-gui"
site = "http://www.calculate-linux.ru/main/ru/calculate-console-gui"
else:
site="http://www.calculate-linux.org/main/en/calculate-console-gui"
site = "http://www.calculate-linux.org/main/en/calculate-console-gui"
QtGui.QDesktopServices.openUrl(QtCore.QUrl(site))
def bug_report(self):
@ -126,12 +127,13 @@ class MainWgt(QtGui.QMainWindow):
self.bugWidget.show()
def tools(self):
self.ToolsWgt = ToolsWidget(self,self.ClientObj,self.ClientObj._parent)
self.ToolsWgt = ToolsWidget(self, self.ClientObj,
self.ClientObj._parent)
self.ToolsWgt.show()
def work_with_certificates(self):
self.certWidget = CertClass(self, self.ClientObj, \
self.ClientObj._parent)
self.ClientObj._parent)
self.certWidget.show()
def display_methods(self):
@ -139,29 +141,29 @@ class MainWgt(QtGui.QMainWindow):
self.MainFrameWgt = DisplayMethod(self, self.ClientObj)
self.MainFrameWgt.refresh()
self.main_frame.setWidget (self.MainFrameWgt)
self.main_frame.setWidgetResizable(True)
self.main_frame.setWidget(self.MainFrameWgt)
self.main_frame.setWidgetResizable(True)
self.left_frame.hide()
self.left_frame.old_title = None
# icon_visible(self, 'Methods', False)
# icon_visible(self, 'Methods', False)
icon_visible(self, 'Back', False)
self.resize(self.cur_size)
def back(self):
if len (self.ClientObj.back_step_list) < 2:
if len(self.ClientObj.back_step_list) < 2:
self.delete_MainFrameWgt()
self.MainFrameWgt = DisplayMethod(self, self.ClientObj)
self.MainFrameWgt.refresh()
self.main_frame.setWidget (self.MainFrameWgt)
self.main_frame.setWidgetResizable(True)
self.main_frame.setWidget(self.MainFrameWgt)
self.main_frame.setWidgetResizable(True)
self.left_frame.hide()
self.left_frame.old_title = None
# icon_visible(self, 'Methods', False)
# icon_visible(self, 'Methods', False)
icon_visible(self, 'Back', False)
else:
@ -169,30 +171,30 @@ class MainWgt(QtGui.QMainWindow):
title = self.ClientObj.back_step_list.pop()[2]
# get group, subgroup
group, subgroup, temp = self.ClientObj.back_step_list \
[len(self.ClientObj.back_step_list)-1]
[len(self.ClientObj.back_step_list) - 1]
# create new group in left menu
self.left_frame.groupActivated(group, subgroup, title, \
self.ClientObj, True)
self.ClientObj, True)
def view_processes(self):
self.delete_MainFrameWgt()
self.MainFrameWgt = ViewProc(self, self.ClientObj)
self.main_frame.setWidget (self.MainFrameWgt)
self.main_frame.setWidget(self.MainFrameWgt)
self.main_frame.setWidgetResizable(True)
self.left_frame.hide()
# icon_visible(self, 'Methods', True)
# icon_visible(self, 'Methods', True)
icon_visible(self, 'Back', True)
def view_session_info(self):
self.SessionWgt = ViewSessionInfo(self, self.ClientObj.client, \
self.ClientObj._parent)
self.ClientObj._parent)
self.SessionWgt.setAttribute(QtCore.Qt.WA_ShowModal)
self.SessionWgt.show()
def disconnect(self, new_session = False):
def disconnect(self, new_session=False):
if not self.ClientObj.client:
return 1
@ -202,7 +204,7 @@ class MainWgt(QtGui.QMainWindow):
reply = self.show_close_messagebox()
if reply in [QtGui.QMessageBox.No, QtGui.QMessageBox.Yes]:
if hasattr (self.ClientObj, 'signaling'):
if hasattr(self.ClientObj, 'signaling'):
if self.ClientObj.signaling.isRunning():
self.ClientObj.signaling.close()
self.ClientObj.signaling.wait()
@ -217,21 +219,21 @@ class MainWgt(QtGui.QMainWindow):
self.topmenu.Processes.setEnabled(True)
self.topmenu.Session.setEnabled(True)
self.topmenu.Back.setEnabled(True)
if hasattr (self, 'con_lost_lbl'):
if hasattr(self, 'con_lost_lbl'):
self.con_lost_lbl.hide()
self.con_lost_lbl.close()
if hasattr (self.ClientObj._parent, 'set_localhost'):
if hasattr(self.ClientObj._parent, 'set_localhost'):
if self.ClientObj.client.server_host_name in \
['127.0.0.1', 'localhost']:
['127.0.0.1', 'localhost']:
self.ClientObj._parent.set_localhost(None)
else:
self.ClientObj._parent.connect()
return 0
self.ClientObj.client = None
self.ClientObj._parent.connect_count_changed( \
self.ClientObj.host_name, self.ClientObj.port,0)
# icon_visible(self, 'Methods', False)
self.ClientObj._parent.connect_count_changed(
self.ClientObj.host_name, self.ClientObj.port, 0)
# icon_visible(self, 'Methods', False)
icon_visible(self, 'Back', False)
icon_visible(self, 'Disconnect', False)
icon_visible(self, 'Processes', False)
@ -239,8 +241,8 @@ class MainWgt(QtGui.QMainWindow):
icon_visible(self, 'Connect', True)
icon_visible(self, 'Certificates', True)
self.process_dict = {}
if hasattr (self.ClientObj._parent, 'rename_tab'):
if hasattr(self.ClientObj._parent, 'rename_tab'):
self.ClientObj._parent.rename_tab()
else:
return 0
@ -253,7 +255,7 @@ class MainWgt(QtGui.QMainWindow):
self.left_frame.hide()
# set new Title
self.ClientObj._parent.setWindowTitle (self.ClientObj.Name)
self.ClientObj._parent.setWindowTitle(self.ClientObj.Name)
return 0
def reconnect_to_host(self):
@ -262,36 +264,39 @@ class MainWgt(QtGui.QMainWindow):
password = self.ClientObj.client.password
self.disconnect(True)
if hasattr (self.ClientObj._parent, 'set_localhost'):
if hasattr(self.ClientObj._parent, 'set_localhost'):
# Reconnet to current host
self.cur_size = self.size()
self.ConnectWidget = FrameConnection(self, self.ClientObj)
self.ConnectWidget.connect_to_host(server_host_name,
self.ClientObj.port, re_passwd=password)
self.ClientObj.port,
re_passwd=password)
if not self.main_frame.isEnabled():
self.left_frame.setEnabled(True)
self.main_frame.setEnabled(True)
self.control_button.setEnabled(True)
def main_frame_view(self, view, method_name, step_change = False, \
change_offset = False, error_output = True,
skip_options=False):
def main_frame_view(self, view, method_name, step_change=False, \
change_offset=False, error_output=True,
skip_options=False, new_step=None):
if change_offset:
self.MainFrameWgt = MainFrame(self, self.ClientObj, view, \
method_name, error_output)
self.MainFrameWgt.initUI()
self.MainFrameWgt.initUI(True)
return
self.delete_MainFrameWgt()
self.MainFrameWgt = MainFrame(self, self.ClientObj, view, method_name,\
self.MainFrameWgt = MainFrame(self, self.ClientObj, view, method_name, \
error_output, skip_options=skip_options)
self.MainFrameWgt.initUI()
self.main_frame.setWidget (self.MainFrameWgt)
if new_step:
self.MainFrameWgt.refresh_view(int(new_step))
self.main_frame.setWidget(self.MainFrameWgt)
self.main_frame.setWidgetResizable(True)
def main_frame_res(self, method_name, meth_result, change_offset = False):
def main_frame_res(self, method_name, meth_result, change_offset=False):
if change_offset:
TempMainFrameWgt = MainFrameRes(self, self.ClientObj, method_name,\
TempMainFrameWgt = MainFrameRes(self, self.ClientObj, method_name,
meth_result, change_offset)
self.left_frame.hide()
@ -322,7 +327,7 @@ class MainWgt(QtGui.QMainWindow):
self.delete_MainFrameWgt()
self.MainFrameWgt = MainFrameRes(self, self.ClientObj,
method_name, meth_result)
self.main_frame.setWidget (self.MainFrameWgt)
self.main_frame.setWidget(self.MainFrameWgt)
self.main_frame.setWidgetResizable(True)
self.left_frame.hide()
@ -341,12 +346,12 @@ class MainWgt(QtGui.QMainWindow):
def setScrollBarVal(self):
self.main_frame.verticalScrollBar().setSliderPosition \
(self.main_frame.verticalScrollBar().maximum())
(self.main_frame.verticalScrollBar().maximum())
def signaling_slot(self, sid, reply):
if reply == 2:
# Create ConnectLostLabel
if hasattr (self, 'con_lost_lbl'):
if hasattr(self, 'con_lost_lbl'):
self.con_lost_lbl.hide()
self.con_lost_lbl.close()
self.con_lost_lbl = ConnectLostLabel(_('Connection lost!'), self)
@ -355,7 +360,7 @@ class MainWgt(QtGui.QMainWindow):
self.topmenu.Back.setDisabled(True)
self.con_lost_lbl.show()
elif reply == 0:
if hasattr (self, 'con_lost_lbl'):
if hasattr(self, 'con_lost_lbl'):
self.con_lost_lbl.hide()
self.con_lost_lbl.close()
if not self.main_frame.isEnabled():
@ -365,10 +370,10 @@ class MainWgt(QtGui.QMainWindow):
self.topmenu.Processes.setEnabled(True)
self.topmenu.Session.setEnabled(True)
self.topmenu.Back.setEnabled(True)
if hasattr (self.MainFrameWgt, 'button_enabled'):
if hasattr(self.MainFrameWgt, 'button_enabled'):
self.MainFrameWgt.button_enabled()
else:
if hasattr (self, 'con_lost_lbl'):
if hasattr(self, 'con_lost_lbl'):
self.con_lost_lbl.hide()
self.con_lost_lbl.close()
self.con_lost_lbl = ConnectLostLabel(
@ -382,7 +387,7 @@ class MainWgt(QtGui.QMainWindow):
self.reconnect_to_host()
def resizeEvent(self, event):
if hasattr (self, 'con_lost_lbl'):
if hasattr(self, 'con_lost_lbl'):
if self.con_lost_lbl.isVisible():
self.con_lost_lbl.resize_widget()
event.accept()
@ -392,15 +397,17 @@ class MainWgt(QtGui.QMainWindow):
msgBox = QMessageBox(self)
msgBox.setWindowTitle(_('Closing session'))
msgBox.setText(_("Close this session") +' ' +_('with %s?') \
%self.ClientObj.host_name + '\t')
msgBox.setText(_("Close this session") + ' ' + _('with %s?') \
% self.ClientObj.host_name + '\t')
if len(list_pid):
if str(len(list_pid)).endswith('1'):
msgBox.setInformativeText(_('Once the session is closed, '\
'data on process %d will be lost!') %len(list_pid))
msgBox.setInformativeText(_('Once the session is closed, ' \
'data on process %d will be lost!') % len(
list_pid))
if len(list_pid) > 1:
msgBox.setInformativeText(_('Once the session is closed, '\
'data on process %d will be lost!') %len(list_pid))
msgBox.setInformativeText(_('Once the session is closed, ' \
'data on process %d will be lost!') % len(
list_pid))
msgBox.setStandardButtons(QMessageBox.Yes | QMessageBox.No | \
QMessageBox.Cancel)
@ -423,18 +430,18 @@ class MainWgt(QtGui.QMainWindow):
self.topmenu.Processes.setEnabled(True)
self.topmenu.Session.setEnabled(True)
self.topmenu.Back.setEnabled(True)
if hasattr (self, 'con_lost_lbl'):
if hasattr(self, 'con_lost_lbl'):
self.con_lost_lbl.hide()
self.con_lost_lbl.close()
# Exit with closing session
if hasattr (self.ClientObj, 'signaling'):
if hasattr(self.ClientObj, 'signaling'):
if self.ClientObj.signaling.isRunning():
self.ClientObj.signaling.close()
self.ClientObj.signaling.wait()
if hasattr (self.ClientObj._parent, 'set_localhost'):
if hasattr(self.ClientObj._parent, 'set_localhost'):
if self.ClientObj.client.server_host_name in \
['127.0.0.1', 'localhost']:
['127.0.0.1', 'localhost']:
self.ClientObj._parent.set_localhost(None)
if reply == QtGui.QMessageBox.Yes:

@ -1,4 +1,4 @@
#-*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
# Copyright 2012-2016 Mir Calculate. http://www.calculate-linux.org
#
@ -17,6 +17,15 @@
from PySide import QtGui, QtCore
from more import LabelWordWrap, _print
DEBUG_LEVEL = 20
def debug(level, *args):
if level <= DEBUG_LEVEL:
for s in args:
print s,
print
class MethodNameWgt(QtGui.QWidget):
def __init__(self, parent, ClientObj):
@ -28,28 +37,28 @@ class MethodNameWgt(QtGui.QWidget):
self.setAttribute(QtCore.Qt.WA_StyledBackground)
self.setObjectName('ControlButton')
self.setStyleSheet("QWidget#ControlButton "
"{background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,"
"stop: 0 #111111, stop: 0.95 #777777, stop: 1 #666666);}")
"{background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,"
"stop: 0 #111111, stop: 0.95 #777777, stop: 1 #666666);}")
self.hlayout = QtGui.QHBoxLayout(self)
self.hlayout.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter)
self.hlayout.setContentsMargins(28,0,0,0)
self.hlayout.setContentsMargins(28, 0, 0, 0)
self.hlayout.setSpacing(0)
self.meth_name = QtGui.QLabel('Method Name', self)
# self.meth_name.setAlignment(QtCore.Qt.AlignLeft)
# self.meth_name.setAlignment(QtCore.Qt.AlignLeft)
self.meth_name.setStyleSheet("font-size: 16px;"
"font: bold;"
"color: white;");
# "background-color: rgb(220,220,220);}"
self.button_hover_style = "QPushButton:hover {"\
"background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,"\
"stop: 0 #333333, stop: 1 #A0A0A9);}"
# "stop: 0 #404040, stop: 1 #A8A8B2);}"
self.button_pressed_style = "QPushButton:pressed {"\
"background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,"\
"stop: 0 #222222, stop: 1 #9797A0);}"
# "background-color: rgb(220,220,220);}"
self.button_hover_style = "QPushButton:hover {" \
"background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1," \
"stop: 0 #333333, stop: 1 #A0A0A9);}"
# "stop: 0 #404040, stop: 1 #A8A8B2);}"
self.button_pressed_style = "QPushButton:pressed {" \
"background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1," \
"stop: 0 #222222, stop: 1 #9797A0);}"
self.hlayout.addWidget(self.meth_name)
self.setLayout(self.hlayout)
@ -64,12 +73,13 @@ class MethodNameWgt(QtGui.QWidget):
self.meth_name.setText(method_name)
def _hide(self):
if hasattr (self, 'button_widget'):
if hasattr(self, 'button_widget'):
self.hlayout.removeWidget(self.button_widget)
self.button_widget.close()
self.hide()
# def set_button_style(self):
# def set_button_style(self):
# if hasattr (self, 'next_button'):
# self.next_button.setStyleSheet("QPushButton {"
# "color: white; margin 0px;"
@ -99,25 +109,23 @@ class ControlButtonWgt(QtGui.QWidget):
self.setAttribute(QtCore.Qt.WA_StyledBackground)
self.setObjectName('ControlButton')
self.setStyleSheet("QWidget#ControlButton "
# "{background-color: #FF0000;}")
"{background-color: #FFFFFF;}")
self.main_layout = QtGui.QVBoxLayout(self)
self.main_layout.setContentsMargins(28,8,0,28)
self.main_layout.setContentsMargins(28, 8, 0, 28)
self.question_label = LabelWordWrap("")
#self.question_label.hide()
# self.question_label.hide()
self.main_layout.addWidget(self.question_label)
self.hlayout = QtGui.QHBoxLayout()
self.hlayout.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter)
self.hlayout.setContentsMargins(0,0,28,0)
self.hlayout.setContentsMargins(0, 0, 28, 0)
self.hlayout.setSpacing(0)
self.main_layout.addItem(QtGui.QSpacerItem( 0, 0, \
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding ))
self.main_layout.addItem(QtGui.QSpacerItem(
0, 0, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding))
self.main_layout.addLayout(self.hlayout)
#self.setLayout(self.hlayout)
# self.setLayout(self.hlayout)
self.setFixedHeight(90)
self.hide()
self.confirmWgt = None
@ -131,7 +139,7 @@ class ControlButtonWgt(QtGui.QWidget):
if self.confirmWgt:
self.hlayout.removeWidget(self.confirmWgt)
self.confirmWgt = wgt
self.hlayout.insertWidget(0,wgt)
self.hlayout.insertWidget(0, wgt)
def close_confirmation(self):
self.question_label.hide()
@ -152,131 +160,163 @@ class ControlButtonWgt(QtGui.QWidget):
self.break_button = None
def _hide(self):
if hasattr (self, 'button_widget'):
if hasattr(self, 'button_widget'):
self.hlayout.removeWidget(self.button_widget)
self.button_widget.close()
self.hide()
def add_standart_button(self, Group, x, y, brief = False, \
next_button_text = None):
def add_custom_button(self, Group, x, y, brief=False,
next_button_text=None):
self.del_button()
buttons = self._parent.MainFrameWgt.buttons
self.button_widget = QtGui.QWidget(self)
end_layout = QtGui.QHBoxLayout(self.button_widget)
end_layout.setContentsMargins(0, 0, 0, 0)
end_layout.setSpacing(10)
end_layout.addItem(QtGui.QSpacerItem(
0, 0, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Maximum))
self.customs = []
self.add_cancel_button(end_layout, Group, brief, next_button_text)
for field, callback in buttons:
if field.element == "button_next":
self.add_next_button(end_layout, Group, brief, next_button_text)
else:
button = QtGui.QPushButton(self)
self.customs.append(button)
button.setText(field.label.decode('utf-8'))
button.clicked.connect(callback)
button.setMinimumWidth(62)
button.setFixedHeight(32)
end_layout.addWidget(button)
self.hlayout.addWidget(self.button_widget)
def add_standart_button(self, Group, x, y, brief=False, \
next_button_text=None):
self.del_button()
main_frame = self._parent.MainFrameWgt
# add 1 (or 2) button ok (next) [and previous]
self.button_widget = QtGui.QWidget(self)
end_layout = QtGui.QHBoxLayout(self.button_widget)
end_layout.setContentsMargins(0,0,0,0)
end_layout.setContentsMargins(0, 0, 0, 0)
end_layout.setSpacing(10)
end_layout.addItem(QtGui.QSpacerItem( 0, 0, \
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Maximum ))
end_layout.addItem(QtGui.QSpacerItem(
0, 0, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Maximum))
if self.ClientObj.param_objects[main_frame.method_name]['step'] != 0:
self.prev_button = QtGui.QPushButton(self)
try:
pass
# self.prev_button.setIcon(QtGui.QIcon.fromTheme("go-previous"))
finally:
if Group.prevlabel:
self.prev_button.setText(Group.prevlabel)
else:
self.prev_button.setText(_('Previous'))
self.add_cancel_button(end_layout, Group, brief, next_button_text)
self.add_prev_button(end_layout, Group, brief, next_button_text)
self.add_next_button(end_layout, Group, brief, next_button_text)
self.prev_button.clicked.connect(self.button_disabled)
self.prev_button.clicked.connect(main_frame.button_call_view (-1))
# self.prev_button.clicked.connect(self.button_enabled)
self.prev_button.setMinimumWidth(62)
self.prev_button.setFixedHeight(32)
if hasattr (self, 'button_widget'):
end_layout.addWidget(self.prev_button)
# self.grid.addWidget(self.prev_button, x, y)
else:
self.hlayout.addWidget(self.button_widget)
x += 1
return x
def add_cancel_button(self, end_layout, Group, brief=False,
next_button_text=None):
# создать кнопку отмена
main_frame = self._parent.MainFrameWgt
self.prev_button = QtGui.QPushButton(self)
self.prev_button.setText(_('Cancel').decode('utf-8'))
self.prev_button.clicked.connect(self.button_disabled)
self.prev_button.clicked.connect(self.clear_method_cache)
method_name = main_frame.method_name
self.prev_button.clicked.connect(
lambda:main_frame.clear_cache_info(method_name))
self.prev_button.setMinimumWidth(62)
self.prev_button.setFixedHeight(32)
if hasattr(self, 'button_widget'):
end_layout.addWidget(self.prev_button)
def add_prev_button(self, end_layout, Group, brief=False,
next_button_text=None):
# создать кнопку предыдущий
main_frame = self._parent.MainFrameWgt
if (self.ClientObj.param_objects[main_frame.method_name]['step'] != 0
and main_frame.mutable):
debug(10, "CREATE PREV BUTTON")
self.prev_button = QtGui.QPushButton(self)
self.prev_button.setText(_('Cancel').decode('utf-8'))
self.prev_button.setText(Group.prevlabel or _('Previous'))
self.prev_button.clicked.connect(self.button_disabled)
self.prev_button.clicked.connect(self.clear_method_cache)
self.prev_button.clicked.connect(main_frame.button_call_view(-1))
# self.prev_button.clicked.connect(self.button_enabled)
self.prev_button.setMinimumWidth(62)
self.prev_button.setFixedHeight(32)
if hasattr (self, 'button_widget'):
if hasattr(self, 'button_widget'):
end_layout.addWidget(self.prev_button)
if main_frame.view.groups.GroupField[-1].last and not \
main_frame.isBrief(self.ClientObj.param_objects\
[main_frame.method_name]['step']+1) or brief:
def add_next_button(self, end_layout, Group, brief=False,
next_button_text=None):
# если текущая страница - brief
# если это последний шаг, но метод без brief
main_frame = self._parent.MainFrameWgt
if (brief or main_frame.view.groups.GroupField[-1].last and
not main_frame.hasBrief()):
debug(10, "CREATE PERFORM BUTTON")
self.next_button = QtGui.QPushButton(self)
try:
pass
# ok_icon = QtGui.QIcon.fromTheme("dialog-ok-apply")
# if ok_icon.isNull():
# ok_icon = ok_icon.fromTheme("go-next")
# self.next_button.setIcon(ok_icon)
finally:
if Group.nextlabel:
self.next_button.setText(Group.nextlabel)
else:
self.next_button.setText(_('Ok'))
if next_button_text and brief:
self.next_button.setText(next_button_text)
if next_button_text and brief:
self.next_button.setText(next_button_text)
else:
self.next_button.setText(Group.nextlabel or _("Ok"))
self.next_button.clicked.connect(self.button_disabled)
if not brief:
self.next_button.clicked.connect(main_frame.collect_object \
(False))
self.next_button.clicked.connect(
main_frame.collect_object())
self.next_button.clicked.connect(main_frame.calling(False))
if hasattr (self, 'button_widget'):
if hasattr(self, 'button_widget'):
end_layout.addWidget(self.next_button)
else:
debug(10, "CREATE NEXT BUTTON")
self.next_button = QtGui.QPushButton(self)
try:
pass
# self.next_button.setIcon(QtGui.QIcon.fromTheme("go-next"))
finally:
if Group.nextlabel:
self.next_button.setText(Group.nextlabel)
else:
self.next_button.setText(_('Next'))
self.next_button.setText(Group.nextlabel or _("Next"))
self.next_button.clicked.connect(self.button_disabled)
if not brief:
self.next_button.clicked.connect(main_frame.collect_object \
(False))
self.next_button.clicked.connect(
main_frame.collect_object())
self.next_button.clicked.connect(main_frame.calling(True))
self.next_button.clicked.connect(main_frame.button_call_view(+1))
if hasattr (self, 'button_widget'):
if hasattr(self, 'button_widget'):
end_layout.addWidget(self.next_button)
self.next_button.setMinimumWidth(64)
self.next_button.setFixedHeight(32)
self.next_button.setShortcut(QtGui.QKeySequence(QtCore.Qt.Key_Return))
self.next_button.setShortcut(QtGui.QKeySequence(QtCore.Qt.Key_Enter))
# self.next_button.setMaximumHeight(38)
# self.set_button_style()
self.hlayout.addWidget(self.button_widget)
x += 1
return x
def del_button(self):
if hasattr (self, 'button_widget'):
if hasattr(self, 'button_widget'):
self.hlayout.removeWidget(self.button_widget)
self.button_widget.close()
if hasattr (self, 'prev_button'):
if hasattr(self, 'prev_button'):
self.prev_button.close()
if hasattr (self, 'next_button'):
if hasattr(self, 'next_button'):
self.next_button.close()
if hasattr(self, 'customs'):
for but in self.customs:
but.close()
def pre_add_button(self):
self.del_button()
# add 1 (or 2) button ok (next) [and previous]
self.button_widget = QtGui.QWidget(self)
end_layout = QtGui.QHBoxLayout(self.button_widget)
end_layout.setContentsMargins(0,0,0,0)
end_layout.setContentsMargins(0, 0, 0, 0)
end_layout.setSpacing(0)
end_layout.addItem(QtGui.QSpacerItem( 0, 0, \
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Maximum))
end_layout.addItem(QtGui.QSpacerItem(0, 0, \
QtGui.QSizePolicy.Expanding,
QtGui.QSizePolicy.Maximum))
return end_layout
def add_clear_cache_button(self, pid = None):
def add_clear_cache_button(self, pid=None):
end_layout = self.pre_add_button()
print "ADD CLOSE"
self.clear_proc_cache_button = QtGui.QPushButton(_('Close'), self)
self.ClientObj._parent.user_changed_flag = False
if pid:
@ -294,15 +334,16 @@ class ControlButtonWgt(QtGui.QWidget):
self.clear_proc_cache_button.setDisabled(True)
sid = int(self.ClientObj.sid)
res = self.ClientObj.client.service.clear_pid_cache(sid, self.pid)
if (hasattr(self._parent.ClientObj,"sys_update_pid") and
if (hasattr(self._parent.ClientObj, "sys_update_pid") and
str(self.pid) == str(
self._parent.ClientObj._parent.sys_update_pid)):
self._parent.ClientObj._parent.sys_update_pid)):
self._parent.ClientObj._parent.sys_update_pid = None
if res:
_print (_('Error closing the process'))
_print(_('Error closing the process'))
from calculate.consolegui.application.ConnectionTabs \
import SelectedMethodWgt
import SelectedMethodWgt
if type(self.window()) == SelectedMethodWgt:
self.window().close()
else:
@ -314,18 +355,19 @@ class ControlButtonWgt(QtGui.QWidget):
self.button_disabled()
sid = int(self.ClientObj.sid)
if hasattr (self._parent.MainFrameWgt, 'method_name'):
if hasattr(self._parent.MainFrameWgt, 'method_name'):
method = self._parent.MainFrameWgt.method_name
try:
res = self.ClientObj.client.service.clear_method_cache \
(sid, method)
(sid, method)
lerror = self.ClientObj.param_objects[method]['error']
while len(lerror)>0:
while len(lerror) > 0:
lerror.pop()
except Exception as e:
print e
from calculate.consolegui.application.ConnectionTabs \
import SelectedMethodWgt
if type(self.window()) == SelectedMethodWgt:
self.window().close()
else:
@ -353,7 +395,7 @@ class ControlButtonWgt(QtGui.QWidget):
def keyPressEvent(self, e):
if e.key() == QtCore.Qt.Key_Return:
if hasattr (self, 'next_button'):
if hasattr(self, 'next_button'):
self.next_button.click()
else:
QtGui.QWidget.keyPressEvent(self, e)

@ -17,7 +17,7 @@
from PySide import QtGui, QtCore
from more import ButtonMenu, FlowLayout, get_sid, ClientServiceThread, \
get_view_params, show_msg
get_view_params, show_msg, client_list_methods
class DisplayMethod(QtGui.QWidget):
def __init__(self, parent, ClientObj):
@ -204,6 +204,8 @@ class DisplayMethod(QtGui.QWidget):
self.resize(self.layout.sizeHint())
def refresh(self):
self.ClientObj.methods_list = client_list_methods(self.ClientObj.sid,
self.ClientObj.client)
results = self.ClientObj.methods_list
self.initUI(results)
self.ClientObj.app.processEvents()

@ -369,7 +369,7 @@ class LeftMenu(QtGui.QScrollArea):
pass
self.collect.connect(self._parent.ClientObj.MainWidget.\
MainFrameWgt.collect_object(False))
MainFrameWgt.collect_object())
self.collect.emit()
return wrapper

@ -15,6 +15,14 @@
# limitations under the License.
from PySide import QtGui, QtCore
DEBUG_LEVEL = 20
def debug(level, *args):
if level <= DEBUG_LEVEL:
for s in args:
print s,
print
import urllib2, sudsds
import re
@ -151,54 +159,59 @@ class MainFrameRes(QtGui.QWidget):
if not table.body:
table.body = [[]]
self.show_normal(item)
self.mytable = None
if self.method_name in self.ClientObj.param_objects:
if len(table.body[0]) >= self.ClientObj.count_row_res_table or \
self.ClientObj.param_objects[self.method_name]['offset']:
if table.onClick:
self.add_offset_buttons(len(table.body[0]),table.addAction)
self.add_offset_buttons(len(table.body[0]),
table.addAction,
table.records)
add_offset_flag = True
if table.addAction and not add_offset_flag:
self.work_layout._addWidget(PlusButton(self, self.ClientObj, \
table.addAction))
if table.onClick:
if table.onClick and table.body[0]:
self.mytable = SelectedTableWidget(len(table.body[0]), \
len(table.head[0]), self)
if not hasattr (self, 'mytable'):
if not self.mytable:
if table.body:
len_body = len(table.body[0])
else:
len_body = 1
len_body = 0
if table.head:
len_head = len(table.head[0])
else:
len_head = 1
self.mytable = SelectedTableWidget(len_body, len_head, self,
readonly = True)
list_head = table.head[0]
self.mytable.setHorizontalHeaderLabels(list_head)
for line in range(len(table.body[0])):
for i in range(len(table.body[0][line][0])):
tablewidgetitem = QtGui.QTableWidgetItem \
(table.body[0][line][0][i])
self.mytable.setItem(line, i, tablewidgetitem)
# set writeonly
self.mytable.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
if table.onClick:
self.mytable.itemClicked.connect(self.row_activate(table))
self.mytable.setColor()
minimum = QtGui.QSizePolicy.Minimum
self.mytable.setSizePolicy(minimum, minimum)
self.mytable.verticalHeader().hide()
self.mytable.horizontalHeader().resizeSections \
(QtGui.QHeaderView.ResizeMode.ResizeToContents)
self.work_layout._addWidget(self.mytable)
self.ClientObj.app.processEvents()
if len_body:
self.mytable = SelectedTableWidget(len_body, len_head, self,
readonly=True)
if self.mytable:
list_head = table.head[0]
self.mytable.setHorizontalHeaderLabels(list_head)
for line in range(len(table.body[0])):
for i in range(len(table.body[0][line][0])):
tablewidgetitem = QtGui.QTableWidgetItem(
table.body[0][line][0][i])
self.mytable.setItem(line, i, tablewidgetitem)
# set writeonly
self.mytable.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
if table.onClick:
self.mytable.itemClicked.connect(self.row_activate(table))
self.mytable.setColor()
minimum = QtGui.QSizePolicy.Minimum
self.mytable.setSizePolicy(minimum, minimum)
self.mytable.horizontalHeader().resizeSections(
QtGui.QHeaderView.ResizeMode.ResizeToContents)
self.work_layout._addWidget(self.mytable)
self.ClientObj.app.processEvents()
self.mytable.resizeRowsToContents()
self.mytable.resizeColumnsToContents()
self.initUI()
@ -210,16 +223,22 @@ class MainFrameRes(QtGui.QWidget):
if hasattr (param_object, field):
param_object[field] = self.mytable.item(item.row(),0).\
text()
#print param_object, table.step
param_object.CheckOnly = True
# Calling method
sid = int(self.ClientObj.sid)
self.client.service[0][table.onClick](sid, param_object)
# Calling View
try:
view_params = get_view_params(self.client, \
table.onClick + '_view', step = 0)
view = self.client.service[0][table.onClick + '_view'] \
(sid, view_params)
self.client.service.clear_pid_cache(sid, self.cur_pid)
except:
pass
try:
view_params = get_view_params(self.client,
table.onClick + '_view', step = 0) #int(table.step) if table.step else 0)
view = self.client.service[0][table.onClick + '_view'](
sid, view_params)
except sudsds.MethodNotFound, e:
_print(e)
return
@ -230,53 +249,100 @@ class MainFrameRes(QtGui.QWidget):
view_method = table.onClick
self._parent.ClientObj._parent.setWindowTitle(view_method + \
' - ' + self.ClientObj.Name)
self.ClientObj.param_objects[self.method_name]['offset'] = 0
self._parent.main_frame_view(view, table.onClick)
#self.ClientObj.param_objects[self.method_name]['offset'] = 0
self._parent.main_frame_view(
view, table.onClick,
new_step=table.step if table.step else None)
return wrapper
def add_offset_buttons(self, len_body, addAction):
def add_offset_buttons(self, len_body, addAction, records):
offset_buttons = QtGui.QWidget()
layout = QtGui.QHBoxLayout(offset_buttons)
layout.setAlignment(QtCore.Qt.AlignLeft)
offset = self.ClientObj.param_objects[self.method_name]['offset']
count_records = int(self.ClientObj.count_row_res_table)
debug(15, "DATA:", records, offset, count_records)
records = int(records) or 0
if records:
if offset + count_records >= records:
last = True
else:
last = False
else:
if len_body < self.ClientObj.count_row_res_table:
last = True
else:
last = False
begin_offset = QtGui.QPushButton(offset_buttons)
begin_offset.setIcon(QtGui.QIcon.fromTheme('go-first'))
begin_offset.setToolTip('First page')
begin_offset.clicked.connect(self.call_method_with_offset(0, True))
begin_offset.setFixedWidth(30)
layout.addWidget(begin_offset)
minus_offset = QtGui.QPushButton(offset_buttons)
minus_offset.setIcon(QtGui.QIcon.fromTheme('go-previous'))
minus_offset.setToolTip('Previous page')
minus_offset.clicked.connect(self.call_method_with_offset \
(-1*int(self.ClientObj.count_row_res_table)))
minus_offset.clicked.connect(self.call_method_with_offset(
-count_records))
minus_offset.setFixedWidth(30)
layout.addWidget(minus_offset)
if not self.ClientObj.param_objects[self.method_name]['offset']:
if not offset:
minus_offset.setDisabled(True)
begin_offset.setDisabled(True)
layout.addWidget(minus_offset)
plus_offset = QtGui.QPushButton(offset_buttons)
plus_offset.setIcon(QtGui.QIcon.fromTheme('go-next'))
plus_offset.setToolTip('Next page')
plus_offset.clicked.connect(self.call_method_with_offset \
(int(self.ClientObj.count_row_res_table)))
plus_offset.clicked.connect(self.call_method_with_offset(
count_records))
plus_offset.setFixedWidth(30)
layout.addWidget(plus_offset)
if len_body < self.ClientObj.count_row_res_table:
last_offset = QtGui.QPushButton(offset_buttons)
last_offset.setIcon(QtGui.QIcon.fromTheme('go-last'))
last_offset.setToolTip('Last page')
last_offset.clicked.connect(self.call_method_with_offset(
0, False, records - count_records))
last_offset.setFixedWidth(30)
layout.addWidget(last_offset)
if last or not records:
last_offset.setDisabled(True)
if last:
plus_offset.setDisabled(True)
layout.addWidget(plus_offset)
if addAction:
layout.addWidget(PlusButton(self, self.ClientObj, addAction))
self.work_layout._addWidget(offset_buttons)
def call_method_with_offset(self, offset):
def call_method_with_offset(self, offset, begin=False, reset=None):
def wrapper():
self.ClientObj.param_objects[self.method_name]['offset'] += offset
if self.ClientObj.param_objects[self.method_name]['offset'] < 0:
debug(10, "CHANGE OFFSET FOR %s to %d" % (
self.method_name, offset))
if begin:
self.ClientObj.param_objects[self.method_name]['offset'] = 0
elif reset is not None:
self.ClientObj.param_objects[self.method_name]['offset'] = \
reset
else:
self.ClientObj.param_objects[self.method_name]['offset'] += offset
if self.ClientObj.param_objects[self.method_name]['offset'] < 0:
self.ClientObj.param_objects[self.method_name]['offset'] = 0
# Calling View
debug(10, "CALL VIEW", self.method_name)
sid = int(self.ClientObj.sid)
try:
view_params = get_view_params(self.client, \
self.method_name + '_view', step = 0)
view_params = get_view_params(self.client,
self.method_name + '_view', step = None)
view = self.client.service[0][self.method_name + '_view'] \
(sid, view_params)
except sudsds.MethodNotFound:
@ -288,8 +354,7 @@ class MainFrameRes(QtGui.QWidget):
view_method = self.method_name
self._parent.ClientObj._parent.setWindowTitle(view_method + \
' - ' + self.ClientObj.Name)
self._parent.main_frame_view(view, view_method, \
change_offset=True)
self._parent.main_frame_view(view, view_method, change_offset=True)
return wrapper
def show_message(self, message, mono=False, space=0):
@ -417,6 +482,7 @@ class MainFrameRes(QtGui.QWidget):
self.work_layout.hide_kill_button()
self.closeDialogs()
self.close_all_thread()
if self.change_offset:
self._parent.delete_MainFrameWgt()
self._parent.MainFrameWgt = self
@ -424,17 +490,18 @@ class MainFrameRes(QtGui.QWidget):
self._parent.main_frame.setWidgetResizable(True)
self._parent.methodname_wgt.show()
self._parent.control_button.show()
self._parent.control_button.add_clear_cache_button(self.cur_pid)
self.initUI()
return 0
if hasattr (self, "mytable"):
if not self.mytable.readonly:
self.initUI()
return 0
#if hasattr (self, "mytable"):
# if not self.mytable.readonly:
# self.initUI()
# return 0
#self._parent.control_button.add_clear_cache_button(self.cur_pid)
#self.initUI()
# TODO: возможно здесь не нужне return 1
self._parent.control_button.add_clear_cache_button(self.cur_pid)
self.initUI()
return 0
# def clear_pid_cache(self):
# self.clear_proc_cache_button.setDisabled(True)
@ -857,12 +924,13 @@ class MainFrameRes(QtGui.QWidget):
self.show_table(table, item)
self.ClientObj.app.processEvents()
# Resize table
h = self.mytable.horizontalHeader().height() + \
2 * self.mytable.frameWidth()
h += self.mytable.horizontalScrollBar().sizeHint().height()
for row_in_table in range (self.mytable.rowCount()):
h += self.mytable.rowHeight(row_in_table)
self.mytable.setFixedHeight(h)
if self.mytable:
h = self.mytable.horizontalHeader().height() + \
2 * self.mytable.frameWidth()
h += self.mytable.horizontalScrollBar().sizeHint().height()
for row_in_table in range(self.mytable.rowCount()):
h += self.mytable.rowHeight(row_in_table)
self.mytable.setFixedHeight(h)
def send_Confirm(self, sid, pid, item):
""" send answer to the question """

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save