Skip to content

Commit ffdf2ed

Browse files
authored
Update InnerRing (#162)
* Model System Editing Improvements (#153) * Fixed regression for getting a ExecuteWithContext. * Adding moving between boundaries and ghost nodes * Resolve selection not clearing. * Add Boundary Select keyboard shortcut and filter * Added menu item to launch the boundary selection dialog. * Added Starts to the multi select * Fix GhostNode resizing * Runtime Messages (#154) * Implemented writing status messages back to the host. * Add small index numbers to the end of links with multiple destinations (#155) * Update CI badge link in README.md (#156) * Graph Paper Background (#157) Added a graph paper like background to the ModelSystemCanvas to help orient people when scrolling and zooming. * Scale Editing Text (#158) In the current implementation the size of the text for the parameter currently being editing is always at 100%. This patch changes that by scaling the size of the text to match the rest of the cavas. * Update Model System Editing (#159) * Add drop shadows for canvas objects * Add inline editing for comments * Add inline renaming of nodes * Fix UX for selecting which Start to execute * Cleaned up unused UI * Set the Model System Variables to be sorted and added a filter * Added support for spaces in model system variable names * Fixed crash when undoing past the capacity. The previous code used a mod operator instead of SafeMod so the values were negative if the numerator was negative instead of acting like a clock. * Issue single session move command when dragging objects on canvas. Previously if you moved a node it would update the position constantly as you were dragging the node. Now it waits until you've finished moving it before setting that position. This makes the undo-redo stacks not fill with irrelevant positions. * Added model system variable search interface for scripts * If a script is being edited and is invalid when trying to save it, the editing session no longer closes. * Added syntax highlighting when editing scripts. * Fix resize to only save the session state once Previously resizing would save all of the different sizes as the user would drag the mouse. Now it only stores the end point. * Notifications (#160) * Add option for audio error notifications * Add system notifications when a model system finishes. * Model System Canvas Updates (#161) * Implement FunctionTemplates and FunctionInstances * Stop deleting a FunctionTemplate that has instances * Fixed rendering issue when undoing an EntryNode change * Add cascade deleting nodes that are acting as parameters. * Added delete a single option for links. * Added glowing * Lines are curvey now * Context menu no longer pops up after right click drag * Comments look like a Sticky Note * Fixed rendering of script text * Variable hints while editing a script now scale with the canvas * Moved adding items to canvas to context menu * Select item added * Double clicking on the Node Type Dialog selects the type. * Add light mode colours for ModelSystemCanvas * Zoom bar now renders with light mode * Integrate side bar features into ModelSystemCanvas * Added icons to document tab headers to help identify them. * Added UX for moving to parent boundary * Update button icons for Canvas * Add light theme support for ModelSystemVariablesDialog * Unify themes across all dialogs * Updated the background control colours to be off-black and off-white * Updated Project and Model System buttons to just be icons * Button tooltips no longer steal focus and disappear for dock buttons * FunctionTemplates now push the boundary max size. * Implemented FunctionParameters * Implementing local variables for FunctionTemplates * Implement running local variables * Support adding FunctionTemplates to Multiselect * Group moving multiple modules together * Fixed light theme colours for FunctionParameters and Starts * Fix FunctionParameter Header Rendering * Made EntryPoint text more visible in light theme * Updated SaveIcon to look better * Add screen scrolling when dragging a canvas objects near the control's edges * Add link reordering dialog Drag and drop is not working yet. * Add Escape to cancel out of dialogs * Adding othoginal links * Multiselect implementation for FunctionParameters * Cleanup ModelSystemCanvas
1 parent c48be86 commit ffdf2ed

File tree

99 files changed

+14151
-1297
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

99 files changed

+14151
-1297
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
![CI](https://github.com/TravelModellingGroup/XTMF2/workflows/CI/badge.svg?branch=dev)
2+
[![CI](https://github.com/TravelModellingGroup/XTMF2/actions/workflows/blank.yml/badge.svg)](https://github.com/TravelModellingGroup/XTMF2/actions/workflows/blank.yml)
33

44
# XTMF2
55
The eXtensible Travel Modelling Framework 2

src/XTMF2.GUI/App.axaml

Lines changed: 191 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,64 @@
2525

2626
<Application.Resources>
2727
<ResourceDictionary>
28-
28+
29+
<ResourceDictionary.ThemeDictionaries>
30+
31+
<!-- ── Neon dialog shared tokens ────────────────────────────────── -->
32+
<ResourceDictionary x:Key="Dark">
33+
<SolidColorBrush x:Key="DlgBg">#0E0E18</SolidColorBrush>
34+
<SolidColorBrush x:Key="DlgBorder">#FF00D4FF</SolidColorBrush>
35+
<SolidColorBrush x:Key="DlgFg">#FFEEFFFF</SolidColorBrush>
36+
<SolidColorBrush x:Key="DlgSubFg">#99AABBCC</SolidColorBrush>
37+
<SolidColorBrush x:Key="DlgAccent">#FF00D4FF</SolidColorBrush>
38+
<SolidColorBrush x:Key="DlgAccentDim">#2200D4FF</SolidColorBrush>
39+
<SolidColorBrush x:Key="DlgAccentMid">#4400D4FF</SolidColorBrush>
40+
<SolidColorBrush x:Key="DlgAccentFaint">#3300D4FF</SolidColorBrush>
41+
<SolidColorBrush x:Key="DlgAccentText">#8800D4FF</SolidColorBrush>
42+
<SolidColorBrush x:Key="DlgDanger">#FFFF4466</SolidColorBrush>
43+
<SolidColorBrush x:Key="DlgDangerHover">#22FF4466</SolidColorBrush>
44+
<SolidColorBrush x:Key="DlgErrorFg">#FFFF4466</SolidColorBrush>
45+
<SolidColorBrush x:Key="DlgInputBg">#12FFFFFF</SolidColorBrush>
46+
<SolidColorBrush x:Key="DlgInputBorder">#4400D4FF</SolidColorBrush>
47+
<SolidColorBrush x:Key="DlgHover">#1500D4FF</SolidColorBrush>
48+
<SolidColorBrush x:Key="DlgSelected">#2500D4FF</SolidColorBrush>
49+
<SolidColorBrush x:Key="DlgListBorder">#2200D4FF</SolidColorBrush>
50+
<SolidColorBrush x:Key="DlgSep">#2200D4FF</SolidColorBrush>
51+
<SolidColorBrush x:Key="DlgCaret">#FF00D4FF</SolidColorBrush>
52+
<SolidColorBrush x:Key="DlgBtnBorder">#4400D4FF</SolidColorBrush>
53+
<SolidColorBrush x:Key="DlgPrimaryBtnBg">#FF00D4FF</SolidColorBrush>
54+
<SolidColorBrush x:Key="DlgPrimaryBtnFg">#FF000A0E</SolidColorBrush>
55+
<SolidColorBrush x:Key="DlgPrimaryBtnHover">#CC00D4FF</SolidColorBrush>
56+
</ResourceDictionary>
57+
58+
<ResourceDictionary x:Key="Light">
59+
<SolidColorBrush x:Key="DlgBg">#F2F6FF</SolidColorBrush>
60+
<SolidColorBrush x:Key="DlgBorder">#FF0066CC</SolidColorBrush>
61+
<SolidColorBrush x:Key="DlgFg">#FF001830</SolidColorBrush>
62+
<SolidColorBrush x:Key="DlgSubFg">#FF567890</SolidColorBrush>
63+
<SolidColorBrush x:Key="DlgAccent">#FF0066CC</SolidColorBrush>
64+
<SolidColorBrush x:Key="DlgAccentDim">#1A0066CC</SolidColorBrush>
65+
<SolidColorBrush x:Key="DlgAccentMid">#330066CC</SolidColorBrush>
66+
<SolidColorBrush x:Key="DlgAccentFaint">#550066CC</SolidColorBrush>
67+
<SolidColorBrush x:Key="DlgAccentText">#AA0066CC</SolidColorBrush>
68+
<SolidColorBrush x:Key="DlgDanger">#FFCC0022</SolidColorBrush>
69+
<SolidColorBrush x:Key="DlgDangerHover">#22CC0022</SolidColorBrush>
70+
<SolidColorBrush x:Key="DlgErrorFg">#FFCC0022</SolidColorBrush>
71+
<SolidColorBrush x:Key="DlgInputBg">#0A000000</SolidColorBrush>
72+
<SolidColorBrush x:Key="DlgInputBorder">#550066CC</SolidColorBrush>
73+
<SolidColorBrush x:Key="DlgHover">#150066CC</SolidColorBrush>
74+
<SolidColorBrush x:Key="DlgSelected">#250066CC</SolidColorBrush>
75+
<SolidColorBrush x:Key="DlgListBorder">#330066CC</SolidColorBrush>
76+
<SolidColorBrush x:Key="DlgSep">#330066CC</SolidColorBrush>
77+
<SolidColorBrush x:Key="DlgCaret">#FF0066CC</SolidColorBrush>
78+
<SolidColorBrush x:Key="DlgBtnBorder">#550066CC</SolidColorBrush>
79+
<SolidColorBrush x:Key="DlgPrimaryBtnBg">#FF0066CC</SolidColorBrush>
80+
<SolidColorBrush x:Key="DlgPrimaryBtnFg">#FFFFFFFF</SolidColorBrush>
81+
<SolidColorBrush x:Key="DlgPrimaryBtnHover">#CC0066CC</SolidColorBrush>
82+
</ResourceDictionary>
83+
84+
</ResourceDictionary.ThemeDictionaries>
85+
2986
<!-- Forest Green Theme Colors -->
3087
<ResourceDictionary x:Key="ForestGreen">
3188
<Color x:Key="AccentColor">#2D5016</Color>
@@ -88,6 +145,138 @@
88145
<Style Selector=":is(Button).sapphire-blue:pointerover /template/ ContentPresenter">
89146
<Setter Property="Background" Value="#5179F1"/>
90147
</Style>
91-
148+
149+
<!-- ── Neon dialog theme: apply with Classes="neon-dialog" on any Window ── -->
150+
<Style Selector="Window.neon-dialog">
151+
<Setter Property="Background" Value="{DynamicResource DlgBg}"/>
152+
<Setter Property="BorderBrush" Value="{DynamicResource DlgBorder}"/>
153+
<Setter Property="BorderThickness" Value="1.5"/>
154+
</Style>
155+
<Style Selector="Window.neon-dialog TextBlock">
156+
<Setter Property="Foreground" Value="{DynamicResource DlgFg}"/>
157+
</Style>
158+
<Style Selector="Window.neon-dialog TextBox">
159+
<Setter Property="Background" Value="{DynamicResource DlgInputBg}"/>
160+
<Setter Property="Foreground" Value="{DynamicResource DlgFg}"/>
161+
<Setter Property="BorderBrush" Value="{DynamicResource DlgInputBorder}"/>
162+
<Setter Property="CaretBrush" Value="{DynamicResource DlgCaret}"/>
163+
</Style>
164+
<Style Selector="Window.neon-dialog ListBox">
165+
<Setter Property="Background" Value="Transparent"/>
166+
</Style>
167+
<Style Selector="Window.neon-dialog ListBoxItem">
168+
<Setter Property="Background" Value="Transparent"/>
169+
<Setter Property="Foreground" Value="{DynamicResource DlgFg}"/>
170+
</Style>
171+
<Style Selector="Window.neon-dialog ListBoxItem:pointerover /template/ ContentPresenter">
172+
<Setter Property="Background" Value="{DynamicResource DlgHover}"/>
173+
</Style>
174+
<Style Selector="Window.neon-dialog ListBoxItem:selected /template/ ContentPresenter">
175+
<Setter Property="Background" Value="{DynamicResource DlgSelected}"/>
176+
</Style>
177+
<Style Selector="Window.neon-dialog Border.dlg-list">
178+
<Setter Property="BorderBrush" Value="{DynamicResource DlgListBorder}"/>
179+
<Setter Property="BorderThickness" Value="1"/>
180+
<Setter Property="CornerRadius" Value="6"/>
181+
</Style>
182+
<Style Selector="Window.neon-dialog Separator">
183+
<Setter Property="Background" Value="{DynamicResource DlgSep}"/>
184+
</Style>
185+
<Style Selector="Window.neon-dialog Button">
186+
<Setter Property="Background" Value="Transparent"/>
187+
<Setter Property="Foreground" Value="{DynamicResource DlgFg}"/>
188+
<Setter Property="BorderBrush" Value="{DynamicResource DlgBtnBorder}"/>
189+
<Setter Property="BorderThickness" Value="1"/>
190+
<Setter Property="CornerRadius" Value="6"/>
191+
<Setter Property="Padding" Value="20,8"/>
192+
<Setter Property="MinWidth" Value="80"/>
193+
</Style>
194+
<Style Selector="Window.neon-dialog Button:pointerover /template/ ContentPresenter">
195+
<Setter Property="Background" Value="{DynamicResource DlgAccentDim}"/>
196+
</Style>
197+
<Style Selector="Window.neon-dialog Button:pressed /template/ ContentPresenter">
198+
<Setter Property="Background" Value="{DynamicResource DlgAccentMid}"/>
199+
</Style>
200+
<Style Selector="Window.neon-dialog Button.dlg-primary">
201+
<Setter Property="Background" Value="{DynamicResource DlgPrimaryBtnBg}"/>
202+
<Setter Property="Foreground" Value="{DynamicResource DlgPrimaryBtnFg}"/>
203+
<Setter Property="BorderThickness" Value="0"/>
204+
<Setter Property="FontWeight" Value="SemiBold"/>
205+
</Style>
206+
<Style Selector="Window.neon-dialog Button.dlg-primary:pointerover /template/ ContentPresenter">
207+
<Setter Property="Background" Value="{DynamicResource DlgPrimaryBtnHover}"/>
208+
</Style>
209+
<Style Selector="Window.neon-dialog Button.dlg-primary:disabled">
210+
<Setter Property="Opacity" Value="0.4"/>
211+
</Style>
212+
<Style Selector="Window.neon-dialog Button.dlg-icon">
213+
<Setter Property="Background" Value="Transparent"/>
214+
<Setter Property="BorderThickness" Value="0"/>
215+
<Setter Property="Padding" Value="6,4"/>
216+
<Setter Property="MinWidth" Value="0"/>
217+
</Style>
218+
<Style Selector="Window.neon-dialog Button.dlg-danger">
219+
<Setter Property="Foreground" Value="{DynamicResource DlgDanger}"/>
220+
<Setter Property="Background" Value="Transparent"/>
221+
<Setter Property="BorderThickness" Value="0"/>
222+
<Setter Property="Padding" Value="6,4"/>
223+
<Setter Property="MinWidth" Value="0"/>
224+
</Style>
225+
<Style Selector="Window.neon-dialog Button.dlg-danger:pointerover /template/ ContentPresenter">
226+
<Setter Property="Background" Value="{DynamicResource DlgDangerHover}"/>
227+
</Style>
228+
229+
<!-- ── neon-view: shared style for UserControl-based content views ── -->
230+
<Style Selector="UserControl.neon-view">
231+
<Setter Property="Background" Value="{DynamicResource DlgBg}"/>
232+
</Style>
233+
<Style Selector="UserControl.neon-view TextBlock">
234+
<Setter Property="Foreground" Value="{DynamicResource DlgFg}"/>
235+
</Style>
236+
<Style Selector="UserControl.neon-view ListBox">
237+
<Setter Property="Background" Value="Transparent"/>
238+
<Setter Property="BorderThickness" Value="0"/>
239+
</Style>
240+
<Style Selector="UserControl.neon-view ListBoxItem:pointerover /template/ ContentPresenter">
241+
<Setter Property="Background" Value="{DynamicResource DlgHover}"/>
242+
</Style>
243+
<Style Selector="UserControl.neon-view ListBoxItem:selected /template/ ContentPresenter">
244+
<Setter Property="Background" Value="{DynamicResource DlgSelected}"/>
245+
</Style>
246+
<Style Selector="UserControl.neon-view ListBoxItem:selected:pointerover /template/ ContentPresenter">
247+
<Setter Property="Background" Value="{DynamicResource DlgAccentMid}"/>
248+
</Style>
249+
<Style Selector="UserControl.neon-view Button">
250+
<Setter Property="Background" Value="Transparent"/>
251+
<Setter Property="Foreground" Value="{DynamicResource DlgFg}"/>
252+
<Setter Property="BorderBrush" Value="{DynamicResource DlgBtnBorder}"/>
253+
<Setter Property="BorderThickness" Value="1"/>
254+
<Setter Property="CornerRadius" Value="4"/>
255+
<Setter Property="Padding" Value="12,6"/>
256+
</Style>
257+
<Style Selector="UserControl.neon-view Button:pointerover /template/ ContentPresenter">
258+
<Setter Property="Background" Value="{DynamicResource DlgHover}"/>
259+
</Style>
260+
<Style Selector="UserControl.neon-view Button.dlg-primary">
261+
<Setter Property="Background" Value="{DynamicResource DlgPrimaryBtnBg}"/>
262+
<Setter Property="Foreground" Value="{DynamicResource DlgPrimaryBtnFg}"/>
263+
<Setter Property="BorderThickness" Value="0"/>
264+
<Setter Property="FontWeight" Value="SemiBold"/>
265+
</Style>
266+
<Style Selector="UserControl.neon-view Button.dlg-primary:pointerover /template/ ContentPresenter">
267+
<Setter Property="Background" Value="{DynamicResource DlgPrimaryBtnHover}"/>
268+
</Style>
269+
<Style Selector="UserControl.neon-view Button.dlg-danger">
270+
<Setter Property="Background" Value="Transparent"/>
271+
<Setter Property="Foreground" Value="{DynamicResource DlgDanger}"/>
272+
<Setter Property="BorderBrush" Value="{DynamicResource DlgDanger}"/>
273+
<Setter Property="BorderThickness" Value="1"/>
274+
<Setter Property="Padding" Value="4,2"/>
275+
<Setter Property="MinWidth" Value="0"/>
276+
</Style>
277+
<Style Selector="UserControl.neon-view Button.dlg-danger:pointerover /template/ ContentPresenter">
278+
<Setter Property="Background" Value="{DynamicResource DlgDangerHover}"/>
279+
</Style>
280+
92281
</Application.Styles>
93282
</Application>

0 commit comments

Comments
 (0)