From a51c5ab3d65f4b6fd94ee5e6dceb66ccd90c4b1f Mon Sep 17 00:00:00 2001 From: Rohit prasad Date: Thu, 4 Jul 2024 18:04:32 +0530 Subject: [PATCH] feat: New UI for option in topview & sideview (#2407) * UI and line thickness * line thickness working * every new feature working in option * Ui of the sideview * topview completely done without the ok * both topview and sideview working * key error fixed * key error fixed in sideview * ATQ feedback change UI --- mslib/msui/mpl_pathinteractor.py | 67 ++- mslib/msui/mpl_qtwidget.py | 34 +- mslib/msui/qt5/ui_sideview_options.py | 145 +++-- mslib/msui/qt5/ui_topview_mapappearance.py | 110 ++-- mslib/msui/sideview.py | 50 +- mslib/msui/topview.py | 49 +- mslib/msui/ui/ui_sideview_options.ui | 661 +++++++++++---------- mslib/msui/ui/ui_topview_mapappearance.ui | 470 ++++++++------- 8 files changed, 982 insertions(+), 604 deletions(-) diff --git a/mslib/msui/mpl_pathinteractor.py b/mslib/msui/mpl_pathinteractor.py index 59fb8702a..a24a9e1ab 100644 --- a/mslib/msui/mpl_pathinteractor.py +++ b/mslib/msui/mpl_pathinteractor.py @@ -336,7 +336,7 @@ class PathPlotter: def __init__(self, ax, mplpath=None, facecolor='blue', edgecolor='yellow', linecolor='blue', markerfacecolor='red', - marker='o', label_waypoints=True): + marker='o', label_waypoints=True, line_thickness=2, line_style="Solid", line_transparency=1.0): """The constructor initializes the path patches, overlying line plot and connects matplotlib signals. @@ -367,11 +367,20 @@ def __init__(self, ax, mplpath=None, self.pathpatch = pathpatch self.pathpatch.set_animated(True) # ensure correct redrawing + # Initialize line style options + self.line_style_dict = { + "Solid": '-', + "Dashed": '--', + "Dotted": ':', + "Dash-dot": '-.' + } + # Draw the line representing flight track or profile (correct # vertices handling for the line needs to be ensured in subclasses). x, y = list(zip(*self.pathpatch.get_path().vertices)) self.line, = self.ax.plot(x, y, color=linecolor, - marker=marker, linewidth=2, + marker=marker, linewidth=line_thickness, linestyle=self.line_style_dict[line_style], + alpha=line_transparency, markerfacecolor=markerfacecolor, animated=True) @@ -384,6 +393,26 @@ def __init__(self, ax, mplpath=None, canvas.mpl_connect('draw_event', self.draw_callback) self.canvas = canvas + def get_line_style_dict(self): + """return the line style dict so other class can access it""" + return self.line_style_dict + + def set_line_thickness(self, thickness): + """Set the line thickness of the flight track.""" + self.line.set_linewidth(thickness) + self.canvas.draw() + + def set_line_style(self, style): + """Set the line style of the flight track.""" + if style in self.line_style_dict: + self.line.set_linestyle(self.line_style_dict[style]) + self.canvas.draw() + + def set_line_transparency(self, transparency): + """Set the line transparency of the flight track.""" + self.line.set_alpha(transparency) + self.canvas.draw() + def draw_callback(self, event): """Called when the figure is redrawn. Stores background data (for later restoration) and draws artists. @@ -932,6 +961,23 @@ def __init__(self, ax, waypoints, redraw_xaxis=None, clear_figure=None, numintpo self.clear_figure = clear_figure super().__init__(plotter=plotter, waypoints=waypoints) + def set_line_thickness(self, thickness): + """Set the thickness of the line representing the flight track.""" + self.plotter.line.set_linewidth(thickness) + self.redraw_figure() + + def set_line_style(self, style): + """Set the style of the line representing the flight track.""" + line_style_dict = self.plotter.get_line_style_dict() + if style in line_style_dict: + self.plotter.set_line_style(style) + self.redraw_figure() + + def set_line_transparency(self, transparency): + """Set the transparency of the line representing the flight track.""" + self.plotter.line.set_alpha(transparency) + self.redraw_figure() + def redraw_figure(self): """For the side view, changes in the horizontal position of a waypoint (including moved waypoints, new or deleted waypoints) make a complete @@ -1129,6 +1175,23 @@ def __init__(self, mplmap, waypoints, super().__init__(plotter=plotter, waypoints=waypoints) self.redraw_path() + def set_line_thickness(self, thickness): + """Set the thickness of the line representing the flight track.""" + self.plotter.line.set_linewidth(thickness) + self.redraw_path() + + def set_line_style(self, style): + """Set the style of the line representing the flight track.""" + line_style_dict = self.plotter.get_line_style_dict() + if style in line_style_dict: + self.plotter.set_line_style(style) + self.redraw_path() + + def set_line_transparency(self, transparency): + """Set the transparency of the line representing the flight track.""" + self.plotter.line.set_alpha(transparency) + self.redraw_path() + def appropriate_epsilon(self, px=5): """Determine an epsilon value appropriate for the current projection and figure size. diff --git a/mslib/msui/mpl_qtwidget.py b/mslib/msui/mpl_qtwidget.py index 2544c154e..cc8bd2ada 100644 --- a/mslib/msui/mpl_qtwidget.py +++ b/mslib/msui/mpl_qtwidget.py @@ -1280,6 +1280,17 @@ def update_ceiling(self, visible, color): def set_settings(self, settings, save=False): """Apply settings to view. """ + if settings is None: + settings = self.plotter.get_settings() + settings.setdefault("line_thickness", 2) + settings.setdefault("line_style", "Solid") + settings.setdefault("line_transparency", 1.0) + settings.setdefault("colour_ft_vertices", "blue") + settings.setdefault("colour_ft_waypoints", "red") + settings.setdefault("draw_marker", True) + settings.setdefault("draw_flighttrack", True) + settings.setdefault("label_flighttrack", True) + old_vertical_lines = self.plotter.settings["draw_verticals"] if settings is not None: self.plotter.set_settings(settings, save) @@ -1303,6 +1314,11 @@ def set_settings(self, settings, save=False): patch_facecolor=settings["colour_ft_fill"]) wpi_plotter.set_patch_visible(settings["fill_flighttrack"]) wpi_plotter.set_labels_visible(settings["label_flighttrack"]) + wpi_plotter.set_line_thickness(settings["line_thickness"]) + wpi_plotter.set_line_style(settings["line_style"]) + wpi_plotter.set_line_transparency( + settings["line_transparency"] / 100.0 if settings["line_transparency"] > 1 else settings[ + "line_transparency"]) # Normalize the (transparency) value if self.waypoints_model is not None \ and settings["draw_verticals"] != old_vertical_lines: @@ -1653,6 +1669,18 @@ def set_settings(self, settings, save=False): If settings is None, apply default settings. """ + if settings is None: + # Default value if not present + settings = self.plotter.get_settings() + settings.setdefault("line_thickness", 2) + settings.setdefault("line_style", "Solid") + settings.setdefault("line_transparency", 1.0) + settings.setdefault("colour_ft_vertices", "blue") + settings.setdefault("colour_ft_waypoints", "red") + settings.setdefault("draw_marker", True) + settings.setdefault("draw_flighttrack", True) + settings.setdefault("label_flighttrack", True) + self.plotter.set_settings(settings, save) settings = self.get_settings() if self.waypoints_interactor is not None: @@ -1662,7 +1690,11 @@ def set_settings(self, settings, save=False): wpi_plotter.show_marker = settings["draw_marker"] wpi_plotter.set_vertices_visible(settings["draw_flighttrack"]) wpi_plotter.set_labels_visible(settings["label_flighttrack"]) - + wpi_plotter.set_line_thickness(settings["line_thickness"]) + wpi_plotter.set_line_style(settings["line_style"]) + wpi_plotter.set_line_transparency( + settings["line_transparency"] / 100.0 if settings["line_transparency"] > 1 else settings[ + "line_transparency"]) # Normalize the (transparency) value self.draw() def set_remote_sensing_appearance(self, settings): diff --git a/mslib/msui/qt5/ui_sideview_options.py b/mslib/msui/qt5/ui_sideview_options.py index 42872c64a..1ffa0de7d 100644 --- a/mslib/msui/qt5/ui_sideview_options.py +++ b/mslib/msui/qt5/ui_sideview_options.py @@ -13,7 +13,7 @@ class Ui_SideViewOptionsDialog(object): def setupUi(self, SideViewOptionsDialog): SideViewOptionsDialog.setObjectName("SideViewOptionsDialog") - SideViewOptionsDialog.resize(538, 711) + SideViewOptionsDialog.resize(493, 900) self.verticalLayout_4 = QtWidgets.QVBoxLayout(SideViewOptionsDialog) self.verticalLayout_4.setObjectName("verticalLayout_4") self.groupBox = QtWidgets.QGroupBox(SideViewOptionsDialog) @@ -115,12 +115,37 @@ def setupUi(self, SideViewOptionsDialog): self.btDelete = QtWidgets.QPushButton(self.groupBox_2) self.btDelete.setObjectName("btDelete") self.verticalLayout.addWidget(self.btDelete) - spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.verticalLayout.addItem(spacerItem) self.horizontalLayout_3.addLayout(self.verticalLayout) self.verticalLayout_2.addLayout(self.horizontalLayout_3) self.verticalLayout_4.addWidget(self.groupBox_2) - self.groupBox_3 = QtWidgets.QGroupBox(SideViewOptionsDialog) + self.label_6 = QtWidgets.QLabel(SideViewOptionsDialog) + self.label_6.setObjectName("label_6") + self.verticalLayout_4.addWidget(self.label_6) + self.frame = QtWidgets.QFrame(SideViewOptionsDialog) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.frame.sizePolicy().hasHeightForWidth()) + self.frame.setSizePolicy(sizePolicy) + self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel) + self.frame.setFrameShadow(QtWidgets.QFrame.Raised) + self.frame.setObjectName("frame") + self.label_8 = QtWidgets.QLabel(self.frame) + self.label_8.setGeometry(QtCore.QRect(160, 210, 101, 16)) + self.label_8.setObjectName("label_8") + self.hsTransparencyControl = QtWidgets.QSlider(self.frame) + self.hsTransparencyControl.setGeometry(QtCore.QRect(20, 250, 131, 16)) + self.hsTransparencyControl.setProperty("value", 80) + self.hsTransparencyControl.setOrientation(QtCore.Qt.Horizontal) + self.hsTransparencyControl.setObjectName("hsTransparencyControl") + self.label_10 = QtWidgets.QLabel(self.frame) + self.label_10.setGeometry(QtCore.QRect(160, 240, 81, 20)) + self.label_10.setObjectName("label_10") + self.sbLineThickness = QtWidgets.QDoubleSpinBox(self.frame) + self.sbLineThickness.setGeometry(QtCore.QRect(20, 210, 131, 21)) + self.sbLineThickness.setObjectName("sbLineThickness") + self.groupBox_3 = QtWidgets.QGroupBox(self.frame) + self.groupBox_3.setGeometry(QtCore.QRect(10, 10, 451, 187)) self.groupBox_3.setObjectName("groupBox_3") self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.groupBox_3) self.verticalLayout_3.setObjectName("verticalLayout_3") @@ -161,8 +186,8 @@ def setupUi(self, SideViewOptionsDialog): self.btVerticesColour.setMinimumSize(QtCore.QSize(140, 0)) self.btVerticesColour.setObjectName("btVerticesColour") self.horizontalLayout_4.addWidget(self.btVerticesColour) - spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) - self.horizontalLayout_4.addItem(spacerItem1) + spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_4.addItem(spacerItem) self.verticalLayout_3.addLayout(self.horizontalLayout_4) self.horizontalLayout_8 = QtWidgets.QHBoxLayout() self.horizontalLayout_8.setObjectName("horizontalLayout_8") @@ -174,8 +199,8 @@ def setupUi(self, SideViewOptionsDialog): self.btWaypointsColour.setMinimumSize(QtCore.QSize(140, 0)) self.btWaypointsColour.setObjectName("btWaypointsColour") self.horizontalLayout_8.addWidget(self.btWaypointsColour) - spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) - self.horizontalLayout_8.addItem(spacerItem2) + spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_8.addItem(spacerItem1) self.verticalLayout_3.addLayout(self.horizontalLayout_8) self.horizontalLayout_5 = QtWidgets.QHBoxLayout() self.horizontalLayout_5.setObjectName("horizontalLayout_5") @@ -192,8 +217,8 @@ def setupUi(self, SideViewOptionsDialog): self.btFillColour.setMinimumSize(QtCore.QSize(140, 0)) self.btFillColour.setObjectName("btFillColour") self.horizontalLayout_5.addWidget(self.btFillColour) - spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Minimum) - self.horizontalLayout_5.addItem(spacerItem3) + spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_5.addItem(spacerItem2) self.verticalLayout_3.addLayout(self.horizontalLayout_5) self.horizontalLayout_6 = QtWidgets.QHBoxLayout() self.horizontalLayout_6.setObjectName("horizontalLayout_6") @@ -207,7 +232,13 @@ def setupUi(self, SideViewOptionsDialog): self.cbVerticalLines.setObjectName("cbVerticalLines") self.horizontalLayout_7.addWidget(self.cbVerticalLines) self.verticalLayout_3.addLayout(self.horizontalLayout_7) - self.verticalLayout_4.addWidget(self.groupBox_3) + self.cbLineStyle = QtWidgets.QComboBox(self.frame) + self.cbLineStyle.setGeometry(QtCore.QRect(260, 210, 131, 21)) + self.cbLineStyle.setObjectName("cbLineStyle") + self.label_9 = QtWidgets.QLabel(self.frame) + self.label_9.setGeometry(QtCore.QRect(400, 210, 61, 16)) + self.label_9.setObjectName("label_9") + self.verticalLayout_4.addWidget(self.frame) self.groupBox_4 = QtWidgets.QGroupBox(SideViewOptionsDialog) self.groupBox_4.setObjectName("groupBox_4") self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.groupBox_4) @@ -221,38 +252,14 @@ def setupUi(self, SideViewOptionsDialog): self.btCeilingColour.setMinimumSize(QtCore.QSize(140, 0)) self.btCeilingColour.setObjectName("btCeilingColour") self.horizontalLayout_2.addWidget(self.btCeilingColour) - spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) - self.horizontalLayout_2.addItem(spacerItem4) + spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_2.addItem(spacerItem3) self.verticalLayout_5.addLayout(self.horizontalLayout_2) self.verticalLayout_4.addWidget(self.groupBox_4) - spacerItem5 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.verticalLayout_4.addItem(spacerItem5) self.groupBox_5 = QtWidgets.QGroupBox(SideViewOptionsDialog) self.groupBox_5.setObjectName("groupBox_5") self.gridLayout_4 = QtWidgets.QGridLayout(self.groupBox_5) self.gridLayout_4.setObjectName("gridLayout_4") - self.cbtitlesize = QtWidgets.QComboBox(self.groupBox_5) - self.cbtitlesize.setObjectName("cbtitlesize") - self.cbtitlesize.addItem("") - self.cbtitlesize.addItem("") - self.cbtitlesize.addItem("") - self.cbtitlesize.addItem("") - self.cbtitlesize.addItem("") - self.cbtitlesize.addItem("") - self.cbtitlesize.addItem("") - self.cbtitlesize.addItem("") - self.cbtitlesize.addItem("") - self.cbtitlesize.addItem("") - self.cbtitlesize.addItem("") - self.cbtitlesize.addItem("") - self.cbtitlesize.addItem("") - self.cbtitlesize.addItem("") - self.cbtitlesize.addItem("") - self.cbtitlesize.addItem("") - self.gridLayout_4.addWidget(self.cbtitlesize, 3, 1, 1, 1) - self.label_7 = QtWidgets.QLabel(self.groupBox_5) - self.label_7.setObjectName("label_7") - self.gridLayout_4.addWidget(self.label_7, 3, 2, 1, 1) self.cbaxessize = QtWidgets.QComboBox(self.groupBox_5) self.cbaxessize.setObjectName("cbaxessize") self.cbaxessize.addItem("") @@ -275,9 +282,29 @@ def setupUi(self, SideViewOptionsDialog): self.label = QtWidgets.QLabel(self.groupBox_5) self.label.setObjectName("label") self.gridLayout_4.addWidget(self.label, 3, 0, 1, 1) + self.cbtitlesize = QtWidgets.QComboBox(self.groupBox_5) + self.cbtitlesize.setObjectName("cbtitlesize") + self.cbtitlesize.addItem("") + self.cbtitlesize.addItem("") + self.cbtitlesize.addItem("") + self.cbtitlesize.addItem("") + self.cbtitlesize.addItem("") + self.cbtitlesize.addItem("") + self.cbtitlesize.addItem("") + self.cbtitlesize.addItem("") + self.cbtitlesize.addItem("") + self.cbtitlesize.addItem("") + self.cbtitlesize.addItem("") + self.cbtitlesize.addItem("") + self.cbtitlesize.addItem("") + self.cbtitlesize.addItem("") + self.cbtitlesize.addItem("") + self.cbtitlesize.addItem("") + self.gridLayout_4.addWidget(self.cbtitlesize, 3, 1, 1, 1) + self.label_7 = QtWidgets.QLabel(self.groupBox_5) + self.label_7.setObjectName("label_7") + self.gridLayout_4.addWidget(self.label_7, 3, 2, 1, 1) self.verticalLayout_4.addWidget(self.groupBox_5) - spacerItem6 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.verticalLayout_4.addItem(spacerItem6) self.buttonBox = QtWidgets.QDialogButtonBox(SideViewOptionsDialog) self.buttonBox.setOrientation(QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) @@ -326,9 +353,12 @@ def retranslateUi(self, SideViewOptionsDialog): item.setText(_translate("SideViewOptionsDialog", "flight levels")) self.btAdd.setText(_translate("SideViewOptionsDialog", "add")) self.btDelete.setText(_translate("SideViewOptionsDialog", "delete selected")) + self.label_6.setText(_translate("SideViewOptionsDialog", "Flight Track style options")) + self.label_8.setText(_translate("SideViewOptionsDialog", "Line Thickness")) + self.label_10.setText(_translate("SideViewOptionsDialog", "Transparency")) self.groupBox_3.setTitle(_translate("SideViewOptionsDialog", "Flight Track Colours")) self.cbDrawFlightTrack.setText(_translate("SideViewOptionsDialog", "draw flight track")) - self.btVerticesColour.setText(_translate("SideViewOptionsDialog", "colour of flight path")) + self.btVerticesColour.setText(_translate("SideViewOptionsDialog", "colour of flight track")) self.cbDrawMarker.setToolTip(_translate("SideViewOptionsDialog", "Draw a circle marker on every waypoint along the flight track")) self.cbDrawMarker.setText(_translate("SideViewOptionsDialog", "draw marker")) self.btWaypointsColour.setText(_translate("SideViewOptionsDialog", "colour of waypoints")) @@ -337,27 +367,11 @@ def retranslateUi(self, SideViewOptionsDialog): self.cbLabelFlightTrack.setText(_translate("SideViewOptionsDialog", "label flight track")) self.cbVerticalLines.setToolTip(_translate("SideViewOptionsDialog", "Draw a vertical line to visualise each point in the flight path")) self.cbVerticalLines.setText(_translate("SideViewOptionsDialog", "draw vertical lines")) + self.label_9.setText(_translate("SideViewOptionsDialog", "Line style")) self.groupBox_4.setTitle(_translate("SideViewOptionsDialog", "Performance")) self.cbDrawCeiling.setText(_translate("SideViewOptionsDialog", "draw ceiling altitude")) self.btCeilingColour.setText(_translate("SideViewOptionsDialog", "colour")) self.groupBox_5.setTitle(_translate("SideViewOptionsDialog", "Plot Options")) - self.cbtitlesize.setItemText(0, _translate("SideViewOptionsDialog", "default")) - self.cbtitlesize.setItemText(1, _translate("SideViewOptionsDialog", "4")) - self.cbtitlesize.setItemText(2, _translate("SideViewOptionsDialog", "6")) - self.cbtitlesize.setItemText(3, _translate("SideViewOptionsDialog", "8")) - self.cbtitlesize.setItemText(4, _translate("SideViewOptionsDialog", "10")) - self.cbtitlesize.setItemText(5, _translate("SideViewOptionsDialog", "12")) - self.cbtitlesize.setItemText(6, _translate("SideViewOptionsDialog", "14")) - self.cbtitlesize.setItemText(7, _translate("SideViewOptionsDialog", "16")) - self.cbtitlesize.setItemText(8, _translate("SideViewOptionsDialog", "18")) - self.cbtitlesize.setItemText(9, _translate("SideViewOptionsDialog", "20")) - self.cbtitlesize.setItemText(10, _translate("SideViewOptionsDialog", "22")) - self.cbtitlesize.setItemText(11, _translate("SideViewOptionsDialog", "24")) - self.cbtitlesize.setItemText(12, _translate("SideViewOptionsDialog", "26")) - self.cbtitlesize.setItemText(13, _translate("SideViewOptionsDialog", "28")) - self.cbtitlesize.setItemText(14, _translate("SideViewOptionsDialog", "30")) - self.cbtitlesize.setItemText(15, _translate("SideViewOptionsDialog", "32")) - self.label_7.setText(_translate("SideViewOptionsDialog", " Axes Label Size ")) self.cbaxessize.setItemText(0, _translate("SideViewOptionsDialog", "default")) self.cbaxessize.setItemText(1, _translate("SideViewOptionsDialog", "4")) self.cbaxessize.setItemText(2, _translate("SideViewOptionsDialog", "6")) @@ -375,6 +389,23 @@ def retranslateUi(self, SideViewOptionsDialog): self.cbaxessize.setItemText(14, _translate("SideViewOptionsDialog", "30")) self.cbaxessize.setItemText(15, _translate("SideViewOptionsDialog", "32")) self.label.setText(_translate("SideViewOptionsDialog", " Plot Title Size")) + self.cbtitlesize.setItemText(0, _translate("SideViewOptionsDialog", "default")) + self.cbtitlesize.setItemText(1, _translate("SideViewOptionsDialog", "4")) + self.cbtitlesize.setItemText(2, _translate("SideViewOptionsDialog", "6")) + self.cbtitlesize.setItemText(3, _translate("SideViewOptionsDialog", "8")) + self.cbtitlesize.setItemText(4, _translate("SideViewOptionsDialog", "10")) + self.cbtitlesize.setItemText(5, _translate("SideViewOptionsDialog", "12")) + self.cbtitlesize.setItemText(6, _translate("SideViewOptionsDialog", "14")) + self.cbtitlesize.setItemText(7, _translate("SideViewOptionsDialog", "16")) + self.cbtitlesize.setItemText(8, _translate("SideViewOptionsDialog", "18")) + self.cbtitlesize.setItemText(9, _translate("SideViewOptionsDialog", "20")) + self.cbtitlesize.setItemText(10, _translate("SideViewOptionsDialog", "22")) + self.cbtitlesize.setItemText(11, _translate("SideViewOptionsDialog", "24")) + self.cbtitlesize.setItemText(12, _translate("SideViewOptionsDialog", "26")) + self.cbtitlesize.setItemText(13, _translate("SideViewOptionsDialog", "28")) + self.cbtitlesize.setItemText(14, _translate("SideViewOptionsDialog", "30")) + self.cbtitlesize.setItemText(15, _translate("SideViewOptionsDialog", "32")) + self.label_7.setText(_translate("SideViewOptionsDialog", " Axes Label Size ")) if __name__ == "__main__": diff --git a/mslib/msui/qt5/ui_topview_mapappearance.py b/mslib/msui/qt5/ui_topview_mapappearance.py index 9882d5238..a9bffaa49 100644 --- a/mslib/msui/qt5/ui_topview_mapappearance.py +++ b/mslib/msui/qt5/ui_topview_mapappearance.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file 'mslib/msui/ui/ui_topview_mapappearance.ui' +# Form implementation generated from reading ui file 'ui_topview_mapappearance.ui' # # Created by: PyQt5 UI code generator 5.12.3 # @@ -13,7 +13,7 @@ class Ui_MapAppearanceDialog(object): def setupUi(self, MapAppearanceDialog): MapAppearanceDialog.setObjectName("MapAppearanceDialog") - MapAppearanceDialog.resize(394, 332) + MapAppearanceDialog.resize(394, 459) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -28,6 +28,9 @@ def setupUi(self, MapAppearanceDialog): self.cbDrawCoastlines.setChecked(True) self.cbDrawCoastlines.setObjectName("cbDrawCoastlines") self.verticalLayout.addWidget(self.cbDrawCoastlines) + self.cbLabelFlightTrack = QtWidgets.QCheckBox(MapAppearanceDialog) + self.cbLabelFlightTrack.setObjectName("cbLabelFlightTrack") + self.verticalLayout.addWidget(self.cbLabelFlightTrack) self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.cbFillWaterBodies = QtWidgets.QCheckBox(MapAppearanceDialog) @@ -100,10 +103,39 @@ def setupUi(self, MapAppearanceDialog): spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_2.addItem(spacerItem1) self.verticalLayout.addLayout(self.horizontalLayout_2) - self.horizontalLayout_3 = QtWidgets.QHBoxLayout() - self.horizontalLayout_3.setObjectName("horizontalLayout_3") - self.cbDrawFlightTrack = QtWidgets.QCheckBox(MapAppearanceDialog) + spacerItem2 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout.addItem(spacerItem2) + self.groupBox_2 = QtWidgets.QGroupBox(MapAppearanceDialog) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(150) + sizePolicy.setHeightForWidth(self.groupBox_2.sizePolicy().hasHeightForWidth()) + self.groupBox_2.setSizePolicy(sizePolicy) + self.groupBox_2.setObjectName("groupBox_2") + self.cbLineStyle = QtWidgets.QComboBox(self.groupBox_2) + self.cbLineStyle.setGeometry(QtCore.QRect(170, 120, 131, 22)) + self.cbLineStyle.setObjectName("cbLineStyle") + self.label_4 = QtWidgets.QLabel(self.groupBox_2) + self.label_4.setGeometry(QtCore.QRect(10, 120, 61, 16)) + self.label_4.setObjectName("label_4") + self.label_2 = QtWidgets.QLabel(self.groupBox_2) + self.label_2.setGeometry(QtCore.QRect(10, 150, 91, 16)) + self.label_2.setAlignment(QtCore.Qt.AlignBottom|QtCore.Qt.AlignHCenter) + self.label_2.setObjectName("label_2") + self.sbLineThickness = QtWidgets.QDoubleSpinBox(self.groupBox_2) + self.sbLineThickness.setGeometry(QtCore.QRect(170, 150, 131, 21)) + self.sbLineThickness.setObjectName("sbLineThickness") + self.cbDrawMarker = QtWidgets.QCheckBox(self.groupBox_2) + self.cbDrawMarker.setGeometry(QtCore.QRect(10, 30, 145, 21)) + self.cbDrawMarker.setMinimumSize(QtCore.QSize(145, 0)) + self.cbDrawMarker.setObjectName("cbDrawMarker") + self.btWaypointsColour = QtWidgets.QPushButton(self.groupBox_2) + self.btWaypointsColour.setGeometry(QtCore.QRect(170, 30, 135, 23)) + self.btWaypointsColour.setMinimumSize(QtCore.QSize(135, 0)) + self.btWaypointsColour.setObjectName("btWaypointsColour") + self.cbDrawFlightTrack = QtWidgets.QCheckBox(self.groupBox_2) self.cbDrawFlightTrack.setEnabled(True) + self.cbDrawFlightTrack.setGeometry(QtCore.QRect(10, 60, 145, 21)) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -132,39 +164,26 @@ def setupUi(self, MapAppearanceDialog): self.cbDrawFlightTrack.setPalette(palette) self.cbDrawFlightTrack.setChecked(True) self.cbDrawFlightTrack.setObjectName("cbDrawFlightTrack") - self.horizontalLayout_3.addWidget(self.cbDrawFlightTrack) - self.btVerticesColour = QtWidgets.QPushButton(MapAppearanceDialog) + self.btVerticesColour = QtWidgets.QPushButton(self.groupBox_2) + self.btVerticesColour.setGeometry(QtCore.QRect(170, 60, 135, 23)) self.btVerticesColour.setMinimumSize(QtCore.QSize(135, 0)) self.btVerticesColour.setObjectName("btVerticesColour") - self.horizontalLayout_3.addWidget(self.btVerticesColour) - spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) - self.horizontalLayout_3.addItem(spacerItem2) - self.verticalLayout.addLayout(self.horizontalLayout_3) - self.horizontalLayout_5 = QtWidgets.QHBoxLayout() - self.horizontalLayout_5.setObjectName("horizontalLayout_5") - self.cbDrawMarker = QtWidgets.QCheckBox(MapAppearanceDialog) - self.cbDrawMarker.setMinimumSize(QtCore.QSize(145, 0)) - self.cbDrawMarker.setObjectName("cbDrawMarker") - self.horizontalLayout_5.addWidget(self.cbDrawMarker) - self.btWaypointsColour = QtWidgets.QPushButton(MapAppearanceDialog) - self.btWaypointsColour.setMinimumSize(QtCore.QSize(135, 0)) - self.btWaypointsColour.setObjectName("btWaypointsColour") - self.horizontalLayout_5.addWidget(self.btWaypointsColour) - spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) - self.horizontalLayout_5.addItem(spacerItem3) - self.verticalLayout.addLayout(self.horizontalLayout_5) - self.horizontalLayout_4 = QtWidgets.QHBoxLayout() - self.horizontalLayout_4.setObjectName("horizontalLayout_4") - self.cbLabelFlightTrack = QtWidgets.QCheckBox(MapAppearanceDialog) - self.cbLabelFlightTrack.setObjectName("cbLabelFlightTrack") - self.horizontalLayout_4.addWidget(self.cbLabelFlightTrack) - self.verticalLayout.addLayout(self.horizontalLayout_4) - spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.verticalLayout.addItem(spacerItem4) + self.label_3 = QtWidgets.QLabel(self.groupBox_2) + self.label_3.setGeometry(QtCore.QRect(10, 90, 131, 16)) + self.label_3.setObjectName("label_3") + self.hsTransparencyControl = QtWidgets.QSlider(self.groupBox_2) + self.hsTransparencyControl.setGeometry(QtCore.QRect(170, 90, 131, 22)) + self.hsTransparencyControl.setProperty("value", 20) + self.hsTransparencyControl.setOrientation(QtCore.Qt.Horizontal) + self.hsTransparencyControl.setObjectName("hsTransparencyControl") + self.verticalLayout.addWidget(self.groupBox_2) self.groupBox = QtWidgets.QGroupBox(MapAppearanceDialog) self.groupBox.setObjectName("groupBox") self.gridLayout_4 = QtWidgets.QGridLayout(self.groupBox) self.gridLayout_4.setObjectName("gridLayout_4") + self.label_7 = QtWidgets.QLabel(self.groupBox) + self.label_7.setObjectName("label_7") + self.gridLayout_4.addWidget(self.label_7, 3, 2, 1, 1) self.tov_cbtitlesize = QtWidgets.QComboBox(self.groupBox) self.tov_cbtitlesize.setObjectName("tov_cbtitlesize") self.tov_cbtitlesize.addItem("") @@ -184,9 +203,6 @@ def setupUi(self, MapAppearanceDialog): self.tov_cbtitlesize.addItem("") self.tov_cbtitlesize.addItem("") self.gridLayout_4.addWidget(self.tov_cbtitlesize, 3, 1, 1, 1) - self.label_7 = QtWidgets.QLabel(self.groupBox) - self.label_7.setObjectName("label_7") - self.gridLayout_4.addWidget(self.label_7, 3, 2, 1, 1) self.tov_cbaxessize = QtWidgets.QComboBox(self.groupBox) self.tov_cbaxessize.setObjectName("tov_cbaxessize") self.tov_cbaxessize.addItem("") @@ -210,8 +226,6 @@ def setupUi(self, MapAppearanceDialog): self.label.setObjectName("label") self.gridLayout_4.addWidget(self.label, 3, 0, 1, 1) self.verticalLayout.addWidget(self.groupBox) - spacerItem5 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.verticalLayout.addItem(spacerItem5) self.buttonBox = QtWidgets.QDialogButtonBox(MapAppearanceDialog) self.buttonBox.setOrientation(QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) @@ -228,17 +242,22 @@ def retranslateUi(self, MapAppearanceDialog): MapAppearanceDialog.setWindowTitle(_translate("MapAppearanceDialog", "Top View Map Appearance")) self.cbDrawGraticule.setText(_translate("MapAppearanceDialog", "draw graticule")) self.cbDrawCoastlines.setText(_translate("MapAppearanceDialog", "draw coastlines")) + self.cbLabelFlightTrack.setText(_translate("MapAppearanceDialog", "label flight path")) self.cbFillWaterBodies.setText(_translate("MapAppearanceDialog", "fill map background")) self.btWaterColour.setText(_translate("MapAppearanceDialog", "colour")) self.cbFillContinents.setText(_translate("MapAppearanceDialog", "fill continents")) self.btLandColour.setText(_translate("MapAppearanceDialog", "colour")) - self.cbDrawFlightTrack.setText(_translate("MapAppearanceDialog", "draw flight track")) - self.btVerticesColour.setText(_translate("MapAppearanceDialog", "colour of flight path")) + self.groupBox_2.setTitle(_translate("MapAppearanceDialog", "Flight Track style options")) + self.label_4.setText(_translate("MapAppearanceDialog", "Line style")) + self.label_2.setText(_translate("MapAppearanceDialog", "Line Thickness")) self.cbDrawMarker.setToolTip(_translate("MapAppearanceDialog", "Draw a circle marker on every waypoint along the flight track")) self.cbDrawMarker.setText(_translate("MapAppearanceDialog", "draw marker")) self.btWaypointsColour.setText(_translate("MapAppearanceDialog", "colour of waypoints")) - self.cbLabelFlightTrack.setText(_translate("MapAppearanceDialog", "label flight track")) + self.cbDrawFlightTrack.setText(_translate("MapAppearanceDialog", "draw flight path")) + self.btVerticesColour.setText(_translate("MapAppearanceDialog", "colour of flight path")) + self.label_3.setText(_translate("MapAppearanceDialog", "Transparency control")) self.groupBox.setTitle(_translate("MapAppearanceDialog", "Plot Options")) + self.label_7.setText(_translate("MapAppearanceDialog", " Axes Label Size ")) self.tov_cbtitlesize.setItemText(0, _translate("MapAppearanceDialog", "default")) self.tov_cbtitlesize.setItemText(1, _translate("MapAppearanceDialog", "4")) self.tov_cbtitlesize.setItemText(2, _translate("MapAppearanceDialog", "6")) @@ -255,7 +274,6 @@ def retranslateUi(self, MapAppearanceDialog): self.tov_cbtitlesize.setItemText(13, _translate("MapAppearanceDialog", "28")) self.tov_cbtitlesize.setItemText(14, _translate("MapAppearanceDialog", "30")) self.tov_cbtitlesize.setItemText(15, _translate("MapAppearanceDialog", "32")) - self.label_7.setText(_translate("MapAppearanceDialog", " Axes Label Size ")) self.tov_cbaxessize.setItemText(0, _translate("MapAppearanceDialog", "default")) self.tov_cbaxessize.setItemText(1, _translate("MapAppearanceDialog", "4")) self.tov_cbaxessize.setItemText(2, _translate("MapAppearanceDialog", "6")) @@ -273,3 +291,13 @@ def retranslateUi(self, MapAppearanceDialog): self.tov_cbaxessize.setItemText(14, _translate("MapAppearanceDialog", "30")) self.tov_cbaxessize.setItemText(15, _translate("MapAppearanceDialog", "32")) self.label.setText(_translate("MapAppearanceDialog", " Plot Title Size")) + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + MapAppearanceDialog = QtWidgets.QDialog() + ui = Ui_MapAppearanceDialog() + ui.setupUi(MapAppearanceDialog) + MapAppearanceDialog.show() + sys.exit(app.exec_()) diff --git a/mslib/msui/sideview.py b/mslib/msui/sideview.py index 53ecfc3ba..0e5683c20 100644 --- a/mslib/msui/sideview.py +++ b/mslib/msui/sideview.py @@ -29,7 +29,7 @@ import logging import functools -from PyQt5 import QtGui, QtWidgets +from PyQt5 import QtGui, QtWidgets, QtCore from mslib.msui.qt5 import ui_sideview_window as ui from mslib.msui.qt5 import ui_sideview_options as ui_opt @@ -49,6 +49,9 @@ class MSUI_SV_OptionsDialog(QtWidgets.QDialog, ui_opt.Ui_SideViewOptionsDialog): Dialog to specify sideview options. User interface is specified in "ui_sideview_options.py". """ + signal_line_thickness_change = QtCore.pyqtSignal(float) + signal_line_style_change = QtCore.pyqtSignal(str) + signal_transparency_change = QtCore.pyqtSignal(float) def __init__(self, parent=None, settings=None): """ @@ -98,6 +101,11 @@ def __init__(self, parent=None, settings=None): self.cbVerticalLines.setChecked(settings["draw_verticals"]) self.cbDrawMarker.setChecked(settings["draw_marker"]) + self.sbLineThickness.setValue(settings.get("line_thickness", 2)) + self.cbLineStyle.addItems(["Solid", "Dashed", "Dotted", "Dash-dot"]) # Item added in the list + self.cbLineStyle.setCurrentText(settings.get("line_style", "Solid")) + self.hsTransparencyControl.setValue(int(settings.get("line_transparency", 1.0) * 100)) + for button, ids in [(self.btFillColour, "colour_ft_fill"), (self.btWaypointsColour, "colour_ft_waypoints"), (self.btVerticesColour, "colour_ft_vertices"), @@ -120,6 +128,24 @@ def __init__(self, parent=None, settings=None): self.tableWidget.itemChanged.connect(self.itemChanged) + # Store values instead of emitting signals immediately + self.line_thickness = settings.get("line_thickness", 2) + self.line_style = settings.get("line_style", "Solid") + self.line_transparency = settings.get("line_transparency", 1.0) + + self.sbLineThickness.valueChanged.connect(self.onLineThicknessChanged) + self.cbLineStyle.currentTextChanged.connect(self.onLineStyleChanged) + self.hsTransparencyControl.valueChanged.connect(self.onTransparencyChanged) + + def onLineThicknessChanged(self, value): + self.line_thickness = value + + def onLineStyleChanged(self, value): + self.line_style = value + + def onTransparencyChanged(self, value): + self.line_transparency = value / 100 + def setBotTopLimits(self, axis_type): bot, top = { "maximum": (0, 2132), @@ -215,6 +241,9 @@ def get_settings(self): "draw_flighttrack": self.cbDrawFlightTrack.isChecked(), "fill_flighttrack": self.cbFillFlightTrack.isChecked(), "label_flighttrack": self.cbLabelFlightTrack.isChecked(), + "line_thickness": self.line_thickness, + "line_style": self.line_style, + "line_transparency": self.line_transparency, "colour_ft_vertices": QtGui.QPalette(self.btVerticesColour.palette()).color(QtGui.QPalette.Button).getRgbF(), "colour_ft_waypoints": @@ -318,7 +347,26 @@ def open_settings_dialog(self): settings = self.getView().get_settings() dlg = MSUI_SV_OptionsDialog(parent=self, settings=settings) dlg.setModal(True) + dlg.signal_line_thickness_change.connect(self.set_line_thickness) # Connect to signal + dlg.signal_line_style_change.connect(self.set_line_style) + dlg.signal_transparency_change.connect(self.set_line_transparency) if dlg.exec_() == QtWidgets.QDialog.Accepted: settings = dlg.get_settings() self.getView().set_settings(settings, save=True) + self.set_line_thickness(settings["line_thickness"]) + self.set_line_style(settings["line_style"]) + self.set_line_transparency(settings["line_transparency"]) + settings.update(settings) dlg.destroy() + + def set_line_thickness(self, thickness): + """Set the line thickness of the flight track.""" + self.mpl.canvas.waypoints_interactor.set_line_thickness(thickness) + + def set_line_style(self, style): + """Set the line style of the flight track""" + self.mpl.canvas.waypoints_interactor.set_line_style(style) + + def set_line_transparency(self, transparency): + """Set the line transparency of the flight track""" + self.mpl.canvas.waypoints_interactor.set_line_transparency(transparency) diff --git a/mslib/msui/topview.py b/mslib/msui/topview.py index 62ced2e3a..940517cb6 100644 --- a/mslib/msui/topview.py +++ b/mslib/msui/topview.py @@ -62,6 +62,9 @@ class MSUI_TV_MapAppearanceDialog(QtWidgets.QDialog, ui_ma.Ui_MapAppearanceDialo defined in "ui_topview_mapappearance.py". """ signal_ft_vertices_color_change = QtCore.pyqtSignal(str, tuple) + signal_line_thickness_change = QtCore.pyqtSignal(float) + signal_line_style_change = QtCore.pyqtSignal(str) + signal_transparency_change = QtCore.pyqtSignal(float) def __init__(self, parent=None, settings=None, wms_connected=False): """ @@ -95,6 +98,11 @@ def __init__(self, parent=None, settings=None, wms_connected=False): self.cbDrawMarker.setChecked(settings["draw_marker"]) self.cbLabelFlightTrack.setChecked(settings["label_flighttrack"]) + self.sbLineThickness.setValue(settings.get("line_thickness", 2)) + self.cbLineStyle.addItems(["Solid", "Dashed", "Dotted", "Dash-dot"]) # Item added in the list + self.cbLineStyle.setCurrentText(settings.get("line_style", "Solid")) + self.hsTransparencyControl.setValue(int(settings.get("line_transparency", 1.0) * 100)) + for button, ids in [(self.btWaterColour, "colour_water"), (self.btLandColour, "colour_land"), (self.btWaypointsColour, "colour_ft_waypoints"), @@ -111,6 +119,15 @@ def __init__(self, parent=None, settings=None, wms_connected=False): self.btWaypointsColour.clicked.connect(functools.partial(self.setColour, "ft_waypoints")) self.btVerticesColour.clicked.connect(functools.partial(self.setColour, "ft_vertices")) + # Store values instead of emitting signals immediately + self.line_thickness = settings.get("line_thickness", 2) + self.line_style = settings.get("line_style", "Solid") + self.line_transparency = settings.get("line_transparency", 1.0) + + self.sbLineThickness.valueChanged.connect(self.onLineThicknessChanged) + self.cbLineStyle.currentTextChanged.connect(self.onLineStyleChanged) + self.hsTransparencyControl.valueChanged.connect(self.onTransparencyChanged) + # Shows previously selected element in the fontsize comboboxes as the current index. for i in range(self.tov_cbtitlesize.count()): if self.tov_cbtitlesize.itemText(i) == settings["tov_plot_title_size"]: @@ -120,6 +137,15 @@ def __init__(self, parent=None, settings=None, wms_connected=False): if self.tov_cbaxessize.itemText(i) == settings["tov_axes_label_size"]: self.tov_cbaxessize.setCurrentIndex(i) + def onLineThicknessChanged(self, value): + self.line_thickness = value + + def onLineStyleChanged(self, value): + self.line_style = value + + def onTransparencyChanged(self, value): + self.line_transparency = value / 100.0 + def get_settings(self): """ """ @@ -133,7 +159,9 @@ def get_settings(self): "label_flighttrack": self.cbLabelFlightTrack.isChecked(), "tov_plot_title_size": self.tov_cbtitlesize.currentText(), "tov_axes_label_size": self.tov_cbaxessize.currentText(), - + "line_thickness": self.line_thickness, + "line_style": self.line_style, + "line_transparency": self.line_transparency, "colour_water": QtGui.QPalette(self.btWaterColour.palette()).color(QtGui.QPalette.Button).getRgbF(), "colour_land": @@ -416,17 +444,36 @@ def setIdentifier(self, identifier): def open_settings_dialog(self): """ + Open the map appearance settings dialog. """ settings = self.getView().get_settings() dlg = MSUI_TV_MapAppearanceDialog(parent=self, settings=settings, wms_connected=self.wms_connected) dlg.setModal(False) dlg.signal_ft_vertices_color_change.connect(self.set_ft_vertices_color) + dlg.signal_line_thickness_change.connect(self.set_line_thickness) # Connect to signal + dlg.signal_line_style_change.connect(self.set_line_style) + dlg.signal_transparency_change.connect(self.set_line_transparency) if dlg.exec_() == QtWidgets.QDialog.Accepted: settings = dlg.get_settings() + self.set_line_thickness(settings["line_thickness"]) + self.set_line_style(settings["line_style"]) + self.set_line_transparency(settings["line_transparency"]) self.getView().set_settings(settings, save=True) self.mpl.canvas.waypoints_interactor.redraw_path() dlg.destroy() + def set_line_thickness(self, thickness): + """Set the line thickness of the flight track.""" + self.mpl.canvas.waypoints_interactor.set_line_thickness(thickness) + + def set_line_style(self, style): + """Set the line style of the flight track""" + self.mpl.canvas.waypoints_interactor.set_line_style(style) + + def set_line_transparency(self, transparency): + """Set the line transparency of the flight track""" + self.mpl.canvas.waypoints_interactor.set_line_transparency(transparency) + @QtCore.pyqtSlot(str, tuple) def set_ft_vertices_color(self, which, color): if which == "ft_vertices": diff --git a/mslib/msui/ui/ui_sideview_options.ui b/mslib/msui/ui/ui_sideview_options.ui index 8ffa3b08b..c835b9413 100644 --- a/mslib/msui/ui/ui_sideview_options.ui +++ b/mslib/msui/ui/ui_sideview_options.ui @@ -6,8 +6,8 @@ 0 0 - 538 - 711 + 493 + 900 @@ -213,19 +213,6 @@ - - - - Qt::Vertical - - - - 20 - 40 - - - - @@ -234,254 +221,358 @@ - - - Flight Track Colours + + + Flight Track style options - - - - - - - true - - - - 0 - 0 - - - - - 140 - 0 - - - - - - - - - 20 - 19 - 18 - - - - - - - 20 - 19 - 18 - - - - - - - - - 20 - 19 - 18 - - - - - - - 20 - 19 - 18 - - - - - - - - - 0 - 0 - 0 - - - - - - - 173 - 173 - 173 - - - - - - - - draw flight track - - - true - - - - - - - - 140 - 0 - - - - colour of flight path - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - 140 - 0 - - - - Draw a circle marker on every waypoint along the flight track - - - draw marker - - - - - - - - 140 - 0 - - - - colour of waypoints - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - 0 - 0 - - - - - 140 - 0 - - - - fill flight track - - - - - - - - 140 - 0 - - - - colour - - - - - - - Qt::Horizontal - - - QSizePolicy::MinimumExpanding - - - - 40 - 20 - - - - - - - - - - - - label flight track - - - - - - - - - - - Draw a vertical line to visualise each point in the flight path - - - draw vertical lines - - - - - - + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + 160 + 210 + 101 + 16 + + + + Line Thickness + + + + + + 20 + 250 + 131 + 16 + + + + 80 + + + Qt::Horizontal + + + + + + 160 + 240 + 81 + 20 + + + + Transparency + + + + + + 20 + 210 + 131 + 21 + + + + + + + 10 + 10 + 451 + 187 + + + + Flight Track Colours + + + + + + + + true + + + + 0 + 0 + + + + + 140 + 0 + + + + + + + + + 20 + 19 + 18 + + + + + + + 20 + 19 + 18 + + + + + + + + + 20 + 19 + 18 + + + + + + + 20 + 19 + 18 + + + + + + + + + 0 + 0 + 0 + + + + + + + 173 + 173 + 173 + + + + + + + + draw flight track + + + true + + + + + + + + 140 + 0 + + + + colour of flight track + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 140 + 0 + + + + Draw a circle marker on every waypoint along the flight track + + + draw marker + + + + + + + + 140 + 0 + + + + colour of waypoints + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 0 + 0 + + + + + 140 + 0 + + + + fill flight track + + + + + + + + 140 + 0 + + + + colour + + + + + + + Qt::Horizontal + + + QSizePolicy::MinimumExpanding + + + + 40 + 20 + + + + + + + + + + + + label flight track + + + + + + + + + + + Draw a vertical line to visualise each point in the flight path + + + draw vertical lines + + + + + + + + + + + 260 + 210 + 131 + 21 + + + + + + + 400 + 210 + 61 + 16 + + + + Line style + + @@ -530,27 +621,14 @@ - - - - Qt::Vertical - - - - 20 - 40 - - - - Plot Options - - + + default @@ -633,15 +711,15 @@ - - + + - Axes Label Size + Plot Title Size - - + + default @@ -724,29 +802,16 @@ - - + + - Plot Title Size + Axes Label Size - - - - Qt::Vertical - - - - 20 - 40 - - - - diff --git a/mslib/msui/ui/ui_topview_mapappearance.ui b/mslib/msui/ui/ui_topview_mapappearance.ui index bf6c93920..752c0910f 100644 --- a/mslib/msui/ui/ui_topview_mapappearance.ui +++ b/mslib/msui/ui/ui_topview_mapappearance.ui @@ -7,7 +7,7 @@ 0 0 394 - 332 + 459 @@ -37,6 +37,13 @@ + + + + label flight path + + + @@ -263,200 +270,277 @@ - - - - - true - - - - 0 - 0 - - - - - 145 - 0 - - - - - - - - - 20 - 19 - 18 - - - - - - - 20 - 19 - 18 - - - - - - - - - 20 - 19 - 18 - - - - - - - 20 - 19 - 18 - - - - - - - - - 0 - 0 - 0 - - - - - - - 173 - 173 - 173 - - - - - - - - draw flight track - - - true - - - - - - - - 135 - 0 - - - - colour of flight path - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - 145 - 0 - - - - Draw a circle marker on every waypoint along the flight track - - - draw marker - - - - - - - - 135 - 0 - - - - colour of waypoints - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - label flight track - - - - - - - + Qt::Vertical 20 - 40 + 10 + + + + + 0 + 150 + + + + Flight Track style options + + + + + 170 + 120 + 131 + 22 + + + + + + + 10 + 120 + 61 + 16 + + + + Line style + + + + + + 10 + 150 + 91 + 16 + + + + Line Thickness + + + Qt::AlignBottom|Qt::AlignHCenter + + + + + + 170 + 150 + 131 + 21 + + + + + + + 10 + 30 + 145 + 21 + + + + + 145 + 0 + + + + Draw a circle marker on every waypoint along the flight track + + + draw marker + + + + + + 170 + 30 + 135 + 23 + + + + + 135 + 0 + + + + colour of waypoints + + + + + true + + + + 10 + 60 + 145 + 21 + + + + + 0 + 0 + + + + + 145 + 0 + + + + + + + + + 20 + 19 + 18 + + + + + + + 20 + 19 + 18 + + + + + + + + + 20 + 19 + 18 + + + + + + + 20 + 19 + 18 + + + + + + + + + 0 + 0 + 0 + + + + + + + 173 + 173 + 173 + + + + + + + + draw flight path + + + true + + + + + + 170 + 60 + 135 + 23 + + + + + 135 + 0 + + + + colour of flight path + + + + + + 10 + 90 + 131 + 16 + + + + Transparency control + + + + + + 170 + 90 + 131 + 22 + + + + 20 + + + Qt::Horizontal + + + + Plot Options + + + + Axes Label Size + + + @@ -541,13 +625,6 @@ - - - - Axes Label Size - - - @@ -642,19 +719,6 @@ - - - - Qt::Vertical - - - - 20 - 40 - - - - @@ -676,8 +740,8 @@ accept() - 248 - 254 + 259 + 464 157 @@ -692,8 +756,8 @@ reject() - 316 - 260 + 327 + 464 286