Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
1284af2
Implement FunctionTemplates and FunctionInstances
JamesVaughan Apr 2, 2026
ff554a6
Stop deleting a FunctionTemplate that has instances
JamesVaughan Apr 3, 2026
64e5794
Fixed rendering issue when undoing an EntryNode change
JamesVaughan Apr 3, 2026
1179945
Add cascade deleting nodes that are acting as parameters.
JamesVaughan Apr 3, 2026
13092f2
Added delete a single option for links.
JamesVaughan Apr 3, 2026
2a64206
Added glowing
JamesVaughan Apr 3, 2026
da0b2f0
Lines are curvey now
JamesVaughan Apr 3, 2026
bbb9e9a
Context menu no longer pops up after right click drag
JamesVaughan Apr 3, 2026
0aa7bd7
Comments look like a Sticky Note
JamesVaughan Apr 3, 2026
8a02955
Fixed rendering of script text
JamesVaughan Apr 3, 2026
7017427
Variable hints while editing a script now scale with the canvas
JamesVaughan Apr 3, 2026
7206284
Moved adding items to canvas to context menu
JamesVaughan Apr 3, 2026
b9d5669
Select item added
JamesVaughan Apr 3, 2026
dc6920c
Double clicking on the Node Type Dialog selects the type.
JamesVaughan Apr 3, 2026
f070781
Add light mode colours for ModelSystemCanvas
JamesVaughan Apr 3, 2026
1fe1257
Zoom bar now renders with light mode
JamesVaughan Apr 3, 2026
39c5425
Integrate side bar features into ModelSystemCanvas
JamesVaughan Apr 3, 2026
76fb3dd
Added icons to document tab headers to help identify them.
JamesVaughan Apr 3, 2026
54d8679
Added UX for moving to parent boundary
JamesVaughan Apr 3, 2026
33c101c
Update button icons for Canvas
JamesVaughan Apr 3, 2026
ec1b6c3
Add light theme support for ModelSystemVariablesDialog
JamesVaughan Apr 3, 2026
e01ef83
Unify themes across all dialogs
JamesVaughan Apr 3, 2026
d5ad9c6
Updated the background control colours to be off-black and off-white
JamesVaughan Apr 3, 2026
f336a93
Updated Project and Model System buttons to just be icons
JamesVaughan Apr 3, 2026
e840fbb
Button tooltips no longer steal focus and disapear for dock buttons
JamesVaughan Apr 4, 2026
d6170a7
FunctionTemplates now push the boundary max size.
JamesVaughan Apr 4, 2026
9aa6b46
Implemented FunctionParameters
JamesVaughan Apr 4, 2026
4d4b64a
Implementing local variables for FunctionTemplates
JamesVaughan Apr 4, 2026
cd14a39
Implement running local variables
JamesVaughan Apr 4, 2026
c7343ee
Support adding FunctionTemplates to Multiselect
JamesVaughan Apr 4, 2026
123fc30
Group moving multiple modules together
JamesVaughan Apr 4, 2026
a23f84c
Fixed light theme colours for FunctionParameters and Starts
JamesVaughan Apr 4, 2026
60f9e18
Fix FunctionParameter Header Rendering
JamesVaughan Apr 5, 2026
7386634
Made EntryPoint text more visable in light theme
JamesVaughan Apr 5, 2026
285ff31
Updated SaveIcon to look better
JamesVaughan Apr 5, 2026
7fff4df
Add screen scrolling when dragging a canvas objects near the control'…
JamesVaughan Apr 5, 2026
9eb6fc2
Add link reordering dialog
JamesVaughan Apr 5, 2026
e037f59
Add Escape to cancel out of dialogs
JamesVaughan Apr 5, 2026
639f48f
Adding othoginal links
JamesVaughan Apr 5, 2026
193b030
Multiselect implementation for FunctionParameters
JamesVaughan Apr 5, 2026
f1cfccc
Cleanup ModelSystemCanvas
JamesVaughan Apr 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
193 changes: 191 additions & 2 deletions src/XTMF2.GUI/App.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,64 @@

<Application.Resources>
<ResourceDictionary>


<ResourceDictionary.ThemeDictionaries>

<!-- ── Neon dialog shared tokens ────────────────────────────────── -->
<ResourceDictionary x:Key="Dark">
<SolidColorBrush x:Key="DlgBg">#0E0E18</SolidColorBrush>
<SolidColorBrush x:Key="DlgBorder">#FF00D4FF</SolidColorBrush>
<SolidColorBrush x:Key="DlgFg">#FFEEFFFF</SolidColorBrush>
<SolidColorBrush x:Key="DlgSubFg">#99AABBCC</SolidColorBrush>
<SolidColorBrush x:Key="DlgAccent">#FF00D4FF</SolidColorBrush>
<SolidColorBrush x:Key="DlgAccentDim">#2200D4FF</SolidColorBrush>
<SolidColorBrush x:Key="DlgAccentMid">#4400D4FF</SolidColorBrush>
<SolidColorBrush x:Key="DlgAccentFaint">#3300D4FF</SolidColorBrush>
<SolidColorBrush x:Key="DlgAccentText">#8800D4FF</SolidColorBrush>
<SolidColorBrush x:Key="DlgDanger">#FFFF4466</SolidColorBrush>
<SolidColorBrush x:Key="DlgDangerHover">#22FF4466</SolidColorBrush>
<SolidColorBrush x:Key="DlgErrorFg">#FFFF4466</SolidColorBrush>
<SolidColorBrush x:Key="DlgInputBg">#12FFFFFF</SolidColorBrush>
<SolidColorBrush x:Key="DlgInputBorder">#4400D4FF</SolidColorBrush>
<SolidColorBrush x:Key="DlgHover">#1500D4FF</SolidColorBrush>
<SolidColorBrush x:Key="DlgSelected">#2500D4FF</SolidColorBrush>
<SolidColorBrush x:Key="DlgListBorder">#2200D4FF</SolidColorBrush>
<SolidColorBrush x:Key="DlgSep">#2200D4FF</SolidColorBrush>
<SolidColorBrush x:Key="DlgCaret">#FF00D4FF</SolidColorBrush>
<SolidColorBrush x:Key="DlgBtnBorder">#4400D4FF</SolidColorBrush>
<SolidColorBrush x:Key="DlgPrimaryBtnBg">#FF00D4FF</SolidColorBrush>
<SolidColorBrush x:Key="DlgPrimaryBtnFg">#FF000A0E</SolidColorBrush>
<SolidColorBrush x:Key="DlgPrimaryBtnHover">#CC00D4FF</SolidColorBrush>
</ResourceDictionary>

<ResourceDictionary x:Key="Light">
<SolidColorBrush x:Key="DlgBg">#F2F6FF</SolidColorBrush>
<SolidColorBrush x:Key="DlgBorder">#FF0066CC</SolidColorBrush>
<SolidColorBrush x:Key="DlgFg">#FF001830</SolidColorBrush>
<SolidColorBrush x:Key="DlgSubFg">#FF567890</SolidColorBrush>
<SolidColorBrush x:Key="DlgAccent">#FF0066CC</SolidColorBrush>
<SolidColorBrush x:Key="DlgAccentDim">#1A0066CC</SolidColorBrush>
<SolidColorBrush x:Key="DlgAccentMid">#330066CC</SolidColorBrush>
<SolidColorBrush x:Key="DlgAccentFaint">#550066CC</SolidColorBrush>
<SolidColorBrush x:Key="DlgAccentText">#AA0066CC</SolidColorBrush>
<SolidColorBrush x:Key="DlgDanger">#FFCC0022</SolidColorBrush>
<SolidColorBrush x:Key="DlgDangerHover">#22CC0022</SolidColorBrush>
<SolidColorBrush x:Key="DlgErrorFg">#FFCC0022</SolidColorBrush>
<SolidColorBrush x:Key="DlgInputBg">#0A000000</SolidColorBrush>
<SolidColorBrush x:Key="DlgInputBorder">#550066CC</SolidColorBrush>
<SolidColorBrush x:Key="DlgHover">#150066CC</SolidColorBrush>
<SolidColorBrush x:Key="DlgSelected">#250066CC</SolidColorBrush>
<SolidColorBrush x:Key="DlgListBorder">#330066CC</SolidColorBrush>
<SolidColorBrush x:Key="DlgSep">#330066CC</SolidColorBrush>
<SolidColorBrush x:Key="DlgCaret">#FF0066CC</SolidColorBrush>
<SolidColorBrush x:Key="DlgBtnBorder">#550066CC</SolidColorBrush>
<SolidColorBrush x:Key="DlgPrimaryBtnBg">#FF0066CC</SolidColorBrush>
<SolidColorBrush x:Key="DlgPrimaryBtnFg">#FFFFFFFF</SolidColorBrush>
<SolidColorBrush x:Key="DlgPrimaryBtnHover">#CC0066CC</SolidColorBrush>
</ResourceDictionary>

</ResourceDictionary.ThemeDictionaries>

<!-- Forest Green Theme Colors -->
<ResourceDictionary x:Key="ForestGreen">
<Color x:Key="AccentColor">#2D5016</Color>
Expand Down Expand Up @@ -88,6 +145,138 @@
<Style Selector=":is(Button).sapphire-blue:pointerover /template/ ContentPresenter">
<Setter Property="Background" Value="#5179F1"/>
</Style>


<!-- ── Neon dialog theme: apply with Classes="neon-dialog" on any Window ── -->
<Style Selector="Window.neon-dialog">
<Setter Property="Background" Value="{DynamicResource DlgBg}"/>
<Setter Property="BorderBrush" Value="{DynamicResource DlgBorder}"/>
<Setter Property="BorderThickness" Value="1.5"/>
</Style>
<Style Selector="Window.neon-dialog TextBlock">
<Setter Property="Foreground" Value="{DynamicResource DlgFg}"/>
</Style>
<Style Selector="Window.neon-dialog TextBox">
<Setter Property="Background" Value="{DynamicResource DlgInputBg}"/>
<Setter Property="Foreground" Value="{DynamicResource DlgFg}"/>
<Setter Property="BorderBrush" Value="{DynamicResource DlgInputBorder}"/>
<Setter Property="CaretBrush" Value="{DynamicResource DlgCaret}"/>
</Style>
<Style Selector="Window.neon-dialog ListBox">
<Setter Property="Background" Value="Transparent"/>
</Style>
<Style Selector="Window.neon-dialog ListBoxItem">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Foreground" Value="{DynamicResource DlgFg}"/>
</Style>
<Style Selector="Window.neon-dialog ListBoxItem:pointerover /template/ ContentPresenter">
<Setter Property="Background" Value="{DynamicResource DlgHover}"/>
</Style>
<Style Selector="Window.neon-dialog ListBoxItem:selected /template/ ContentPresenter">
<Setter Property="Background" Value="{DynamicResource DlgSelected}"/>
</Style>
<Style Selector="Window.neon-dialog Border.dlg-list">
<Setter Property="BorderBrush" Value="{DynamicResource DlgListBorder}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="CornerRadius" Value="6"/>
</Style>
<Style Selector="Window.neon-dialog Separator">
<Setter Property="Background" Value="{DynamicResource DlgSep}"/>
</Style>
<Style Selector="Window.neon-dialog Button">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Foreground" Value="{DynamicResource DlgFg}"/>
<Setter Property="BorderBrush" Value="{DynamicResource DlgBtnBorder}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="CornerRadius" Value="6"/>
<Setter Property="Padding" Value="20,8"/>
<Setter Property="MinWidth" Value="80"/>
</Style>
<Style Selector="Window.neon-dialog Button:pointerover /template/ ContentPresenter">
<Setter Property="Background" Value="{DynamicResource DlgAccentDim}"/>
</Style>
<Style Selector="Window.neon-dialog Button:pressed /template/ ContentPresenter">
<Setter Property="Background" Value="{DynamicResource DlgAccentMid}"/>
</Style>
<Style Selector="Window.neon-dialog Button.dlg-primary">
<Setter Property="Background" Value="{DynamicResource DlgPrimaryBtnBg}"/>
<Setter Property="Foreground" Value="{DynamicResource DlgPrimaryBtnFg}"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="FontWeight" Value="SemiBold"/>
</Style>
<Style Selector="Window.neon-dialog Button.dlg-primary:pointerover /template/ ContentPresenter">
<Setter Property="Background" Value="{DynamicResource DlgPrimaryBtnHover}"/>
</Style>
<Style Selector="Window.neon-dialog Button.dlg-primary:disabled">
<Setter Property="Opacity" Value="0.4"/>
</Style>
<Style Selector="Window.neon-dialog Button.dlg-icon">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Padding" Value="6,4"/>
<Setter Property="MinWidth" Value="0"/>
</Style>
<Style Selector="Window.neon-dialog Button.dlg-danger">
<Setter Property="Foreground" Value="{DynamicResource DlgDanger}"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Padding" Value="6,4"/>
<Setter Property="MinWidth" Value="0"/>
</Style>
<Style Selector="Window.neon-dialog Button.dlg-danger:pointerover /template/ ContentPresenter">
<Setter Property="Background" Value="{DynamicResource DlgDangerHover}"/>
</Style>

<!-- ── neon-view: shared style for UserControl-based content views ── -->
<Style Selector="UserControl.neon-view">
<Setter Property="Background" Value="{DynamicResource DlgBg}"/>
</Style>
<Style Selector="UserControl.neon-view TextBlock">
<Setter Property="Foreground" Value="{DynamicResource DlgFg}"/>
</Style>
<Style Selector="UserControl.neon-view ListBox">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0"/>
</Style>
<Style Selector="UserControl.neon-view ListBoxItem:pointerover /template/ ContentPresenter">
<Setter Property="Background" Value="{DynamicResource DlgHover}"/>
</Style>
<Style Selector="UserControl.neon-view ListBoxItem:selected /template/ ContentPresenter">
<Setter Property="Background" Value="{DynamicResource DlgSelected}"/>
</Style>
<Style Selector="UserControl.neon-view ListBoxItem:selected:pointerover /template/ ContentPresenter">
<Setter Property="Background" Value="{DynamicResource DlgAccentMid}"/>
</Style>
<Style Selector="UserControl.neon-view Button">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Foreground" Value="{DynamicResource DlgFg}"/>
<Setter Property="BorderBrush" Value="{DynamicResource DlgBtnBorder}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="CornerRadius" Value="4"/>
<Setter Property="Padding" Value="12,6"/>
</Style>
<Style Selector="UserControl.neon-view Button:pointerover /template/ ContentPresenter">
<Setter Property="Background" Value="{DynamicResource DlgHover}"/>
</Style>
<Style Selector="UserControl.neon-view Button.dlg-primary">
<Setter Property="Background" Value="{DynamicResource DlgPrimaryBtnBg}"/>
<Setter Property="Foreground" Value="{DynamicResource DlgPrimaryBtnFg}"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="FontWeight" Value="SemiBold"/>
</Style>
<Style Selector="UserControl.neon-view Button.dlg-primary:pointerover /template/ ContentPresenter">
<Setter Property="Background" Value="{DynamicResource DlgPrimaryBtnHover}"/>
</Style>
<Style Selector="UserControl.neon-view Button.dlg-danger">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Foreground" Value="{DynamicResource DlgDanger}"/>
<Setter Property="BorderBrush" Value="{DynamicResource DlgDanger}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Padding" Value="4,2"/>
<Setter Property="MinWidth" Value="0"/>
</Style>
<Style Selector="UserControl.neon-view Button.dlg-danger:pointerover /template/ ContentPresenter">
<Setter Property="Background" Value="{DynamicResource DlgDangerHover}"/>
</Style>

</Application.Styles>
</Application>
Loading
Loading