Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

updated_multiple_flightpath_dockwidget #1544

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
b6e1579
updated_multiple_flightpath_dockwidget
Jatin2020-24 Sep 2, 2022
78bba4b
set_activated_track_as_uncheckable
Jatin2020-24 Sep 5, 2022
8b8ba98
changed_flags_naming
Jatin2020-24 Sep 5, 2022
74e08ae
improved_list_naming
Jatin2020-24 Sep 5, 2022
cf4fd84
flickering_topview_solved
Jatin2020-24 Oct 15, 2022
1f28853
change_color_of_selected_flightpath
Jatin2020-24 Oct 16, 2022
1f414bc
show_color_icon
Jatin2020-24 Oct 16, 2022
012cc6f
update_previously_activated_flighttrack_wp_model_in_dict
Jatin2020-24 Oct 18, 2022
8744701
check_previously_activated_track
Jatin2020-24 Oct 20, 2022
dc675fb
change_linewidth
Jatin2020-24 Oct 22, 2022
4d91dc9
plot_operations_topview
Jatin2020-24 Oct 28, 2022
947f2b4
bug_fixes
Jatin2020-24 Oct 31, 2022
4e16c37
checkmark_protection_behaviour_updated
Jatin2020-24 Nov 1, 2022
131cedb
show_flighttrack_color_icon
Jatin2020-24 Nov 1, 2022
8a080ae
defined_coloring_of_operation_flightpaths
Jatin2020-24 Nov 2, 2022
c3edd29
add_todos
Jatin2020-24 Nov 2, 2022
59ff1a5
add_comments
Jatin2020-24 Nov 2, 2022
6a9860d
fixed_coloring_of_flighttracks
Jatin2020-24 Nov 4, 2022
6930d8f
clear_operation_list_after_logout
Jatin2020-24 Nov 5, 2022
da3cd00
signals_disconnected_after_logout
Jatin2020-24 Nov 6, 2022
94ac7b3
update_last_used_operation
Jatin2020-24 Nov 6, 2022
85206ee
fixed_test
Jatin2020-24 Nov 6, 2022
4b7da8a
fixed_color
Jatin2020-24 Nov 6, 2022
9fe8fc7
implemented_operation_permission_revoked
Jatin2020-24 Nov 6, 2022
303dfe0
revoked_mscolab_permission
Jatin2020-24 Nov 6, 2022
1526358
change_operations_linewidth
Jatin2020-24 Nov 6, 2022
b93a3c5
fixed_uncheck_operations
Jatin2020-24 Nov 6, 2022
e067250
remove_filter_flightpaths_test
Jatin2020-24 Nov 6, 2022
befa591
color_change_updated
Jatin2020-24 Nov 7, 2022
c4d93d7
removed_activation_of_operations_on_addition
Jatin2020-24 Nov 7, 2022
ae6c72d
Update msui.py
Jatin2020-24 Nov 7, 2022
c26be62
fixed_tracks_coloring
Jatin2020-24 Nov 7, 2022
fd4dc39
add_todos
Jatin2020-24 Nov 7, 2022
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
10 changes: 0 additions & 10 deletions .github/workflows/testing-develop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,3 @@ jobs:
secrets:
PAT: ${{ secrets.PAT }}

test-filter-flight-paths:
uses:
./.github/workflows/testing.yml
with:
xdist: no
branch_name: filter_flight_paths
event_name: ${{ github.event_name }}
secrets:
PAT: ${{ secrets.PAT }}

4 changes: 2 additions & 2 deletions mslib/msui/kmloverlay_dockwidget.py
Original file line number Diff line number Diff line change
Expand Up @@ -478,7 +478,7 @@ def select_file(self, filenames):
return
text = filename
if text not in self.dict_files: # prevents same file being added twice
# initializing the nested dictionary dict_files
# initializing the nested dictionary dict_flighttrack
self.dict_files[text] = {}
self.dict_files[text]["patch"] = None
self.dict_files[text]["color"] = (0, 0, 0, 1)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

search for "colour_ft_vertices" this may be the initial color

Expand Down Expand Up @@ -536,7 +536,7 @@ def load_file(self):
Loads multiple KML Files simultaneously and constructs the
corresponding patches.
"""
for entry in self.dict_files.values(): # removes all patches from map, but not from dict_files
for entry in self.dict_files.values(): # removes all patches from map, but not from dict_flighttrack
if entry["patch"] is not None: # since newly initialized files will have patch:None
entry["patch"].remove()

Expand Down
26 changes: 24 additions & 2 deletions mslib/msui/mscolab.py
Original file line number Diff line number Diff line change
Expand Up @@ -414,6 +414,15 @@ class MSUIMscolab(QtCore.QObject):
"""
name = "Mscolab"

signal_activate_operation = QtCore.Signal(int, name="signal_activate_operation")
signal_operation_added = QtCore.Signal(int, str, name="signal_operation_added")
signal_operation_removed = QtCore.Signal(int, name="signal_operation_removed")
signal_login_mscolab = QtCore.Signal(str, str, name="signal_login_mscolab")
signal_logout_mscolab = QtCore.Signal(name="signal_logout_mscolab")
signal_listFlighttrack_doubleClicked = QtCore.Signal()
signal_permission_revoked = QtCore.Signal(int)
signal_render_new_permission = QtCore.Signal(int, str)

def __init__(self, parent=None, data_dir=None):
super(MSUIMscolab, self).__init__(parent)
self.ui = parent
Expand All @@ -429,8 +438,7 @@ def __init__(self, parent=None, data_dir=None):
self.ui.activeOperationDesc.setHidden(True)

# reset operation description label for flight tracks and open views
self.ui.listFlightTracks.itemDoubleClicked.connect(
lambda: self.ui.activeOperationDesc.setText("Select Operation to View Description."))
self.ui.listFlightTracks.itemDoubleClicked.connect(self.listFlighttrack_itemDoubleClicked)
self.ui.listViews.itemDoubleClicked.connect(
lambda: self.ui.activeOperationDesc.setText("Select Operation to View Description."))

Expand Down Expand Up @@ -611,6 +619,8 @@ def after_login(self, emailid, url, r):
# disable activate operation button
self.ui.actionActivateOperation.setEnabled(False)

self.signal_login_mscolab.emit(self.mscolab_server_url, self.token)

def fetch_gravatar(self, refresh=False):
email_hash = hashlib.md5(bytes(self.email.encode('utf-8')).lower()).hexdigest()
email_in_config = self.email in config_loader(dataset="gravatar_ids")
Expand Down Expand Up @@ -837,6 +847,7 @@ def add_operation(self):
self.error_dialog.showMessage('Your operation was created successfully')
op_id = self.get_recent_op_id()
self.conn.handle_new_operation(op_id)
self.signal_operation_added.emit(op_id, path)
else:
self.error_dialog = QtWidgets.QErrorMessage()
self.error_dialog.showMessage('The path already exists')
Expand Down Expand Up @@ -1003,6 +1014,7 @@ def handle_delete_operation(self):
res = requests.post(url, data=data)
res.raise_for_status()
self.reload_operations()
self.signal_operation_removed.emit(self.active_op_id)
except requests.exceptions.RequestException as e:
logging.debug(e)
show_popup(self.ui, "Error", "Some error occurred! Could not delete operation.")
Expand Down Expand Up @@ -1301,6 +1313,7 @@ def render_new_permission(self, op_id, u_id):
widgetItem.access_level = operation["access_level"]
widgetItem.active_operation_desc = operation["description"]
self.ui.listOperationsMSC.addItem(widgetItem)
self.signal_render_new_permission.emit(operation["op_id"], operation["path"])
if self.chat_window is not None:
self.chat_window.load_users()
else:
Expand Down Expand Up @@ -1383,6 +1396,7 @@ def handle_revoke_permission(self, op_id, u_id):
# on import permissions revoked name can not taken from the operation list,
# because we update the list first by reloading it.
show_popup(self.ui, "Permission Revoked", "Access to an operation was revoked")
self.signal_permission_revoked.emit(op_id)

@QtCore.Slot(int)
def handle_operation_deleted(self, op_id):
Expand Down Expand Up @@ -1526,6 +1540,8 @@ def set_active_op_id(self, item):
self.active_operation_desc = item.active_operation_desc
self.waypoints_model = None

self.signal_activate_operation.emit(self.active_op_id)

self.inactive_op_id = None
font = QtGui.QFont()
for i in range(self.ui.listOperationsMSC.count()):
Expand Down Expand Up @@ -1763,6 +1779,10 @@ def handle_export_msc(self, extension, function, pickertype):
show_popup(self.ui, "Error", "Your Connection is expired. New Login required!")
self.logout()

def listFlighttrack_itemDoubleClicked(self):
self.ui.activeOperationDesc.setText("Select Operation to View Description.")
self.signal_listFlighttrack_doubleClicked.emit()

def logout(self):
if self.mscolab_server_url is None:
return
Expand Down Expand Up @@ -1824,6 +1844,8 @@ def logout(self):
del self.settings["auth"][self.mscolab_server_url]
save_settings_qsettings('mscolab', self.settings)

self.signal_logout_mscolab.emit()

# Don't try to activate local flighttrack while testing
if "pytest" not in sys.modules:
# activate first local flighttrack after logging out
Expand Down
40 changes: 38 additions & 2 deletions mslib/msui/msui.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ class MSUI_ShortcutsDialog(QtWidgets.QDialog, ui_sh.Ui_ShortcutsDialog):
"""
Dialog showing shortcuts for all currently open windows
"""

def __init__(self):
super(MSUI_ShortcutsDialog, self).__init__(QtWidgets.QApplication.activeWindow())
self.setupUi(self)
Expand Down Expand Up @@ -336,6 +337,15 @@ class MSUIMainWindow(QtWidgets.QMainWindow, ui.Ui_MSUIMainWindow):
"""

viewsChanged = QtCore.pyqtSignal(name="viewsChanged")
signal_activate_flighttrack = QtCore.Signal(ft.WaypointsTableModel, name="signal_activate_flighttrack")
signal_activate_operation = QtCore.Signal(int, name="signal_activate_operation")
signal_operation_added = QtCore.Signal(int, str, name="signal_operation_added")
signal_operation_removed = QtCore.Signal(int, name="signal_operation_removed")
signal_login_mscolab = QtCore.Signal(str, str, name="signal_login_mscolab")
signal_logout_mscolab = QtCore.Signal(name="signal_logout_mscolab")
signal_listFlighttrack_doubleClicked = QtCore.Signal()
signal_permission_revoked = QtCore.Signal(int)
signal_render_new_permission = QtCore.Signal(int, str)

def __init__(self, mscolab_data_dir=None, *args):
super(MSUIMainWindow, self).__init__(*args)
Expand Down Expand Up @@ -426,6 +436,15 @@ def __init__(self, mscolab_data_dir=None, *args):
self.listFlightTracks.itemClicked.connect(lambda: self.listOperationsMSC.setCurrentItem(None))
self.listOperationsMSC.itemClicked.connect(lambda: self.listFlightTracks.setCurrentItem(None))

self.mscolab.signal_activate_operation.connect(self.activate_operation_slot)
self.mscolab.signal_operation_added.connect(self.add_operation_slot)
self.mscolab.signal_operation_removed.connect(self.remove_operation_slot)
self.mscolab.signal_login_mscolab.connect(lambda d, t: self.signal_login_mscolab.emit(d, t))
self.mscolab.signal_logout_mscolab.connect(lambda: self.signal_logout_mscolab.emit())
self.mscolab.signal_listFlighttrack_doubleClicked.connect(lambda: self.signal_listFlighttrack_doubleClicked.emit())
self.mscolab.signal_permission_revoked.connect(lambda op_id: self.signal_permission_revoked.emit(op_id))
self.mscolab.signal_render_new_permission.connect(lambda op_id, path: self.signal_render_new_permission.emit(op_id, path))

# Don't start the updater during a test run of msui
if "pytest" not in sys.modules:
self.updater = UpdaterUI(self)
Expand Down Expand Up @@ -490,6 +509,18 @@ def add_plugins(self):
self.add_import_plugins(picker_default)
self.add_export_plugins(picker_default)

@QtCore.Slot(int)
def activate_operation_slot(self, active_op_id):
self.signal_activate_operation.emit(active_op_id)

@QtCore.Slot(int, str)
def add_operation_slot(self, op_id, path):
self.signal_operation_added.emit(op_id, path)

@QtCore.Slot(int)
def remove_operation_slot(self, op_id):
self.signal_operation_removed.emit(op_id)

def add_plugin_submenu(self, name, extension, function, pickertype, plugin_type="Import"):
if plugin_type == "Import":
menu = self.menuImportFlightTrack
Expand Down Expand Up @@ -705,6 +736,7 @@ def activate_flight_track(self, item):
font.setBold(True)
item.setFont(font)
self.menu_handler()
self.signal_activate_flighttrack.emit(self.active_flight_track)

def update_active_flight_track(self, old_flight_track_name=None):
for i in range(self.listViews.count()):
Expand Down Expand Up @@ -738,7 +770,8 @@ def save_handler(self):
self.save_as_handler()

def save_as_handler(self):
"""Slot for the 'Save Active Flight Track As' menu entry.
"""
Slot for the 'Save Active Flight Track As' menu entry.
"""
default_filename = os.path.join(self.last_save_directory, self.active_flight_track.name + ".ftml")
file_type = ["Flight track (*.ftml)"]
Expand Down Expand Up @@ -809,7 +842,10 @@ def create_view(self, _type, model):
view_window = None
if _type == "topview":
# Top view.
view_window = topview.MSUITopViewWindow(parent=self, model=model)
view_window = topview.MSUITopViewWindow(parent=self, model=model,
active_flighttrack=self.active_flight_track,
mscolab_server_url=self.mscolab.mscolab_server_url,
token=self.mscolab.token)
view_window.mpl.resize(layout['topview'][0], layout['topview'][1])
if layout["immutable"]:
view_window.mpl.setFixedSize(layout['topview'][0], layout['topview'][1])
Expand Down
Loading