def downloadServer(self): QtWidgets.qApp.setOverrideCursor(Qt.WaitCursor) if sys.maxsize > 2 ** 32: bits = 'x86_64' else: bits = 'i386' url = "%s/releases/download/v%s/ts2-sim-server_%s_%s_%s.zip" % ( ts2.get_info()['server_repo'], ts2.get_info()['server_version'], ts2.get_info()['server_version'], ts2.PLATFORMS_MAP[sys.platform], bits ) response = requests.get(url) try: with zipfile.ZipFile(BytesIO(response.content)) as zf: zf.extract(settings.serverFileName, settings.serverDir) except zipfile.BadZipFile: QtWidgets.QMessageBox.critical(self, "Download Error", "Error while downloading %s." "Download server manually and put the executable in the server dir" % url) self.updateServerLabel() QtWidgets.qApp.restoreOverrideCursor() return st = os.stat(settings.serverLoc) os.chmod(settings.serverLoc, st.st_mode | stat.S_IEXEC) self.updateServerLabel() QtWidgets.qApp.restoreOverrideCursor()
def __init__(self, parent): """Constructor for the DownloadSimulationsDialog.""" super().__init__(parent) self.setWindowTitle(self.tr("Download simulations from server")) label = QtWidgets.QLabel(self) label.setText(self.tr("Download server: ")) self.url = QtWidgets.QLineEdit(self) self.url.setText(ts2.get_info().get('simulations_repo')) hlayout = QtWidgets.QHBoxLayout() hlayout.addWidget(label) hlayout.addWidget(self.url) note = QtWidgets.QLabel(self) note.setText( self.tr("<em>The download server must be the url of a " "valid GitHub repository.</em>")) buttonBox = QtWidgets.QDialogButtonBox() buttonBox.addButton(self.tr("Download"), QtWidgets.QDialogButtonBox.AcceptRole) buttonBox.addButton(self.tr("Cancel"), QtWidgets.QDialogButtonBox.RejectRole) vlayout = QtWidgets.QVBoxLayout() vlayout.addLayout(hlayout) vlayout.addSpacing(5) vlayout.addWidget(note) vlayout.addSpacing(10) vlayout.addWidget(buttonBox) self.setLayout(vlayout) buttonBox.accepted.connect(self.accept) buttonBox.rejected.connect(self.reject)
def __init__(self, parent): """Constructor for the DownloadSimulationsDialog.""" super().__init__(parent) self.setWindowTitle( self.tr("Download simulations from server") ) label = QtWidgets.QLabel(self) label.setText(self.tr("Download server: ")) self.url = QtWidgets.QLineEdit(self) self.url.setText(ts2.get_info().get('simulations_repo')) hlayout = QtWidgets.QHBoxLayout() hlayout.addWidget(label) hlayout.addWidget(self.url) note = QtWidgets.QLabel(self) note.setText(self.tr("<em>The download server must be the url of a " "valid GitHub repository.</em>")) buttonBox = QtWidgets.QDialogButtonBox() buttonBox.addButton(self.tr("Download"), QtWidgets.QDialogButtonBox.AcceptRole) buttonBox.addButton(self.tr("Cancel"), QtWidgets.QDialogButtonBox.RejectRole) vlayout = QtWidgets.QVBoxLayout() vlayout.addLayout(hlayout) vlayout.addSpacing(5) vlayout.addWidget(note) vlayout.addSpacing(10) vlayout.addWidget(buttonBox) self.setLayout(vlayout) buttonBox.accepted.connect(self.accept) buttonBox.rejected.connect(self.reject)
## Flags for the stuff to document.. autodoc_default_flags = [ "members", #'undoc-members', #'private-members', "special-members", #'inherited-members', # "exclude-members ", "show-inheritance", ] autoclass_content = "class" ## assign template var {{INFO.foo}} ## variables/Constants, version. www etc, git.repos from ts2 html_context = {"INFO": ts2.get_info()} # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. # needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ "sphinx.ext.autodoc", "sphinx.ext.doctest", "sphinx.ext.intersphinx", "sphinx.ext.todo", "sphinx.ext.coverage",
## Flags for the stuff to document.. autodoc_default_flags = [ 'members', #'undoc-members', #'private-members', 'special-members', #'inherited-members', #"exclude-members ", 'show-inheritance' ] autoclass_content = "class" ## assign template var {{INFO.foo}} ## variables/Constants, version. www etc, git.repos from ts2 html_context = {"INFO": ts2.get_info() } # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.intersphinx', 'sphinx.ext.todo', 'sphinx.ext.coverage',
def __init__(self, parent, tab=0): """Constructor for the OpenDialog.""" super().__init__(parent) self.setWindowTitle(self.tr("Open Simulation")) self.setMinimumWidth(800) self.setMinimumHeight(800) m = 5 containerLayout = QtWidgets.QHBoxLayout() containerLayout.setContentsMargins(m, m, m, m) self.setLayout(containerLayout) # ======================================== # Left Bar + navigation self.leftBar = QtWidgets.QVBoxLayout() self.leftBar.setContentsMargins(0, 0, 0, 0) containerLayout.addLayout(self.leftBar) self.buttGroup = QtWidgets.QButtonGroup() self.buttGroup.setExclusive(True) self.leftBar.addWidget(self._make_nav_button(self.tr("Sims"), NAV.sims)) self.leftBar.addWidget( self._make_nav_button(self.tr("Recent"), NAV.recent)) self.leftBar.addWidget( self._make_nav_button(self.tr("Browse"), NAV.filesystem)) self.leftBar.addStretch(20) # ================================================================================== # Stack widget for main mainLayout = QtWidgets.QVBoxLayout() mainLayout.setContentsMargins(0, 0, 0, 0) containerLayout.addLayout(mainLayout) self.stackWidget = QtWidgets.QStackedWidget() mainLayout.addWidget(self.stackWidget, 200) # ================= # Downloaded Sims self.downloadWidget = QtWidgets.QWidget() self.downloadLayout = QtWidgets.QVBoxLayout() self.downloadLayout.setContentsMargins(0, 0, 0, 0) self.downloadWidget.setLayout(self.downloadLayout) self.stackWidget.addWidget(self.downloadWidget) tbBrowse = QtWidgets.QToolBar() self.downloadLayout.addWidget(tbBrowse) self.txtUrl = QtWidgets.QLineEdit(self) self.txtUrl.setText(ts2.get_info().get('simulations_repo')) tbBrowse.addWidget(self.txtUrl) self.buttDownload = tbBrowse.addAction("Download", self.onDownload) self.treeSims = QtWidgets.QTreeWidget() self.downloadLayout.addWidget(self.treeSims) hitem = self.treeSims.headerItem() hitem.setText(C.name, "Name") hitem.setText(C.description, "Description") hitem.setText(C.file_name, "File") hitem.setText(C.file_path, "Path") self.treeSims.setColumnHidden(C.file_path, True) self.treeSims.header().setStretchLastSection(True) self.treeSims.itemDoubleClicked.connect(self.onTreeSimsItemDblClicked) # ===================================== # Recent self.treeRecent = QtWidgets.QTreeWidget() self.stackWidget.addWidget(self.treeRecent) hitem = self.treeRecent.headerItem() hitem.setText(0, "Path") self.treeRecent.itemDoubleClicked.connect( self.onTreeRecentItemDblClicked) # ===================================== # Browse self.filesModel = QtWidgets.QFileSystemModel() self.filesModel.setRootPath(QtCore.QDir.homePath()) self.filesModel.setNameFilters(["*.ts2", "*.json"]) self.treeFiles = QtWidgets.QTreeView() self.treeFiles.setModel(self.filesModel) self.stackWidget.addWidget(self.treeFiles) self.treeFiles.doubleClicked.connect(self.onTreeBrowseItemDblClicked) # ================================= # Bottom status self.statusBar = widgets.StatusBar() mainLayout.addWidget(self.statusBar, 0) if settings.debug: self.statusBar.showMessage(settings.simulationsDir) self.buttGroup.buttonToggled.connect(self.onNavButtClicked) self.buttGroup.button(tab).setChecked(True)
def __init__(self, parent, tab=0): """Constructor for the OpenDialog.""" super().__init__(parent) self.setWindowTitle(self.tr("Open Simulation")) self.setMinimumWidth(800) self.setMinimumHeight(800) m = 5 containerLayout = QtWidgets.QHBoxLayout() containerLayout.setContentsMargins(m, m, m, m) self.setLayout(containerLayout) # ======================================== # Left Bar + navigation self.leftBar = QtWidgets.QVBoxLayout() self.leftBar.setContentsMargins(0, 0, 0, 0) containerLayout.addLayout(self.leftBar) self.buttGroup = QtWidgets.QButtonGroup() self.buttGroup.setExclusive(True) self.leftBar.addWidget(self._make_nav_button(self.tr("Sims"), NAV.sims)) self.leftBar.addWidget( self._make_nav_button(self.tr("Recent"), NAV.recent)) self.leftBar.addWidget( self._make_nav_button(self.tr("Browse"), NAV.filesystem)) self.leftBar.addWidget( self._make_nav_button(self.tr("Network"), NAV.network)) self.leftBar.addStretch(20) # ================================================================================== # Stack widget for main mainLayout = QtWidgets.QVBoxLayout() mainLayout.setContentsMargins(0, 0, 0, 0) containerLayout.addLayout(mainLayout) self.stackWidget = QtWidgets.QStackedWidget() mainLayout.addWidget(self.stackWidget, 200) # ================= # Downloaded Sims self.downloadWidget = QtWidgets.QWidget() self.downloadLayout = QtWidgets.QVBoxLayout() self.downloadLayout.setContentsMargins(0, 0, 0, 0) self.downloadWidget.setLayout(self.downloadLayout) self.stackWidget.addWidget(self.downloadWidget) tbBrowse = QtWidgets.QToolBar() self.downloadLayout.addWidget(tbBrowse) self.txtUrl = QtWidgets.QLineEdit(self) self.txtUrl.setText(ts2.get_info().get('simulations_repo')) tbBrowse.addWidget(self.txtUrl) self.buttDownload = tbBrowse.addAction(self.tr("Download"), self.onDownload) self.treeSims = QtWidgets.QTreeWidget() self.downloadLayout.addWidget(self.treeSims) hitem = self.treeSims.headerItem() hitem.setText(C.name, "Name") hitem.setText(C.description, "Description") hitem.setText(C.file_name, "File") hitem.setText(C.file_path, "Path") self.treeSims.setColumnHidden(C.file_path, True) self.treeSims.header().setStretchLastSection(True) self.treeSims.itemDoubleClicked.connect(self.onTreeSimsItemDblClicked) # ===================================== # Recent self.treeRecent = QtWidgets.QTreeWidget() self.stackWidget.addWidget(self.treeRecent) hitem = self.treeRecent.headerItem() hitem.setText(0, "Path") self.treeRecent.itemDoubleClicked.connect( self.onTreeRecentItemDblClicked) # ===================================== # Browse self.filesModel = QtWidgets.QFileSystemModel() self.filesModel.setRootPath(QtCore.QDir.homePath()) self.filesModel.setNameFilters(["*.ts2", "*.json"]) self.filesModel.setNameFilterDisables(False) self.treeFiles = QtWidgets.QTreeView() self.treeFiles.setModel(self.filesModel) self.treeFiles.setColumnWidth(0, 300) self.treeFiles.setExpanded( self.filesModel.index(QtCore.QDir.homePath()), True) path = QtCore.QDir.home() while path.cdUp(): self.treeFiles.setExpanded(self.filesModel.index(path.path()), True) self.stackWidget.addWidget(self.treeFiles) self.treeFiles.doubleClicked.connect(self.onTreeBrowseItemDblClicked) # ================================= # Network self.networkWidget = QtWidgets.QWidget() self.networkLayout = QtWidgets.QVBoxLayout() self.networkLayout.setContentsMargins(0, 0, 0, 0) self.networkWidget.setLayout(self.networkLayout) self.stackWidget.addWidget(self.networkWidget) networkLabel = QtWidgets.QLabel( self.tr("Connect to simulation server")) networkLabel.setStyleSheet("font-size: 15px; font-weight: bold;") labelLayout = QtWidgets.QHBoxLayout() labelLayout.addStretch(1) labelLayout.addWidget(networkLabel) labelLayout.addStretch(1) self.networkLayout.addLayout(labelLayout) tbNetworkBarLayout = QtWidgets.QHBoxLayout() self.networkLayout.addLayout(tbNetworkBarLayout) tbNetworkBarLayout.addWidget(QtWidgets.QLabel(self.tr("Host:"))) self.networkServer = QtWidgets.QLineEdit(self) self.networkServer.setText("localhost") tbNetworkBarLayout.addWidget(self.networkServer, 2) tbNetworkBarLayout.addWidget(QtWidgets.QLabel(self.tr("Port:"))) self.networkPort = QtWidgets.QLineEdit(self) self.networkPort.setInputMask("00000") self.networkPort.setText("22222") tbNetworkBarLayout.addWidget(self.networkPort, 1) self.connectAction = QtWidgets.QAction(self.tr("Connect")) self.connectAction.triggered.connect(self.onConnect) btn = QtWidgets.QToolButton() btn.setDefaultAction(self.connectAction) self.buttConnect = tbNetworkBarLayout.addWidget(btn) self.networkLayout.addStretch(1) # ================================= # Bottom status self.statusBar = widgets.StatusBar() mainLayout.addWidget(self.statusBar, 0) if settings.debug: self.statusBar.showMessage(settings.simulationsDir) self.buttGroup.buttonToggled.connect(self.onNavButtClicked) self.buttGroup.button(tab).setChecked(True)
def __init__(self, parent, tab=0): """Constructor for the OpenDialog.""" super().__init__(parent) self.setWindowTitle( self.tr("Open Simulation") ) self.setMinimumWidth(800) self.setMinimumHeight(800) m = 5 containerLayout = QtWidgets.QHBoxLayout() containerLayout.setContentsMargins(m, m, m, m) self.setLayout(containerLayout) # ======================================== # Left Bar + navigation self.leftBar = QtWidgets.QVBoxLayout() self.leftBar.setContentsMargins(0, 0, 0, 0) containerLayout.addLayout(self.leftBar) self.buttGroup = QtWidgets.QButtonGroup() self.buttGroup.setExclusive(True) self.leftBar.addWidget(self._make_nav_button(self.tr("Sims"), NAV.sims)) self.leftBar.addWidget( self._make_nav_button(self.tr("Recent"), NAV.recent) ) self.leftBar.addWidget( self._make_nav_button(self.tr("Browse"), NAV.filesystem) ) self.leftBar.addStretch(20) # ================================================================================== # Stack widget for main mainLayout = QtWidgets.QVBoxLayout() mainLayout.setContentsMargins(0, 0, 0, 0) containerLayout.addLayout(mainLayout) self.stackWidget = QtWidgets.QStackedWidget() mainLayout.addWidget(self.stackWidget, 200) # ================= # Downloaded Sims self.downloadWidget = QtWidgets.QWidget() self.downloadLayout = QtWidgets.QVBoxLayout() self.downloadLayout.setContentsMargins(0, 0, 0, 0) self.downloadWidget.setLayout(self.downloadLayout) self.stackWidget.addWidget(self.downloadWidget) tbBrowse = QtWidgets.QToolBar() self.downloadLayout.addWidget(tbBrowse) self.txtUrl = QtWidgets.QLineEdit(self) self.txtUrl.setText(ts2.get_info().get('simulations_repo')) tbBrowse.addWidget(self.txtUrl) self.buttDownload = tbBrowse.addAction("Download", self.onDownload) self.treeSims = QtWidgets.QTreeWidget() self.downloadLayout.addWidget(self.treeSims) hitem = self.treeSims.headerItem() hitem.setText(C.name, "Name") hitem.setText(C.description, "Description") hitem.setText(C.file_name, "File") hitem.setText(C.file_path, "Path") self.treeSims.setColumnHidden(C.file_path, True) self.treeSims.header().setStretchLastSection(True) self.treeSims.itemDoubleClicked.connect(self.onTreeSimsItemDblClicked) # ===================================== # Recent self.treeRecent = QtWidgets.QTreeWidget() self.stackWidget.addWidget(self.treeRecent) hitem = self.treeRecent.headerItem() hitem.setText(0, "Path") self.treeRecent.itemDoubleClicked.connect( self.onTreeRecentItemDblClicked ) # ===================================== # Browse self.filesModel = QtWidgets.QFileSystemModel() self.filesModel.setRootPath(QtCore.QDir.homePath()) self.filesModel.setNameFilters(["*.ts2", "*.json"]) self.treeFiles = QtWidgets.QTreeView() self.treeFiles.setModel(self.filesModel) self.stackWidget.addWidget(self.treeFiles) self.treeFiles.doubleClicked.connect( self.onTreeBrowseItemDblClicked ) # ================================= # Bottom status self.statusBar = widgets.StatusBar() mainLayout.addWidget(self.statusBar, 0) if settings.debug: self.statusBar.showMessage(settings.simulationsDir) self.buttGroup.buttonToggled.connect(self.onNavButtClicked) self.buttGroup.button(tab).setChecked(True)