2 using System.Collections.Generic;
3 using System.Collections.Specialized;
7 using System.Windows.Controls;
8 using System.Windows.Data;
9 using System.Windows.Documents;
10 using System.Windows.Input;
11 using System.Windows.Media;
12 using System.Windows.Media.Imaging;
13 using System.Windows.Navigation;
14 using System.Windows.Shapes;
15 using System.ComponentModel;
18 namespace SeciUserInterface
51 Seci.Managers.SeciMgr.IsBusy =
true;
58 Properties.Settings.Default.CleanKill =
false;
59 Properties.Settings.Default.Save();
62 String exeLocation = System.Reflection.Assembly.GetExecutingAssembly().Location;
63 Seci.Managers.SeciMgr.InitialiseSeci(exeLocation.Substring(0, exeLocation.LastIndexOf(
'\\')));
64 ApplicationCommands.New.InputGestures.Clear();
66 InitializeComponent();
71 if (Seci.Definitions.Status.DashboardType ==
"PERIOD")
75 else if (Seci.Definitions.Status.DashboardType ==
"PEARL")
79 else if (Seci.Definitions.Status.DashboardType ==
"POLARIS")
91 Binding b =
new Binding();
93 b.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
94 b.Path =
new PropertyPath(
"ActualHeight");
95 this.blocksDisplay.SetBinding(SeciControls.BlockDisplay.HeightProperty, b);
97 if (Seci.Definitions.Status.IsMuonInstrument)
99 _dashboard.IsMuon =
true;
103 this.Title +=
" (Version " + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString() +
")";
109 Application.Current.Shutdown();
116 catch (Exception err)
118 MessageBox.Show(
"Start up error: " + err.Message);
124 if (Seci.Definitions.Status.DelayStartup)
127 System.Threading.Thread.Sleep(30000);
131 StringCollection navbarnames = Properties.Settings.Default.NavBarSettings;
132 List<KeyValuePair<String, String>> order =
new List<KeyValuePair<String, String>>();
133 foreach (String str
in navbarnames)
135 String[] temp = str.Split(
'|');
136 if (temp.Length == 2)
138 order.Add(
new KeyValuePair<string, string>(temp[0].Trim(), temp[1].Trim()));
141 navBar.SetButtonOrderAndNames(order);
143 navBar.LostTimeVisible = Properties.Settings.Default.LostTimeVisible;
144 navBar.VisVisibleForUser = Properties.Settings.Default.VisAvailable;
145 navBar.DaeVisibleForUser = Properties.Settings.Default.DaeViAvailable;
146 navBar.UserCanEditVISettings = Properties.Settings.Default.UserCanEditVISettings;
147 navBar.JournelViewerVisible = Properties.Settings.Default.ShowJournalViewer;
149 advancedOptions.ShowLostTime = navBar.LostTimeVisible;
150 advancedOptions.VisAvailable = navBar.VisVisibleForUser;
151 advancedOptions.DaeAvailable = navBar.DaeVisibleForUser;
152 advancedOptions.ShowJournalViewer = navBar.JournelViewerVisible;
153 advancedOptions.ShowBeamlogger = Properties.Settings.Default.ShowBeamlogger;
154 advancedOptions.BigFontsDashboard = Properties.Settings.Default.UseBigFontsDashboard;
155 advancedOptions.PlotOnGenieTab = Properties.Settings.Default.GraphsOnGenieTab;
156 Seci.Managers.SeciMgr.WebDashboardEnabled = Properties.Settings.Default.WebDashboardEnabled;
157 Seci.Managers.SeciMgr.WebDashboardShowTitle = Properties.Settings.Default.WebDashboardShowTitle;
158 advancedOptions.ShowWebDashboard = Seci.Managers.SeciMgr.WebDashboardEnabled;
159 advancedOptions.WebDashboardShowTitle = Seci.Managers.SeciMgr.WebDashboardShowTitle;
160 bugzillaDisplayer.Navigate(
new Uri(Seci.Definitions.Status.BugzillaWebpage));
162 advancedOptions.PythonAvailable = Seci.Definitions.Status.IsPythonAvailable;
165 Seci.Managers.AlertsMgr.LoadPhoneNumbers();
167 if (Seci.Definitions.Status.KillIcpOnExit)
170 Seci.Standard.Dae.KillIcp();
173 Seci.Standard.Dae.KillIsisDataSvr();
177 if (!String.IsNullOrEmpty(Properties.Settings.Default.ScriptPIDS))
179 System.Diagnostics.Process[] procList = System.Diagnostics.Process.GetProcessesByName(
"tkgenie32");
181 if (procList.Length > 0)
183 String[] old_pids = Properties.Settings.Default.ScriptPIDS.Split(
';');
185 for (
int i = 0; i < old_pids.Length; ++i)
188 if (
int.TryParse(old_pids[i], out pid))
190 for (
int j = 0; j < procList.Length; ++j)
192 if (pid == procList[j].Id)
198 catch (Exception err)
200 Seci.Helpers.MessageLogger.WriteMessage(
"UserInterface_Loaded",
"Failed to kill Genie orphan: " + err.Message);
207 Properties.Settings.Default.ScriptPIDS =
"";
211 Seci.Managers.SeciMgr.InitialiseLabView(
true);
215 if (Seci.Definitions.Status.AutoloadLastConfig && !String.IsNullOrEmpty(Properties.Settings.Default.LastConfig))
217 FileInfo fi =
new FileInfo(Seci.Definitions.Status.ConfigDir + Properties.Settings.Default.LastConfig);
222 _splashscreen.Close();
225 eventViewer.AddMessage(
"Seci automatically started with last configuration",
false);
226 openConfig(Seci.Definitions.Status.ConfigDir + Properties.Settings.Default.LastConfig,
false);
227 Seci.Helpers.MessageLogger.WriteMessage(
"UserInterface",
"Last configuration was loaded automatically");
228 Seci.Managers.SeciMgr.IsBusy =
false;
232 else if (
_forceRestart && !String.IsNullOrEmpty(Properties.Settings.Default.LastConfig))
234 Seci.Helpers.MessageLogger.WriteMessage(
"UserInterface",
"Seci was not closed properly last time it was running.");
235 FileInfo fi =
new FileInfo(Seci.Definitions.Status.ConfigDir + Properties.Settings.Default.LastConfig);
240 if (dlg.ShowDialog() ==
true)
242 _splashscreen.Close();
245 eventViewer.AddMessage(
"Seci started with last configuration",
false);
246 openConfig(Seci.Definitions.Status.ConfigDir + Properties.Settings.Default.LastConfig,
false);
247 Seci.Helpers.MessageLogger.WriteMessage(
"UserInterface",
"Last configuration was loaded");
248 Seci.Managers.SeciMgr.IsBusy =
false;
269 if (Seci.Definitions.Status.ShowScriptingPage)
276 navBar.HideScriptingTab();
279 eventViewer.AddMessage(
"Seci started",
false);
281 _splashscreen.Close();
285 Seci.Managers.SeciMgr.IsBusy =
false;
288 #region NavBar Events
293 experimentDetails.Visibility = Visibility.Visible;
295 userInfo.Visibility = Visibility.Visible;
297 sampleInfo.Visibility = Visibility.Visible;
298 beamlineInfo.Update();
299 beamlineInfo.Visibility = Visibility.Visible;
307 viTab.Visibility = Visibility.Visible;
312 Seci.Managers.SeciMgr.IsBusy =
true;
317 if (addVI.ShowDialog() == System.Windows.Forms.DialogResult.OK)
319 List<String> vis = Seci.Managers.LabViewMgr.GetListOfVIs(
true);
322 for (
int i = 0; i < addVI.VIsToAdd.Count; ++i)
324 if (!vis.Contains(addVI.VIsToAdd[i].ToLower()))
327 Seci.Managers.LabViewMgr.ShowVI(addVI.VIsToAdd[i]);
332 _backgroundAutoSave.RunWorkerAsync();
335 catch (FileNotFoundException err)
338 eventViewer.AddMessage(
"Could not extract information from llb file: " + err.Message,
true);
339 MessageBox.Show(
"Could not extract information from llb file! " + err.Message +
"!",
"Error!", MessageBoxButton.OK, MessageBoxImage.Error);
341 catch (Exception err)
344 eventViewer.AddMessage(
"Could not add VI: " + err.Message,
true);
345 MessageBox.Show(
"Could not add VI!",
"Error!", MessageBoxButton.OK, MessageBoxImage.Error);
349 Seci.Managers.SeciMgr.IsBusy =
false;
355 Seci.Managers.SeciMgr.IsBusy =
true;
361 for (
int i = 0; i < all.Count; ++i)
363 if (String.IsNullOrEmpty(all[i].OwningComponent))
365 confOnly.Add(all[i]);
371 if (removeVI.ShowDialog() == System.Windows.Forms.DialogResult.OK)
374 if (removeVI.ToRemove != null)
377 for (
int i = 0; i < removeVI.ToRemove.Count; ++i)
382 for (
int j = 0; j < panels.Count; ++j)
384 if (panels[j].FilePath == removeVI.ToRemove[i])
387 Seci.Managers.BlockMgr.Blocks.RemoveByVI(removeVI.ToRemove[i]);
390 Seci.Managers.LabViewMgr.RemoveVI(removeVI.ToRemove[i]);
399 foreach (
string viname
in removeVI.ToRemove)
401 viTab.RemoveVi(viname);
404 blocksDisplay.SetBlocksToShow(Seci.Managers.BlockMgr.Blocks.GetKeys());
406 _backgroundAutoSave.RunWorkerAsync();
409 Seci.Managers.SeciMgr.IsBusy =
false;
414 Seci.Managers.SeciMgr.IsBusy =
true;
417 if (props.ShowDialog() == System.Windows.Forms.DialogResult.OK)
420 for (
int i = 0; i < props.Panels.Count; ++i)
423 if (props.Panels[i].ShowPanel)
425 Seci.Managers.LabViewMgr.ShowVI(props.Panels[i].FilePath);
429 Seci.Managers.LabViewMgr.HideVI(props.Panels[i].FilePath);
434 Seci.Managers.LabViewMgr.SetPanelsInfo(props.Panels);
437 _backgroundAutoSave.RunWorkerAsync();
440 Seci.Managers.SeciMgr.IsBusy =
false;
445 Seci.Managers.SeciMgr.IsBusy =
true;
447 List<String> nonEdit =
new List<string>();
449 List<String> secret =
new List<string>();
453 if (tab.ShowDialog() == System.Windows.Forms.DialogResult.OK)
456 _backgroundAutoSave.RunWorkerAsync();
459 Seci.Managers.SeciMgr.IsBusy =
false;
464 Seci.Managers.SeciMgr.IsBusy =
true;
467 confBlocks.BlocksCopy = Seci.Managers.BlockMgr.GetBlocksClone();
468 if (confBlocks.ShowDialog() == System.Windows.Forms.DialogResult.OK)
472 Seci.Managers.SeciMgr.PauseThreads();
473 System.Threading.Thread.Sleep(1000);
476 Seci.Managers.BlockMgr.SetBlocks(confBlocks.BlocksCopy);
478 if (Seci.Definitions.Status.UseDaeMonitorVI)
480 Seci.Standard.DaeMonitor.WriteBlockList();
484 Seci.Managers.BlockMgr.ReorderBlockGroups(confBlocks.GroupOrder);
487 Seci.Managers.SeciMgr.ResumeThreads();
490 blocksDisplay.SetBlocksToShow(Seci.Managers.BlockMgr.Blocks.GetKeys());
493 blocksDisplay.Visibility = Visibility.Collapsed;
497 _backgroundAutoSave.RunWorkerAsync();
499 if (!Properties.Settings.Default.UsePython)
501 MessageBox.Show(
"To implement these changes in Open GENIE you will need to type \"GetBlocks\" in the Open GENIE scripting window(s).",
"Blocks Changed", MessageBoxButton.OK, MessageBoxImage.Information);
505 Seci.Managers.SeciMgr.IsBusy =
false;
511 if (
_rcv == null ||
_rcv.IsDisposed)
519 if (
_rcv.WindowState == System.Windows.Forms.FormWindowState.Minimized)
521 _rcv.WindowState = System.Windows.Forms.FormWindowState.Normal;
532 lostTime.Visibility = Visibility.Visible;
540 OpenGenie1.Visibility = Visibility.Visible;
541 if (navBar.TwoGeniesAvailable)
543 OpenGenie2.Visibility = Visibility.Visible;
546 if (Properties.Settings.Default.GraphsOnGenieTab &&
_graphs.Count > 0)
548 genieGraphPanel.Visibility = Visibility.Visible;
552 genieGraphPanel.Visibility = Visibility.Collapsed;
555 OpenGenie1.SetFocus();
561 dae.Visibility = Visibility.Visible;
567 graphPanel.Visibility = Visibility.Visible;
573 IniEditor.Visibility = Visibility.Visible;
579 advancedOptions.Visibility = Visibility.Visible;
585 JournalViewer.Visibility = Visibility.Visible;
591 MessagesPanel.Visibility = Visibility.Visible;
597 BeamStatus.Visibility = Visibility.Visible;
603 mcrnews.Visibility = Visibility.Visible;
609 bugzillaDisplayer.Visibility = Visibility.Visible;
615 helpPanel.Visibility = Visibility.Visible;
620 experimentDetails.Visibility = Visibility.Collapsed;
621 userInfo.Visibility = Visibility.Collapsed;
622 sampleInfo.Visibility = Visibility.Collapsed;
623 beamlineInfo.Visibility = Visibility.Collapsed;
624 viTab.Visibility = Visibility.Collapsed;
625 OpenGenie1.Visibility = Visibility.Collapsed;
626 OpenGenie2.Visibility = Visibility.Collapsed;
627 dae.Visibility = Visibility.Collapsed;
628 advancedOptions.Visibility = Visibility.Collapsed;
629 mcrnews.Visibility = Visibility.Collapsed;
630 MessagesPanel.Visibility = Visibility.Collapsed;
631 graphPanel.Visibility = Visibility.Collapsed;
632 BeamStatus.Visibility = Visibility.Collapsed;
633 helpPanel.Visibility = Visibility.Collapsed;
634 JournalViewer.Visibility = Visibility.Collapsed;
635 genieGraphPanel.Visibility = Visibility.Collapsed;
636 bugzillaDisplayer.Visibility = Visibility.Collapsed;
637 IniEditor.Visibility = Visibility.Collapsed;
638 lostTime.Visibility = Visibility.Collapsed;
643 #region Timers and Threads
647 Seci.Managers.SeciMgr.StartThreads(
true,
true);
651 viTab.StartTimers(Seci.Definitions.Status.ViHostRefreshRate);
656 Seci.Managers.SeciMgr.PauseThreads();
659 System.Threading.Thread.Sleep(1000);
664 Seci.Managers.SeciMgr.ResumeThreads();
665 viTab.StartTimers(Seci.Definitions.Status.ViHostRefreshRate);
687 _dashboard.UpdateControl();
690 blocksDisplay.UpdateControl();
693 foreach (SeciControls.Graphing.GraphWrapper graph in
_graphs)
695 graph.UpdateControl();
699 if (!Seci.Managers.BlockMgr.LogValuesEnabled)
701 txtWarning.Text =
"Warning: Blocks values are not being logged";
702 txtWarning.Visibility = System.Windows.Visibility.Visible;
706 txtWarning.Visibility = System.Windows.Visibility.Collapsed;
731 MessageBox.Show(
"Seci has lost connection to LabVIEW - this probably means LabVIEW has a very serious problem",
"SECI - LabVIEW connection lost", MessageBoxButton.OK, MessageBoxImage.Error);
737 txtWarning.Text =
"Seci has lost connection to LabVIEW - this probably means LabVIEW has a very serious problem";
738 txtWarning.Visibility = System.Windows.Visibility.Visible;
746 if (errorMessages != null)
749 int numQuestions = 0;
752 for (
int i = 0; i < errorMessages.Count; ++i)
754 if (errorMessages[i].WaitForResponse)
765 navBar.SetErrorCounter(numErrors, numQuestions);
767 errorViewer.AddMessages(errorMessages);
775 private void Window_Closing(
object sender, System.ComponentModel.CancelEventArgs e)
777 Seci.Managers.SeciMgr.IsBusy =
true;
781 if (
_manager && Seci.Managers.AssocFileMgr.AnyModificationsToParFiles())
783 if (MessageBox.Show(
"At least one TPAR or MPAR has been modified, to make the changes permanent the configuration must be saved. Are you sure you still wish to close SECI?",
"Unsaved Changes!", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No)
786 Seci.Managers.SeciMgr.IsBusy =
false;
791 if (
_changesMade || Seci.Managers.AssocFileMgr.AnyModifications())
793 if (MessageBox.Show(
"There are unsaved changes to the configuration. Are you sure you wish to close SECI?",
"Unsaved Changes!", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No)
796 Seci.Managers.SeciMgr.IsBusy =
false;
802 if (MessageBox.Show(
"Close SECI?",
"Close?", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No)
805 Seci.Managers.SeciMgr.IsBusy =
false;
813 System.Threading.Thread.Sleep(1000);
816 Seci.Managers.ConfigurationMgr.CloseConfiguration(Seci.Definitions.Status.KillIcpOnExit);
817 Seci.Managers.SeciMgr.CloseSeci();
824 Seci.Helpers.MessageLogger.WriteMessage(
"SeciGui",
"User closed SECI");
830 Properties.Settings.Default.CleanKill =
true;
831 Properties.Settings.Default.VisAvailable = navBar.VisVisibleForUser;
832 Properties.Settings.Default.DaeViAvailable = navBar.DaeVisibleForUser;
833 Properties.Settings.Default.UserCanEditVISettings = navBar.UserCanEditVISettings;
834 Properties.Settings.Default.UsePython = (bool)advancedOptions.UsePython;
835 Properties.Settings.Default.UseTwoGenies = navBar.TwoGeniesAvailable;
836 Properties.Settings.Default.ShowJournalViewer = navBar.JournelViewerVisible;
837 Properties.Settings.Default.ShowBeamlogger = (
bool)advancedOptions.ShowBeamlogger;
838 Properties.Settings.Default.UseBigFontsDashboard = (bool)advancedOptions.BigFontsDashboard;
839 Properties.Settings.Default.WebDashboardEnabled = Seci.Managers.SeciMgr.WebDashboardEnabled;
840 Properties.Settings.Default.WebDashboardShowTitle = Seci.Managers.SeciMgr.WebDashboardShowTitle;
841 Properties.Settings.Default.LogBlocks = Seci.Managers.BlockMgr.LogValuesEnabled;
842 Properties.Settings.Default.LostTimeVisible = navBar.LostTimeVisible;
843 Properties.Settings.Default.Save();
852 Seci.Managers.SeciMgr.IsBusy =
true;
857 _splashscreen.Show();
860 txtConfig.Text =
"None";
862 Seci.Managers.ConfigurationMgr.CreateNewConfiguration();
864 if (Seci.Managers.ConfigurationMgr.GetTabs().Count == 0)
866 Seci.Managers.ConfigurationMgr.GetTabs().Add(
new Seci.Definitions.Tab(
_beamlogTabname, (
bool)advancedOptions.ShowBeamlogger));
870 System.Threading.Thread.Sleep(2000);
873 if (Seci.Definitions.Status.ShowScriptingPage)
880 navBar.HideScriptingTab();
883 eventViewer.AddMessage(
"New configuration selected",
false);
888 _splashscreen.Close();
891 Seci.Managers.SeciMgr.IsBusy =
false;
896 Seci.Managers.SeciMgr.IsBusy =
true;
900 System.Windows.Forms.OpenFileDialog openFileDialog1 =
new System.Windows.Forms.OpenFileDialog();
901 openFileDialog1.InitialDirectory = Seci.Definitions.Status.ConfigDir;
902 openFileDialog1.Filter =
"SECI Configuration|*.conf|SECI Sub-Configuration|*.comp";
904 if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
910 Seci.Managers.SeciMgr.IsBusy =
false;
915 Seci.Managers.SeciMgr.IsBusy =
true;
919 MessageBox.Show(
"Sorry, you do not have permission to save configurations.",
"Cannot save", MessageBoxButton.OK, MessageBoxImage.Exclamation);
923 if (String.IsNullOrEmpty(Seci.Managers.ConfigurationMgr.ConfigName))
930 doSave(
false, Seci.Managers.ConfigurationMgr.ConfigName);
934 Seci.Managers.SeciMgr.IsBusy =
false;
939 Seci.Managers.SeciMgr.IsBusy =
true;
943 MessageBox.Show(
"Sorry, you do not have permission to save configurations.",
"Cannot save", MessageBoxButton.OK, MessageBoxImage.Exclamation);
947 System.Windows.Forms.SaveFileDialog saveFileDialog1 =
new System.Windows.Forms.SaveFileDialog();
948 saveFileDialog1.InitialDirectory = Seci.Definitions.Status.ConfigDir;
950 if (Seci.Managers.ComponentMgr.GetNames() != null && Seci.Managers.ComponentMgr.GetNames().Count > 0)
953 saveFileDialog1.Filter =
"SECI Configuration|*.conf";
958 saveFileDialog1.Filter =
"SECI Configuration|*.conf|SECI Sub-configuration|*.comp";
962 if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
964 doSave(
true, saveFileDialog1.FileName);
968 Seci.Managers.SeciMgr.IsBusy =
false;
979 if (Seci.Definitions.Status.IsPythonAvailable && Properties.Settings.Default.UsePython)
981 advancedOptions.UsePython =
true;
989 OpenGenie1.StartProcess();
990 if (navBar.TwoGeniesAvailable || Properties.Settings.Default.UseTwoGenies)
992 navBar.TwoGeniesAvailable =
true;
993 advancedOptions.TwoGeniesAvailable =
true;
994 OpenGenie2.StartProcess();
1002 List<int> pids =
new List<int>();
1003 pids.Add(OpenGenie1.GetPID());
1005 if (navBar.TwoGeniesAvailable || Properties.Settings.Default.UseTwoGenies)
1007 pids.Add(OpenGenie2.GetPID());
1012 foreach (
int p
in pids)
1014 sPids += p.ToString() +
";";
1017 Properties.Settings.Default.ScriptPIDS = sPids.Substring(0, sPids.Length - 1);
1018 Properties.Settings.Default.Save();
1023 OpenGenie1.UsePython(
true);
1024 OpenGenie2.UsePython(
true);
1025 OpenGenie1.SetLinkMessage(
"Start Python");
1026 OpenGenie2.SetLinkMessage(
"Start Python");
1027 OpenGenie1.Initialise(Seci.Definitions.Status.PythonPath, Seci.Definitions.Status.PythonArgs);
1028 OpenGenie2.Initialise(Seci.Definitions.Status.PythonPath, Seci.Definitions.Status.PythonArgs);
1033 OpenGenie1.UsePython(
false);
1034 OpenGenie2.UsePython(
false);
1035 OpenGenie1.SetLinkMessage(
"Start Open Genie");
1036 OpenGenie2.SetLinkMessage(
"Start Open Genie");
1037 OpenGenie1.Initialise(Seci.Definitions.Status.OpenGenieLocation,
"");
1038 OpenGenie2.Initialise(Seci.Definitions.Status.OpenGenieLocation,
"");
1045 Seci.Managers.SeciMgr.ClearDatabaseQueues();
1048 blocksDisplay.SetBlocksToShow(null);
1049 viTab.RemoveAllTabs();
1052 IniEditor.ClearFiles();
1053 IniEditor.Visibility = Visibility.Collapsed;
1054 navBar.SettingsVisible =
false;
1055 navBar.GraphsAvailable =
false;
1056 navBar.SetTabsVisibility(
_manager);
1059 Seci.Managers.ConfigurationMgr.CloseConfiguration(Seci.Definitions.Status.KillIcpOnConfigChange);
1062 System.Threading.Thread.Sleep(10000);
1065 OpenGenie1.KillProcess();
1066 if (navBar.TwoGeniesAvailable)
1068 OpenGenie2.KillProcess();
1072 errorViewer.ClearMessages();
1073 navBar.SetErrorCounter(0, 0);
1076 Seci.Managers.SeciMgr.InitialiseLabView(
true);
1085 if (
_changesMade || Seci.Managers.AssocFileMgr.AnyModifications())
1087 if (MessageBox.Show(
"There are unsaved changes to the current configuration - are you sure you wish to close it?",
"Unsaved Changes!", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.No)
1104 viTab.AddVi(
_dummyTabname, Seci.Standard.SampleParameters.FilePath);
1106 viTab.CascadeAllTabs();
1112 _splashscreen.Show();
1121 Seci.Managers.ConfigurationMgr.OpenConfiguration(filepath);
1122 eventViewer.AddMessage(
"Configuration opened: " + Seci.Managers.ConfigurationMgr.ConfigName,
false);
1124 catch (Exception err)
1126 _splashscreen.Close();
1128 MessageBox.Show(
"Failed to open configuration" + Environment.NewLine + err.Message,
"Error", MessageBoxButton.OK, MessageBoxImage.Error);
1129 eventViewer.AddMessage(
"Failed to open configuration: " + filepath,
false);
1130 Seci.Helpers.MessageLogger.WriteMessage(
"openConfig",
"Failed to open configuration: " + err.Message);
1133 _splashscreen.Show();
1140 if (Seci.Definitions.Status.ShowScriptingPage)
1147 navBar.HideScriptingTab();
1150 blocksDisplay.SetBlocksToShow(Seci.Managers.BlockMgr.Blocks.GetKeys());
1151 txtConfig.Text = Seci.Managers.ConfigurationMgr.ConfigName;
1154 setupGraphs(Seci.Managers.ConfigurationMgr.GetGraphDefinitions());
1159 List<String> visNotLoaded = Seci.Managers.LabViewMgr.GetVIsNotLoaded();
1161 if (visNotLoaded != null && visNotLoaded.Count > 0)
1163 String message =
"The following VIs were not loaded and their associated Blocks were removed:" + Environment.NewLine;
1164 foreach (String name
in visNotLoaded)
1166 message +=
" " + name + Environment.NewLine;
1169 eventViewer.AddMessage(message.Trim(),
false);
1182 _splashscreen.Close();
1187 if (Seci.Definitions.Status.IsMuonInstrument)
1191 IniEditor.ClearFiles();
1194 List<String> par_files =
new List<string>();
1195 foreach (String file
in Seci.Managers.AssocFileMgr.GetListOfAsscFiles(
true))
1197 if (file.ToLower().EndsWith(
".tpar") || file.ToLower().EndsWith(
".mpar"))
1199 par_files.Add(file);
1203 if (par_files.Count > 0)
1205 IniEditor.LoadFiles(par_files);
1206 navBar.SettingsVisible =
true;
1207 navBar.SetTabsVisibility(
_manager);
1216 for (
int i = 0; i < panels.Count; ++i)
1218 if (!String.IsNullOrEmpty(panels[i].Group))
1220 viTab.AddTab(panels[i].Group);
1221 if (panels[i].Bounds != null)
1223 if (!viTab.DoesTabContainsVi(panels[i].Group, panels[i].FilePath))
1225 viTab.AddVi(panels[i].Group, panels[i].FilePath, panels[i].Bounds[0], panels[i].Bounds[1]);
1230 viTab.AddVi(panels[i].Group, panels[i].FilePath);
1235 Seci.SerialisableList<
Seci.Definitions.Tab> tabs_conf = Seci.Managers.ConfigurationMgr.GetTabs();
1238 for (
int i = 0; i < tabs_conf.Count; ++i)
1240 for (
int j = tabs_conf.Count - 1; j > i; --j)
1242 if (tabs_conf[i].Name == tabs_conf[j].Name)
1244 tabs_conf.RemoveAt(j);
1249 List<String> tabs = viTab.GetTabNames(
true);
1250 for (
int i = tabs_conf.Count - 1; i >= 0; --i)
1252 if (!tabs.Contains(tabs_conf[i].Name))
1254 tabs_conf.RemoveAt(i);
1259 viTab.SetTabOrder(tabs_conf);
1263 private void doSave(Boolean isNewFile, String fullFileName)
1268 fileName = fullFileName.Substring(fullFileName.LastIndexOf(
"\\") + 1);
1270 if (isNewFile && !fullFileName.StartsWith(Seci.Definitions.Status.ConfigDir))
1272 MessageBox.Show(
"Configurations and components must be saved in the Configurations directory",
"Trying to Save in wrong location");
1276 String oldName = Seci.Managers.ConfigurationMgr.ConfigName;
1277 Seci.Managers.ConfigurationMgr.ConfigName = fileName;
1280 List<String> tabs = viTab.GetTabNames(
false);
1282 Seci.Managers.ConfigurationMgr.SetTabOrder(null);
1285 Seci.Managers.ConfigurationMgr.SetGraphDefinitions(
getDefinitions());
1288 Boolean okayToSave = Seci.Managers.ConfigurationMgr.OkayToSave(
_manager);
1290 if (fileName.ToLower().EndsWith(
".comp") && Seci.Managers.ComponentMgr.GetNames().Count > 0)
1292 MessageBox.Show(
"This configuration contains at least one component, so it cannot be saved as a component");
1299 txtStatus.Text =
"Saving...";
1303 _backgroundSave.RunWorkerAsync();
1305 catch (Exception err)
1307 Seci.Managers.ConfigurationMgr.ConfigName = oldName;
1308 eventViewer.AddMessage(
"Failed to save configuration: " + err.Message,
true);
1311 txtConfig.Text = Seci.Managers.ConfigurationMgr.ConfigName;
1316 Seci.Managers.ConfigurationMgr.ConfigName = oldName;
1317 MessageBox.Show(
"Sorry, you must be logged in with the manager account to overwrite this configuration!",
"Cannot Overwrite!", MessageBoxButton.OK, MessageBoxImage.Error);
1323 Seci.Managers.ConfigurationMgr.SaveConfiguration(
_manager,
false);
1328 txtStatus.Text =
"";
1329 eventViewer.AddMessage(
"Configuration saved: " + Seci.Managers.ConfigurationMgr.ConfigName,
false);
1336 Seci.Managers.ConfigurationMgr.SaveConfiguration(
true,
true);
1345 Seci.Managers.SeciMgr.IsBusy =
true;
1349 if (login.ShowDialog() == System.Windows.Forms.DialogResult.OK)
1352 fileMenu.LogInEnabled =
false;
1353 fileMenu.LogOutEnabled =
true;
1354 navBar.SetTabsVisibility(
_manager);
1356 if (!navBar.VisVisibleForUser)
1365 Seci.Managers.SeciMgr.IsBusy =
false;
1370 bool anyVisible =
false;
1372 foreach (var tab
in Seci.Managers.ConfigurationMgr.GetTabs())
1374 if (tab.VisibleForUser ||
_manager)
1376 viTab.UnhideTab(tab.Name);
1381 viTab.HideTab(tab.Name);
1387 viTab.SelectTab(-1);
1391 viTab.SetToFirstVisible();
1397 Seci.Managers.SeciMgr.IsBusy =
true;
1400 fileMenu.LogInEnabled =
true;
1401 fileMenu.LogOutEnabled =
false;
1402 navBar.SetTabsVisibility(
_manager);
1404 navBar.DeselectSelectedItem();
1406 if (!navBar.VisVisibleForUser)
1418 Seci.Managers.SeciMgr.IsBusy =
false;
1425 for (
int i = 0; i < vis.Count; ++i)
1427 Seci.Managers.LabViewMgr.HideVI(vis[i].FilePath);
1435 for (
int i = 0; i < vis.Count; ++i)
1438 if (vis[i].ShowPanel)
1440 Seci.Managers.LabViewMgr.ShowVI(vis[i].FilePath);
1444 Seci.Managers.LabViewMgr.HideVI(vis[i].FilePath);
1452 List<String> visInTabs = viTab.GetAllVisInTabs();
1454 List<String> tohide =
new List<String>();
1456 for (
int i = 0; i < vis.Count; ++i)
1458 if (!vis[i].ShowPanel || visInTabs.Contains(vis[i].FilePath))
1464 tohide.Add(vis[i].FilePath);
1477 Seci.Managers.SeciMgr.IsBusy =
true;
1481 MessageBox.Show(
"You must be logged in with the Manager account to perform this action.",
"Unauthorised", MessageBoxButton.OK, MessageBoxImage.Stop);
1486 editUsers.oldUsers = Seci.Standard.UserDetails.GetUsers();
1488 if (editUsers.ShowDialog() == System.Windows.Forms.DialogResult.OK)
1492 Seci.Standard.UserDetails.SetUsers(editUsers.newUsers);
1493 System.Threading.Thread.Sleep(600);
1503 Seci.Managers.SeciMgr.IsBusy =
false;
1508 #region Advanced Options
1512 CheckBox chk = sender as CheckBox;
1513 if (chk.IsChecked ==
true)
1515 navBar.DaeVisibleForUser =
true;
1519 navBar.DaeVisibleForUser =
false;
1525 CheckBox chk = sender as CheckBox;
1526 if (chk.IsChecked ==
true)
1528 navBar.VisVisibleForUser =
true;
1532 navBar.VisVisibleForUser =
false;
1538 CheckBox chk = sender as CheckBox;
1539 if (chk.IsChecked ==
true)
1551 CheckBox chk = sender as CheckBox;
1552 if (chk.IsChecked ==
true)
1554 navBar.UserCanEditVISettings =
true;
1558 navBar.UserCanEditVISettings =
false;
1564 Seci.Managers.SeciMgr.IsBusy =
true;
1567 if (add.ShowDialog() == System.Windows.Forms.DialogResult.OK)
1570 _backgroundAutoSave.RunWorkerAsync();
1573 Seci.Managers.SeciMgr.IsBusy =
false;
1578 Seci.Managers.SeciMgr.IsBusy =
true;
1581 if (
remove.ShowDialog() == System.Windows.Forms.DialogResult.OK)
1584 _backgroundAutoSave.RunWorkerAsync();
1587 Seci.Managers.SeciMgr.IsBusy =
false;
1592 Seci.Managers.SeciMgr.IsBusy =
true;
1595 if (add.ShowDialog() == System.Windows.Forms.DialogResult.OK)
1599 _backgroundAutoSave.RunWorkerAsync();
1602 Seci.Managers.SeciMgr.IsBusy =
false;
1607 Seci.Managers.SeciMgr.IsBusy =
true;
1610 if (
remove.ShowDialog() == System.Windows.Forms.DialogResult.OK)
1613 _backgroundAutoSave.RunWorkerAsync();
1616 Seci.Managers.SeciMgr.IsBusy =
false;
1621 Seci.Managers.SeciMgr.IsBusy =
true;
1625 if (Properties.Settings.Default.GraphsOnGenieTab)
1634 if (conf.ShowDialog() == System.Windows.Forms.DialogResult.OK)
1640 Seci.Managers.SeciMgr.IsBusy =
false;
1645 Seci.Managers.SeciMgr.IsBusy =
true;
1648 alerts.Alerts = Seci.Managers.AlertsMgr.GetAlertsCopy();
1649 alerts.PhoneNumbers = Seci.Managers.AlertsMgr.GetPhoneNumbersCopy();
1651 if (alerts.ShowDialog() ==
true)
1653 Seci.Managers.AlertsMgr.SetAlerts(alerts.Alerts);
1654 Seci.Managers.AlertsMgr.SetPhoneNumbers(alerts.PhoneNumbers);
1655 Seci.Managers.AlertsMgr.SavePhoneNumbers();
1658 Seci.Managers.SeciMgr.IsBusy =
false;
1663 Seci.Managers.SeciMgr.IsBusy =
true;
1669 Seci.Managers.SeciMgr.IsBusy =
false;
1674 CheckBox chk = sender as CheckBox;
1675 if (chk.IsChecked ==
true)
1677 navBar.LostTimeVisible =
true;
1681 navBar.LostTimeVisible =
false;
1684 navBar.SetTabsVisibility(
_manager);
1689 CheckBox chk = sender as CheckBox;
1690 if (chk.IsChecked ==
true)
1692 Properties.Settings.Default.GraphsOnGenieTab =
true;
1696 Properties.Settings.Default.GraphsOnGenieTab =
false;
1698 setupGraphs(Seci.Managers.ConfigurationMgr.GetGraphDefinitions());
1703 Seci.Managers.SeciMgr.IsBusy =
true;
1705 System.Windows.Forms.OpenFileDialog openFileDialog1 =
new System.Windows.Forms.OpenFileDialog();
1706 openFileDialog1.InitialDirectory = Seci.Definitions.Status.ConfigDir;
1707 openFileDialog1.Filter =
"SECI Sub-Configuration|*.comp";
1709 if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
1712 _splashscreen.Show();
1716 if (Seci.Managers.ComponentMgr.AddComponent(openFileDialog1.FileName))
1718 blocksDisplay.SetBlocksToShow(Seci.Managers.BlockMgr.Blocks.GetKeys());
1721 setupGraphs(Seci.Managers.ConfigurationMgr.GetGraphDefinitions());
1722 eventViewer.AddMessage(
"Component Added: " + openFileDialog1.FileName.Substring(openFileDialog1.FileName.LastIndexOf(
"\\") + 1),
false);
1725 if (Seci.Definitions.Status.UseDaeMonitorVI)
1727 Seci.Standard.DaeMonitor.WriteBlockList();
1735 _splashscreen.Close();
1737 Seci.Managers.SeciMgr.IsBusy =
false;
1742 Seci.Managers.SeciMgr.IsBusy =
true;
1745 if (
remove.ShowDialog() == System.Windows.Forms.DialogResult.OK)
1748 _splashscreen.Show();
1750 if (
remove.toRemove.Count > 0)
1754 foreach (String name
in remove.toRemove)
1757 eventViewer.AddMessage(
"Component Removed: " + name,
false);
1761 if (Seci.Definitions.Status.UseDaeMonitorVI)
1763 Seci.Standard.DaeMonitor.WriteBlockList();
1768 _backgroundAutoSave.RunWorkerAsync();
1771 _splashscreen.Close();
1774 Seci.Managers.SeciMgr.IsBusy =
false;
1779 Seci.Managers.SeciMgr.IsBusy =
true;
1781 if (Seci.Standard.Dae.RunStatus !=
"SETUP")
1783 MessageBox.Show(
"Sub-Configurations can only be edited when in SETUP",
"SECI - Not in SETUP");
1787 if (Seci.Managers.ComponentMgr.Components.Count > 0)
1790 select.Owner =
this;
1792 if (select.ShowDialog() ==
true)
1795 _splashscreen.Show();
1802 Seci.Managers.ComponentMgr.AddComponent(Seci.Definitions.Status.ConfigDir + select.ComponentName);
1804 blocksDisplay.SetBlocksToShow(Seci.Managers.BlockMgr.Blocks.GetKeys());
1807 setupGraphs(Seci.Managers.ConfigurationMgr.GetGraphDefinitions());
1810 if (Seci.Definitions.Status.UseDaeMonitorVI)
1812 Seci.Standard.DaeMonitor.WriteBlockList();
1817 _splashscreen.Close();
1822 MessageBox.Show(
"No sub-configurations in the current configuration",
"SECI - No Sub-Configurations");
1825 Seci.Managers.SeciMgr.IsBusy =
false;
1830 CheckBox chk = sender as CheckBox;
1831 if (chk.IsChecked ==
true)
1843 CheckBox chk = sender as CheckBox;
1844 if (chk.IsChecked ==
true)
1846 navBar.TwoGeniesAvailable =
true;
1850 navBar.TwoGeniesAvailable =
false;
1856 CheckBox chk = sender as CheckBox;
1862 CheckBox chk = sender as CheckBox;
1863 if (chk.IsChecked ==
true)
1865 SeciControls.StandardDashboard.SetIsBigFonts(
_dashboard,
true);
1866 SeciControls.BlockDisplay.SetIsBigFonts(blocksDisplay,
true);
1870 SeciControls.StandardDashboard.SetIsBigFonts(
_dashboard,
false);
1871 SeciControls.BlockDisplay.SetIsBigFonts(blocksDisplay,
false);
1877 CheckBox chk = sender as CheckBox;
1878 if (chk.IsChecked ==
true)
1880 navBar.JournelViewerVisible =
true;
1881 navBar.SetTabsVisibility(
_manager);
1885 navBar.JournelViewerVisible =
false;
1886 navBar.SetTabsVisibility(
_manager);
1892 CheckBox chk = sender as CheckBox;
1893 if (chk.IsChecked ==
true)
1895 Seci.Managers.SeciMgr.WebDashboardEnabled =
true;
1899 Seci.Managers.SeciMgr.WebDashboardEnabled =
false;
1905 CheckBox chk = sender as CheckBox;
1906 if (chk.IsChecked ==
true)
1908 Seci.Managers.SeciMgr.WebDashboardShowTitle =
true;
1912 Seci.Managers.SeciMgr.WebDashboardShowTitle =
false;
1918 Seci.Managers.ComponentMgr.RemoveComponent(name);
1919 blocksDisplay.SetBlocksToShow(Seci.Managers.BlockMgr.Blocks.GetKeys());
1920 viTab.RemoveAllTabs();
1924 setupGraphs(Seci.Managers.ConfigurationMgr.GetGraphDefinitions());
1935 Seci.Managers.ConfigurationMgr.GetTabs().Add(
new Seci.Definitions.Tab(
_beamlogTabname,
true));
1938 Seci.Standard.BeamLogger.ShowVi();
1947 if (visible ==
true)
1951 Seci.Managers.ConfigurationMgr.SetTabVisibility(
_beamlogTabname,
true);
1956 viTab.SelectTab(-1);
1957 Seci.Managers.ConfigurationMgr.SetTabVisibility(
_beamlogTabname,
false);
1963 #region Recent Configs Stuff
1967 String raw = Properties.Settings.Default.RecentConfigs;
1969 if (!String.IsNullOrEmpty(raw))
1971 if (raw.EndsWith(
";"))
1973 raw = raw.Substring(0, raw.Length - 1);
1976 String[] confs = raw.Split(
';');
1984 Properties.Settings.Default.LastConfig = config;
1990 _recentConfigs.Insert(0, config);
1994 _recentConfigs.Remove(config);
1995 _recentConfigs.Insert(0, config);
2000 _recentConfigs.RemoveAt(_recentConfigs.Count - 1);
2018 Properties.Settings.Default.RecentConfigs = confs;
2020 Properties.Settings.Default.Save();
2025 List<String> recent =
new List<string>();
2027 for (
int i = 0; i < _recentConfigs.Count; ++i)
2040 fileMenu.SetLastConfigs(recent);
2045 Seci.Managers.SeciMgr.IsBusy =
true;
2047 System.Windows.Forms.ToolStripMenuItem temp = sender as System.Windows.Forms.ToolStripMenuItem;
2051 if (filepath.EndsWith(temp.Text.ToString()))
2054 FileInfo fi =
new FileInfo(Seci.Definitions.Status.ConfigDir + filepath);
2057 openConfig(Seci.Definitions.Status.ConfigDir + filepath,
true);
2062 MessageBox.Show(
"File does not exist, it probably has been deleted for some reason",
"SECI - File Not Found");
2064 _recentConfigs.Remove(filepath);
2071 Seci.Managers.SeciMgr.IsBusy =
false;
2078 private void setupGraphs(List<Seci.Definitions.GraphDefinition> graphs)
2082 if (graphs != null && graphs.Count > 0)
2084 navBar.GraphsAvailable = !Properties.Settings.Default.GraphsOnGenieTab;
2087 foreach (Seci.Definitions.GraphDefinition def in graphs)
2090 temp.SetupGraph(def);
2093 if (Properties.Settings.Default.GraphsOnGenieTab)
2095 if (genieGraphPanel.Children.Count < Seci.Definitions.Status.MaxNumberGenieGraphs)
2097 genieGraphPanel.Children.Add(temp);
2101 int max = Seci.Definitions.Status.MaxNumberGenieGraphs;
2102 eventViewer.AddMessage(
"The number of graphs exceeds the maximum allowed (" + max
2103 +
"). Only the first " + max +
" will be shown.",
false);
2109 graphPanel.Children.Add(temp);
2115 navBar.GraphsAvailable =
false;
2118 navBar.SetTabsVisibility(
_manager);
2124 if (Properties.Settings.Default.GraphsOnGenieTab)
2126 genieGraphPanel.Children.Clear();
2130 graphPanel.Children.Clear();
2136 if (Properties.Settings.Default.GraphsOnGenieTab)
2138 genieGraphPanel.Children.Clear();
2143 genieGraphPanel.Columns = 1;
2147 genieGraphPanel.Columns = 2;
2150 if (numGraphs % 2 == 0)
2152 genieGraphPanel.Rows = numGraphs / 2 - 1;
2156 genieGraphPanel.Rows = numGraphs / 2;
2161 graphPanel.Children.Clear();
2166 graphPanel.Columns = 1;
2170 graphPanel.Columns = 2;
2176 graphPanel.Rows = 2;
2178 else if (numGraphs % 2 == 0)
2180 graphPanel.Rows = numGraphs / 2;
2184 graphPanel.Rows = numGraphs / 2 + 1;
2191 return Seci.Managers.ConfigurationMgr.GetGraphDefinitions();
2197 Seci.Managers.ConfigurationMgr.SetGraphDefinitions(graphs);
2297 errorViewer.OnQuestionAsked +=
new SeciControls.MessagesWrapper.QuestionHandler(
pauseTimers);
2298 errorViewer.OnQuestionAnswered +=
new SeciControls.MessagesWrapper.QuestionHandler(
resumeTimers);
2300 SeciControls.EventViewer.OnError +=
new SeciControls.EventViewer.SeciErrorHandler(
EventViewer_OnError);
2311 if (vars != null && vars.Length == 1)
2313 Action action = delegate()
2315 Seci.Managers.SeciMgr.IsBusy =
true;
2317 Seci.Managers.SeciMgr.IsBusy =
false;
2320 this.Dispatcher.Invoke(action);
2331 foreach (SeciControls.Graphing.GraphWrapper graph in
_graphs)
2333 graph.ClearGraphPoints();
2339 blocksDisplay.Visibility = Visibility.Collapsed;
2344 blocksDisplay.Visibility = Visibility.Visible;
2349 MessageBox.Show(message,
"Seci Error", MessageBoxButton.OK, MessageBoxImage.Error);
2354 System.Diagnostics.Process[] procList;
2356 procList = System.Diagnostics.Process.GetProcessesByName(
"LabView");
2358 if (procList.GetLength(0) > 0)
2360 _splashscreen.Hide();
2361 if (force || MessageBox.Show(
"It appears that LabVIEW is running - SECI cannot start if LabVIEW is already running.\n\nWould you like SECI to close LabVIEW and continue loading? \n\nNote: any unsaved changes to VI's will be lost.",
"LabVIEW Running!", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
2365 Seci.Helpers.MessageLogger.WriteMessage(
"UserInterface",
"User chose to close LabVIEW");
2367 _splashscreen.Show();
void ConfigurationMgr_ConfigChangeRequested(string[] vars)
This class is used for serializing the graphs for saving in the configuration.
const int _numberLastConfigs
void navBar_OnReportProblemClicked(object sender, EventArgs e)
Interaction logic for PearlDashboard.xaml
void SeciInterface_ValuesUpdated(Boolean timeout)
void SetViTabsVisibility()
BackgroundWorker _backgroundSave
void navBar_OnSettingsClicked(object sender, EventArgs e)
void navBar_OnAdvancedClicked(object sender, EventArgs e)
void OnRecentConfig_Click(object sender, RoutedEventArgs e)
void advancedOptions_OnTwoGeniesCheckChanged(object sender, EventArgs e)
void setupEventHandlers()
Boolean _closingBecauseLvRunning
void menuMgrLogout_Click(object sender, RoutedEventArgs e)
void advancedOptions_OnEditSubConfigClicked(object sender, EventArgs e)
void OpenGenie_OnNewScriptingProcessStarted(object sender, EventArgs e)
delegate void UpdateGuiDelegate()
Interaction logic for GraphWrapper.xaml
void advancedOptions_OnAddExeClicked(object sender, EventArgs e)
void advancedOptions_OnWebDashboardShowTitleCheckChanged(object sender, EventArgs e)
void setupRecentConfigs()
void menuNewCommand(object sender, RoutedEventArgs e)
void backgroundSave_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
Boolean _userCanSaveConfig
void setupGraphs(List< Seci.Definitions.GraphDefinition > graphs)
void navBar_OnDisplayBlocksClicked(object sender, EventArgs e)
void advancedOptions_OnHideTabsClicked(object sender, EventArgs e)
void advancedOptions_OnRemoveExeClicked(object sender, EventArgs e)
void navBar_OnEditTabsClicked(object sender, EventArgs e)
void dashboard_OnCollapsed(object sender, EventArgs e)
void SeciInterface_OnNewLVMessage(object sender, EventArgs e)
void setupIniFiles(Boolean clear)
void EventViewer_OnError(string message)
void navBar_OnIsisMessagesClicked(object sender, EventArgs e)
void doSave(Boolean isNewFile, String fullFileName)
void menuExitCommand(object sender, RoutedEventArgs e)
void navBar_OnDaeClicked(object sender, EventArgs e)
void navBar_OnVIsClicked(object sender, EventArgs e)
void advancedOptions_OnBigFontsDashboardCheckChanged(object sender, EventArgs e)
void advancedOptions_OnWebDashboardEnabledCheckChanged(object sender, EventArgs e)
void advancedOptions_OnAddSubConfigClicked(object sender, EventArgs e)
void menuMgrLogin_Click(object sender, RoutedEventArgs e)
void navBar_OnConfigureBlocksClicked(object sender, EventArgs e)
void advancedOptions_OnRemoveSubConfigClicked(object sender, EventArgs e)
Interaction logic for PolarisDashboard.xaml
Interaction logic for AlternativeDashboard.xaml
void advancedOptions_OnUsePythonChanged(object sender, EventArgs e)
void navBar_OnRemoveVIClicked(object sender, EventArgs e)
void menuOpenCommand(object sender, RoutedEventArgs e)
void advancedOptions_OnConfigureGraphsClicked(object sender, EventArgs e)
Forms.SeciSplashscreen _splashscreen
void advancedOptions_OnUserCanSaveCheckChanged(object sender, EventArgs e)
void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
void advancedOptions_OnModifyVisCheckChanged(object sender, EventArgs e)
void navBar_OnJournalViewerClicked(object sender, EventArgs e)
Forms.RunControlViewer _rcv
static void pauseTimers()
void backgroundSave_DoWork(object sender, DoWorkEventArgs e)
void SeciInterface_OnLVNotThere(object sender, EventArgs e)
void updateRecentConfigsMenu()
List< String > _recentConfigs
BackgroundWorker _backgroundAutoSave
void UpdateMainGUI(Boolean timeout)
void advancedOptions_OnShowBeamloggerCheckChanged(object sender, EventArgs e)
void advancedOptions_OnShowLostTimeCheckChanged(object sender, EventArgs e)
Boolean okayToCloseConfig()
void updateRecentConfigs(String config)
void backgroundAutoSave_DoWork(object sender, DoWorkEventArgs e)
void SeciMgr_ClearGraphRequested(string[] vars)
void navBar_OnExperimentDetailsClicked(object sender, EventArgs e)
List< SeciControls.Graphing.GraphWrapper > _graphs
void navBar_OnAddVIClicked(object sender, EventArgs e)
Seci.SerialisableList< Seci.LabView.LabViewPanelInfo > getLooseVis()
Interaction logic for SeciUserInterface.xaml
This class contains all the information about a LabVIEW VI that needs to be saved in the configuratio...
Boolean labViewRunning(Boolean force)
void setBeamloggerTabVisibility(Boolean?visible)
void advancedOptions_OnVisAvailableCheckChanged(object sender, EventArgs e)
void navBar_OnLostTimeClicked(object sender, EventArgs e)
const String _beamlogTabname
void menuSaveAsCommand(object sender, RoutedEventArgs e)
void navBar_OnOpenGenieClicked(object sender, EventArgs e)
void UserInterface_Loaded(object sender, RoutedEventArgs e)
This class is used to store the message data that is retrieved from the message panel vi...
void userInfo_OnEditUsersClicked(object sender, EventArgs e)
void setupGraphPanel(int numGraphs)
SeciControls.BaseDashboardControl _dashboard
void menuSaveCommand(object sender, RoutedEventArgs e)
void advancedOptions_OnConfigAlertsClicked(object sender, EventArgs e)
void advancedOptions_OnPlotOnGenieTabCheckChanged(object sender, EventArgs e)
void setDefinitions(List< Seci.Definitions.GraphDefinition > graphs)
void navBar_OnSystemMessagesClicked(object sender, EventArgs e)
void navBar_OnGraphsClicked(object sender, EventArgs e)
void advancedOptions_OnAddAssocFileClicked(object sender, EventArgs e)
Interaction logic for SelectSubConfig.xaml
const String _dummyTabname
void navBar_OnConfigureVIClicked(object sender, EventArgs e)
void advancedOptions_OnRemoveAssocFileClicked(object sender, EventArgs e)
void advancedOptions_OnCheckStatusChanged(object sender, EventArgs e)
void advancedOptions_OnJournelViewerCheckChanged(object sender, EventArgs e)
void openConfig(String filepath, Boolean restartSeci)
void navBar_OnHelpClicked(object sender, EventArgs e)
delegate void UpdateDashboardDelegate(Boolean timeout)
void dashboard_OnExpanded(object sender, EventArgs e)
List< Seci.Definitions.GraphDefinition > getDefinitions()
Interaction logic for HideTabs.xaml
void navBar_OnBeamStatusClicked(object sender, EventArgs e)
Interaction logic for StandardDashboard.xaml
void removeSubConfig(String name)