From 481334fc952e24a1c2261e685067cd90888f5dde Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr>
Date: Thu, 2 Mar 2023 14:01:25 +0100
Subject: [PATCH] [Ivette] SourceCode: adds documentation of useful shortcuts.

---
 ivette/src/frama-c/kernel/SourceCode.tsx | 30 ++++++++++++++++++++----
 1 file changed, 25 insertions(+), 5 deletions(-)

diff --git a/ivette/src/frama-c/kernel/SourceCode.tsx b/ivette/src/frama-c/kernel/SourceCode.tsx
index 59f285f981d..2ede47f2e64 100644
--- a/ivette/src/frama-c/kernel/SourceCode.tsx
+++ b/ivette/src/frama-c/kernel/SourceCode.tsx
@@ -25,11 +25,12 @@ import * as Path from 'path';
 
 import * as Dome from 'dome';
 import * as System from 'dome/system';
-import * as Boxes from 'dome/layout/boxes';
 import * as Editor from 'dome/text/editor';
 import * as Labels from 'dome/controls/labels';
 import * as Settings from 'dome/data/settings';
 import * as Buttons from 'dome/controls/buttons';
+import * as Dialogs from 'dome/dialogs';
+import * as Toolbars from 'dome/frame/toolbars';
 
 import { Selection, Document } from 'dome/text/editor';
 
@@ -265,9 +266,22 @@ export default function SourceCode(): JSX.Element {
   React.useEffect(() => Locations.set(view, { ivette: loc }), [view, loc]);
 
   const externalEditorTitle =
-    'Open the source file in an external editor.\nA Ctrl-click '
-    + 'in the source code opens the editor at the selected location.'
-    + '\nThe editor used can be configured in Ivette settings.';
+    'Open the source file in an external editor.';
+
+  const shortcuts =
+    'Ctrl+click: open file in an external editor at the selected location.\n'
+    + 'Alt+f: search for text or regexp.\n'
+    + 'Alt+g: go to line.';
+
+  const shortcutsTitle = 'Useful shortcuts:\n' + shortcuts;
+
+  async function displayShortcuts(): Promise<void> {
+    await Dialogs.showMessageBox({
+      buttons: [{label:"Ok"}],
+      details: shortcuts,
+      message: 'Useful shortcuts'
+    });
+  }
 
   return (
     <>
@@ -279,7 +293,13 @@ export default function SourceCode(): JSX.Element {
           title={externalEditorTitle}
         />
         <Labels.Code title={file}>{filename}</Labels.Code>
-        <Boxes.Hfill />
+        <Toolbars.Filler />
+        <Buttons.IconButton
+          icon="HELP"
+          onClick={displayShortcuts}
+          title={shortcutsTitle}
+        />
+        <Toolbars.Inset/>
       </Ivette.TitleBar>
       <Component style={{ fontSize: `${fontSize}px` }} />
     </>
-- 
GitLab