@@ -612,6 +612,8 @@ def __init__(self, parent, text, mi=None, fm=None, color_field=None,
612
612
self .documentation .setOpenLinks (False )
613
613
self .documentation .anchorClicked .connect (self .url_clicked )
614
614
self .source_code .setReadOnly (True )
615
+ self .source_code .setContextMenuPolicy (Qt .ContextMenuPolicy .CustomContextMenu )
616
+ self .source_code .customContextMenuRequested .connect (self .show_code_context_menu )
615
617
self .doc_button .clicked .connect (self .open_documentation_viewer )
616
618
self .general_info_button .clicked .connect (self .open_general_info_dialog )
617
619
@@ -822,6 +824,24 @@ def set_waiting_message(self):
822
824
self .template_value .cellWidget (0 , 2 ).setText (
823
825
_ ("*** Breakpoints are enabled. Waiting for the 'Go' button to be pressed" ))
824
826
827
+ def show_code_context_menu (self , point ):
828
+ m = self .source_code .createStandardContextMenu ()
829
+ name = self .current_function_name
830
+ if (name and self .all_functions [name ].object_type in
831
+ (StoredObjectType .StoredPythonTemplate , StoredObjectType .StoredGPMTemplate )):
832
+ m .addSeparator ()
833
+ ca = m .addAction (_ ('Copy stored template source to editor' ))
834
+ ca .triggered .connect (self .copy_source_code_to_editor )
835
+ m .exec (self .source_code .mapToGlobal (point ))
836
+
837
+ def copy_source_code_to_editor (self ):
838
+ if self .textbox .toPlainText ():
839
+ r = question_dialog (self , _ ('Discard existing text?' ),
840
+ _ ('The editor contains text. Do you want to overwrite that text?' ))
841
+ if not r :
842
+ return
843
+ self .textbox .setPlainText (self .source_code .toPlainText ())
844
+
825
845
def show_context_menu (self , point ):
826
846
m = self .textbox .createStandardContextMenu ()
827
847
m .addSeparator ()
0 commit comments