- script editor now remembers window position/size

- fixed re-opening of opened script documents after script editor was closed
This commit is contained in:
codeimp 2008-11-15 13:58:47 +00:00
parent 746fe86aea
commit 83ae7e4880
7 changed files with 129 additions and 30 deletions

View file

@ -72,7 +72,7 @@ namespace CodeImp.DoomBuilder.Controls
this.tabs.Name = "tabs";
this.tabs.Padding = new System.Drawing.Point(12, 3);
this.tabs.SelectedIndex = 0;
this.tabs.Size = new System.Drawing.Size(720, 386);
this.tabs.Size = new System.Drawing.Size(720, 401);
this.tabs.TabIndex = 0;
this.tabs.TabStop = false;
this.tabs.Selecting += new System.Windows.Forms.TabControlCancelEventHandler(this.tabs_Selecting);
@ -261,6 +261,7 @@ namespace CodeImp.DoomBuilder.Controls
//
this.splitter.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitter.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
this.splitter.IsSplitterFixed = true;
this.splitter.Location = new System.Drawing.Point(0, 25);
this.splitter.Name = "splitter";
this.splitter.Orientation = System.Windows.Forms.Orientation.Horizontal;
@ -274,7 +275,7 @@ namespace CodeImp.DoomBuilder.Controls
this.splitter.Panel2.Controls.Add(this.label1);
this.splitter.Panel2.Controls.Add(this.errorlist);
this.splitter.Size = new System.Drawing.Size(726, 538);
this.splitter.SplitterDistance = 397;
this.splitter.SplitterDistance = 412;
this.splitter.TabIndex = 2;
this.splitter.TabStop = false;
//
@ -309,7 +310,7 @@ namespace CodeImp.DoomBuilder.Controls
this.errorlist.MultiSelect = false;
this.errorlist.Name = "errorlist";
this.errorlist.ShowGroups = false;
this.errorlist.Size = new System.Drawing.Size(720, 115);
this.errorlist.Size = new System.Drawing.Size(720, 100);
this.errorlist.SmallImageList = this.errorimages;
this.errorlist.TabIndex = 0;
this.errorlist.TabStop = false;

View file

@ -139,6 +139,26 @@ namespace CodeImp.DoomBuilder.Controls
UpdateToolbar();
}
// This applies user preferences
public void ApplySettings()
{
// Apply settings
//int panel2size = General.Settings.ReadSetting("scriptspanel.splitter", splitter.ClientRectangle.Height - splitter.SplitterDistance);
//splitter.SplitterDistance = splitter.ClientRectangle.Height - panel2size;
errorlist.Columns[0].Width = General.Settings.ReadSetting("scriptspanel.errorscolumn0width", errorlist.Columns[0].Width);
errorlist.Columns[1].Width = General.Settings.ReadSetting("scriptspanel.errorscolumn1width", errorlist.Columns[1].Width);
errorlist.Columns[2].Width = General.Settings.ReadSetting("scriptspanel.errorscolumn2width", errorlist.Columns[2].Width);
}
// This saves user preferences
public void SaveSettings()
{
//General.Settings.WriteSetting("scriptspanel.splitter", splitter.ClientRectangle.Height - splitter.SplitterDistance);
General.Settings.WriteSetting("scriptspanel.errorscolumn0width", errorlist.Columns[0].Width);
General.Settings.WriteSetting("scriptspanel.errorscolumn1width", errorlist.Columns[1].Width);
General.Settings.WriteSetting("scriptspanel.errorscolumn2width", errorlist.Columns[2].Width);
}
#endregion
#region ================== Methods
@ -493,6 +513,7 @@ namespace CodeImp.DoomBuilder.Controls
// Compile now
General.MainWindow.DisplayStatus("Compiling script " + t.Text + "...");
Cursor.Current = Cursors.WaitCursor;
t.Compile();
// Show warning
@ -501,6 +522,7 @@ namespace CodeImp.DoomBuilder.Controls
else
General.MainWindow.DisplayReady();
Cursor.Current = Cursors.Default;
UpdateToolbar();
}

View file

@ -150,28 +150,28 @@
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADI
BQAAAk1TRnQBSQFMAwEBAAEEAQABBAEAARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMA
ARADAAEBAQABIAYAARD/ACMAAc8B2AHyAf8BWwFzAbkB/wEkAT8BkwH/ARwBMgF4Af8BFQErAW8B/wEV
AS8BgAH/AUoBYAGkAf8BzwHYAfIB/9wAAYABlAHUAf8BLwFOAawB/wEdAUIBuAH/AQ0BPQHQAf8BBAE6
AeIB/wEDATcB3AH/AQcBNAG9Af8BCgErAZYB/wELASYBfQH/AWgBegGyAf/UAAGJAZ0B3AH/ATwBWwG7
Af8BHQFNAd0B/wEKAUUB+gH/AQgBQgH5Af8BSAFzAfgB/wFIAXMB+AH/AQEBOgHqAf8BAQE3AeQB/wEG
ATABtgH/AQsBJgF9Af8BaAF6AbIB/8wAAc8B2AHyAf8BUQFsAcYB/wEvAVsB4wH/ARwBUwH9Af8BHAFT
Af0B/wFXAYAB/gH/A/4B/wP+Af8BWgGBAfoB/wEBATsB7gH/AQEBNwHkAf8BBgEwAbYB/wELASYBfQH/
Ac8B2AHyAf/IAAGnAbYB5QH/AU4BcQHZAf8BLQFgAv8BLgFiAv8BLQFgAv8BZgGLAv8D/gH/A/4B/wFR
AXoB+wH/AQMBPwH4Af8BAQE7Ae4B/wEBATcB5AH/AQoBKwGWAf8BSgFgAaQB/8gAAXEBiQHVAf8BTQF0
Ae4B/wE/AW4C/wFCAXAC/wE/AW4C/wE6AWsC/wFqAY4C/wFhAYYC/wEcAVMB/QH/AQ4BSQH7Af8BAwE/
AfgB/wEBAToB6gH/AQcBNAG9Af8BFQEvAYAB/8gAAYEBlAHRAf8BUQF6AfsB/wFTAX0C/wFXAYAB/gH/
AVMBfQL/AWEBhgL/A/4B/wP+Af8BPwFuAv8BGQFRAfsB/wEKAUUB+gH/AQEBPAHzAf8BAwE3AdwB/wEV
ASsBbwH/yAABigGbAdQB/wFhAYYB+wH/AWYBiwL/AWoBjgL/AWYBiwL/AZcBsQL/A/4B/wP+Af8BegGa
Av8BIgFYAf0B/wEOAUkB+wH/AQMBPwH4Af8BBAE6AeIB/wEcATIBeAH/yAABiQGdAdwB/wF6AZYB8gH/
AXoBmgL/AX0BnAL/AXoBmgL/AbEBxAL/A/4B/wP+Af8BogG4Af4B/wEpAV0B/gH/ARkBUQH7Af8BCAFC
AfkB/wENAT0B0AH/ASQBPwGTAf/IAAGnAbYB5QH/AY0BowHlAf8BhwGkAv8BjQGoAv8BhwGkAv8BxQHT
Af4B/wP+Af8D/gH/AbUBxwH+Af8BLQFgAv8BHAFTAf0B/wEKAUUB+gH/AR0BQgG4Af8BZQF7AboB/8gA
Ac8B2AHyAf8BlwGnAd0B/wGVAasB8QH/AZcBsQL/AY0BqAL/AakBvgL/A/4B/wP+Af8BgwGhAv8BLgFi
Av8BHAFTAf0B/wEdAU0B3QH/AS8BTgGsAf8BzwHYAfIB/8wAAbQBwgHsAf8BmwGqAd0B/wGVAasB8QH/
AYcBpAL/AXoBmgL/AWYBiwL/AVMBfQL/AT8BbgL/AS4BYgL/AS8BWwHjAf8BPAFbAbsB/wF2AYwB1AH/
1AABtAHCAewB/wGXAacB3QH/AY0BowHlAf8BegGWAfIB/wFhAYYB+wH/AVEBegH7Af8BTQF0Ae4B/wFO
AXEB2QH/AVEBbAHGAf8BfwGVAdwB/9wAAcwB2AH+Af8BnQGtAeAB/wGJAZ0B3AH/AYoBmwHUAf8BgQGU
AdEB/wFxAYkB1QH/AYEBlAHRAf8BzAHYAf4B//8A0QABQgFNAT4HAAE+AwABKAMAAUADAAEQAwABAQEA
ARADAAEBAQABIAYAARD/ACMAAc8B2AHyAf8BXAF0AbkB/wElAUABkwH/AR0BMwF5Af8BFgEsAXAB/wEW
ATABgQH/AUsBYQGkAf8BzwHYAfIB/9wAAYEBlAHUAf8BMAFPAawB/wEeAUMBuAH/AQ4BPgHQAf8BBQE7
AeIB/wEEATgB3AH/AQgBNQG9Af8BCwEsAZYB/wEMAScBfgH/AWkBewGyAf/UAAGJAZ0B3AH/AT0BXAG7
Af8BHgFOAd0B/wELAUYB+gH/AQkBQwH5Af8BSQF0AfgB/wFJAXQB+AH/AQIBOwHqAf8BAgE4AeQB/wEH
ATEBtgH/AQwBJwF+Af8BaQF7AbIB/8wAAc8B2AHyAf8BUgFtAcYB/wEwAVwB4wH/AR0BVAH9Af8BHQFU
Af0B/wFYAYEB/gH/A/4B/wP+Af8BWwGBAfoB/wECATwB7gH/AQIBOAHkAf8BBwExAbYB/wEMAScBfgH/
Ac8B2AHyAf/IAAGnAbYB5QH/AU8BcgHZAf8BLgFhAv8BLwFjAv8BLgFhAv8BZwGLAv8D/gH/A/4B/wFS
AXsB+wH/AQQBQAH4Af8BAgE8Ae4B/wECATgB5AH/AQsBLAGWAf8BSwFhAaQB/8gAAXIBiQHVAf8BTgF1
Ae4B/wFAAW8C/wFDAXEC/wFAAW8C/wE7AWwC/wFrAY4C/wFiAYYC/wEdAVQB/QH/AQ8BSgH7Af8BBAFA
AfgB/wECATsB6gH/AQgBNQG9Af8BFgEwAYEB/8gAAYEBlAHRAf8BUgF7AfsB/wFUAX4C/wFYAYEB/gH/
AVQBfgL/AWIBhgL/A/4B/wP+Af8BQAFvAv8BGgFSAfsB/wELAUYB+gH/AQIBPQHzAf8BBAE4AdwB/wEW
ASwBcAH/yAABigGbAdQB/wFiAYYB+wH/AWcBiwL/AWsBjgL/AWcBiwL/AZcBsQL/A/4B/wP+Af8BewGa
Av8BIwFZAf0B/wEPAUoB+wH/AQQBQAH4Af8BBQE7AeIB/wEdATMBeQH/yAABiQGdAdwB/wF7AZYB8gH/
AXsBmgL/AX4BnAL/AXsBmgL/AbEBxAL/A/4B/wP+Af8BogG4Af4B/wEqAV4B/gH/ARoBUgH7Af8BCQFD
AfkB/wEOAT4B0AH/ASUBQAGTAf/IAAGnAbYB5QH/AY0BowHlAf8BhwGkAv8BjQGoAv8BhwGkAv8BxQHT
Af4B/wP+Af8D/gH/AbUBxwH+Af8BLgFhAv8BHQFUAf0B/wELAUYB+gH/AR4BQwG4Af8BZgF8AboB/8gA
Ac8B2AHyAf8BlwGnAd0B/wGVAasB8QH/AZcBsQL/AY0BqAL/AakBvgL/A/4B/wP+Af8BgwGhAv8BLwFj
Av8BHQFUAf0B/wEeAU4B3QH/ATABTwGsAf8BzwHYAfIB/8wAAbQBwgHsAf8BmwGqAd0B/wGVAasB8QH/
AYcBpAL/AXsBmgL/AWcBiwL/AVQBfgL/AUABbwL/AS8BYwL/ATABXAHjAf8BPQFcAbsB/wF3AYwB1AH/
1AABtAHCAewB/wGXAacB3QH/AY0BowHlAf8BewGWAfIB/wFiAYYB+wH/AVIBewH7Af8BTgF1Ae4B/wFP
AXIB2QH/AVIBbQHGAf8BgAGVAdwB/9wAAcwB2AH+Af8BnQGtAeAB/wGJAZ0B3AH/AYoBmwHUAf8BgQGU
AdEB/wFyAYkB1QH/AYEBlAHRAf8BzAHYAf4B//8A0QABQgFNAT4HAAE+AwABKAMAAUADAAEQAwABAQEA
AQEFAAGAFwAD/wEAAv8GAAHwAQ8GAAHgAQcGAAHAAQMGAAGAAQEGAAGAAQEGAAGAAQEGAAGAAQEGAAGA
AQEGAAGAAQEGAAGAAQEGAAGAAQEGAAHAAQMGAAHgAQcGAAHwAQ8GAAL/BgAL
</value>

View file

@ -1089,6 +1089,8 @@ namespace CodeImp.DoomBuilder
[BeginAction("openscripteditor")]
internal void ShowScriptEditor()
{
Cursor.Current = Cursors.WaitCursor;
if(scriptwindow == null)
{
// Load the window
@ -1098,6 +1100,7 @@ namespace CodeImp.DoomBuilder
// Show the window
scriptwindow.Show();
scriptwindow.Focus();
Cursor.Current = Cursors.Default;
}
// This asks the user to save changes in script files

View file

@ -158,6 +158,7 @@ namespace CodeImp.DoomBuilder.Map
resources.WriteToConfig(mapconfig, "resources");
// Write scripts to config
mapconfig.DeleteSetting("scripts");
for(int i = 0; i < scriptfiles.Count; i++)
mapconfig.WriteSetting("scripts." + "file" + i.ToString(CultureInfo.InvariantCulture), scriptfiles[i]);

View file

@ -46,12 +46,16 @@ namespace CodeImp.DoomBuilder.Windows
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(729, 578);
this.Controls.Add(this.editor);
this.DoubleBuffered = true;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "ScriptEditorForm";
this.Opacity = 0;
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
this.Text = "Doom Builder Script Editor";
this.Load += new System.EventHandler(this.ScriptEditorForm_Load);
this.Shown += new System.EventHandler(this.ScriptEditorForm_Shown);
this.Move += new System.EventHandler(this.ScriptEditorForm_Move);
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ScriptEditorForm_FormClosing);
this.ResizeEnd += new System.EventHandler(this.ScriptEditorForm_ResizeEnd);
this.ResumeLayout(false);
}

View file

@ -31,10 +31,15 @@ using CodeImp.DoomBuilder.Controls;
namespace CodeImp.DoomBuilder.Windows
{
internal partial class ScriptEditorForm : DelayedForm
internal partial class ScriptEditorForm : Form
{
#region ================== Variables
// Position/size
private Point lastposition;
private Size lastsize;
// Closing?
private bool appclose;
#endregion
@ -81,6 +86,29 @@ namespace CodeImp.DoomBuilder.Windows
#region ================== Events
// Window is loaded
private void ScriptEditorForm_Load(object sender, EventArgs e)
{
this.SuspendLayout();
this.Location = new Point(General.Settings.ReadSetting("scriptswindow.positionx", this.Location.X),
General.Settings.ReadSetting("scriptswindow.positiony", this.Location.Y));
this.Size = new Size(General.Settings.ReadSetting("scriptswindow.sizewidth", this.Size.Width),
General.Settings.ReadSetting("scriptswindow.sizeheight", this.Size.Height));
this.WindowState = (FormWindowState)General.Settings.ReadSetting("scriptswindow.windowstate", (int)FormWindowState.Normal);
this.ResumeLayout(true);
// Normal windowstate?
if(this.WindowState == FormWindowState.Normal)
{
// Keep last position and size
lastposition = this.Location;
lastsize = this.Size;
}
// Apply panel settings
editor.ApplySettings();
}
// Window is shown
private void ScriptEditorForm_Shown(object sender, EventArgs e)
{
@ -91,6 +119,22 @@ namespace CodeImp.DoomBuilder.Windows
// Window is closing
private void ScriptEditorForm_FormClosing(object sender, FormClosingEventArgs e)
{
int windowstate;
// Determine window state to save
if(this.WindowState != FormWindowState.Minimized)
windowstate = (int)this.WindowState;
else
windowstate = (int)FormWindowState.Normal;
// Save window settings
General.Settings.WriteSetting("scriptswindow.positionx", lastposition.X);
General.Settings.WriteSetting("scriptswindow.positiony", lastposition.Y);
General.Settings.WriteSetting("scriptswindow.sizewidth", lastsize.Width);
General.Settings.WriteSetting("scriptswindow.sizeheight", lastsize.Height);
General.Settings.WriteSetting("scriptswindow.windowstate", windowstate);
editor.SaveSettings();
// Only when closed by the user
if(!appclose)
{
@ -108,6 +152,30 @@ namespace CodeImp.DoomBuilder.Windows
}
}
// Window resized
private void ScriptEditorForm_ResizeEnd(object sender, EventArgs e)
{
// Normal windowstate?
if(this.WindowState == FormWindowState.Normal)
{
// Keep last position and size
lastposition = this.Location;
lastsize = this.Size;
}
}
// Window moved
private void ScriptEditorForm_Move(object sender, EventArgs e)
{
// Normal windowstate?
if(this.WindowState == FormWindowState.Normal)
{
// Keep last position and size
lastposition = this.Location;
lastsize = this.Size;
}
}
#endregion
}
}