
| Current Path : /home/ift/52_procpy/dataninja/test/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : //home/ift/52_procpy/dataninja/test/tss.py |
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import *
from PyQt5 import QtCore
from PyQt5.QtCore import Qt
from procpy.modeler.graphmodel import Graphmodel
import re
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('Proc App') #
self.statusBar().showMessage('Main window is ready')
self.setGeometry(200, 200, 450, 420)
self.setMinimumSize(150, 120)
self.setWindowTitle('MainWindow')
self.mdi = QMdiArea()
# New File
new_action = QAction('&New', self)
new_action.setShortcut('Ctrl+N')
new_action.setStatusTip('New application')
new_action.triggered.connect(self.new_file_action) # need to add function
# Open File
open_action = QAction('&Open', self)
open_action.setShortcut('Ctrl+O')
open_action.setStatusTip('Open application')
open_action.triggered.connect(self.open_file_action) # need to add function
# Save File
save_action = QAction('&Save', self)
save_action.setShortcut('Ctrl+S')
save_action.setStatusTip('Save application')
# save_action.triggered.connect(save_file_action) # need to add function
# Save As Another File
save_as_action = QAction('Save &As', self)
save_as_action.setShortcut('Ctrl+A')
save_as_action.setStatusTip('Save application as')
# save_as_action.triggered.connect(save_as_file_action) # need to add function
# Export to SVG File
export_svg_action = QAction('Export SVG', self)
export_svg_action.setStatusTip('Export SVG')
# export_svg_action.triggered.connect(export_svg_file_action) # need to add function
# exit
exit_action = QAction('Quit', self)
exit_action.setShortcut('Ctrl+Q')
exit_action.setStatusTip('Quit App')
# exit_action.triggered.connect(QCoreApplication.instance().quit)
exit_action.triggered.connect(self.close)
# Zoom In (Crtl +)
zoom_in_action = QAction('Zoom In ', self)
zoom_in_action.setShortcut('Ctrl++')
#zoom_in_action.triggered.connect(zoom_in_block_action) # need to add function
# Zoom Out (Crtl -)
zoom_out_action = QAction('Zoom Out ', self)
zoom_out_action.setShortcut('Ctrl+-')
# zoom_out_action.triggered.connect(zoom_out_block_action) # need to add function
# Fit to Width
fit_to_width_action = QAction('Fit to Width ', self)
fit_to_width_action.setShortcut('Ctrl+W')
# fit_to_width_action.triggered.connect(fit_block_to_width_action) # need to add function
# Fit to Height
fit_to_height_action = QAction('Fit to Height ', self)
fit_to_height_action.setShortcut('Ctrl+H')
# fit_to_height_action.triggered.connect(fit_block_to_height_action) # need to add function
# Fit to Canvas
fit_to_canvas_action = QAction('Fit to Canvas ', self)
fit_to_canvas_action.setShortcut('Ctrl+V')
# fit_to_canvas_action.triggered.connect(fit_block_to_canvas_action)
# preserve for late use
preserve1_action = QAction('------------- ', self)
preserve2_action = QAction('------------- ', self)
Tools_action = QAction('Tools', self)
Tools_action.setShortcut('Ctrl+I')
Rearr_Circle_action = QAction('Rearr Circle',self)
Rearr_Circle_action.setShortcut('Ctrl+B')
Rearr_Sugiyama_action = QAction('Rearr Sugiyama', self)
Rearr_Sugiyama_action.setShortcut('Ctrl+D')
Rearr_Grid_action = QAction('Rearr Grid', self)
# Rearr_Grid_action.setShortcut('Ctrl+I')
Rearr_Grid_with_Sy_action = QAction('Rearr Grid with Sy', self)
# Rearr_Grid_with_Sy_action.setShortcut('Ctrl+I')
Rearr_Circle_slow_action = QAction('Rearr Circle slow ', self)
# Rearr_Circle_slow_action.setShortcut('Ctrl+I')
Rearr_Sugiyama_slow_action = QAction('Rearr Sugiyama slow ', self)
# Rearr_Sugiyama_slow_action.setShortcut('Ctrl+I')
Rearr_Grid_slow_action = QAction('Rearr Grid slow', self)
# Rearr_Grid_slow_action.setShortcut('Ctrl+I')
help_action =QAction('About',self)
menu_bar = self.menuBar()
file_menu = menu_bar.addMenu('&File')
file_menu.addAction(new_action)
file_menu.addAction(open_action)
file_menu.addAction(save_action)
file_menu.addAction(save_as_action)
file_menu.addAction(export_svg_action)
file_menu.addAction(exit_action)
View_menu = menu_bar.addMenu('&View')
View_menu.addAction(zoom_in_action)
View_menu.addAction(zoom_out_action)
View_menu.addAction(fit_to_width_action)
View_menu.addAction(fit_to_height_action)
View_menu.addAction(fit_to_canvas_action)
View_menu.addAction(preserve1_action)
View_menu.addAction(preserve2_action)
Production_menu = menu_bar.addMenu('&Production')
Production_menu.addAction(new_action)
Production_menu.addAction(open_action)
Production_menu.addAction(save_action)
Production_menu.addAction(save_as_action)
Extras_menu = menu_bar.addMenu('&Extras')
Extras_menu.addAction(Tools_action)
Extras_menu.addAction(Rearr_Circle_action)
Extras_menu.addAction(Rearr_Sugiyama_action)
Extras_menu.addAction(Rearr_Grid_action)
Extras_menu.addAction(Rearr_Grid_with_Sy_action)
Extras_menu.addAction(Rearr_Circle_slow_action)
Extras_menu.addAction(Rearr_Sugiyama_slow_action)
Extras_menu.addAction(Rearr_Grid_slow_action)
Help_menu = menu_bar.addMenu('&Help')
Help_menu.addAction(help_action)
#toolbar = self.addToolBar('&Exit')
#toolbar.addAction(exit_action)
QQWidget = QWidget()
# self.mainmenu=QMainWindow.menuBar(self)
# Start
wlayout = QtWidgets.QHBoxLayout()
# Global layout 1 horizontal
hlayout = QtWidgets.QFormLayout() # sublayout 4:horizontal, vertical grid, sheet
# glayout = QtWidgets.QGridLayout()
# flayout = QtWidgets.QFormLayout()
flayout = QtWidgets.QFormLayout()
flayout.setGeometry(QtCore.QRect(10, 10, 30, 50))
vlayout = QtWidgets.QVBoxLayout()
# sub layout add component such as button
self.sld1 = QSlider(Qt.Vertical, self)
self.sld1.setGeometry(20, 50, 40, 50)
self.sld1.setMinimum(1)
self.sld1.setFixedHeight(200)
self.sld1.setSliderPosition(30)
self.sld1.setMaximum(500)
self.sld1.setTickPosition(QSlider.TicksBothSides)
self.sld1.valueChanged[int].connect(self.changevalue)
hlayout.addWidget(self.sld1)
start_button = QtWidgets.QPushButton("Start")
start_button.clicked.connect(self.doStartAction)
flayout.addWidget(start_button)
stop_button = QtWidgets.QPushButton("Stop")
stop_button.clicked.connect(self.doStopAction)
flayout.addWidget(stop_button)
flayout.addWidget(QtWidgets.QLineEdit())
gwidget_graph = QGraphicsView(None)
gwidget_graph.setGeometry(40, 40, 1800, 800)
gwidget_graph.setStyleSheet("background-color: white")
scene = Graphmodel(None, 100, 100, 1800, 800)
gwidget_graph.setScene(scene) # Graphm
vlayout.addWidget(gwidget_graph)
# vlayout.addWidget(QtWidgets.QPushButton(str(3)))
gwidget_bottom = QGraphicsView(None)
gwidget_bottom.setGeometry(40, 40, 1800, 800)
gwidget_bottom.setStyleSheet("background-color: white")
vlayout.addWidget(gwidget_bottom)
hwg = QtWidgets.QWidget() # prepare 4 component
vwg = QtWidgets.QWidget()
gwg = QtWidgets.QWidget()
fwg = QtWidgets.QWidget()
hwg.setLayout(hlayout) # 4 components set sub layout
fwg.setLayout(flayout)
vwg.setLayout(vlayout)
# gwg.setLayout(glayout)
wlayout.addWidget(hwg) # 4 componets add to global layout
wlayout.addWidget(fwg)
wlayout.addWidget(vwg)
wlayout.addWidget(gwg)
QQWidget.setLayout(wlayout) # main Window set global layout
self.setGeometry(20, 20, 800, 600)
self.setCentralWidget(QQWidget)
def changevalue(self, value):
self.sld1.setValue(value)
def doStartAction(self, value):
print("Start data")
def doStopAction(self, value):
print("Stop data")
def open_file_action(self):
filename,filetype = QFileDialog.getOpenFileName(self,
"Open File")
if filename:
for textEdit_MSW in self.mdi.subWindowList():
textEdit=textEdit_MSW.widget()
if textEdit.filename == filename:
self.mdi.setActiveSubWindow(textEdit_MSW)
break
#else:
#self.loadFile(filename)
def loadFile(self, filename):
textEdit = textedit.TextEdit(filename)
try:
textEdit.load()
except EnvironmentError as e:
QMessageBox.warning(self, " Load Error",
"Failed to load {0}: {1}".format(filename, e))
textEdit.close()
del textEdit
else:
self.mdi.addSubWindow(textEdit)
textEdit.show()
def new_file_action(self):
vlayout = QtWidgets.QVBoxLayout()
gwidget_graph = QGraphicsView(None)
gwidget_graph.setGeometry(40, 40, 1800, 800)
gwidget_graph.setStyleSheet("background-color: white")
scene = Graphmodel(None, 100, 100, 1800, 800)
gwidget_graph.setScene(scene) # Graphm
vlayout.addWidget(gwidget_graph)
# vlayout.addWidget(QtWidgets.QPushButton(str(3)))
gwidget_bottom = QGraphicsView(None)
gwidget_bottom.setGeometry(40, 40, 1800, 800)
gwidget_bottom.setStyleSheet("background-color: white")
vlayout.addWidget(gwidget_bottom)
# prepare 4 component
vwg = QtWidgets.QWidget()
vwg.setLayout(vlayout)
# gwg.setLayout(glayout)
subQQWidget = QWidget()
subQQWidget.setLayout(vlayout) # main Window set global layout
self.setGeometry(20, 20, 800, 600)
self.setCentralWidget(subQQWidget)
def act_gui_file (self):
m = re.search(r"^.*\.(.*)$",self.notebook.select())
if m:
return(self.notebook.children[m.group(1)])
else:
return(None)
def set_zoomfaktor(self, fac):
act_gui_file = self.act_gui_file()
if act_gui_file:
act_gui_file.graphmodel.set_zoomfaktor(fac)
def zoom_in_block_action(self):
self.set_zoomfaktor(0.8)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
win = MyWindow()
win.show()
sys.exit(app.exec_())