From 8d146d3247699a833050c0213a95713c76ad4da2 Mon Sep 17 00:00:00 2001 From: Denis Spiridonov Date: Tue, 7 Feb 2012 17:45:08 +0400 Subject: [PATCH] Fix resize events widgets --- api/gui/Box.py | 8 ++-- api/gui/DisplayMethod.py | 77 +++++++++++++++++++++++++++++++++++--- api/gui/MainFrameResult.py | 5 +++ api/gui/View_Process.py | 11 ++++-- api/gui/conf_connection.py | 2 +- api/gui/mainframe.py | 9 +++-- api/gui/more.py | 24 +++++++----- 7 files changed, 108 insertions(+), 28 deletions(-) diff --git a/api/gui/Box.py b/api/gui/Box.py index 734a08b..eda05cb 100644 --- a/api/gui/Box.py +++ b/api/gui/Box.py @@ -3,7 +3,7 @@ from PySide import QtGui, QtCore from PySide.QtGui import QMessageBox -from DisplayMethod import DisplayMethod +from DisplayMethod import DisplayMethod, DisplayMethodScroll from mainframe import MainFrame from mainmenu import MainMenu from helpwidget import HelpWgt @@ -52,7 +52,6 @@ class MainWgt(QtGui.QMainWindow): # верхнее правое self.main_frame = FrameConnection(self, self.ClientObj) - self.main_frame.resize(self.mainwidth,self.size_y - 100) self.setCentralWidget(self.main_frame) @@ -89,9 +88,7 @@ class MainWgt(QtGui.QMainWindow): del (self.main_frame) except: pass - self.main_frame = DisplayMethod(self, self.ClientObj) - - self.main_frame.refresh(self.ClientObj.methods_list) + self.main_frame = DisplayMethodScroll(self, self.ClientObj) self.setCentralWidget(self.main_frame) @@ -105,6 +102,7 @@ class MainWgt(QtGui.QMainWindow): self.main_frame = ViewProc(self, self.ClientObj) self.setCentralWidget(self.main_frame) + icon_visible(self, 'Display &Methods', True) def view_session_info(self): self.SessionWgt = ViewSessionInfo(self, self.ClientObj.client) diff --git a/api/gui/DisplayMethod.py b/api/gui/DisplayMethod.py index 4d5f8d3..81ed5cc 100644 --- a/api/gui/DisplayMethod.py +++ b/api/gui/DisplayMethod.py @@ -26,6 +26,9 @@ class DisplayMethod(QtGui.QWidget): self.groupbox_dict = {} self.layout_dict = {} +# self.setStyleSheet("QWidget { background-color: #f2f2f2 }") + self.setStyleSheet("QWidget { background-color: #f0f0f0 }") + # transform a list into the dictionary {'group': [methods], ...} guiMethods = {} if type(results) == int: @@ -60,26 +63,44 @@ class DisplayMethod(QtGui.QWidget): guiMethods[group][method_name + 1], \ guiMethods[group][method_name + 2], \ group, self) + Button.clicked.connect(self.onActivated) + + self.button_list.append(Button) + self.layout_dict[group].addWidget(self.button_list[len(self.button_list) - 1]) + + + for method_name in range (0, len(guiMethods[group]), 3): + Button = ButtonMenu(guiMethods[group][method_name],\ + guiMethods[group][method_name + 1], \ + guiMethods[group][method_name + 2], \ + group, self) Button.clicked.connect(self.onActivated) self.button_list.append(Button) self.layout_dict[group].addWidget(self.button_list[len(self.button_list) - 1]) + + + + self.layout_dict[group].setAlignment(QtCore.Qt.AlignLeft) self.groupbox_dict[group].setLayout(self.layout_dict[group]) + self.layout.addWidget(self.groupbox_dict[group]) + self.layout.setAlignment(QtCore.Qt.AlignTop) - self.setLayout(self.layout) -# self.setStyleSheet("QWidget { background-color: white }") + self.resize(self.layout.sizeHint()) + +# print self.sizeHint() # self.updateGeometry() - def refresh(self, results): - self.ClientObj.MainWidget.results = results + def refresh(self): + results = self.ClientObj.methods_list self.initUI(results) self.ClientObj.app.processEvents() - + def onActivated(self): method_name = self.sender().objectName() step = 0 @@ -91,6 +112,52 @@ class DisplayMethod(QtGui.QWidget): (int(self.ClientObj.sid), step) self.ClientObj.MainWidget.main_frame_view(view, method_name) +class DisplayMethodScroll (QtGui.QScrollArea): + def __init__(self, parent, ClientObj): + QtGui.QScrollArea.__init__(self, parent) + + self.MainFrameWgt = DisplayMethod(self, ClientObj) + self.MainFrameWgt.refresh() + self.setWidget(self.MainFrameWgt) + + # set resizable widget in ScrollArea + self.setWidgetResizable(True) + + self.horizontalScrollBar().hide() + +# def resizeEvent(self, resize_var): +# self.parent().set_wid (self.size().width()) +# +# width_diff = 5 + self.verticalScrollBar().size().width() \ +# if self.verticalScrollBar().isVisible() else 5 +# +## import time +## time.sleep(5) +# for group in self.MainFrameWgt.groupbox_dict: +# print '\n\n' +# print self.MainFrameWgt.groupbox_dict[group].size() +# print self.MainFrameWgt.layout_dict[group].sizeHint() +# self.MainFrameWgt.groupbox_dict[group].resize \ +# (self.MainFrameWgt.groupbox_dict[group].sizeHint()) +# + +# if self.size().width() > 30: +# if resize_var.size().height() > self.MainFrameWgt.sizeHint().height(): +# print 11111111111, self.size() +# +## self.MainFrameWgt.resize(self.size().width()-width_diff, \ +## self.size().height() - height_diff) +## self.MainFrameWgt.setFixedWidth(self.size().width()-width_diff) +# self.MainFrameWgt.setFixedHeight(self.size().height()-22) +## self.MainFrameWgt.setFixedHeight(self.MainFrameWgt.layout.sizeHint().height()-100) +## else: +## print 22222222222222, self.size() +## self.MainFrameWgt.setFixedWidth(self.size().width()-width_diff) +## self.MainFrameWgt.setFixedHeight(self.MainFrameWgt.layout.sizeHint().height()-100) +# self.MainFrameWgt.updateGeometry() + + + class FlowLayout(QtGui.QLayout): def __init__(self, parent=None, margin=0, spacing=-1): super(FlowLayout, self).__init__(parent) diff --git a/api/gui/MainFrameResult.py b/api/gui/MainFrameResult.py index c39a74c..ee76532 100644 --- a/api/gui/MainFrameResult.py +++ b/api/gui/MainFrameResult.py @@ -35,8 +35,11 @@ class MainFrameResWgt(QtGui.QWidget): if self.work_layout.count() == 1: self.title_lbl = LabelWordWrap(method_name) self.work_layout.addWidget(self.title_lbl) + +# self.work_layout.setAlignment(QtCore.Qt.AlignTop) self.setLayout(self.work_layout) + def initUI(self): if self.meth_result.type == "pid": self.ClientObj.process_dict [self.meth_result.message]['layout'] = \ @@ -219,6 +222,7 @@ def get_message(self, item, sid, pid): get_Progress(self, sid, pid, item.id) return 1 if case('error'): +# for i in range(20): self.main_frame.MainFrameWgt.show_error(item.message) if item.message == "403 Forbidden": # show_msg(item.message, 'Access Denied') @@ -463,6 +467,7 @@ class MainFrameRes (QtGui.QScrollArea): # self.MainFrameWgt.setMinimumWidth(self.width()-50) self.setWidget(self.MainFrameWgt) +# self.setWidgetResizable(True) def resizeEvent(self, resize_var): self.parent.set_wid (self.size().width()) diff --git a/api/gui/View_Process.py b/api/gui/View_Process.py index 342e0fa..3a8a46f 100644 --- a/api/gui/View_Process.py +++ b/api/gui/View_Process.py @@ -48,6 +48,8 @@ class ViewProcClass(QtGui.QWidget): # for clear memory after closed this window self.setAttribute(QtCore.Qt.WA_DeleteOnClose) + self.layout.setAlignment(QtCore.Qt.AlignTop) + self.setLayout(self.layout) self.show() @@ -76,8 +78,9 @@ class ViewProc (QtGui.QScrollArea): # верхнее правое self.MainFrameWgt = ViewProcClass(self, ClientObj) self.setWidget(self.MainFrameWgt) + self.setWidgetResizable(True) - def resizeEvent(self, resize_var): - self.parent.set_wid (self.size().width()) - if self.size().width() > 30: - self.MainFrameWgt.setFixedWidth(self.parent.mainwidth - 30) +# def resizeEvent(self, resize_var): +# self.parent.set_wid (self.size().width()) +# if self.size().width() > 30: +# self.MainFrameWgt.setFixedWidth(self.parent.mainwidth - 30) diff --git a/api/gui/conf_connection.py b/api/gui/conf_connection.py index 9aa7a2c..b5f5cee 100644 --- a/api/gui/conf_connection.py +++ b/api/gui/conf_connection.py @@ -86,7 +86,7 @@ class FrameConnection(QtGui.QWidget): self.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.setLayout(grid) - self.setGeometry(0, 0, 150, 180) +# self.setGeometry(0, 0, 150, 180) self.show() # establish a connection diff --git a/api/gui/mainframe.py b/api/gui/mainframe.py index 8631cd5..9412d15 100644 --- a/api/gui/mainframe.py +++ b/api/gui/mainframe.py @@ -960,8 +960,9 @@ class MainFrame (QtGui.QScrollArea): QtGui.QScrollArea.__init__(self) self.MainFrameWgt = MFWgt(self, ClientObj, view, method_name) self.setWidget(self.MainFrameWgt) + self.setWidgetResizable(True) - def resizeEvent(self, resize_var): - self.parent.set_wid (self.size().width()) - if self.size().width() > 30: - self.MainFrameWgt.setFixedWidth(self.parent.mainwidth - 30) +# def resizeEvent(self, resize_var): +# self.parent.set_wid (self.size().width()) +# if self.size().width() > 30: +# self.MainFrameWgt.setFixedWidth(self.parent.mainwidth - 30) diff --git a/api/gui/more.py b/api/gui/more.py index 6679d3a..8702820 100644 --- a/api/gui/more.py +++ b/api/gui/more.py @@ -33,22 +33,27 @@ class ButtonMenu(QtGui.QPushButton): self.image_lbl.setPixmap(pm2) self.image_lbl.setAlignment(QtCore.Qt.AlignCenter) + + # add transparency + self.image_lbl.setAttribute(QtCore.Qt.WA_NoSystemBackground) + + self.layout.addWidget(self.image_lbl) -# self.setFixedSize(96,96) self.setFlat(True) -# button_text = group.split('.') -# print "##################", group -# button_text = button_text[len(button_text) - 1] - self.lbl = QtGui.QLabel(label, self) + self.lbl = LabelWordWrap(label, self) self.lbl.setAlignment(QtCore.Qt.AlignCenter) + + # add transparency + self.lbl.setAttribute(QtCore.Qt.WA_NoSystemBackground) + self.layout.addWidget(self.lbl) - if self.layout.sizeHint().width() > 96: - self.setFixedSize(self.layout.sizeHint().width(),96) - else: - self.setFixedSize(96,96) +# if self.layout.sizeHint().width() > 96: +# self.setFixedSize(self.layout.sizeHint().width(),96) +# else: + self.setFixedSize(96,108) self.setObjectName(name) # for clear memory after closed this window self.setAttribute(QtCore.Qt.WA_DeleteOnClose) @@ -587,6 +592,7 @@ def https_server(client, signaling, ClientObj): ClientObj.MainWidget.resize \ (ClientObj.MainWidget.size_x, ClientObj.MainWidget.size_y) + # ClientObj.MainWidget.topleft.menu.refresh(ClientObj.methods_list) # get_entire_frame(client)