Множественные изменения

master3.3
Mike khiretskiy 10 years ago
parent f0fcb5cd4b
commit 1ceadf3e15

@ -16,8 +16,13 @@
from PySide import QtGui, QtCore
import urllib2, sudsds
import re
from calculate.core.client.function import switch, create_obj
from calculate.lib.utils.colortext.converter import XmlConverter
from calculate.lib.utils.colortext.output import SpanCssOutput
from calculate.lib.utils.tools import imap_regexp
from more import WorkPalette
from more import get_sid, ClientServiceThread, show_msg, TaskWidget, ErrorWgt,\
ResultLayout, get_view_params
@ -25,8 +30,8 @@ from more import LabelWordWrap as Label
from SelectTable import SelectedTableWidget
class LabelWordWrap(Label):
def __init__(self, name, parent = None, mono=False):
Label.__init__(self, name, parent,mono)
def __init__(self, name, parent=None, mono=False, margin_top=0):
Label.__init__(self, name, parent, mono, margin_top)
# set text selectable
self.setTextInteractionFlags(self.textInteractionFlags() | \
QtCore.Qt.TextSelectableByMouse)
@ -59,18 +64,17 @@ class PlusButton(QtGui.QPushButton):
def after_call(self, view):
if self.ClientObj.method_names.has_key(self.method):
view_method = self._parent.ClientObj.method_names \
[self.method]
view_method = self._parent.ClientObj.method_names[self.method]
else:
view_method = self.method
self._parent.ClientObj._parent.setWindowTitle(view_method + \
self._parent.ClientObj._parent.setWindowTitle(view_method +
' - ' + self.ClientObj.Name)
self._parent._parent.main_frame_view(view, self.method)
class MainFrameRes(QtGui.QWidget):
valSignal = QtCore.Signal()
def __init__(self, parent, ClientObj, method_name, meth_result, \
change_offset = False):
def __init__(self, parent, ClientObj, method_name, meth_result,
change_offset=False):
# super(MainFrameRes, self).__init__(self, parent)
QtGui.QWidget.__init__(self, parent)
self._parent = parent
@ -80,6 +84,8 @@ class MainFrameRes(QtGui.QWidget):
self.client = ClientObj.client
self.cur_pid = 0
self.change_offset = change_offset
self.show_last = True
self.max_val = None
if self.meth_result.type == "pid":
self.cur_pid = self.meth_result.message
@ -87,7 +93,6 @@ class MainFrameRes(QtGui.QWidget):
self.work_layout = ResultLayout(self)
self.work_layout.kill_process_button.clicked.connect \
(self.kill_process(self.cur_pid))
self.valSignal.connect(ClientObj.MainWidget.setScrollBarVal)
self.progress_list = []
self.task_list = []
@ -102,16 +107,39 @@ class MainFrameRes(QtGui.QWidget):
self._parent.methodname_wgt.setMethodName(method_name)
parent.main_frame.viewport().setObjectName('main_frame')
parent.main_frame.viewport().setStyleSheet("#main_frame "
"{background-color: #E4E1E0;}")
self.setObjectName('Frame_Res')
"{background-color: #FFFFFF;}")
#"{background-color: #E4E1E0;}")
self.setObjectName("Frame_Res")
self.setStyleSheet("#Frame_Res {background-color: transparent;}")
#self.setStyleSheet("#Frame_Res {background-color: green;}")
# "QWidget {border: 1px solid red;}")
self.timer = QtCore.QTimer(self)
self.connect(self.timer, QtCore.SIGNAL("timeout()"), self.show_bottom)
self.timer.start(100)
self.valSignal.connect(self.show_bottom)
def initUI(self):
#self.setSizePolicy(QtGui.QSizePolicy.Minimum,QtGui.QSizePolicy.Minimum)
self.updateGeometry()
def show_bottom(self):
max_val = self._parent.main_frame.verticalScrollBar().maximum()
current_val = \
self._parent.main_frame.verticalScrollBar().sliderPosition()
if self.show_last:
if current_val != max_val:
if self.max_val != max_val:
self._parent.main_frame.verticalScrollBar(
).setSliderPosition(max_val)
else:
self.show_last = False
else:
if current_val == max_val:
self.show_last = True
self.max_val = max_val
################# API FUNCTION ###############################
def show_view(self, view):
pass
@ -261,27 +289,30 @@ class MainFrameRes(QtGui.QWidget):
self._parent.ClientObj._parent.setWindowTitle(view_method + \
' - ' + self.ClientObj.Name)
self._parent.main_frame_view(view, view_method, \
change_offset = True)
change_offset=True)
return wrapper
def show_message(self, message, mono=False, space=0):
message = self.processTags(message)
# add normal message label
lbl_temp = LabelWordWrap(message, self, mono=mono, margin_top=space)
if mono:
lbl_temp.setMinimumHeight(lbl_temp.minimumSizeHint().height())
lbl_temp.setMaximumHeight(lbl_temp.sizeHint().height())
else:
lbl_temp.setMinimumHeight(lbl_temp.minimumSizeHint().height())
lbl_temp.setMaximumHeight(lbl_temp.sizeHint().height())
self.work_layout._addWidget(lbl_temp)
self.initUI()
return lbl_temp
#self._parent.main_frame.verticalScrollBar().setSliderPosition \
# (self._parent.main_frame.verticalScrollBar().maximum())
def show_normal(self, item, mono=False):
if not hasattr (item, 'message'):
if not hasattr(item, 'message'):
return
if item.message:
# add normal message label
lbl_temp = LabelWordWrap(item.message, self, mono=mono)
if mono:
lbl_temp.setMinimumHeight(lbl_temp.minimumSizeHint().height())
lbl_temp.setMaximumHeight(lbl_temp.sizeHint().height())
else:
lbl_temp.setMinimumHeight(lbl_temp.minimumSizeHint().height())
#lbl_temp.setMaximumHeight(lbl_temp.minimumSizeHint().height())
lbl_temp.setMaximumHeight(lbl_temp.sizeHint().height())
self.work_layout._addWidget(lbl_temp)
self.initUI()
self._parent.main_frame.verticalScrollBar().setSliderPosition \
(self._parent.main_frame.verticalScrollBar().maximum())
self.show_message(item.message, mono)
if not mono:
if self.progress_list:
self.progress_list[-1].hide()
@ -293,6 +324,7 @@ class MainFrameRes(QtGui.QWidget):
if self.progress_list:
self.progress_list[len(self.progress_list)-1].hide()
if message:
message = self.processTags(message)
lbl_temp = ErrorWgt(message, self)
lbl_temp.set_error()
lbl_temp.setMinimumHeight(lbl_temp.minimumSizeHint().height())
@ -305,6 +337,7 @@ class MainFrameRes(QtGui.QWidget):
def show_warning(self, item):
# add warning message label
if item.message:
item.message = self.processTags(item.message)
lbl_temp = ErrorWgt(item.message, self)
lbl_temp.set_warning()
lbl_temp.setMinimumHeight(lbl_temp.minimumSizeHint().height())
@ -312,9 +345,9 @@ class MainFrameRes(QtGui.QWidget):
self.work_layout._addWidget(lbl_temp)
self.initUI()
def show_group(self, item):
def show_group(self, item, *args):
pass
def show_result(self, result):
# add normal message label
lbl_temp = LabelWordWrap(result.message, self)
@ -323,11 +356,20 @@ class MainFrameRes(QtGui.QWidget):
self.work_layout._addWidget(lbl_temp)
self.initUI()
def processTags(self, s):
xc = XmlConverter(SpanCssOutput(palette=WorkPalette()))
return xc.transform(s)
def cleanTags(self, s):
xc = XmlConverter()
return xc.transform(s)
def startTask(self, item):
if self.progress_list:
self.progress_list[-1].hide()
task_widget = TaskWidget(item.message, self)
task_widget = TaskWidget(self.processTags(item.message),
self, clean_text=self.cleanTags(item.message))
self.task_list.append(task_widget)
self.work_layout._addWidget(task_widget)
@ -337,23 +379,28 @@ class MainFrameRes(QtGui.QWidget):
def endTask(self, item, set_res = True):
if self.progress_list:
self.progress_list[-1].hide()
message = item.message if item.message else ''
if set_res:
if hasattr(item,"result") and not item.result is None:
if message == "skip":
self.set_result_task(skip=True)
elif hasattr(item,"result") and not item.result is None:
self.set_result_task(not item.result)
else:
self.set_result_task()
message = item.message if item.message else ''
if message:
if message and message != "skip":
message = self.processTags(message)
lbl_temp = LabelWordWrap(message, self)
lbl_temp.setMinimumHeight(lbl_temp.sizeHint().height())
self.work_layout._addWidget(lbl_temp)
self.initUI()
def set_result_task(self, error = False):
def set_result_task(self, error=False, skip=False):
if not len(self.task_list):
return
if error:
if skip:
self.task_list[len(self.task_list) - 1].set_skip()
elif error:
self.task_list[len(self.task_list) - 1].set_error()
else:
self.task_list[len(self.task_list) - 1].set_ok()
@ -368,6 +415,7 @@ class MainFrameRes(QtGui.QWidget):
self.initUI()
self.work_layout.hide_kill_button()
self.closeDialogs()
self.close_all_thread()
if self.change_offset:
self._parent.delete_MainFrameWgt()
@ -397,7 +445,19 @@ class MainFrameRes(QtGui.QWidget):
# self._parent.back()
def startGroup(self, item):
pass
if not hasattr(item, 'message'):
return
if item.message:
item.message = self.processTags(item.message)
# add normal message label
lbl_temp = LabelWordWrap("<b>%s</b>"%item.message, self)
lbl_temp.setMinimumHeight(lbl_temp.minimumSizeHint().height())
lbl_temp.setMaximumHeight(lbl_temp.sizeHint().height())
self.work_layout._addWidget(lbl_temp)
self.initUI()
#self._parent.main_frame.verticalScrollBar().setSliderPosition \
# (self._parent.main_frame.verticalScrollBar().maximum())
def endGroup(self, item):
pass
@ -406,6 +466,7 @@ class MainFrameRes(QtGui.QWidget):
def wrapper():
sid = int(self.ClientObj.sid)
self.closeDialogs()
# Call server method
if hasattr (self, 'kill_process_thread'):
if self.kill_process_thread.isRunning():
@ -486,7 +547,7 @@ class MainFrameRes(QtGui.QWidget):
self.get_Table(sid, pid, item)
return 1
if case('group'):
self.show_group(sid, pid, item)
self.show_group(item)
return 1
if case('question'):
self.send_Message(sid, pid, item)
@ -579,20 +640,21 @@ class MainFrameRes(QtGui.QWidget):
self.get_Frame_thread.start()
def get_Frame_after(self, current_frame, sid, pid):
for item in range(len(current_frame[0])):
self.not_end_frame = self.get_message(current_frame[0][item],
sid, pid)
try:
if self.cur_pid != pid:
return 1
except:
for item in range(len(current_frame[0])):
self.not_end_frame = self.get_message(current_frame[0][item],
sid, pid)
self.valSignal.emit()
try:
if self.cur_pid != pid:
return 1
if len (current_frame[0]) > 3:
if not item % 10:
self.ClientObj.app.processEvents()
else:
except:
return 1
if len (current_frame[0]) > 3:
if not item % 10:
self.ClientObj.app.processEvents()
self.valSignal.emit()
else:
self.ClientObj.app.processEvents()
self.valSignal.emit()
def get_entire_frame(self, pid = None):
""" get entire frame, from beginning (if client disconnected) """
@ -637,6 +699,7 @@ class MainFrameRes(QtGui.QWidget):
# for i in range (10):
for item in range(len(current_frame[0])):
end_frame = self.get_message(current_frame[0][item], sid, pid)
self.valSignal.emit()
try:
if self.cur_pid != pid:
return 1
@ -780,12 +843,18 @@ class MainFrameRes(QtGui.QWidget):
def send_Confirm(self, sid, pid, item):
""" send answer to the question """
if self.progress_list:
self.progress_list[-1].hide()
self.message = ConfirmDialog(self, item, sid, pid)
self.work_layout.control.insertWidget(0, self.message)
self.message.show()
def send_Choice(self, sid, pid, item):
""" send answer to the question """
if self.progress_list:
self.progress_list[-1].hide()
self.message = ChoiceDialog(self, item, sid, pid)
self.work_layout.control.insertWidget(0, self.message)
self.message.show()
def send_Message(self, sid, pid, item):
@ -814,15 +883,21 @@ class MainFrameRes(QtGui.QWidget):
self.send_password_thread.close()
self.send_password_thread.wait()
def closeDialogs(self):
if hasattr(self,"message") and self.message:
self.message.close()
self.message = None
if hasattr(self,"passwd") and self.passwd:
self.passwd.close()
self.passwd = None
def closeEvent(self, event):
self.timer.stop()
self.cur_pid = 'no'
self.close_all_thread()
self._parent.methodname_wgt._hide()
self._parent.control_button._hide()
if hasattr(self,"message") and self.message:
self.message.close()
if hasattr(self,"passwd") and self.passwd:
self.passwd.close()
self.closeDialogs()
event.accept()
class MessageDialog(QtGui.QWidget):
@ -903,58 +978,59 @@ class MessageDialog(QtGui.QWidget):
else:
self.send_button.setEnabled(True)
class ConfirmDialog(QtGui.QWidget):
# answer to the server question
class ButtonDialog(QtGui.QWidget):
button_size = 144
def __init__(self, parent, item, sid, pid):
super(ConfirmDialog, self).__init__()
super(ButtonDialog, self).__init__()
self._parent = parent
# self.item = item
self.sid = sid
self.pid = pid
self.layout = QtGui.QGridLayout(self)
self.setWindowTitle(self._parent.ClientObj._parent.windowTitle())
self.label = LabelWordWrap(item.message, self)
self.layout = QtGui.QHBoxLayout(self)
self.layout.setContentsMargins(0, 0, 4, 0)
self.header_label = None
self.layout.addWidget(self.label,0,0,1,2)
minimum = QtGui.QSizePolicy.Fixed
self.setSizePolicy(minimum, minimum)
self.init(item)
self.yes_button = QtGui.QPushButton(_('Yes'), self)
self.yes_button.setShortcut(QtGui.QKeySequence(QtCore.Qt.Key_Return))
self.yes_button.clicked.connect(self.sendYes)
self.layout.addWidget(self.yes_button,1,0)
def init(self, item):
pass
self.no_button = QtGui.QPushButton(_('No'), self)
self.no_button.setShortcut(QtGui.QKeySequence(QtCore.Qt.Key_Escape))
self.no_button.clicked.connect(self.sendNo)
self.layout.addWidget(self.no_button,1,1)
self.move(parent.ClientObj._parent.geometry().x() + \
parent.ClientObj._parent.geometry().width() / 2 \
- self.sizeHint().width() / 2, \
parent.ClientObj._parent.geometry().y() + \
parent.ClientObj._parent.geometry().height() / 2 \
- self.sizeHint().height() / 2)
self.setWindowFlags (QtCore.Qt.WindowMinimizeButtonHint)
# self.setAttribute(QtCore.Qt.WA_ShowModal)
def send(self,answer):
def createButton(self, label, answer, shortcut=None):
"""
Создать кнопку в диалоге
"""
button = QtGui.QPushButton(label, self)
if type(shortcut) in (list, tuple):
action = QtGui.QAction(self)
action.setShortcuts(map(QtGui.QKeySequence,
shortcut))
action.triggered.connect(button.animateClick)
button.addAction(action)
elif shortcut:
button.setShortcut(QtGui.QKeySequence(shortcut))
button.clicked.connect(self.send(answer, label))
button.setFixedWidth(self.button_size)
self.layout.addWidget(button)
def send(self, answer, human_answer=None):
# Call server method
if hasattr (self, 'send_password_thread'):
if self.send_password_thread.isRunning():
return 1
self.send_password_thread = ClientServiceThread(\
self._parent.ClientObj, 'send_message', self.sid, \
self.pid, answer, return_except = True)
self.send_password_thread.signal.connect(self.send_after)
self.send_password_thread.start()
def sendYes(self):
self.send("yes")
def wrapper():
if human_answer and self.header_label:
self.header_label.setText(
self.header_label.text() + " " +
human_answer)
if hasattr(self, 'send_password_thread'):
if self.send_password_thread.isRunning():
return 1
self.send_password_thread = ClientServiceThread( \
self._parent.ClientObj, 'send_message', self.sid, \
self.pid, answer, return_except=True)
self.send_password_thread.signal.connect(self.send_after)
self.send_password_thread.start()
def sendNo(self):
self.send("no")
return wrapper
def send_after(self, result):
if type(result) == Exception:
@ -964,61 +1040,30 @@ class ConfirmDialog(QtGui.QWidget):
self._parent.show_result(result)
self.close()
class ChoiceDialog(QtGui.QWidget):
# answer to the server question
def __init__(self, parent, item, sid, pid):
super(ChoiceDialog, self).__init__()
self._parent = parent
# self.item = item
self.sid = sid
self.pid = pid
self.setWindowTitle(self._parent.ClientObj._parent.windowTitle())
self.layout = QtGui.QGridLayout(self)
self.message,self.answers = item.message.split('|')
self.answers = map(lambda x:(x[0],x[1].strip(')')),
map(lambda x:x.split('('),
self.answers.split(',')))
self.label = LabelWordWrap(self.message, self)
self.layout.addWidget(self.label,0,0,1,len(self.answers))
self.buttons = []
for i,answer in enumerate(self.answers):
button = QtGui.QPushButton(answer[1], self)
self.buttons.append(button)
button.answer = answer
button.parentDialog = self
button.clickFunc = (lambda self:self.parentDialog.send(self.answer[0])).__get__(button)
button.clicked.connect(button.clickFunc)
#self.yes_button.setShortcut(QtGui.QKeySequence(QtCore.Qt.Key_Return))
#self.no_button.setShortcut(QtGui.QKeySequence(QtCore.Qt.Key_Escape))
self.layout.addWidget(button,1,i)
self.move(parent.ClientObj._parent.geometry().x() + \
parent.ClientObj._parent.geometry().width() / 2 \
- self.sizeHint().width() / 2, \
parent.ClientObj._parent.geometry().y() + \
parent.ClientObj._parent.geometry().height() / 2 \
- self.sizeHint().height() / 2)
self.setWindowFlags (QtCore.Qt.WindowMinimizeButtonHint)
# self.setAttribute(QtCore.Qt.WA_ShowModal)
def send(self,answer):
# Call server method
if hasattr (self, 'send_password_thread'):
if self.send_password_thread.isRunning():
return 1
self.send_password_thread = ClientServiceThread(\
self._parent.ClientObj, 'send_message', self.sid, \
self.pid, answer, return_except = True)
self.send_password_thread.signal.connect(self.send_after)
self.send_password_thread.start()
def send_after(self, result):
if type(result) == Exception:
show_msg(_('Failed to send the message (password) to the server'))
self.close()
return 1
self._parent.show_result(result)
self.close()
class ConfirmDialog(ButtonDialog):
"""
Диалог подтверждения действия
"""
def init(self, item):
self.header_label = \
self._parent.show_message("<b>%s</b>" % item.message, space=20)
self.createButton(_("Yes"), "yes", [QtCore.Qt.Key_Enter,
QtCore.Qt.Key_Return])
self.createButton(_("No"), "no", QtCore.Qt.Key_Escape)
class ChoiceDialog(ButtonDialog):
"""
Диалог выбора ответа из нескольких
"""
def init(self, item):
message, answers = item.message.split('|')
self.header_label = \
self._parent.show_message("<b>%s</b>" % message, space=20)
reAnswer = re.compile("^(.*)\((.*)\)$")
answers = imap_regexp(reAnswer, answers.split(','))
for answer, label in answers:
self.createButton(label, answer)

@ -20,8 +20,11 @@ import urllib2
from calculate.core.client.function import switch
from more import get_sid, ClientServiceThread, show_msg, ErrorWgt, ResultLayout
from more import LabelWordWrap as Label
from MainFrameResult import LabelWordWrap,ChoiceDialog
from calculate.lib.utils.colortext.converter import XmlConverter
from calculate.lib.utils.colortext.output import SpanCssOutput
from calculate.lib.utils.colortext.palette import WhitePalette
class TaskWidget(QtGui.QWidget):
def __init__(self, taskNumber = 1, parent = None):
@ -132,12 +135,22 @@ class ShortFrameRes(QtGui.QWidget):
def initUI(self):
self.updateGeometry()
def processTags(self, s):
xc = XmlConverter(SpanCssOutput(palette=WhitePalette()))
return xc.transform(s)
def cleanTags(self, s):
xc = XmlConverter()
return xc.transform(s)
################# API FUNCTION ###############################
def show_view(self, view):
pass
def show_normal(self, message, mono=False):
# add normal message label
if message:
message = self.processTags(message)
if hasattr (self, 'taskWidget') and not mono:
self.taskWidget.setText(message)
else:
@ -153,6 +166,8 @@ class ShortFrameRes(QtGui.QWidget):
# add error message label
# if self.progress_list:
# self.progress_list[len(self.progress_list)-1].hide()
if message:
message = self.processTags(message)
lbl_temp = ErrorWgt(message, self)
lbl_temp.set_error()
lbl_temp.setMinimumHeight(lbl_temp.sizeHint().height())
@ -164,6 +179,8 @@ class ShortFrameRes(QtGui.QWidget):
def show_warning(self, item):
# add warning message label
if item.message:
item.message = self.processTags(item.message)
lbl_temp = ErrorWgt(item.message, self)
lbl_temp.set_warning()
lbl_temp.setMinimumHeight(lbl_temp.sizeHint().height())
@ -176,6 +193,8 @@ class ShortFrameRes(QtGui.QWidget):
def show_result(self, result):
# add normal message label
if result.message:
result.message = self.processTags(result.message)
lbl_temp = LabelWordWrap(result.message, self)
lbl_temp.setMinimumHeight(lbl_temp.sizeHint().height())
self.work_layout._addWidget(lbl_temp)
@ -185,6 +204,8 @@ class ShortFrameRes(QtGui.QWidget):
if not hasattr (self, 'taskWidget'):
self.taskWidget = TaskWidget(1, self)
self.work_layout._addWidget(self.taskWidget)
if item.message:
item.message = self.processTags(item.message)
self.taskWidget.setText(item.message)
self.taskWidget.setCurrentCount(item.id)
self.initUI()
@ -203,6 +224,7 @@ class ShortFrameRes(QtGui.QWidget):
self.taskWidget.endCurrentTask()
if item.message:
item.message = self.processTags(item.message)
self.taskWidget.setText(item.message)
self.initUI()

@ -79,7 +79,7 @@ class FrameConnection(QtGui.QWidget):
grid.setContentsMargins(10, 10, 10, 10)
grid.setSpacing(4)
self.lbl_host = LabelWordWrap(_("Host"), self)
self.lbl_host = LabelWordWrap(_("T<span style='color:red;font-weight:bold;text-decoration:underline;'> test</span>"), self)
self.lbl_port = LabelWordWrap(_("Port"), self)
self.lbl_passwd = LabelWordWrap(_("Password"), self)
self.text_host = QtGui.QLineEdit(self.ClientObj.default_host, self)

@ -14,13 +14,20 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import time
import urllib2
import pwd
import sys
from PySide import QtGui, QtCore
import os, time, urllib2
from calculate.core.client.function import create_obj
from calculate.lib.utils.files import readLinesFile
from PIL import Image
import pwd, sys
from PIL import Image
from calculate.lib.utils.files import listDirectory
from calculate.lib.utils.colortext.palette import (
GreyPalette as WorkPalette)
_('The user must not be root')
class TopMenu(QtGui.QPushButton):
@ -55,7 +62,7 @@ class TopMenu(QtGui.QPushButton):
# img = p.toImage()
# p.fromImage(img)
pm2 = pm1.scaled(QtCore.QSize(24, 24), QtCore.Qt.KeepAspectRatio, \
pm2 = pm1.scaled(QtCore.QSize(24, 24), QtCore.Qt.KeepAspectRatio,
QtCore.Qt.SmoothTransformation)
# pm2.scaled(24,24)
@ -415,7 +422,7 @@ class ErrorWgt(QtGui.QWidget):
# self.setFixedHeight(self.text.height() + 24)
class LabelWordWrap(QtGui.QLabel):
def __init__(self, name, parent = None, mono=False):
def __init__(self, name, parent = None, mono=False, margin_top=0):
if not name:
name = ''
try:
@ -426,11 +433,15 @@ class LabelWordWrap(QtGui.QLabel):
pass
QtGui.QLabel.__init__(self, name, parent)
if mono:
self.setStyleSheet('font-family: Droid Sans Mono;'
'background-color:white;'
'margin:3px;')
self.setStyleSheet(
'font-family: Liberation Mono;color:{color};'
'background-color:{background};'.format(
color=WorkPalette.defaultColor[0],
background=WorkPalette.defaultBackground
))
else:
self.setStyleSheet('margin-left:%dpx;'%(leftMargin*5))
self.setStyleSheet('margin-left:%dpx;margin-top:%d;'%(
leftMargin*5, margin_top))
minimum = QtGui.QSizePolicy.Policy.Minimum
exp = QtGui.QSizePolicy.Policy.Expanding
@ -2223,34 +2234,46 @@ class SimplePasswordWidget(QtGui.QWidget):
else:
raise Exception
class ResultLayout(QtGui.QVBoxLayout):
"""
Слой с результатами работы задачи
"""
def __init__(self, parent):
QtGui.QVBoxLayout.__init__(self, parent)
self.setAlignment(QtCore.Qt.AlignTop)
# self.setDirection(QtGui.QBoxLayout.TopToBottom)
self.setContentsMargins(28,28,28,10)
self.setContentsMargins(28, 28, 28, 10)
self.setSpacing(2)
self.content = QtGui.QVBoxLayout()
self.content.setAlignment(QtCore.Qt.AlignTop)
self.control = QtGui.QHBoxLayout()
self.control.setAlignment(QtCore.Qt.AlignTop)
self.addLayout(self.content)
self.addLayout(self.control)
self.kill_process_button = QtGui.QPushButton(_('Break the process'))
self.kill_process_button.setFixedWidth(144)
self.kill_process_button.setContentsMargins(0,10,0,0)
self.kill_process_button.setMinimumHeight(
self.kill_process_button.minimumSizeHint().height())
self.kill_process_button.setMaximumHeight(
self.kill_process_button.minimumSizeHint().height())
self.addWidget(self.kill_process_button)
self.kill_process_button = self._create_button(_('Break the process'))
self.control.addWidget(self.kill_process_button)
def _addWidget(self, widget):
self.removeWidget(self.kill_process_button)
self.addWidget(widget)
self.addWidget(self.kill_process_button)
self.content.addWidget(widget)
def _create_button(self, label, width=144):
button = QtGui.QPushButton(label)
button.setFixedWidth(width)
button.setContentsMargins(0, 10, 0, 0)
button.setMinimumHeight(
button.minimumSizeHint().height())
button.setMaximumHeight(
button.minimumSizeHint().height())
return button
def hide_kill_button(self):
self.removeWidget(self.kill_process_button)
self.kill_process_button.close()
class LabelTaskWgt(QtGui.QLabel):
def __init__(self, name, parent = None):
def __init__(self, name, parent=None):
QtGui.QLabel.__init__(self, name, parent)
self.setStyleSheet("color: #B3ABA7;")
@ -2268,58 +2291,52 @@ class LabelTaskWgt(QtGui.QLabel):
p.drawText(x, y, '. ')
class TaskWidget(QtGui.QWidget):
def __init__(self, text = '', parent = None):
QtGui.QWidget.__init__(self)
console_ok = '/usr/share/icons/Calculate/16x16/client-gui/console_ok'
console_cancel = ('/usr/share/icons/Calculate/16x16/client-gui/'
'console_cancel')
console_skip = "object-select-symbolic"
def __init__(self, text='', parent=None, clean_text=None):
QtGui.QWidget.__init__(self, parent)
self._layout = QtGui.QHBoxLayout(self)
if clean_text is None:
clean_text = text
self.text = QtGui.QLabel(text, self)
fm = QtGui.QFontMetrics(self.text.font())
d_w = fm.width(text)
d_w = fm.width(clean_text)
pref = QtGui.QSizePolicy.Policy.Preferred
exp = QtGui.QSizePolicy.Policy.Expanding
self.text.setSizePolicy(exp, pref)
self.text.setMinimumHeight(self.text.sizeHint().height())
self.text.setMinimumWidth(d_w)
self._layout.addWidget(self.text)
self._layout.setContentsMargins(0,4,0,4)
self._layout.setContentsMargins(0, 4, 0, 4)
self._layout.setSpacing(8)
self.set_status = False
self.status = False
def set_ok(self):
if not self.set_status:
def set_status(self, icon):
if not self.status:
point_lbl = LabelTaskWgt('', self)
self._layout.addWidget(point_lbl)
self.image_lbl = QtGui.QLabel(self)
self.image_lbl.setFixedSize(16,16)
self.image_lbl.setFixedSize(16, 16)
self._layout.addWidget(self.image_lbl)
self._layout.setStretch(1, 5)
self._layout.setStretch(0,0)
self._layout.setStretch(1,5)
i_path = '/usr/share/icons/Calculate/16x16/client-gui/console_ok'
icon = QtGui.QIcon(i_path)
self.image_lbl.setPixmap(icon.pixmap(16))
self.set_status = True
self.status = True
def set_error(self):
if not self.set_status:
point_lbl = LabelTaskWgt('', self)
self._layout.addWidget(point_lbl)
def set_ok(self):
self.set_status(QtGui.QIcon(self.console_ok))
self.image_lbl = QtGui.QLabel(self)
self.image_lbl.setFixedSize(16,16)
def set_error(self):
self.set_status(QtGui.QIcon(self.console_cancel))
self._layout.addWidget(self.image_lbl)
self._layout.setStretch(0,0)
self._layout.setStretch(1,5)
def set_skip(self):
self.set_status(QtGui.QIcon.fromTheme(self.console_skip))
i_path = '/usr/share/icons/Calculate/16x16/client-gui/' \
'console_cancel'
icon = QtGui.QIcon(i_path)
self.image_lbl.setPixmap(icon.pixmap(16))
self.set_status = True
class ButtonsWidget(QtGui.QWidget):
def __init__(self, parent = None):

Loading…
Cancel
Save