diff --git a/b_asic/GUI/drag_button.py b/b_asic/GUI/drag_button.py index e31c6b5a27ef887f3f5699b124d5241aee8d8d8a..6d8b4ad77031fe94386d9205754ff51f3dabc26d 100644 --- a/b_asic/GUI/drag_button.py +++ b/b_asic/GUI/drag_button.py @@ -21,11 +21,11 @@ class DragButton(QPushButton): self.operation_path_name = operation_path_name self.clicked = 0 self.pressed = False + self._mouse_press_pos = None + self._mouse_move_pos = None super(DragButton, self).__init__(self._window) def mousePressEvent(self, event): - self._mouse_press_pos = None - self._mouse_move_pos = None if event.button() == Qt.LeftButton: self._mouse_press_pos = event.globalPos() @@ -60,6 +60,9 @@ class DragButton(QPushButton): if event.buttons() == Qt.LeftButton: cur_pos = self.mapToGlobal(self.pos()) global_pos = event.globalPos() + if self._mouse_move_pos is None: + self._mouse_move_pos = global_pos + diff = global_pos - self._mouse_move_pos new_pos = self.mapFromGlobal(cur_pos + diff) self.move(new_pos) diff --git a/b_asic/GUI/improved_main_window.py b/b_asic/GUI/improved_main_window.py index 2696de2539a5b79a2a8b0e355eab4026d4c6c4d6..5b02231c89807a6b38cfed6ae9e1a296b3432154 100644 --- a/b_asic/GUI/improved_main_window.py +++ b/b_asic/GUI/improved_main_window.py @@ -22,10 +22,13 @@ from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QLabel, QAction, QStatusBar, QMenuBar, QLineEdit, QPushButton, QSlider, QScrollArea, QVBoxLayout,\ QHBoxLayout, QDockWidget, QToolBar, QMenu, QLayout, QSizePolicy, QListWidget,\ QListWidgetItem, QGraphicsView, QGraphicsScene, QShortcut -from PyQt5.QtCore import Qt, QSize +from PyQt5.QtCore import Qt, QSize, QSize from PyQt5.QtGui import QIcon, QFont, QPainter, QPen, QBrush, QKeySequence +MIN_WIDTH_SCENE = 600 +MIN_HEIGHT_SCENE = 520 + @decorate_class(handle_error) class MainWindow(QMainWindow): def __init__(self): @@ -58,11 +61,21 @@ class MainWindow(QMainWindow): self.ui.exit_menu.triggered.connect(self.exit_app) self.create_graphics_view() + def resizeEvent(self, event): + oldSize = event.oldSize() + if event.oldSize() == QSize(-1, -1): + oldSize = event.size() + + newWidth = oldSize.width() * (oldSize.width() / event.size().width()) + newHeight = oldSize.height() * (oldSize.height() / event.size().height()) + self.graphic_view.setGeometry(250, 40, newWidth - 300, newHeight - 100) + super(MainWindow, self).resizeEvent(event) + def create_graphics_view(self): - self.scene = QGraphicsScene() + self.scene = QGraphicsScene(self) self.graphic_view = QGraphicsView(self.scene, self) self.graphic_view.setRenderHint(QPainter.Antialiasing) - self.graphic_view.setGeometry(250, 40, 600, 520) + self.graphic_view.setGeometry(0, 0, self.width(), self.height()) self.graphic_view.setDragMode(QGraphicsView.ScrollHandDrag) def wheelEvent(self, event): @@ -187,5 +200,6 @@ class MainWindow(QMainWindow): if __name__ == "__main__": app = QApplication(sys.argv) window = MainWindow() + window.setMinimumSize(MIN_WIDTH_SCENE, MIN_HEIGHT_SCENE) window.show() sys.exit(app.exec_()) diff --git a/b_asic/GUI/port_button.py b/b_asic/GUI/port_button.py index d9fd2b135d1b11c9677be8ee814d95fe01d8007a..af2e7ef6de2df343334305f0fce63cc313c574d2 100644 --- a/b_asic/GUI/port_button.py +++ b/b_asic/GUI/port_button.py @@ -20,7 +20,6 @@ class PortButton(QPushButton): menu.exec_(self.cursor().pos()) def mousePressEvent(self, event): - if event.button() == Qt.LeftButton: self.clicked += 1 if self.clicked == 1: @@ -29,11 +28,11 @@ class PortButton(QPushButton): self.window.pressed_ports.append(self) elif self.clicked == 2: self.setStyleSheet("background-color: white") - self.pressed = False + self.pressed = False self.clicked = 0 self.window.pressed_ports.remove(self) super(PortButton, self).mousePressEvent(event) - + def mouseReleaseEvent(self, event): super(PortButton, self).mouseReleaseEvent(event)