From 768f4d72bb0009099ffff66d6ed35e20896a8c0f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Loi=CC=88c=20Correnson?= <loic.correnson@cea.fr>
Date: Fri, 3 May 2024 19:32:16 +0200
Subject: [PATCH] [ivette] sidebar icons

---
 ivette/src/frama-c/index.tsx     |  2 ++
 ivette/src/ivette/index.tsx      |  2 +-
 ivette/src/ivette/laboratory.tsx |  7 ++++---
 ivette/src/renderer/Sidebar.tsx  |  8 +++++---
 ivette/src/renderer/style.css    | 18 +++++++-----------
 5 files changed, 19 insertions(+), 18 deletions(-)

diff --git a/ivette/src/frama-c/index.tsx b/ivette/src/frama-c/index.tsx
index 33a5b74233e..4e1db38c729 100644
--- a/ivette/src/frama-c/index.tsx
+++ b/ivette/src/frama-c/index.tsx
@@ -50,6 +50,8 @@ Menu.init();
 Ivette.registerSidebar({
   id: 'fc.kernel.globals',
   label: 'AST',
+  icon: 'DUPLICATE',
+  title: 'Global Declarations (AST)',
   children: <Globals />
 });
 
diff --git a/ivette/src/ivette/index.tsx b/ivette/src/ivette/index.tsx
index 07a86f9247f..7eefab232b3 100644
--- a/ivette/src/ivette/index.tsx
+++ b/ivette/src/ivette/index.tsx
@@ -202,7 +202,7 @@ export function TitleBar(props: TitleBarProps): JSX.Element | null {
 /* -------------------------------------------------------------------------- */
 
 export interface SidebarProps extends ContentProps {
-  iconPath?: string;
+  icon?: string;
 }
 
 export interface ToolProps {
diff --git a/ivette/src/ivette/laboratory.tsx b/ivette/src/ivette/laboratory.tsx
index 01cbdaacb30..ff26adc0192 100644
--- a/ivette/src/ivette/laboratory.tsx
+++ b/ivette/src/ivette/laboratory.tsx
@@ -1239,9 +1239,10 @@ function ViewBar(): JSX.Element {
 }
 
 Ivette.registerSidebar({
-  id: "ivette.views",
-  label: "Views",
-  title: "View Selector",
+  id: 'ivette.views',
+  label: 'Views',
+  icon: 'DISPLAY',
+  title: 'Views & Components Selector',
   children: <ViewBar />,
 });
 
diff --git a/ivette/src/renderer/Sidebar.tsx b/ivette/src/renderer/Sidebar.tsx
index facd523435a..b9c6b5d71b4 100644
--- a/ivette/src/renderer/Sidebar.tsx
+++ b/ivette/src/renderer/Sidebar.tsx
@@ -26,6 +26,7 @@
 
 import React from 'react';
 import * as Dome from 'dome';
+import { Icon } from 'dome/controls/icons';
 import { SideBar } from 'dome/frame/sidebars';
 import { Catch } from 'dome/errors';
 import { classes } from 'dome/misc/utils';
@@ -42,16 +43,17 @@ interface SelectorProps extends SidebarProps {
 }
 
 function Selector(props: SelectorProps): JSX.Element {
-  const { id, iconPath, selected, setSelected, label, title } = props;
+  const { id, icon, selected, setSelected, label } = props;
   const className = classes(
     'sidebar-selector',
     'dome-color-frame',
     selected === id && 'sidebar-selector-selected',
   );
   const onClick = React.useCallback(() => setSelected(id), [setSelected, id]);
+  const title = props.title ?? `${label} Sidebar`;
   const component =
-    iconPath
-    ? <img className="sidebar-selector-icon" src={iconPath} alt={label} />
+    icon
+    ? <Icon size={20} className="sidebar-selector-icon" id={icon}/>
     : <label className="sidebar-selector-label">{label}</label>;
   return (
     <div className={className} title={title} onClick={onClick}>
diff --git a/ivette/src/renderer/style.css b/ivette/src/renderer/style.css
index b2dfe3669ea..45bf4b36ca7 100644
--- a/ivette/src/renderer/style.css
+++ b/ivette/src/renderer/style.css
@@ -19,21 +19,16 @@
 }
 
 .sidebar-selector {
-    min-height: 35px;
+    margin: 0px;
+    min-height: 40px;
     min-width: 35px;
     text-align: center;
+    border-left: solid 3px transparent;
 }
 
 .sidebar-selector-icon {
-    margin-top: 5px;
-    margin-left: 25%;
-    margin-right: 25%;
-    width: 25px;
-    height: 25px;
-}
-
-.sidebar-selector-icon:hover {
-    background-color: var(--background-profound-hover);
+    position: relative;
+    top: 6px;
 }
 
 .sidebar-selector-label {
@@ -48,11 +43,12 @@
 }
 
 .sidebar-selector:hover {
-    background-color: var(--background-profound-hover);
+    background-color: var(--default-button-hover);
 }
 
 .sidebar-selector-selected {
     background-color: var(--background-profound);
+    border-color: var(--selected-button-img);
 }
 
 .component-info {
-- 
GitLab