void SuperPuTTY_LayoutChanging(object sender, LayoutChangedEventArgs eventArgs) { if (eventArgs.IsNewLayoutAlreadyActive) { toolStripStatusLabelLayout.Text = eventArgs.New.Name; } else { // reset old layout (close old putty instances) foreach (DockContent dockContent in this.DockPanel.DocumentsToArray()) { Log.Debug("Unhooking document: " + dockContent); dockContent.DockPanel = null; // close old putty if (dockContent.CloseButtonVisible) { dockContent.Close(); } } List<DockContent> contents = new List<DockContent>(); foreach (DockContent dockContent in this.DockPanel.Contents) { contents.Add(dockContent); } foreach (DockContent dockContent in contents) { Log.Debug("Unhooking dock content: " + dockContent); dockContent.DockPanel = null; // close non-persistant windows if (dockContent.CloseButtonVisible) { dockContent.Close(); } } if (eventArgs.New == null) { // 1st time or reset Log.Debug("Initializing default layout"); this.InitDefaultLayout(); toolStripStatusLabelLayout.Text = ""; SuperPuTTY.ReportStatus("Initialized default layout"); } else if (!File.Exists(eventArgs.New.FilePath)) { // file missing Log.WarnFormat("Layout file doesn't exist, file={0}", eventArgs.New.FilePath); this.InitDefaultLayout(); toolStripStatusLabelLayout.Text = eventArgs.New.Name; SuperPuTTY.ReportStatus("Could not load layout, file missing: {0}", eventArgs.New.FilePath); } else { // load new one Log.DebugFormat("Loading layout: {0}", eventArgs.New.FilePath); this.DockPanel.LoadFromXml(eventArgs.New.FilePath, RestoreLayoutFromPersistString); toolStripStatusLabelLayout.Text = eventArgs.New.Name; SuperPuTTY.ReportStatus("Loaded layout: {0}", eventArgs.New.FilePath); } // after all is done, cause a repaint to } }
void SuperPuTTY_LayoutChanged(object sender, Data.LayoutChangedEventArgs e) { // move 1x after we're done loading this.MoveWindow("LayoutChanged"); }
public static void LoadLayout(LayoutData layout, bool isNewLayoutAlreadyActive) { Log.InfoFormat("LoadLayout: layout={0}, isNewLayoutAlreadyActive={1}", layout == null ? "NULL" : layout.Name, isNewLayoutAlreadyActive); LayoutChangedEventArgs args = new LayoutChangedEventArgs { New = layout, Old = CurrentLayout, IsNewLayoutAlreadyActive = isNewLayoutAlreadyActive }; try { IsLayoutChanging = true; if (LayoutChanging != null) { LayoutChanging(typeof(SuperPuTTY), args); } } finally { IsLayoutChanging = false; } if (LayoutChanged != null) { CurrentLayout = layout; LayoutChanged(typeof(SuperPuTTY), args); } }