diff --git a/program/MainWindow.cs b/program/MainWindow.cs index 0af3392..a684f73 100644 --- a/program/MainWindow.cs +++ b/program/MainWindow.cs @@ -4,9 +4,18 @@ using System.IO; using Gtk; using UI = Gtk.Builder.ObjectAttribute; +using System.Runtime.InteropServices; public class MainWindow : Window { + + // ---- stack + pages (new all-in-one glade) ---- + [UI] private Notebook RootNoteBook = null; + + private const int PageSplash = 0; + private const int PageSettings = 1; + + // ---- splash page widgets ---- [UI] private Button Option1Button = null; [UI] private Button Option2Button = null; [UI] private Button Option3Button = null; @@ -39,11 +48,11 @@ private static Builder CreateBuilder() { var builder = new Builder(); - builder.AddFromFile("homepage.glade"); + builder.AddFromFile("homepageall.glade"); return builder; } - private MainWindow(Builder builder) : base(builder.GetObject("SplashWindow").Handle) + private MainWindow(Builder builder) : base(builder.GetObject("Root").Handle) { builder.Autoconnect(this); @@ -55,6 +64,10 @@ this.Fullscreen(); + // RootStack.TransitionType = StackTransitionType.None; + // RootStack.TransitionType = StackTransitionType.SlideLeftRight; + // RootStack.TransitionDuration = 150; + Option1Button.Clicked += OnNormalSessionClicked; Option2Button.Clicked += OnPositionRecordingClicked; Option3Button.Clicked += OnExamModeClicked; @@ -86,6 +99,14 @@ _Language = new Language(_buttonsById,LanguageLabel); _Language.ApplyLanguage(LanguageSwitch.Active); + + _settingsWindow = new SettingsWindow(builder, _arduino); + _settingsWindow.BackRequested += OnSettingsClosed; + + RootNoteBook.ShowTabs = false; + RootNoteBook.ShowBorder = false; + RootNoteBook.CurrentPage = PageSplash; + OnArduinoConnectionChanged(false); } @@ -93,25 +114,28 @@ private void OnSettingClicked(object sender, EventArgs e) { - if (_settingsWindow == null) - { - _settingsWindow = new SettingsWindow(_arduino); - _settingsWindow.BackRequested += OnSettingsClosed; - _settingsWindow.ShowAll(); // build it fullscreen once, up front - _settingsWindow.Fullscreen(); - } + // if (_settingsWindow == null) + // { + // // _settingsWindow = new SettingsWindow(_arduino); + // // _settingsWindow.BackRequested += OnSettingsClosed; + // // _settingsWindow.ShowAll(); // build it fullscreen once, up front + // // _settingsWindow.Fullscreen(); + // RootNoteBook.CurrentPage = PageSettings; + // } - _settingsWindow.ShowAll(); - _settingsWindow.Present(); - this.Hide(); + // _settingsWindow.ShowAll(); + // _settingsWindow.Present(); + // this.Hide(); + RootNoteBook.CurrentPage = PageSettings; } private void OnSettingsClosed(object sender, EventArgs e) { - this.ShowAll(); - this.Present(); - _settingsWindow.Hide(); + // this.ShowAll(); + // this.Present(); + // _settingsWindow.Hide(); + RootNoteBook.CurrentPage = PageSplash; } private void OnArduinoConnectionChanged(bool connected) @@ -232,7 +256,7 @@ { _arduino.Disconnect(); _arduino.Dispose(); - _settingsWindow?.Destroy(); + // _settingsWindow?.Destroy(); Application.Quit(); } diff --git a/program/SettingWindow.cs b/program/SettingWindow.cs index 2d94a53..644495c 100644 --- a/program/SettingWindow.cs +++ b/program/SettingWindow.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using UI = Gtk.Builder.ObjectAttribute; -public class SettingsWindow : Window +public class SettingsWindow { [UI] private Label ComPortLabel = null; [UI] private ComboBoxText ComPortComboBox = null; @@ -27,23 +27,13 @@ /// Raised after the window hides itself, so the caller can re-show the main window. public event EventHandler BackRequested; - public SettingsWindow(ArduinoConnection arduino) - : this(CreateBuilder(), arduino) { } - private static Builder CreateBuilder() - { - var builder = new Builder(); - builder.AddFromFile("homepage.glade"); - return builder; - } - - private SettingsWindow(Builder builder, ArduinoConnection arduino) - : base(builder.GetObject("SettingWindow").Handle) + public SettingsWindow(Builder builder, ArduinoConnection arduino) { builder.Autoconnect(this); _arduino = arduino; - Title = "Settings"; + // Title = "Settings"; ComPortLabel.Text = "COM Port"; LogLabel.Text = "Log"; LogtextBox.Editable = false; @@ -54,7 +44,7 @@ AutoConnectButton.Clicked += OnAutoConnectClicked; BackButton.Clicked += OnBackClicked; - DeleteEvent += (o, a) => { a.RetVal = true; OnBackClicked(o, EventArgs.Empty); }; + // DeleteEvent += (o, a) => { a.RetVal = true; OnBackClicked(o, EventArgs.Empty); }; _arduino.Log += AppendLog; _arduino.LineReceived += OnLineReceived; @@ -142,7 +132,7 @@ private void OnBackClicked(object sender, EventArgs e) { - Hide(); + // Hide(); BackRequested?.Invoke(this, EventArgs.Empty); } diff --git a/program/homepageall.glade b/program/homepageall.glade new file mode 100644 index 0000000..b591320 --- /dev/null +++ b/program/homepageall.glade @@ -0,0 +1,353 @@ + + + + + + False + + + True + True + False + False + + + + True + False + 3 + 5 + + + Normal Session + True + True + True + 50 + 50 + 50 + 50 + True + True + + + 1 + 1 + + + + + Position Recording Mode + True + True + True + 50 + 50 + 50 + 50 + True + True + + + 1 + 2 + + + + + Exam Mode + True + True + True + 50 + 50 + 50 + 50 + True + True + + + 1 + 3 + + + + + True + True + True + + + 3 + 0 + + + + + True + False + Language + + + 2 + 0 + + + + + Close + True + True + True + True + + + 4 + 4 + + + + + Settings + True + True + True + + + 4 + 3 + + + + + True + False + network-offline + 6 + + + 4 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + False + 3 + 3 + True + + + True + False + center + True + True + COM Port + + + 0 + 0 + + + + + True + False + center + True + True + + + 1 + 0 + + + + + Connect + True + True + True + start + center + True + True + + + 2 + 0 + + + + + Auto Connect + True + True + True + center + start + True + True + + + 1 + 1 + + + + + Back + True + True + True + end + end + True + True + + + 2 + 2 + + + + + True + False + Log + + + 0 + 2 + + + + + True + True + True + True + in + + + True + True + False + True + + + + + 1 + 2 + + + + + True + False + vertical + + + Refresh Ports + True + True + True + center + start + + + False + True + 0 + + + + + True + False + Disconnected + + + False + True + 1 + + + + + 2 + 1 + + + + + + + + 1 + + + + + + + + +