From: Jean-Philippe Bruyère Date: Tue, 22 Jul 2025 06:33:10 +0000 (+0200) Subject: iml locations X-Git-Url: https://git.osiis.dedyn.io/?a=commitdiff_plain;h=5975973d861384dbe2fc9352acc38297ac542ae8;p=jp%2Fcrowedit.git iml locations --- diff --git a/plugins/CECrowPlugin/src/CrowService.cs b/plugins/CECrowPlugin/src/CrowService.cs index d06bf00..52a3a27 100644 --- a/plugins/CECrowPlugin/src/CrowService.cs +++ b/plugins/CECrowPlugin/src/CrowService.cs @@ -364,7 +364,7 @@ namespace CECrowPlugin if (IsRunning) delUnlockRenderMutex(); } - + bool dirtyState = false; bool DirtyState { get { @@ -619,6 +619,7 @@ namespace CECrowPlugin fiWidget_design_id = typeWidget.GetField("design_id"); fiWidget_design_style_values = typeWidget.GetField("design_style_values"); fiWidget_design_style_locations = typeWidget.GetField("design_style_locations"); + fiWidget_design_iml_locations = typeWidget.GetField("design_iml_locations"); fiWidget_design_iml_values = typeWidget.GetField("design_iml_values"); fiWidget_design_line = typeWidget.GetField("design_line"); fiWidget_design_column = typeWidget.GetField("design_column"); @@ -645,7 +646,6 @@ namespace CECrowPlugin public Project CurrentSolution { get => currentSolution; set { - //CERoslynPlugin.SolutionProject sol = value as CERoslynPlugin.SolutionProject; if (currentSolution == value) return; currentSolution = value; @@ -655,15 +655,10 @@ namespace CECrowPlugin public Document CurrentDocument { get => currentDocument; set { - //CERoslynPlugin.SolutionProject sol = value as CERoslynPlugin.SolutionProject; if (currentDocument == value) return; currentDocument = value; NotifyValueChanged (currentDocument); - - /*if (currentDocument is ImlDocument iml) { - LoadIML(iml.source.ToString()); - }*/ } } diff --git a/plugins/CECrowPlugin/src/ForeignWidgetContainer.cs b/plugins/CECrowPlugin/src/ForeignWidgetContainer.cs index fca8618..a5d474e 100644 --- a/plugins/CECrowPlugin/src/ForeignWidgetContainer.cs +++ b/plugins/CECrowPlugin/src/ForeignWidgetContainer.cs @@ -19,7 +19,9 @@ namespace CECrowPlugin public class ForeignWidgetContainer : CrowEditComponent { internal static Type typeWidget;//, typeGroup, typeContainer, typeTemplatedContainer, typeTemplatedGroup; //design mode members, present only if crow compiled with DESIGN_MODE enabled - internal static FieldInfo fiWidget_design_id, fiWidget_design_style_values, fiWidget_design_iml_values, fiWidget_design_style_locations, + internal static FieldInfo fiWidget_design_id, + fiWidget_design_style_values, fiWidget_design_iml_values, + fiWidget_design_style_locations, fiWidget_design_iml_locations, fiWidget_design_line, fiWidget_design_column, fiWidget_design_imlPath, fiWidget_slot; Func delGetName; @@ -44,7 +46,7 @@ namespace CECrowPlugin designColumn = (int)fiWidget_design_column?.GetValue(instance); designImlPath = (string)fiWidget_design_imlPath?.GetValue(instance); - //Console.WriteLine($"new ForeignWidgetContainer: {this} {parent}"); + //onsole.WriteLine($"new ForeignWidgetContainer: {this} {parent} {designImlPath}"); } @@ -101,6 +103,7 @@ namespace CECrowPlugin public Dictionary ImlValues => fiWidget_design_iml_values.GetValue(instance) as Dictionary; public Dictionary StyleValues => fiWidget_design_style_values.GetValue(instance) as Dictionary; public Dictionary StyleLocation => fiWidget_design_style_locations.GetValue(instance) as Dictionary; + public Dictionary ImlLocation => fiWidget_design_iml_locations.GetValue(instance) as Dictionary; public virtual bool IsExpanded { get => isExpanded; diff --git a/plugins/CECrowPlugin/src/PropertyContainer.cs b/plugins/CECrowPlugin/src/PropertyContainer.cs index 3c40b7d..6245950 100644 --- a/plugins/CECrowPlugin/src/PropertyContainer.cs +++ b/plugins/CECrowPlugin/src/PropertyContainer.cs @@ -23,7 +23,7 @@ namespace CECrowPlugin ForeignWidgetContainer host; PropertyInfo pi; - Command cmdReset, cmdGoToStyle; + Command cmdReset, cmdGoToStyle, cmdGoToIml; public CommandGroup Commands; #region CTOR @@ -33,15 +33,16 @@ namespace CECrowPlugin cmdReset = new ActionCommand ("Reset to default", Reset, "", HasStyling | IsSetByIML); cmdGoToStyle = new ActionCommand ("Goto style", GotoStyle, "#icons.edit.svg", HasStyling); + cmdGoToIml = new ActionCommand ("Goto Iml", GotoIml, "#icons.edit.svg", HasImlLocation); - Commands = new CommandGroup (cmdReset, cmdGoToStyle); + Commands = new CommandGroup (cmdReset, cmdGoToStyle, cmdGoToIml); } #endregion public string DesignCategory { get { DesignCategory dca = (DesignCategory)pi.GetCustomAttribute (typeof(DesignCategory)); - return dca == null ? "Divers" : dca.Name; + return dca == null ? "Divers" : dca.Name; } } public string Name => pi.Name; @@ -78,6 +79,7 @@ namespace CECrowPlugin /// return true if current value comes from IML attributes /// public bool IsSetByIML => host.ImlValues.ContainsKey (Name); + public bool HasImlLocation => host.ImlLocation.ContainsKey(Name); /// /// return true if member default value comes from style /// @@ -116,7 +118,7 @@ namespace CECrowPlugin if (srv.CurrentSolution.TryGetFile(fl.FilePath, out IFileNode node)) { if (App.OpenFile(node.FullPath) is TextDocument doc) { doc.IsSelected = true; - doc.SetLocation(new CharLocation(fl.Line, fl.Column)); + doc.SetLocation(new CharLocation(fl.Line, fl.Column + doc.GetLineText(fl.Line).CountLeadingWhiteSpaces())); } } @@ -133,8 +135,26 @@ namespace CECrowPlugin pf.IsSelected = true;*/ } + public void GotoIml(){ + if (!HasImlLocation) + return; + FileLocation fl = host.ImlLocation[Name]; + Debug.WriteLine($"goto iml: {fl.FilePath}"); + CrowService srv = App.GetService (); + if (srv.CurrentDocument is ImlDocument iml) { + iml.SetLocation(new CharLocation(fl.Line, fl.Column + iml.GetLineText(fl.Line).CountLeadingWhiteSpaces())); + } + } public override string ToString () => $"{Name} = {Value}"; + public override bool IsSelected { + get => base.IsSelected; + set { + base.IsSelected = value; + if (isSelected && HasImlLocation) + GotoIml(); + } + } } } diff --git a/plugins/CECrowPlugin/ui/winProperties.crow b/plugins/CECrowPlugin/ui/winProperties.crow index fb80901..1e5ecae 100644 --- a/plugins/CECrowPlugin/ui/winProperties.crow +++ b/plugins/CECrowPlugin/ui/winProperties.crow @@ -13,7 +13,7 @@