Source code for gemviz.tiledserverdialog
from PyQt5 import QtWidgets
from . import utils
from .user_settings import settings
TILED_SERVER_SETTINGS_KEY = "tiled_server"
# TODO: remove testing URLs before production:
LOCALHOST_URL = "http://localhost:8020"
TESTING_URL = "http://otz.xray.aps.anl.gov:8020"
[docs]
class TiledServerDialog(QtWidgets.QDialog):
"""User chooses which tiled server from a few options."""
# UI file name matches this module, different extension
ui_file = utils.getUiFileName(__file__)
def __init__(self, parent):
self.parent = parent
super().__init__(parent)
utils.myLoadUi(self.ui_file, baseinstance=self)
self.setup()
def setup(self):
self.setModal(True)
self.other_button.toggled.connect(self.enableOther)
def enableOther(self):
self.other_url.setEnabled(self.other_button.isChecked())
# static method to create the dialog and return selected server URL
# ref: https://stackoverflow.com/questions/18196799
# How can I show a PyQt modal dialog and get data
# out of its controls once it's closed?
@staticmethod
def getServer(parent):
dialog = TiledServerDialog(parent)
recent_servers_str = settings.getKey(TILED_SERVER_SETTINGS_KEY)
recent_servers = recent_servers_str.split(",") if recent_servers_str else []
server = recent_servers[0] if recent_servers else ""
if server != "":
dialog.url_button.setText(server)
dialog.url_button.setChecked(True)
else:
dialog.url_button.setEnabled(False)
dialog.localhost_button.setChecked(True)
choices = {
dialog.localhost_button: LOCALHOST_URL,
dialog.url_button: server,
}
parent.setStatus("Choose which tiled server to use ...")
ok_selected = dialog.exec()
selected = None
if not ok_selected:
return
for button, server in choices.items():
if button.isChecked():
selected = server
break
if selected is None and dialog.other_button.isChecked():
selected = dialog.other_url.text()
return selected
# -----------------------------------------------------------------------------
# :copyright: (c) 2023-2024, UChicago Argonne, LLC
#
# Distributed under the terms of the Argonne National Laboratory Open Source License.
#
# The full license is in the file LICENSE.txt, distributed with this software.
# -----------------------------------------------------------------------------