class SWBFWindow(QMainWindow): def __init__(self, w, h): super().__init__() self._runner = Runner() self.setFixedSize(w, h) self.setWindowTitle('SWBF Server') # Layout self._main_widget = QWidget() self._main_grid = QGridLayout(self._main_widget) self.setCentralWidget(self._main_widget) # Statusbar self.statusBar().showMessage('Ready') # Menubar file_menu = self.menuBar().addMenu('&File') file_menu.addAction(QAction('&Open', self)) file_menu.addAction(QAction('&Exit', self)) # Toolbar toolbar = self.addToolBar('Run') self.run = QToolButton() self.run.setDefaultAction( QAction(self.style().standardIcon(QStyle.SP_MediaPlay), '&Run', self)) self.run.setDisabled(True) self.stop = QToolButton() self.stop.setDefaultAction( QAction(self.style().standardIcon(QStyle.SP_MediaStop), '&Stop', self)) self.stop.setDisabled(True) toolbar.addWidget(self.run) toolbar.addWidget(self.stop) # Executable selection self._file_select_wrapper = QWidget() self._file_select = QHBoxLayout(self._file_select_wrapper) self._file_select_button = QPushButton('Select Executable') self._file_select_value = QLineEdit('') self._file_select.addWidget(self._file_select_button) self._file_select.addWidget(self._file_select_value) if QFileInfo(STEAM_PATH).exists(): self._file_select_value.setText(STEAM_PATH) # elif QFileInfo(GOG_PATH).exists(): # self._file_select_value.setText(GOG_PATH) # Tab widget self._tabs = QTabWidget() self._tabs.addTab(ServerTab('Server 1', self._tabs, 0), 'Server 1') #self.add_tab = QWidget() # self.tabs.addTab(self.add_tab, '+') # self.tabs.currentChanged.connect(self._tab_changed) self._main_grid.addWidget(self._file_select_wrapper) self._main_grid.addWidget(self._tabs) # Events self._file_select_button.clicked.connect(self._open_file_dialog) self._file_select_value.textChanged.connect(self._check_exe) self.run.clicked.connect(self._start_server) self.stop.clicked.connect(self._stop_server) # Init self._check_exe() def _check_exe(self): if self._file_select_value.text(): self.run.setDisabled(False) def _start_server(self): self._runner.add_process(self._file_select_value.text(), self._tabs.currentWidget().options()) self.run.setDisabled(True) self.stop.setDisabled(False) def _stop_server(self): self._runner.stop_process() self.run.setDisabled(False) self.stop.setDisabled(True) def _open_file_dialog(self): dialog = QFileDialog(filter='*.exe') if dialog.exec_(): self._file_select_value.setText(dialog.selectedFiles()[0]) def _tab_changed(self, index): if index == self._tabs.count() - 1: new_index = self._tabs.count() tab_name = 'Server ' + str(new_index) new_tab = ServerTab(tab_name, self._tabs, new_index + 1) self._tabs.addTab(new_tab, tab_name) self._tabs.setTabOrder(new_tab, self.add_tab)
from runner import Runner from new_process import NewProcess runner = Runner() runner.add_process(NewProcess(1, 4, 3, 2)) runner.add_process(NewProcess(2, 2, 5, 3)) runner.add_process(NewProcess(3, 4, 3, 3)) runner.run(2) runner.print_order()