|
@@ -964,8 +964,7 @@ class App(QtCore.QObject):
|
|
|
self.plotcanvas.vis_connect('mouse_double_click', self.on_double_click_over_plot)
|
|
self.plotcanvas.vis_connect('mouse_double_click', self.on_double_click_over_plot)
|
|
|
|
|
|
|
|
# Keys over plot enabled
|
|
# Keys over plot enabled
|
|
|
- self.plotcanvas.vis_connect('key_press', self.on_key_over_plot)
|
|
|
|
|
- self.plotcanvas.vis_connect('key_release', self.on_key_release_over_plot)
|
|
|
|
|
|
|
+ self.plotcanvas.vis_connect('key_press', self.ui.keyPressEvent)
|
|
|
|
|
|
|
|
self.ui.splitter.setStretchFactor(1, 2)
|
|
self.ui.splitter.setStretchFactor(1, 2)
|
|
|
|
|
|
|
@@ -3934,223 +3933,224 @@ class App(QtCore.QObject):
|
|
|
else:
|
|
else:
|
|
|
return 0
|
|
return 0
|
|
|
|
|
|
|
|
- def on_key_over_plot(self, event):
|
|
|
|
|
- """
|
|
|
|
|
- Callback for the key pressed event when the canvas is focused. Keyboard
|
|
|
|
|
- shortcuts are handled here. So far, these are the shortcuts:
|
|
|
|
|
-
|
|
|
|
|
- ========== ============================================
|
|
|
|
|
- Key Action
|
|
|
|
|
- ========== ============================================
|
|
|
|
|
- '1' Zoom-fit. Fits the axes limits to the data.
|
|
|
|
|
- '2' Zoom-out.
|
|
|
|
|
- '3' Zoom-in.
|
|
|
|
|
- 'ctrl+m' Toggle on-off the measuring tool.
|
|
|
|
|
- ========== ============================================
|
|
|
|
|
-
|
|
|
|
|
- :param event: Ignored.
|
|
|
|
|
- :return: None
|
|
|
|
|
- """
|
|
|
|
|
-
|
|
|
|
|
- self.key_modifiers = QtWidgets.QApplication.keyboardModifiers()
|
|
|
|
|
-
|
|
|
|
|
- if self.key_modifiers == QtCore.Qt.ControlModifier:
|
|
|
|
|
- if event.key == 'A':
|
|
|
|
|
- self.on_selectall()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'C':
|
|
|
|
|
- self.on_copy_object()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'E':
|
|
|
|
|
- self.on_fileopenexcellon()
|
|
|
|
|
- if event.key == 'G':
|
|
|
|
|
- self.on_fileopengerber()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'N':
|
|
|
|
|
- self.on_file_new_click()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'M':
|
|
|
|
|
- self.measurement_tool.run()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'O':
|
|
|
|
|
- self.on_file_openproject()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'S':
|
|
|
|
|
- self.on_file_saveproject()
|
|
|
|
|
-
|
|
|
|
|
- # Toggle Plot Area
|
|
|
|
|
- if event.key == 'F10':
|
|
|
|
|
- self.on_toggle_plotarea()
|
|
|
|
|
-
|
|
|
|
|
- return
|
|
|
|
|
- elif self.key_modifiers == QtCore.Qt.AltModifier:
|
|
|
|
|
- # place holder for further shortcut key
|
|
|
|
|
-
|
|
|
|
|
- if event.key == '1':
|
|
|
|
|
- self.enable_all_plots()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == '2':
|
|
|
|
|
- self.disable_all_plots()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == '3':
|
|
|
|
|
- self.disable_other_plots()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'C':
|
|
|
|
|
- self.calculator_tool.run()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'D':
|
|
|
|
|
- self.dblsidedtool.run()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'L':
|
|
|
|
|
- self.film_tool.run()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'N':
|
|
|
|
|
- self.ncclear_tool.run()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'P':
|
|
|
|
|
- self.paint_tool.run()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'R':
|
|
|
|
|
- self.transform_tool.run()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'U':
|
|
|
|
|
- self.cutout_tool.run()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'Z':
|
|
|
|
|
- self.panelize_tool.run()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'F10':
|
|
|
|
|
- self.on_fullscreen()
|
|
|
|
|
-
|
|
|
|
|
- return
|
|
|
|
|
- elif self.key_modifiers == QtCore.Qt.ShiftModifier:
|
|
|
|
|
- # place holder for further shortcut key
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'C':
|
|
|
|
|
- self.on_copy_name()
|
|
|
|
|
-
|
|
|
|
|
- # Toggle axis
|
|
|
|
|
- if event.key == 'G':
|
|
|
|
|
- self.on_toggle_axis()
|
|
|
|
|
-
|
|
|
|
|
- # Open Preferences Window
|
|
|
|
|
- if event.key == 'P':
|
|
|
|
|
- self.on_preferences()
|
|
|
|
|
-
|
|
|
|
|
- # Rotate Object by 90 degree CCW
|
|
|
|
|
- if event.key == 'R':
|
|
|
|
|
- self.on_rotate(silent=True, preset=-90)
|
|
|
|
|
-
|
|
|
|
|
- # Run a Script
|
|
|
|
|
- if event.key == 'S':
|
|
|
|
|
- self.on_filerunscript()
|
|
|
|
|
-
|
|
|
|
|
- # Toggle Workspace
|
|
|
|
|
- if event.key == 'W':
|
|
|
|
|
- self.on_workspace_menu()
|
|
|
|
|
-
|
|
|
|
|
- # Skew on X axis
|
|
|
|
|
- if event.key == 'X':
|
|
|
|
|
- self.on_skewx()
|
|
|
|
|
-
|
|
|
|
|
- # Skew on Y axis
|
|
|
|
|
- if event.key == 'Y':
|
|
|
|
|
- self.on_skewy()
|
|
|
|
|
-
|
|
|
|
|
- else:
|
|
|
|
|
- if event.key == 'F1':
|
|
|
|
|
- webbrowser.open(self.manual_url)
|
|
|
|
|
- return
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'F2':
|
|
|
|
|
- webbrowser.open(self.video_url)
|
|
|
|
|
- return
|
|
|
|
|
-
|
|
|
|
|
- if event.key == self.defaults['zoom_out_key']: # '-'
|
|
|
|
|
- self.plotcanvas.zoom(1 / self.defaults['zoom_ratio'], self.mouse)
|
|
|
|
|
- return
|
|
|
|
|
-
|
|
|
|
|
- if event.key == self.defaults['zoom_in_key']: # '='
|
|
|
|
|
- self.plotcanvas.zoom(self.defaults['zoom_ratio'], self.mouse)
|
|
|
|
|
- return
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'Delete':
|
|
|
|
|
- self.on_delete()
|
|
|
|
|
- return
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'Space':
|
|
|
|
|
- if self.collection.get_active() is not None:
|
|
|
|
|
- self.collection.get_active().ui.plot_cb.toggle()
|
|
|
|
|
- self.delete_selection_shape()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == '1':
|
|
|
|
|
- self.on_select_tab('project')
|
|
|
|
|
-
|
|
|
|
|
- if event.key == '2':
|
|
|
|
|
- self.on_select_tab('selected')
|
|
|
|
|
-
|
|
|
|
|
- if event.key == '3':
|
|
|
|
|
- self.on_select_tab('tool')
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'E':
|
|
|
|
|
- self.object2editor()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == self.defaults['grid_toggle_key']: # G
|
|
|
|
|
- self.ui.grid_snap_btn.trigger()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'J':
|
|
|
|
|
- self.on_jump_to()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'L':
|
|
|
|
|
- self.new_excellon_object()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'M':
|
|
|
|
|
- self.move_tool.toggle()
|
|
|
|
|
- return
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'N':
|
|
|
|
|
- self.on_new_geometry()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'O':
|
|
|
|
|
- self.on_set_origin()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'P':
|
|
|
|
|
- self.properties_tool.run()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'Q':
|
|
|
|
|
- self.on_toggle_units_click()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'R':
|
|
|
|
|
- self.on_rotate(silent=True, preset=90)
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'S':
|
|
|
|
|
- self.on_toggle_shell()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'V':
|
|
|
|
|
- self.on_zoom_fit(None)
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'X':
|
|
|
|
|
- self.on_flipx()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == 'Y':
|
|
|
|
|
- self.on_flipy()
|
|
|
|
|
-
|
|
|
|
|
- if event.key == '`':
|
|
|
|
|
- self.on_shortcut_list()
|
|
|
|
|
-
|
|
|
|
|
- def on_key_release_over_plot(self, event):
|
|
|
|
|
- modifiers = QtWidgets.QApplication.keyboardModifiers()
|
|
|
|
|
-
|
|
|
|
|
- if modifiers == QtCore.Qt.ControlModifier:
|
|
|
|
|
- return
|
|
|
|
|
- elif modifiers == QtCore.Qt.AltModifier:
|
|
|
|
|
- # place holder for further shortcut key
|
|
|
|
|
- return
|
|
|
|
|
- elif modifiers == QtCore.Qt.ShiftModifier:
|
|
|
|
|
- # place holder for further shortcut key
|
|
|
|
|
- return
|
|
|
|
|
- else:
|
|
|
|
|
- return
|
|
|
|
|
|
|
+ # def on_key_over_plot(self, event):
|
|
|
|
|
+ # """
|
|
|
|
|
+ # Callback for the key pressed event when the canvas is focused. Keyboard
|
|
|
|
|
+ # shortcuts are handled here. So far, these are the shortcuts:
|
|
|
|
|
+ #
|
|
|
|
|
+ # ========== ============================================
|
|
|
|
|
+ # Key Action
|
|
|
|
|
+ # ========== ============================================
|
|
|
|
|
+ # '1' Zoom-fit. Fits the axes limits to the data.
|
|
|
|
|
+ # '2' Zoom-out.
|
|
|
|
|
+ # '3' Zoom-in.
|
|
|
|
|
+ # 'ctrl+m' Toggle on-off the measuring tool.
|
|
|
|
|
+ # ========== ============================================
|
|
|
|
|
+ #
|
|
|
|
|
+ # :param event: Ignored.
|
|
|
|
|
+ # :return: None
|
|
|
|
|
+ # """
|
|
|
|
|
+ # print(type(event.key), event.key)
|
|
|
|
|
+ # self.key_modifiers = QtWidgets.QApplication.keyboardModifiers()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if self.key_modifiers == QtCore.Qt.ControlModifier:
|
|
|
|
|
+ # if event.key == 'A':
|
|
|
|
|
+ # self.on_selectall()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'C':
|
|
|
|
|
+ # self.on_copy_object()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'E':
|
|
|
|
|
+ # self.on_fileopenexcellon()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'G':
|
|
|
|
|
+ # self.on_fileopengerber()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'N':
|
|
|
|
|
+ # self.on_file_new_click()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'M':
|
|
|
|
|
+ # self.measurement_tool.run()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'O':
|
|
|
|
|
+ # self.on_file_openproject()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'S':
|
|
|
|
|
+ # self.on_file_saveproject()
|
|
|
|
|
+ #
|
|
|
|
|
+ # # Toggle Plot Area
|
|
|
|
|
+ # if event.key == 'F10':
|
|
|
|
|
+ # self.on_toggle_plotarea()
|
|
|
|
|
+ #
|
|
|
|
|
+ # return
|
|
|
|
|
+ # elif self.key_modifiers == QtCore.Qt.AltModifier:
|
|
|
|
|
+ # # place holder for further shortcut key
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == '1':
|
|
|
|
|
+ # self.enable_all_plots()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == '2':
|
|
|
|
|
+ # self.disable_all_plots()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == '3':
|
|
|
|
|
+ # self.disable_other_plots()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'C':
|
|
|
|
|
+ # self.calculator_tool.run()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'D':
|
|
|
|
|
+ # self.dblsidedtool.run()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'L':
|
|
|
|
|
+ # self.film_tool.run()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'N':
|
|
|
|
|
+ # self.ncclear_tool.run()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'P':
|
|
|
|
|
+ # self.paint_tool.run()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'R':
|
|
|
|
|
+ # self.transform_tool.run()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'U':
|
|
|
|
|
+ # self.cutout_tool.run()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'Z':
|
|
|
|
|
+ # self.panelize_tool.run()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'F10':
|
|
|
|
|
+ # self.on_fullscreen()
|
|
|
|
|
+ #
|
|
|
|
|
+ # return
|
|
|
|
|
+ # elif self.key_modifiers == QtCore.Qt.ShiftModifier:
|
|
|
|
|
+ # # place holder for further shortcut key
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'C':
|
|
|
|
|
+ # self.on_copy_name()
|
|
|
|
|
+ #
|
|
|
|
|
+ # # Toggle axis
|
|
|
|
|
+ # if event.key == 'G':
|
|
|
|
|
+ # self.on_toggle_axis()
|
|
|
|
|
+ #
|
|
|
|
|
+ # # Open Preferences Window
|
|
|
|
|
+ # if event.key == 'P':
|
|
|
|
|
+ # self.on_preferences()
|
|
|
|
|
+ #
|
|
|
|
|
+ # # Rotate Object by 90 degree CCW
|
|
|
|
|
+ # if event.key == 'R':
|
|
|
|
|
+ # self.on_rotate(silent=True, preset=-90)
|
|
|
|
|
+ #
|
|
|
|
|
+ # # Run a Script
|
|
|
|
|
+ # if event.key == 'S':
|
|
|
|
|
+ # self.on_filerunscript()
|
|
|
|
|
+ #
|
|
|
|
|
+ # # Toggle Workspace
|
|
|
|
|
+ # if event.key == 'W':
|
|
|
|
|
+ # self.on_workspace_menu()
|
|
|
|
|
+ #
|
|
|
|
|
+ # # Skew on X axis
|
|
|
|
|
+ # if event.key == 'X':
|
|
|
|
|
+ # self.on_skewx()
|
|
|
|
|
+ #
|
|
|
|
|
+ # # Skew on Y axis
|
|
|
|
|
+ # if event.key == 'Y':
|
|
|
|
|
+ # self.on_skewy()
|
|
|
|
|
+ #
|
|
|
|
|
+ # else:
|
|
|
|
|
+ # if event.key == 'F1':
|
|
|
|
|
+ # webbrowser.open(self.manual_url)
|
|
|
|
|
+ # return
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'F2':
|
|
|
|
|
+ # webbrowser.open(self.video_url)
|
|
|
|
|
+ # return
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == self.defaults['zoom_out_key']: # '-'
|
|
|
|
|
+ # self.plotcanvas.zoom(1 / self.defaults['zoom_ratio'], self.mouse)
|
|
|
|
|
+ # return
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == self.defaults['zoom_in_key']: # '='
|
|
|
|
|
+ # self.plotcanvas.zoom(self.defaults['zoom_ratio'], self.mouse)
|
|
|
|
|
+ # return
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'Delete':
|
|
|
|
|
+ # self.on_delete()
|
|
|
|
|
+ # return
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'Space':
|
|
|
|
|
+ # if self.collection.get_active() is not None:
|
|
|
|
|
+ # self.collection.get_active().ui.plot_cb.toggle()
|
|
|
|
|
+ # self.delete_selection_shape()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == '1':
|
|
|
|
|
+ # self.on_select_tab('project')
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == '2':
|
|
|
|
|
+ # self.on_select_tab('selected')
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == '3':
|
|
|
|
|
+ # self.on_select_tab('tool')
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'E':
|
|
|
|
|
+ # self.object2editor()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == self.defaults['grid_toggle_key']: # G
|
|
|
|
|
+ # self.ui.grid_snap_btn.trigger()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'J':
|
|
|
|
|
+ # self.on_jump_to()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'L':
|
|
|
|
|
+ # self.new_excellon_object()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'M':
|
|
|
|
|
+ # self.move_tool.toggle()
|
|
|
|
|
+ # return
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'N':
|
|
|
|
|
+ # self.on_new_geometry()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'O':
|
|
|
|
|
+ # self.on_set_origin()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'P':
|
|
|
|
|
+ # self.properties_tool.run()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'Q':
|
|
|
|
|
+ # self.on_toggle_units_click()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'R':
|
|
|
|
|
+ # self.on_rotate(silent=True, preset=90)
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'S':
|
|
|
|
|
+ # self.on_toggle_shell()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'V':
|
|
|
|
|
+ # self.on_zoom_fit(None)
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'X':
|
|
|
|
|
+ # self.on_flipx()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == 'Y':
|
|
|
|
|
+ # self.on_flipy()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if event.key == '`':
|
|
|
|
|
+ # self.on_shortcut_list()
|
|
|
|
|
+ #
|
|
|
|
|
+ # def on_key_release_over_plot(self, event):
|
|
|
|
|
+ # modifiers = QtWidgets.QApplication.keyboardModifiers()
|
|
|
|
|
+ #
|
|
|
|
|
+ # if modifiers == QtCore.Qt.ControlModifier:
|
|
|
|
|
+ # return
|
|
|
|
|
+ # elif modifiers == QtCore.Qt.AltModifier:
|
|
|
|
|
+ # # place holder for further shortcut key
|
|
|
|
|
+ # return
|
|
|
|
|
+ # elif modifiers == QtCore.Qt.ShiftModifier:
|
|
|
|
|
+ # # place holder for further shortcut key
|
|
|
|
|
+ # return
|
|
|
|
|
+ # else:
|
|
|
|
|
+ # return
|
|
|
|
|
|
|
|
def on_shortcut_list(self):
|
|
def on_shortcut_list(self):
|
|
|
self.report_usage("on_shortcut_list()")
|
|
self.report_usage("on_shortcut_list()")
|