Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions mslib/mscolab/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -1012,6 +1012,7 @@ def get_operation_view_settings():
return jsonify({"success": False, "message": message, "settings": settings}), status_code



if APP.config['USE_SAML2']:
# setup idp login config
setup_saml2_backend()
Expand Down
62 changes: 62 additions & 0 deletions mslib/msui/mscolab.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,68 @@ def wrapper(self, *args, **vargs):
return wrapper


class ManageViewDialog(QtWidgets.QDialog):
def __init__(self, mscolab, parent=None):
super().__init__(parent)
self.ui = ui_manage_view.Ui_Form()
self.ui.setupUi(self)
self.ui.listView.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection)
self.setModal(False)
self.setWindowFlags(QtCore.Qt.Dialog | QtCore.Qt.WindowCloseButtonHint)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose, True)
self.mscolab = mscolab


self.setWindowTitle("Manage Views")
self.model = QtGui.QStandardItemModel()
self.model = QtGui.QStandardItemModel()
self.ui.listView.setModel(self.model)

self.ui.pushButton.clicked.connect(self.apply_selected_view)
self.refresh_shared_views()

def apply_selected_view(self):
"""Apply settings for selected views in listView."""
selected_indexes = self.ui.listView.selectedIndexes()
if not selected_indexes:
QtWidgets.QMessageBox.warning(self, "No Selection", "Please select at least one shared view to apply.")
return
index = selected_indexes[0]
for index in selected_indexes:
item = self.ui.listView.model().itemFromIndex(index)
if not item:
continue
data = item.data(QtCore.Qt.UserRole)
view_name = data['view_name']
op_id = data['op_id']
view_settings = self.mscolab.get_sharedView_settings(view_name, op_id)
view_type = view_settings.get("view_type")
if view_settings is None:
QtWidgets.QMessageBox.warning(self, "Error",
f"Failed to retrieve settings for {view_name} by user {data['username']}")
continue
self.mscolab.ui.create_view(view_type, model=self.mscolab.waypoints_model, restore_settings=view_settings)
item = QtWidgets.QListWidgetItem(view_name)
self.ui.listWidget.addItem(item)

def refresh_shared_views(self):
url = urljoin(self.mscolab.mscolab_server_url, "get_views_name")
data = {"op_id": self.mscolab.active_op_id, "token": self.mscolab.token}
if hasattr(self.mscolab, 'auth') and self.mscolab.auth:
response = requests.get(url, params=data, auth=self.mscolab.auth, timeout=(5, 30))
else:
response = requests.get(url, params=data, timeout=(5, 30))
response.raise_for_status()
views = response.json().get("views", [])
self.model.clear()
for view in views:
item = QtGui.QStandardItem(f"{view['view_name']} (by {view['username']})")
item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
item.setData(view, QtCore.Qt.UserRole)
self.model.appendRow(item)
return True


class ManageViewDialog(QtWidgets.QDialog):
def __init__(self, mscolab, parent=None):
super().__init__(parent)
Expand Down
Loading