diff --git a/Quad64.csproj b/Quad64.csproj index 124fe51..eb07c2f 100644 --- a/Quad64.csproj +++ b/Quad64.csproj @@ -170,6 +170,13 @@ Form + + Form + + + ThemeSelector.cs + + @@ -193,6 +200,7 @@ + @@ -253,6 +261,9 @@ TextureEditor.cs + + ThemeSelector.cs + PreserveNewest @@ -271,6 +282,9 @@ PreserveNewest + + Always + @@ -282,6 +296,9 @@ Settings.settings True + + Always + @@ -305,6 +322,9 @@ + + Always + diff --git a/data/themes/Making Themes.txt b/data/themes/Making Themes.txt new file mode 100644 index 0000000..fb7591c --- /dev/null +++ b/data/themes/Making Themes.txt @@ -0,0 +1,136 @@ +As of Quad64 v0.2 (Beta Build 5) you can now customize the look of the entire program. Currently it only supports changing RGB colors, but I might expand it in the future if enough people ask for it. + +You can look at "dark.json" to see how the data should be layed out. Make a copy and play around with the colors to see what you can make of it. + +Do note that if you don't specify a color, a default color will be chosen instead. + +------------------ +Modifiable colors +------------------ + +[Defaults] +Background +Text +Panel-Background +ListBox-Background +ListBox-Text +ListBox-Highlight +ListBox-HighlightedText +TextBox-Background +TextBox-Text +TextBox-Comments +DropDown-Background +DropDown-Text +Button-Background +Button-Text +NumericUpDown-Background +NumericUpDown-Text + +[Main] +Background +Controls-Background +Controls-Text +Controls-Button-Background +Controls-Button-Text +Controls-DropDown-Background +Controls-DropDown-Text +Controls-NumericUpDown-Background +Controls-NumericUpDown-Text +MenuBar-Background +MenuBar-Text +MenuBar-Item-Border +MenuBar-Item-Selected +MenuBar-Item-Highlight +Properties-Background +Properties-Text +Properties-Lines +TreeView-Background +TreeView-Text +TreeView-Highlight +TreeView-3DObjectsLabel +TreeView-MacroObjectsLabel +TreeView-SpecialObjectsLabel +TreeView-WarpsLabel + +[TextureEditor] +Background +LevelTab-Background-Left +LevelTab-Background-Middle +LevelTab-Background-Right +LevelTab-Text +LevelTab-Button-Background +LevelTab-Button-Text +OtherTab-Background-Left +OtherTab-Background-Middle +OtherTab-Background-Right +OtherTab-Text +OtherTab-Button-Background +OtherTab-Button-Text +SkyTab-Background-Left +SkyTab-Background-Right +SkyTab-Text +SkyTab-Button-Background +SkyTab-Button-Text + +[ObjectCombos] +Background +Text +3DObjects-Title +3DObjects-Item +3DObjects-Item-Alt +3DObjects-Item-Highlight +3DObjects-Item-Highlight-Text +MacroObjects-Title +MacroObjects-Item +MacroObjects-Item-Alt +MacroObjects-Item-Highlight +MacroObjects-Item-Highlight-Text +SpecialObjects-Title +SpecialObjects-Item +SpecialObjects-Item-Alt +SpecialObjects-Item-Highlight +SpecialObjects-Item-Highlight-Text +Other-Title +Other-Item +Other-Item-Alt +Other-Item-Highlight +Other-Item-Highlight-Text + +[ScriptDumps] +Background +Text +Panel-Background +DropDown-Background +DropDown-Text +GeoLayoutScripts-AreaPanel-Background +GeoLayoutScripts-AreaPanel-Text +Fast3DScripts-AreaPanel-Background +Fast3DScripts-AreaPanel-Text +Objects-ListBox-Background +Objects-ListBox-Background +Objects-ListBox-Highlight +Objects-ListBox-HighlightedText +Fast3DScripts-ListBox-Background +Fast3DScripts-ListBox-Text +Fast3DScripts-ListBox-Highlight +Fast3DScripts-ListBox-HighlightedText +LevelScripts-Background +LevelScripts-Text +LevelScripts-Comments +GeoLayoutScripts-Background +GeoLayoutScripts-Text +GeoLayoutScripts-Comments +Fast3DScripts-Background +Fast3DScripts-Text +Fast3DScripts-Comments +BehaviorScripts-Background +BehaviorScripts-Text +BehaviorScripts-Comments + + + + + + + + diff --git a/data/themes/dark.json b/data/themes/dark.json new file mode 100644 index 0000000..3efa611 --- /dev/null +++ b/data/themes/dark.json @@ -0,0 +1,113 @@ +{ + "Info" : { + "Name" : "Quad64 Dark Theme", + "Author" : "Davideesk", + "Note" : "This dark theme does not show every possible option you can change, so please look at 'Making Themes.txt' for more information!" + }, + + "Defaults" : { + "Background" : { "R":40, "G":40, "B":40 }, + "Text" : { "R":240, "G":240, "B":240 }, + "Panel-Background" : { "R":70, "G":70, "B":70 }, + "ListBox-Background" : { "R":40, "G":40, "B":40 }, + "ListBox-Text" : { "R":240, "G":240, "B":240 }, + "ListBox-Highlight" : { "R":0, "G":80, "B":140 }, + "ListBox-HighlightedText" : { "R":240, "G":240, "B":240 }, + "TextBox-Background" : { "R":40, "G":40, "B":40 }, + "TextBox-Text" : { "R":240, "G":240, "B":240 }, + "TextBox-Comments" : { "R":0, "G":240, "B":0 }, + "DropDown-Background" : { "R":40, "G":40, "B":40 }, + "DropDown-Text" : { "R":240, "G":240, "B":240 }, + "Button-Background" : { "R":40, "G":40, "B":40 }, + "Button-Text" : { "R":240, "G":240, "B":240 }, + "NumericUpDown-Background" : { "R":40, "G":40, "B":40 }, + "NumericUpDown-Text" : { "R":240, "G":240, "B":240 } + }, + + "Main" : { + "Controls-Background" : { "R":70, "G":70, "B":70 }, + + "MenuBar-Item-Border" : { "R":0, "G":0, "B":0 }, + "MenuBar-Item-Selected" : { "R":0x90, "G":0x90, "B":0x90 }, + "MenuBar-Item-Highlight" : { "R":0xA9, "G":0xA9, "B":0xA9 }, + + "Properties-Background" : { "R":70, "G":70, "B":70 }, + "Properties-Text" : { "R":240, "G":240, "B":240 }, + "Properties-Lines" : { "R":120, "G":120, "B":120 }, + + "TreeView-Highlight" : { "R":110, "G":110, "B":160 }, + "TreeView-3DObjectsLabel" : { "R":220, "G":140, "B":140 }, + "TreeView-MacroObjectsLabel" : { "R":140, "G":140, "B":220 }, + "TreeView-SpecialObjectsLabel" : { "R":140, "G":220, "B":140 }, + "TreeView-WarpsLabel" : { "R":220, "G":220, "B":220 } + }, + + "TextureEditor" : { + "LevelTab-Background-Left" : { "R":80, "G":60, "B":60 }, + "LevelTab-Background-Middle" : { "R":60, "G":80, "B":60 }, + "LevelTab-Background-Right" : { "R":60, "G":60, "B":80 }, + "LevelTab-Text" : { "R":240, "G":240, "B": 240 }, + "LevelTab-Button-Background" : { "R":60, "G":60, "B":60 }, + "LevelTab-Button-Text" : { "R":240, "G":240, "B":240 }, + + "OtherTab-Background-Left" : { "R":80, "G":60, "B":60 }, + "OtherTab-Background-Middle" : { "R":60, "G":80, "B":60 }, + "OtherTab-Background-Right" : { "R":60, "G":60, "B":80 }, + "OtherTab-Text" : { "R":240, "G":240, "B": 240 }, + "OtherTab-Button-Background" : { "R":60, "G":60, "B":60 }, + "OtherTab-Button-Text" : { "R":240, "G":240, "B":240 }, + + "SkyTab-Background-Left" : { "R":20, "G":70, "B":80 }, + "SkyTab-Background-Right" : { "R":60, "G":60, "B":80 }, + "SkyTab-Text" : { "R":240, "G":240, "B":240 }, + "SkyTab-Button-Background" : { "R":60, "G":60, "B":60 }, + "SkyTab-Button-Text" : { "R":240, "G":240, "B":240 } + }, + + "ObjectCombos" : { + "Background" : { "R":40, "G":40, "B":40 }, + "Text" : { "R":240, "G":240, "B":240 }, + + "3DObjects-Title" : { "R":200, "G":170, "B":170 }, + "3DObjects-Item" : { "R":50, "G":50, "B":50 }, + "3DObjects-Item-Alt" : { "R":50, "G":40, "B":40 }, + "3DObjects-Item-Highlight" : { "R":60, "G":100, "B":150 }, + "3DObjects-Item-Highlight-Text" : { "R":240, "G":240, "B":240 }, + + "MacroObjects-Title" : { "R":170, "G":170, "B":200 }, + "MacroObjects-Item" : { "R":50, "G":50, "B":50 }, + "MacroObjects-Item-Alt" : { "R":40, "G":40, "B":50 }, + "MacroObjects-Item-Highlight" : { "R":60, "G":100, "B":150 }, + "MacroObjects-Item-Highlight-Text" : { "R":240, "G":240, "B":240 }, + + "SpecialObjects-Title" : { "R":170, "G":200, "B":170 }, + "SpecialObjects-Item" : { "R":50, "G":50, "B":50 }, + "SpecialObjects-Item-Alt" : { "R":40, "G":50, "B":40 }, + "SpecialObjects-Item-Highlight" : { "R":60, "G":100, "B":150 }, + "SpecialObjects-Item-Highlight-Text" : { "R":240, "G":240, "B":240 }, + + "Other-Title" : { "R":200, "G":200, "B":200 }, + "Other-Item" : { "R":50, "G":50, "B":50 }, + "Other-Item-Alt" : { "R":40, "G":40, "B":40 }, + "Other-Item-Highlight" : { "R":60, "G":100, "B":150 }, + "Other-Item-Highlight-Text" : { "R":240, "G":240, "B":240 } + }, + + "ScriptDumps" : { + "LevelScripts-Background" : { "R":40, "G":10, "B":10 }, + "LevelScripts-Text" : { "R":240, "G":180, "B":180 }, + "LevelScripts-Comments" : { "R":200, "G":100, "B":0 }, + + "GeoLayoutScripts-Background" : { "R":10, "G":40, "B":10 }, + "GeoLayoutScripts-Text" : { "R":180, "G":240, "B":180 }, + "GeoLayoutScripts-Comments" : { "R":0, "G":200, "B":0 }, + + "Fast3DScripts-Background" : { "R":10, "G":10, "B":40 }, + "Fast3DScripts-Text" : { "R":180, "G":180, "B":240 }, + "Fast3DScripts-Comments" : { "R":0, "G":100, "B":200 }, + + "BehaviorScripts-Background" : { "R":25, "G":10, "B":40 }, + "BehaviorScripts-Text" : { "R":200, "G":180, "B":240 }, + "BehaviorScripts-Comments" : { "R":150, "G":80, "B":200 } + } +} \ No newline at end of file diff --git a/data/themes/light.json b/data/themes/light.json new file mode 100644 index 0000000..1804833 --- /dev/null +++ b/data/themes/light.json @@ -0,0 +1,13 @@ +{ + "Info" : { + "Name" : "Quad64 Light Theme", + "Author" : "Davideesk", + "Note" : "The light theme is hard-coded as the default theme, and this file is here to show up in the theme's menu. Make absolutely sure not to remove the 5 categories below, as they are needed." + }, + + "Defaults" : {}, + "Main" : {}, + "TextureEditor" : {}, + "ObjectCombos" : {}, + "ScriptDumps" : {} +} \ No newline at end of file diff --git a/src/Forms/EditWarp.Designer.cs b/src/Forms/EditWarp.Designer.cs index 2ef8074..0a7db7a 100644 --- a/src/Forms/EditWarp.Designer.cs +++ b/src/Forms/EditWarp.Designer.cs @@ -65,6 +65,7 @@ private void InitializeComponent() // // cancelButton // + this.cancelButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.cancelButton.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.cancelButton.Location = new System.Drawing.Point(225, 192); this.cancelButton.Name = "cancelButton"; @@ -76,6 +77,7 @@ private void InitializeComponent() // // selectButton // + this.selectButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.selectButton.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.selectButton.Location = new System.Drawing.Point(82, 193); this.selectButton.Name = "selectButton"; @@ -139,6 +141,7 @@ private void InitializeComponent() // w_selectLevel // this.w_selectLevel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.w_selectLevel.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.w_selectLevel.FormattingEnabled = true; this.w_selectLevel.Location = new System.Drawing.Point(134, 63); this.w_selectLevel.Name = "w_selectLevel"; @@ -259,7 +262,7 @@ private void InitializeComponent() this.label1.TabIndex = 5; this.label1.Text = "Trigger ID: "; // - // wi_tz + // iw_tz // this.iw_tz.Location = new System.Drawing.Point(226, 131); this.iw_tz.Maximum = new decimal(new int[] { @@ -272,7 +275,7 @@ private void InitializeComponent() 0, 0, -2147483648}); - this.iw_tz.Name = "wi_tz"; + this.iw_tz.Name = "iw_tz"; this.iw_tz.Size = new System.Drawing.Size(99, 20); this.iw_tz.TabIndex = 4; // diff --git a/src/Forms/EditWarp.cs b/src/Forms/EditWarp.cs index 78a2a08..0083ce1 100644 --- a/src/Forms/EditWarp.cs +++ b/src/Forms/EditWarp.cs @@ -84,6 +84,50 @@ private void EditWarp_Load(object sender, EventArgs e) iw_ty.Value = tY; iw_tz.Value = tZ; } + + updateTheme(); + } + + private void updateLabelColor(ref Label label) + { + label.ForeColor = Theme.DEFAULT_TEXT; + label.BackColor = Theme.DEFAULT_PANEL_BACKGROUND; + } + + private void updateUpDownColor(ref NumericUpDown upDown) + { + upDown.ForeColor = Theme.DEFAULT_UPDOWN_TEXT; + upDown.BackColor = Theme.DEFAULT_UPDOWN_BACKGROUND; + } + + private void updateTheme() + { + BackColor = Theme.DEFAULT_BACKGROUND; + panel_instWarp_controls.BackColor = Theme.DEFAULT_PANEL_BACKGROUND; + panel_warp_controls.BackColor = Theme.DEFAULT_PANEL_BACKGROUND; + w_selectLevel.BackColor = Theme.DEFAULT_DROPDOWNLIST_BACKGROUND; + w_selectLevel.ForeColor = Theme.DEFAULT_DROPDOWNLIST_TEXT; + cancelButton.BackColor = Theme.DEFAULT_BUTTON_BACKGROUND; + cancelButton.ForeColor = Theme.DEFAULT_BUTTON_TEXT; + selectButton.BackColor = Theme.DEFAULT_BUTTON_BACKGROUND; + selectButton.ForeColor = Theme.DEFAULT_BUTTON_TEXT; + updateLabelColor(ref label1); + updateLabelColor(ref label2); + updateLabelColor(ref label3); + updateLabelColor(ref label4); + updateLabelColor(ref label5); + updateLabelColor(ref label6); + updateLabelColor(ref label7); + updateLabelColor(ref label9); + updateLabelColor(ref label10); + updateUpDownColor(ref iw_area); + updateUpDownColor(ref iw_trigger); + updateUpDownColor(ref iw_tx); + updateUpDownColor(ref iw_ty); + updateUpDownColor(ref iw_tz); + updateUpDownColor(ref w_warpFrom); + updateUpDownColor(ref w_warpToID); + updateUpDownColor(ref w_areaID); } private void cancelButton_Click(object sender, EventArgs e) diff --git a/src/Forms/MainForm.Designer.cs b/src/Forms/MainForm.Designer.cs index 5e18331..58cc3a3 100644 --- a/src/Forms/MainForm.Designer.cs +++ b/src/Forms/MainForm.Designer.cs @@ -64,6 +64,7 @@ private void InitializeComponent() this.texturesToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.themesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.rOMInfoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.scriptsDumpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -78,25 +79,25 @@ private void InitializeComponent() this.propertyGrid1 = new System.Windows.Forms.PropertyGrid(); this.splitContainer2 = new System.Windows.Forms.SplitContainer(); this.splitContainer3 = new System.Windows.Forms.SplitContainer(); - this.panel3 = new System.Windows.Forms.Panel(); + this.controlsPanel = new System.Windows.Forms.Panel(); this.gridSize = new System.Windows.Forms.NumericUpDown(); this.gridButton = new System.Windows.Forms.CheckBox(); - this.label4 = new System.Windows.Forms.Label(); + this.cameraModeLabel = new System.Windows.Forms.Label(); this.cameraMode = new System.Windows.Forms.ComboBox(); this.keepOnGround = new System.Windows.Forms.CheckBox(); this.dropToGround = new System.Windows.Forms.Button(); - this.camSpeedLabel = new System.Windows.Forms.Label(); - this.label6 = new System.Windows.Forms.Label(); + this.camSpeedPercentageLabel = new System.Windows.Forms.Label(); + this.cameraSpeedLabel = new System.Windows.Forms.Label(); this.trackBar_camSpeed = new System.Windows.Forms.TrackBar(); this.objSpeedLabel = new System.Windows.Forms.Label(); - this.label3 = new System.Windows.Forms.Label(); + this.moveSpeedLabel = new System.Windows.Forms.Label(); this.trackBar_moveSpeed = new System.Windows.Forms.TrackBar(); this.moveCamPanel = new System.Windows.Forms.Panel(); - this.label2 = new System.Windows.Forms.Label(); + this.moveCameraLabel = new System.Windows.Forms.Label(); this.moveCam_strafe = new System.Windows.Forms.PictureBox(); this.moveCam_InOut = new System.Windows.Forms.PictureBox(); this.rotateObjectPanel = new System.Windows.Forms.Panel(); - this.label1 = new System.Windows.Forms.Label(); + this.rotateObjectLabel = new System.Windows.Forms.Label(); this.rotObj = new System.Windows.Forms.PictureBox(); this.rotObj_Yaw = new System.Windows.Forms.PictureBox(); this.moveObjectPanel = new System.Windows.Forms.Panel(); @@ -114,7 +115,7 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).BeginInit(); this.splitContainer3.Panel2.SuspendLayout(); this.splitContainer3.SuspendLayout(); - this.panel3.SuspendLayout(); + this.controlsPanel.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.gridSize)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.trackBar_camSpeed)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.trackBar_moveSpeed)).BeginInit(); @@ -140,7 +141,7 @@ private void InitializeComponent() this.helpToolStripMenuItem}); this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Name = "menuStrip1"; - this.menuStrip1.Size = new System.Drawing.Size(174, 24); + this.menuStrip1.Size = new System.Drawing.Size(266, 24); this.menuStrip1.TabIndex = 1; this.menuStrip1.Text = "menuStrip1"; // @@ -179,8 +180,10 @@ private void InitializeComponent() // // toolStripSeparator3 // + this.toolStripSeparator3.BackColor = System.Drawing.SystemColors.Control; this.toolStripSeparator3.Name = "toolStripSeparator3"; this.toolStripSeparator3.Size = new System.Drawing.Size(148, 6); + this.toolStripSeparator3.Paint += new System.Windows.Forms.PaintEventHandler(this.ToolStripSeparator_Paint); // // testROMToolStripMenuItem // @@ -216,6 +219,7 @@ private void InitializeComponent() // this.toolStripSeparator4.Name = "toolStripSeparator4"; this.toolStripSeparator4.Size = new System.Drawing.Size(186, 6); + this.toolStripSeparator4.Paint += new System.Windows.Forms.PaintEventHandler(this.ToolStripSeparator_Paint); // // modelIDToolStripMenuItem // @@ -280,6 +284,7 @@ private void InitializeComponent() // this.toolStripSeparator5.Name = "toolStripSeparator5"; this.toolStripSeparator5.Size = new System.Drawing.Size(186, 6); + this.toolStripSeparator5.Paint += new System.Windows.Forms.PaintEventHandler(this.ToolStripSeparator_Paint); // // objectComboNameToolStripMenuItem // @@ -291,11 +296,14 @@ private void InitializeComponent() // // levelToolStripMenuItem // + this.levelToolStripMenuItem.BackColor = System.Drawing.Color.LightGray; + this.levelToolStripMenuItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; this.levelToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.selectLeveToolStripMenuItem, this.selectAreaToolStripMenuItem, this.toolStripSeparator2, this.texturesToolStripMenuItem1}); + this.levelToolStripMenuItem.ForeColor = System.Drawing.SystemColors.ControlText; this.levelToolStripMenuItem.Name = "levelToolStripMenuItem"; this.levelToolStripMenuItem.Size = new System.Drawing.Size(46, 20); this.levelToolStripMenuItem.Text = "Level"; @@ -382,6 +390,7 @@ private void InitializeComponent() // this.toolStripSeparator2.Name = "toolStripSeparator2"; this.toolStripSeparator2.Size = new System.Drawing.Size(132, 6); + this.toolStripSeparator2.Paint += new System.Windows.Forms.PaintEventHandler(this.ToolStripSeparator_Paint); // // texturesToolStripMenuItem1 // @@ -394,6 +403,7 @@ private void InitializeComponent() // this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.settingsToolStripMenuItem, + this.themesToolStripMenuItem, this.rOMInfoToolStripMenuItem, this.toolStripSeparator1, this.scriptsDumpToolStripMenuItem}); @@ -404,26 +414,34 @@ private void InitializeComponent() // settingsToolStripMenuItem // this.settingsToolStripMenuItem.Name = "settingsToolStripMenuItem"; - this.settingsToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.settingsToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.settingsToolStripMenuItem.Text = "Settings"; this.settingsToolStripMenuItem.Click += new System.EventHandler(this.settingsToolStripMenuItem_Click); // + // themesToolStripMenuItem + // + this.themesToolStripMenuItem.Name = "themesToolStripMenuItem"; + this.themesToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.themesToolStripMenuItem.Text = "Themes"; + this.themesToolStripMenuItem.Click += new System.EventHandler(this.themesToolStripMenuItem_Click); + // // rOMInfoToolStripMenuItem // this.rOMInfoToolStripMenuItem.Name = "rOMInfoToolStripMenuItem"; - this.rOMInfoToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.rOMInfoToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.rOMInfoToolStripMenuItem.Text = "ROM Info"; this.rOMInfoToolStripMenuItem.Click += new System.EventHandler(this.rOMInfoToolStripMenuItem_Click); // // toolStripSeparator1 // this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(142, 6); + this.toolStripSeparator1.Size = new System.Drawing.Size(149, 6); + this.toolStripSeparator1.Paint += new System.Windows.Forms.PaintEventHandler(this.ToolStripSeparator_Paint); // // scriptsDumpToolStripMenuItem // this.scriptsDumpToolStripMenuItem.Name = "scriptsDumpToolStripMenuItem"; - this.scriptsDumpToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.scriptsDumpToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.scriptsDumpToolStripMenuItem.Text = "Script Dumps"; this.scriptsDumpToolStripMenuItem.Click += new System.EventHandler(this.scriptsDumpToolStripMenuItem_Click); // @@ -567,15 +585,16 @@ private void InitializeComponent() this.propertyGrid1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); + this.propertyGrid1.BackColor = System.Drawing.Color.White; this.propertyGrid1.CommandsBackColor = System.Drawing.SystemColors.Control; - this.propertyGrid1.CommandsDisabledLinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.propertyGrid1.CommandsDisabledLinkColor = System.Drawing.Color.Gray; this.propertyGrid1.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.propertyGrid1.HelpVisible = false; - this.propertyGrid1.LineColor = System.Drawing.Color.LightGray; + this.propertyGrid1.LineColor = System.Drawing.Color.DarkGray; this.propertyGrid1.Location = new System.Drawing.Point(0, 0); this.propertyGrid1.Name = "propertyGrid1"; this.propertyGrid1.PropertySort = System.Windows.Forms.PropertySort.NoSort; - this.propertyGrid1.Size = new System.Drawing.Size(216, 261); + this.propertyGrid1.Size = new System.Drawing.Size(219, 261); this.propertyGrid1.TabIndex = 0; this.propertyGrid1.ToolbarVisible = false; this.propertyGrid1.UseCompatibleTextRendering = true; @@ -596,7 +615,7 @@ private void InitializeComponent() // // splitContainer2.Panel2 // - this.splitContainer2.Panel2.Controls.Add(this.panel3); + this.splitContainer2.Panel2.Controls.Add(this.controlsPanel); this.splitContainer2.Panel2.Controls.Add(this.glControl1); this.splitContainer2.Panel2MinSize = 600; this.splitContainer2.Size = new System.Drawing.Size(879, 456); @@ -619,38 +638,40 @@ private void InitializeComponent() this.splitContainer3.TabIndex = 0; this.splitContainer3.TabStop = false; // - // panel3 + // controlsPanel // - this.panel3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + this.controlsPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.panel3.BackColor = System.Drawing.Color.Gray; - this.panel3.Controls.Add(this.gridSize); - this.panel3.Controls.Add(this.gridButton); - this.panel3.Controls.Add(this.label4); - this.panel3.Controls.Add(this.cameraMode); - this.panel3.Controls.Add(this.keepOnGround); - this.panel3.Controls.Add(this.dropToGround); - this.panel3.Controls.Add(this.camSpeedLabel); - this.panel3.Controls.Add(this.label6); - this.panel3.Controls.Add(this.trackBar_camSpeed); - this.panel3.Controls.Add(this.objSpeedLabel); - this.panel3.Controls.Add(this.label3); - this.panel3.Controls.Add(this.trackBar_moveSpeed); - this.panel3.Controls.Add(this.moveCamPanel); - this.panel3.Controls.Add(this.rotateObjectPanel); - this.panel3.Controls.Add(this.moveObjectPanel); - this.panel3.Location = new System.Drawing.Point(3, 333); - this.panel3.MaximumSize = new System.Drawing.Size(10000, 120); - this.panel3.MinimumSize = new System.Drawing.Size(600, 120); - this.panel3.Name = "panel3"; - this.panel3.Size = new System.Drawing.Size(649, 120); - this.panel3.TabIndex = 5; + this.controlsPanel.BackColor = System.Drawing.Color.Gray; + this.controlsPanel.Controls.Add(this.gridSize); + this.controlsPanel.Controls.Add(this.gridButton); + this.controlsPanel.Controls.Add(this.cameraModeLabel); + this.controlsPanel.Controls.Add(this.cameraMode); + this.controlsPanel.Controls.Add(this.keepOnGround); + this.controlsPanel.Controls.Add(this.dropToGround); + this.controlsPanel.Controls.Add(this.camSpeedPercentageLabel); + this.controlsPanel.Controls.Add(this.cameraSpeedLabel); + this.controlsPanel.Controls.Add(this.trackBar_camSpeed); + this.controlsPanel.Controls.Add(this.objSpeedLabel); + this.controlsPanel.Controls.Add(this.moveSpeedLabel); + this.controlsPanel.Controls.Add(this.trackBar_moveSpeed); + this.controlsPanel.Controls.Add(this.moveCamPanel); + this.controlsPanel.Controls.Add(this.rotateObjectPanel); + this.controlsPanel.Controls.Add(this.moveObjectPanel); + this.controlsPanel.Location = new System.Drawing.Point(3, 333); + this.controlsPanel.MaximumSize = new System.Drawing.Size(10000, 120); + this.controlsPanel.MinimumSize = new System.Drawing.Size(600, 120); + this.controlsPanel.Name = "controlsPanel"; + this.controlsPanel.Size = new System.Drawing.Size(649, 120); + this.controlsPanel.TabIndex = 5; // // gridSize // this.gridSize.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Right))); + this.gridSize.BackColor = System.Drawing.SystemColors.Window; this.gridSize.Enabled = false; + this.gridSize.ForeColor = System.Drawing.SystemColors.MenuText; this.gridSize.Location = new System.Drawing.Point(603, 94); this.gridSize.Minimum = new decimal(new int[] { 2, @@ -673,6 +694,8 @@ private void InitializeComponent() this.gridButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Right))); this.gridButton.Appearance = System.Windows.Forms.Appearance.Button; + this.gridButton.BackColor = System.Drawing.Color.Silver; + this.gridButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.gridButton.Font = new System.Drawing.Font("Corbel", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.gridButton.Location = new System.Drawing.Point(561, 93); this.gridButton.Name = "gridButton"; @@ -681,19 +704,19 @@ private void InitializeComponent() this.gridButton.TabStop = false; this.gridButton.Text = "Grid"; this.gridButton.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.gridButton.UseVisualStyleBackColor = true; + this.gridButton.UseVisualStyleBackColor = false; this.gridButton.CheckedChanged += new System.EventHandler(this.gridButton_CheckedChanged); // - // label4 + // cameraModeLabel // - this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + this.cameraModeLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Right))); - this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(566, 47); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(76, 13); - this.label4.TabIndex = 24; - this.label4.Text = "Camera Mode:"; + this.cameraModeLabel.AutoSize = true; + this.cameraModeLabel.Location = new System.Drawing.Point(566, 47); + this.cameraModeLabel.Name = "cameraModeLabel"; + this.cameraModeLabel.Size = new System.Drawing.Size(76, 13); + this.cameraModeLabel.TabIndex = 24; + this.cameraModeLabel.Text = "Camera Mode:"; // // cameraMode // @@ -701,6 +724,7 @@ private void InitializeComponent() | System.Windows.Forms.AnchorStyles.Right))); this.cameraMode.DisplayMember = "1"; this.cameraMode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cameraMode.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.cameraMode.Font = new System.Drawing.Font("Corbel", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.cameraMode.Items.AddRange(new object[] { "Fly", @@ -721,55 +745,59 @@ private void InitializeComponent() // keepOnGround // this.keepOnGround.Appearance = System.Windows.Forms.Appearance.Button; + this.keepOnGround.BackColor = System.Drawing.Color.Silver; + this.keepOnGround.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.keepOnGround.Font = new System.Drawing.Font("Corbel", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.keepOnGround.Location = new System.Drawing.Point(254, 79); + this.keepOnGround.Location = new System.Drawing.Point(254, 82); this.keepOnGround.Margin = new System.Windows.Forms.Padding(0); this.keepOnGround.Name = "keepOnGround"; - this.keepOnGround.Size = new System.Drawing.Size(95, 21); + this.keepOnGround.Size = new System.Drawing.Size(95, 24); this.keepOnGround.TabIndex = 0; this.keepOnGround.TabStop = false; this.keepOnGround.Text = "Keep on ground"; this.keepOnGround.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.keepOnGround.UseVisualStyleBackColor = true; + this.keepOnGround.UseVisualStyleBackColor = false; // // dropToGround // + this.dropToGround.BackColor = System.Drawing.Color.Silver; + this.dropToGround.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.dropToGround.Font = new System.Drawing.Font("Corbel", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.dropToGround.Location = new System.Drawing.Point(254, 57); this.dropToGround.Margin = new System.Windows.Forms.Padding(0); this.dropToGround.Name = "dropToGround"; - this.dropToGround.Size = new System.Drawing.Size(95, 21); + this.dropToGround.Size = new System.Drawing.Size(95, 24); this.dropToGround.TabIndex = 0; this.dropToGround.TabStop = false; this.dropToGround.Text = "Drop to ground"; - this.dropToGround.UseVisualStyleBackColor = true; + this.dropToGround.UseVisualStyleBackColor = false; this.dropToGround.Click += new System.EventHandler(this.dropToGround_Click); // - // camSpeedLabel + // camSpeedPercentageLabel // - this.camSpeedLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + this.camSpeedPercentageLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Right))); - this.camSpeedLabel.AutoSize = true; - this.camSpeedLabel.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.camSpeedLabel.Location = new System.Drawing.Point(616, 2); - this.camSpeedLabel.Name = "camSpeedLabel"; - this.camSpeedLabel.Size = new System.Drawing.Size(35, 14); - this.camSpeedLabel.TabIndex = 12; - this.camSpeedLabel.Text = "100%"; - this.camSpeedLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // label6 - // - this.label6.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + this.camSpeedPercentageLabel.AutoSize = true; + this.camSpeedPercentageLabel.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.camSpeedPercentageLabel.Location = new System.Drawing.Point(616, 2); + this.camSpeedPercentageLabel.Name = "camSpeedPercentageLabel"; + this.camSpeedPercentageLabel.Size = new System.Drawing.Size(35, 14); + this.camSpeedPercentageLabel.TabIndex = 12; + this.camSpeedPercentageLabel.Text = "100%"; + this.camSpeedPercentageLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // cameraSpeedLabel + // + this.cameraSpeedLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Right))); - this.label6.AutoSize = true; - this.label6.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label6.Location = new System.Drawing.Point(559, 2); - this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(63, 14); - this.label6.TabIndex = 11; - this.label6.Text = "Cam spd:"; - this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.cameraSpeedLabel.AutoSize = true; + this.cameraSpeedLabel.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cameraSpeedLabel.Location = new System.Drawing.Point(559, 2); + this.cameraSpeedLabel.Name = "cameraSpeedLabel"; + this.cameraSpeedLabel.Size = new System.Drawing.Size(63, 14); + this.cameraSpeedLabel.TabIndex = 11; + this.cameraSpeedLabel.Text = "Cam spd:"; + this.cameraSpeedLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // trackBar_camSpeed // @@ -799,17 +827,17 @@ private void InitializeComponent() this.objSpeedLabel.Text = "100%"; this.objSpeedLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // - // label3 + // moveSpeedLabel // - this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.label3.AutoSize = true; - this.label3.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label3.Location = new System.Drawing.Point(261, 1); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(84, 14); - this.label3.TabIndex = 8; - this.label3.Text = "Move speed:"; - this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.moveSpeedLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.moveSpeedLabel.AutoSize = true; + this.moveSpeedLabel.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.moveSpeedLabel.Location = new System.Drawing.Point(261, 1); + this.moveSpeedLabel.Name = "moveSpeedLabel"; + this.moveSpeedLabel.Size = new System.Drawing.Size(84, 14); + this.moveSpeedLabel.TabIndex = 8; + this.moveSpeedLabel.Text = "Move speed:"; + this.moveSpeedLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // trackBar_moveSpeed // @@ -829,7 +857,7 @@ private void InitializeComponent() // this.moveCamPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Right))); - this.moveCamPanel.Controls.Add(this.label2); + this.moveCamPanel.Controls.Add(this.moveCameraLabel); this.moveCamPanel.Controls.Add(this.moveCam_strafe); this.moveCamPanel.Controls.Add(this.moveCam_InOut); this.moveCamPanel.Location = new System.Drawing.Point(434, 2); @@ -838,15 +866,15 @@ private void InitializeComponent() this.moveCamPanel.Size = new System.Drawing.Size(125, 120); this.moveCamPanel.TabIndex = 6; // - // label2 + // moveCameraLabel // - this.label2.AutoSize = true; - this.label2.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label2.Location = new System.Drawing.Point(8, 99); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(96, 16); - this.label2.TabIndex = 4; - this.label2.Text = "Move Camera"; + this.moveCameraLabel.AutoSize = true; + this.moveCameraLabel.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.moveCameraLabel.Location = new System.Drawing.Point(8, 99); + this.moveCameraLabel.Name = "moveCameraLabel"; + this.moveCameraLabel.Size = new System.Drawing.Size(96, 16); + this.moveCameraLabel.TabIndex = 4; + this.moveCameraLabel.Text = "Move Camera"; // // moveCam_strafe // @@ -880,7 +908,7 @@ private void InitializeComponent() // this.rotateObjectPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left))); - this.rotateObjectPanel.Controls.Add(this.label1); + this.rotateObjectPanel.Controls.Add(this.rotateObjectLabel); this.rotateObjectPanel.Controls.Add(this.rotObj); this.rotateObjectPanel.Controls.Add(this.rotObj_Yaw); this.rotateObjectPanel.Location = new System.Drawing.Point(127, 2); @@ -889,15 +917,15 @@ private void InitializeComponent() this.rotateObjectPanel.Size = new System.Drawing.Size(124, 120); this.rotateObjectPanel.TabIndex = 5; // - // label1 + // rotateObjectLabel // - this.label1.AutoSize = true; - this.label1.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label1.Location = new System.Drawing.Point(8, 99); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(112, 16); - this.label1.TabIndex = 4; - this.label1.Text = "Rotate Object"; + this.rotateObjectLabel.AutoSize = true; + this.rotateObjectLabel.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rotateObjectLabel.Location = new System.Drawing.Point(8, 99); + this.rotateObjectLabel.Name = "rotateObjectLabel"; + this.rotateObjectLabel.Size = new System.Drawing.Size(112, 16); + this.rotateObjectLabel.TabIndex = 4; + this.rotateObjectLabel.Text = "Rotate Object"; // // rotObj // @@ -1014,7 +1042,7 @@ private void InitializeComponent() this.MinimumSize = new System.Drawing.Size(820, 522); this.Name = "MainForm"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Quad64 v0.2 (Beta build 4, Hotfix 1)"; + this.Text = "Quad64 v0.2 (Beta build 5)"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing); this.Shown += new System.EventHandler(this.Form1_Shown); this.menuStrip1.ResumeLayout(false); @@ -1029,8 +1057,8 @@ private void InitializeComponent() this.splitContainer3.Panel2.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).EndInit(); this.splitContainer3.ResumeLayout(false); - this.panel3.ResumeLayout(false); - this.panel3.PerformLayout(); + this.controlsPanel.ResumeLayout(false); + this.controlsPanel.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.gridSize)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.trackBar_camSpeed)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.trackBar_moveSpeed)).EndInit(); @@ -1065,25 +1093,25 @@ private void InitializeComponent() private System.Windows.Forms.SplitContainer splitContainer2; private System.Windows.Forms.SplitContainer splitContainer3; private System.Windows.Forms.ToolStripMenuItem saveROMAsToolStripMenuItem; - private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.Panel controlsPanel; private System.Windows.Forms.PictureBox movObj_UpDown; private System.Windows.Forms.PictureBox moveObj; private OpenTK.GLControl glControl1; private System.Windows.Forms.Panel moveObjectPanel; private System.Windows.Forms.Label moveObjectLabel; private System.Windows.Forms.Panel moveCamPanel; - private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label moveCameraLabel; private System.Windows.Forms.PictureBox moveCam_strafe; private System.Windows.Forms.PictureBox moveCam_InOut; private System.Windows.Forms.Panel rotateObjectPanel; - private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label rotateObjectLabel; private System.Windows.Forms.PictureBox rotObj; private System.Windows.Forms.PictureBox rotObj_Yaw; - private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label moveSpeedLabel; private System.Windows.Forms.TrackBar trackBar_moveSpeed; private System.Windows.Forms.Label objSpeedLabel; - private System.Windows.Forms.Label camSpeedLabel; - private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label camSpeedPercentageLabel; + private System.Windows.Forms.Label cameraSpeedLabel; private System.Windows.Forms.TrackBar trackBar_camSpeed; private System.Windows.Forms.ToolStripMenuItem rOMInfoToolStripMenuItem; private System.Windows.Forms.Button dropToGround; @@ -1123,9 +1151,10 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripMenuItem objectComboNameToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem warpToolStripMenuItem; private System.Windows.Forms.ComboBox cameraMode; - private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label cameraModeLabel; private System.Windows.Forms.CheckBox gridButton; private System.Windows.Forms.NumericUpDown gridSize; + private System.Windows.Forms.ToolStripMenuItem themesToolStripMenuItem; } } diff --git a/src/Forms/MainForm.cs b/src/Forms/MainForm.cs index da70e46..9f491f2 100644 --- a/src/Forms/MainForm.cs +++ b/src/Forms/MainForm.cs @@ -11,12 +11,12 @@ using Quad64.src.Forms; using System.Collections.Generic; using System.Runtime.InteropServices; +using Quad64.src.Forms.ToolStripRenderer; namespace Quad64 { partial class MainForm : Form { - Model3D model1 = new Model3D(), model2 = new Model3D(); Color bgColor = Color.Black; Camera camera = new Camera(); Vector3 savedCamPos = new Vector3(); @@ -54,12 +54,12 @@ private void initTreeView() treeView1.Name = "treeView1"; treeView1.DrawMode = TreeViewDrawMode.OwnerDrawAll; treeView1.Font = new Font("Segoe UI", 8.0f, FontStyle.Bold); - treeView1.Nodes.Add(makeTreeNode("3D Objects", Color.FromArgb(192, 0, 0))); - treeView1.Nodes.Add(makeTreeNode("Macro 3D Objects", Color.FromArgb(0, 0, 192))); - treeView1.Nodes.Add(makeTreeNode("Special 3D Objects", Color.FromArgb(0, 192, 0))); - treeView1.Nodes.Add(makeTreeNode("Warps", Color.FromArgb(0, 0, 0))); + treeView1.Nodes.Add(makeTreeNode("3D Objects", Theme.MAIN_TREEVIEW_3DOBJECTS)); + treeView1.Nodes.Add(makeTreeNode("Macro 3D Objects", Theme.MAIN_TREEVIEW_MACRO)); + treeView1.Nodes.Add(makeTreeNode("Special 3D Objects", Theme.MAIN_TREEVIEW_SPECIAL)); + treeView1.Nodes.Add(makeTreeNode("Warps", Theme.MAIN_TREEVIEW_WARPS)); treeView1.Anchor = (AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right); - treeView1.Size = new Size(217, 206); + treeView1.Size = splitContainer3.Panel1.ClientSize; treeView1.TabIndex = 0; treeView1.TabStop = false; treeView1.DrawNode += new DrawTreeNodeEventHandler(treeView1_DrawNode); @@ -79,6 +79,7 @@ public MainForm() OpenTK.Toolkit.Init(); glControl1.CreateControl(); SettingsFile.LoadGlobalSettings("default"); + updateTheme(); glControl1.MouseWheel += new MouseEventHandler(glControl1_Wheel); ProjMatrix = Matrix4.CreatePerspectiveFieldOfView( Globals.FOV * ((float)Math.PI / 180.0f), @@ -94,6 +95,76 @@ public MainForm() myTimer.Interval = 10; myTimer.Enabled = false; cameraMode.SelectedIndex = 0; + menuStrip1.Renderer = new ToolStripProfessionalRenderer(new CustomToolStripColorTable()); + } + + // New functions for MainForm.cs + private void SetColorsForMenuStripItem(ref ToolStripItemCollection items) + { + for (int i = 0; i < items.Count; i++) + { + items[i].BackColor = Theme.MAIN_MENUBAR_BACKGROUND; + items[i].ForeColor = Theme.MAIN_MENUBAR_TEXT; + + if (items[i] is ToolStripMenuItem) + { + if (((ToolStripMenuItem)items[i]).DropDownItems.Count > 0) + { + ToolStripItemCollection children = ((ToolStripMenuItem)items[i]).DropDownItems; + SetColorsForMenuStripItem(ref children); + } + } + } + } + + private void ToolStripSeparator_Paint(object sender, PaintEventArgs e) + { + ToolStripSeparator sep = (ToolStripSeparator)sender; + e.Graphics.FillRectangle(new SolidBrush(sep.BackColor), 0, 0, sep.Width, sep.Height); + e.Graphics.DrawLine(new Pen(sep.ForeColor), 30, sep.Height / 2, sep.Width - 4, sep.Height / 2); + } + + private void updateTheme() + { + BackColor = Theme.MAIN_BACKGROUND; + treeView1.BackColor = Theme.MAIN_TREEVIEW_BACKGROUND; + treeView1.ForeColor = Theme.MAIN_TREEVIEW_TEXT; + treeView1.Nodes[0].ForeColor = Theme.MAIN_TREEVIEW_3DOBJECTS; // "3D Objects" text + treeView1.Nodes[1].ForeColor = Theme.MAIN_TREEVIEW_MACRO; // "Macro 3D Objects" text + treeView1.Nodes[2].ForeColor = Theme.MAIN_TREEVIEW_SPECIAL; // "Special 3D Objects" text + treeView1.Nodes[3].ForeColor = Theme.MAIN_TREEVIEW_WARPS; // "Warps" text + + propertyGrid1.ViewForeColor = Theme.MAIN_PROPERTIES_TEXT; + propertyGrid1.ViewBackColor = Theme.MAIN_PROPERTIES_BACKGROUND; + propertyGrid1.LineColor = Theme.MAIN_PROPERTIES_LINES; + + controlsPanel.BackColor = Theme.MAIN_CONTROLS_BACKGROUND; + moveObjectLabel.ForeColor = Theme.MAIN_CONTROLS_TEXT; + moveSpeedLabel.ForeColor = Theme.MAIN_CONTROLS_TEXT; + rotateObjectLabel.ForeColor = Theme.MAIN_CONTROLS_TEXT; + objSpeedLabel.ForeColor = Theme.MAIN_CONTROLS_TEXT; + cameraModeLabel.ForeColor = Theme.MAIN_CONTROLS_TEXT; + camSpeedPercentageLabel.ForeColor = Theme.MAIN_CONTROLS_TEXT; + cameraSpeedLabel.ForeColor = Theme.MAIN_CONTROLS_TEXT; + moveCameraLabel.ForeColor = Theme.MAIN_CONTROLS_TEXT; + + cameraMode.BackColor = Theme.MAIN_CONTROLS_DROPDOWNLIST_BACKGROUND; + cameraMode.ForeColor = Theme.MAIN_CONTROLS_DROPDOWNLIST_TEXT; + + dropToGround.BackColor = Theme.MAIN_CONTROLS_BUTTON_BACKGROUND; + dropToGround.ForeColor = Theme.MAIN_CONTROLS_BUTTON_TEXT; + keepOnGround.BackColor = Theme.MAIN_CONTROLS_BUTTON_BACKGROUND; + keepOnGround.ForeColor = Theme.MAIN_CONTROLS_BUTTON_TEXT; + gridButton.BackColor = Theme.MAIN_CONTROLS_BUTTON_BACKGROUND; + gridButton.ForeColor = Theme.MAIN_CONTROLS_BUTTON_TEXT; + + gridSize.BackColor = Theme.MAIN_CONTROLS_UPDOWN_BACKGROUND; + gridSize.ForeColor = Theme.MAIN_CONTROLS_UPDOWN_TEXT; + + menuStrip1.BackColor = Theme.MAIN_MENUBAR_BACKGROUND; + menuStrip1.ForeColor = Theme.MAIN_MENUBAR_TEXT; + ToolStripItemCollection menuItems = menuStrip1.Items; + SetColorsForMenuStripItem(ref menuItems); } private void loadROM(bool startingUp) @@ -700,7 +771,7 @@ private void objectComboPresetToolStripMenuItem_Click(object sender, EventArgs e { case 0: comboWindow = - new SelectComboPreset(level, 0, "Select Object Combos", Color.DarkRed); + new SelectComboPreset(level, 0, "Select Object Combos", Theme.COMBOS_3DOBJECTS_TITLE); comboWindow.ShowDialog(); if (comboWindow.ClickedSelect) { @@ -713,7 +784,7 @@ private void objectComboPresetToolStripMenuItem_Click(object sender, EventArgs e break; case 1: comboWindow = - new SelectComboPreset(level, 1, "Select Macro Preset", Color.DarkBlue); + new SelectComboPreset(level, 1, "Select Macro Preset", Theme.COMBOS_MACRO_TITLE); comboWindow.ShowDialog(); if (comboWindow.ClickedSelect) { @@ -733,7 +804,7 @@ private void objectComboPresetToolStripMenuItem_Click(object sender, EventArgs e else if (obj.isPropertyShown(Object3D.FLAGS.ROTATION_Y)) specialListType = 3; comboWindow = - new SelectComboPreset(level, specialListType, "Select Special Preset", Color.DarkGreen); + new SelectComboPreset(level, specialListType, "Select Special Preset", Theme.COMBOS_SPECIAL_TITLE); comboWindow.ShowDialog(); if (comboWindow.ClickedSelect) { @@ -2137,7 +2208,7 @@ private void trackBar3_ValueChanged(object sender, EventArgs e) else if (newValue > 96f && newValue < 114f) newValue = 100f; - camSpeedLabel.Text = (int)(newValue) + "%"; + camSpeedPercentageLabel.Text = (int)(newValue) + "%"; Globals.camSpeedMultiplier = newValue/100.0f; } @@ -2166,6 +2237,19 @@ private void gridSize_ValueChanged(object sender, EventArgs e) private const int WM_USER = 0x0400; + + private void themesToolStripMenuItem_Click(object sender, EventArgs e) + { + ThemeSelector selector = new ThemeSelector(); + selector.ShowDialog(); + if (selector.doUpdate) + { + Theme.LoadColorsFromJSONFile(selector.themePath); + updateTheme(); + SettingsFile.SaveGlobalSettings("default"); + } + } + private const int EM_SETEVENTMASK = (WM_USER + 69); private const int WM_SETREDRAW = 0x0b; private IntPtr OldEventMask; diff --git a/src/Forms/MultiselectTree/MultiselectTreeView.cs b/src/Forms/MultiselectTree/MultiselectTreeView.cs index 0d67542..d6d0961 100644 --- a/src/Forms/MultiselectTree/MultiselectTreeView.cs +++ b/src/Forms/MultiselectTree/MultiselectTreeView.cs @@ -1,4 +1,5 @@ -using System; +using Quad64.src; +using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; @@ -238,6 +239,7 @@ private void SelectNode( TreeNode node ) { if (node == null || node.Parent == null) { + node.BackColor = Theme.MAIN_TREEVIEW_BACKGROUND; SelectedNodes = null; return; } @@ -400,8 +402,8 @@ private void ClearSelectedNodes() public void SelectSingleNode( TreeNode node ) { if ( node == null || node.Parent == null) - { - return; + { + return; } ClearSelectedNodes(); @@ -412,7 +414,9 @@ public void SelectSingleNode( TreeNode node ) public void ToggleNode( TreeNode node, bool bSelectNode ) { if (node == null || node.Parent == null) + { return; + } if( bSelectNode ) { m_SelectedNode = node; @@ -420,7 +424,7 @@ public void ToggleNode( TreeNode node, bool bSelectNode ) { m_SelectedNodes.Add( node ); } - node.BackColor = Color.FromArgb(0x70, 0xBB, 0xDB); + node.BackColor = Theme.MAIN_TREEVIEW_HIGHTLIGHT; //node.ForeColor = SystemColors.HighlightText; } diff --git a/src/Forms/ROMInfoForm.Designer.cs b/src/Forms/ROMInfoForm.Designer.cs index d067c22..5ecbcfb 100644 --- a/src/Forms/ROMInfoForm.Designer.cs +++ b/src/Forms/ROMInfoForm.Designer.cs @@ -52,6 +52,7 @@ private void InitializeComponent() this.table.ColumnCount = 2; this.table.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25.73529F)); this.table.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 74.26471F)); + this.table.ForeColor = System.Drawing.SystemColors.ControlText; this.table.Location = new System.Drawing.Point(12, 35); this.table.Name = "table"; this.table.RowCount = 2; diff --git a/src/Forms/ROMInfoForm.cs b/src/Forms/ROMInfoForm.cs index 23b6c72..7afbb70 100644 --- a/src/Forms/ROMInfoForm.cs +++ b/src/Forms/ROMInfoForm.cs @@ -1,4 +1,5 @@ -using System; +using Quad64.src; +using System; using System.Windows.Forms; namespace Quad64 @@ -16,6 +17,9 @@ public ROMInfoForm() addNewRow("Region", rom.getRegionText()); addNewRow("Endianness", rom.getEndianText()); addNewRow("Size (MB)", (rom.Bytes.Length / 1024 / 1024).ToString()); + + BackColor = Theme.DEFAULT_BACKGROUND; + label1.ForeColor = Theme.DEFAULT_TEXT; } private void addNewRow(string rowName, string rowData) @@ -36,6 +40,8 @@ private TextBox newLabel(string text) label.BorderStyle = 0; label.BackColor = this.BackColor; label.TabStop = false; + label.BackColor = Theme.DEFAULT_BACKGROUND; + label.ForeColor = Theme.DEFAULT_TEXT; return label; } diff --git a/src/Forms/RenameObjectCombo.Designer.cs b/src/Forms/RenameObjectCombo.Designer.cs index de9fb0c..5404df3 100644 --- a/src/Forms/RenameObjectCombo.Designer.cs +++ b/src/Forms/RenameObjectCombo.Designer.cs @@ -43,6 +43,7 @@ private void InitializeComponent() // // buttonOK // + this.buttonOK.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.buttonOK.Location = new System.Drawing.Point(65, 44); this.buttonOK.Name = "buttonOK"; this.buttonOK.Size = new System.Drawing.Size(75, 23); @@ -53,6 +54,7 @@ private void InitializeComponent() // // buttonCancel // + this.buttonCancel.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.buttonCancel.Location = new System.Drawing.Point(197, 44); this.buttonCancel.Name = "buttonCancel"; this.buttonCancel.Size = new System.Drawing.Size(75, 23); diff --git a/src/Forms/RenameObjectCombo.cs b/src/Forms/RenameObjectCombo.cs index c20dc36..8d662fb 100644 --- a/src/Forms/RenameObjectCombo.cs +++ b/src/Forms/RenameObjectCombo.cs @@ -19,6 +19,14 @@ public RenameObjectCombo(string input) InitializeComponent(); textBox.Text = input; ClickedSelect = false; + + BackColor = Theme.DEFAULT_BACKGROUND; + textBox.BackColor = Theme.DEFAULT_TEXTBOX_BACKGROUND; + textBox.ForeColor = Theme.DEFAULT_TEXTBOX_TEXT; + buttonOK.BackColor = Theme.DEFAULT_BUTTON_BACKGROUND; + buttonOK.ForeColor = Theme.DEFAULT_BUTTON_TEXT; + buttonCancel.BackColor = Theme.DEFAULT_BUTTON_BACKGROUND; + buttonCancel.ForeColor = Theme.DEFAULT_BUTTON_TEXT; } private void buttonOK_Click(object sender, EventArgs e) diff --git a/src/Forms/ScriptDumps.Designer.cs b/src/Forms/ScriptDumps.Designer.cs index 7a957b9..bcfcf39 100644 --- a/src/Forms/ScriptDumps.Designer.cs +++ b/src/Forms/ScriptDumps.Designer.cs @@ -120,24 +120,27 @@ private void InitializeComponent() this.subTabsLevel.SelectedIndex = 0; this.subTabsLevel.Size = new System.Drawing.Size(707, 391); this.subTabsLevel.TabIndex = 0; + this.subTabsLevel.TabStop = false; this.subTabsLevel.SelectedIndexChanged += new System.EventHandler(this.subTabsLevel_SelectedIndexChanged); // // lt_lsTab // + this.lt_lsTab.BackColor = System.Drawing.Color.Transparent; this.lt_lsTab.Controls.Add(this.lt_ls_textbox); + this.lt_lsTab.ForeColor = System.Drawing.SystemColors.ControlText; this.lt_lsTab.Location = new System.Drawing.Point(4, 22); this.lt_lsTab.Name = "lt_lsTab"; this.lt_lsTab.Padding = new System.Windows.Forms.Padding(3); this.lt_lsTab.Size = new System.Drawing.Size(699, 365); this.lt_lsTab.TabIndex = 0; this.lt_lsTab.Text = "Level script"; - this.lt_lsTab.UseVisualStyleBackColor = true; // // lt_ls_textbox // this.lt_ls_textbox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); + this.lt_ls_textbox.BackColor = System.Drawing.SystemColors.Window; this.lt_ls_textbox.DetectUrls = false; this.lt_ls_textbox.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lt_ls_textbox.HideSelection = false; @@ -205,6 +208,7 @@ private void InitializeComponent() this.lt_f3d_listbox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left))); this.lt_f3d_listbox.BackColor = System.Drawing.SystemColors.Window; + this.lt_f3d_listbox.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; this.lt_f3d_listbox.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lt_f3d_listbox.FormattingEnabled = true; this.lt_f3d_listbox.IntegralHeight = false; @@ -213,6 +217,7 @@ private void InitializeComponent() this.lt_f3d_listbox.Name = "lt_f3d_listbox"; this.lt_f3d_listbox.Size = new System.Drawing.Size(88, 341); this.lt_f3d_listbox.TabIndex = 10; + this.lt_f3d_listbox.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.lt_f3d_listbox_DrawItem); this.lt_f3d_listbox.SelectedIndexChanged += new System.EventHandler(this.lt_f3d_listbox_SelectedIndexChanged); // // lt_f3d_radioPanel @@ -257,11 +262,13 @@ private void InitializeComponent() this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); + this.splitContainer1.BackColor = System.Drawing.Color.Transparent; this.splitContainer1.Location = new System.Drawing.Point(0, 0); this.splitContainer1.Name = "splitContainer1"; // // splitContainer1.Panel1 // + this.splitContainer1.Panel1.BackColor = System.Drawing.Color.Transparent; this.splitContainer1.Panel1.Controls.Add(this.listObjectsSortPanel); this.splitContainer1.Panel1.Controls.Add(this.listBoxObjects); // @@ -276,7 +283,7 @@ private void InitializeComponent() // this.listObjectsSortPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.listObjectsSortPanel.BackColor = System.Drawing.Color.WhiteSmoke; + this.listObjectsSortPanel.BackColor = System.Drawing.Color.Transparent; this.listObjectsSortPanel.Controls.Add(this.comboBoxObjectSort); this.listObjectsSortPanel.Controls.Add(this.ListObjectsSortLabel); this.listObjectsSortPanel.Location = new System.Drawing.Point(0, 0); @@ -289,9 +296,11 @@ private void InitializeComponent() this.comboBoxObjectSort.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); + this.comboBoxObjectSort.BackColor = System.Drawing.SystemColors.Window; this.comboBoxObjectSort.DisplayMember = "0"; this.comboBoxObjectSort.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.comboBoxObjectSort.DropDownWidth = 180; + this.comboBoxObjectSort.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.comboBoxObjectSort.FormattingEnabled = true; this.comboBoxObjectSort.Items.AddRange(new object[] { "Combo Name (Alphabetical)", @@ -322,12 +331,14 @@ private void InitializeComponent() this.listBoxObjects.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); + this.listBoxObjects.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; this.listBoxObjects.FormattingEnabled = true; this.listBoxObjects.IntegralHeight = false; this.listBoxObjects.Location = new System.Drawing.Point(0, 25); this.listBoxObjects.Name = "listBoxObjects"; this.listBoxObjects.Size = new System.Drawing.Size(224, 363); this.listBoxObjects.TabIndex = 0; + this.listBoxObjects.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.listBoxObjects_DrawItem); this.listBoxObjects.SelectedIndexChanged += new System.EventHandler(this.listBoxObjects_SelectedIndexChanged); // // subTabsObjects @@ -390,6 +401,7 @@ private void InitializeComponent() this.ot_f3d_listbox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left))); this.ot_f3d_listbox.BackColor = System.Drawing.SystemColors.Window; + this.ot_f3d_listbox.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; this.ot_f3d_listbox.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.ot_f3d_listbox.FormattingEnabled = true; this.ot_f3d_listbox.IntegralHeight = false; @@ -398,6 +410,7 @@ private void InitializeComponent() this.ot_f3d_listbox.Name = "ot_f3d_listbox"; this.ot_f3d_listbox.Size = new System.Drawing.Size(88, 364); this.ot_f3d_listbox.TabIndex = 12; + this.ot_f3d_listbox.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.ot_f3d_listbox_DrawItem); this.ot_f3d_listbox.SelectedIndexChanged += new System.EventHandler(this.ot_f3d_listbox_SelectedIndexChanged); // // ot_f3d_textbox @@ -461,6 +474,7 @@ private void InitializeComponent() // IndentCB // this.IndentCB.AutoSize = true; + this.IndentCB.BackColor = System.Drawing.Color.Transparent; this.IndentCB.Checked = true; this.IndentCB.CheckState = System.Windows.Forms.CheckState.Checked; this.IndentCB.Location = new System.Drawing.Point(527, 4); @@ -468,24 +482,27 @@ private void InitializeComponent() this.IndentCB.Size = new System.Drawing.Size(84, 17); this.IndentCB.TabIndex = 19; this.IndentCB.Text = "Indent bytes"; - this.IndentCB.UseVisualStyleBackColor = true; + this.IndentCB.UseVisualStyleBackColor = false; this.IndentCB.CheckedChanged += new System.EventHandler(this.updateScriptDump); // // wordWrapCB // this.wordWrapCB.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.wordWrapCB.AutoSize = true; + this.wordWrapCB.BackColor = System.Drawing.Color.Transparent; + this.wordWrapCB.ForeColor = System.Drawing.SystemColors.ControlText; this.wordWrapCB.Location = new System.Drawing.Point(627, 4); this.wordWrapCB.Name = "wordWrapCB"; this.wordWrapCB.Size = new System.Drawing.Size(78, 17); this.wordWrapCB.TabIndex = 18; this.wordWrapCB.Text = "Word wrap"; - this.wordWrapCB.UseVisualStyleBackColor = true; + this.wordWrapCB.UseVisualStyleBackColor = false; this.wordWrapCB.CheckedChanged += new System.EventHandler(this.updateScriptDumpWordWrap); // // FormatCB // this.FormatCB.AutoSize = true; + this.FormatCB.BackColor = System.Drawing.Color.Transparent; this.FormatCB.Checked = true; this.FormatCB.CheckState = System.Windows.Forms.CheckState.Checked; this.FormatCB.Location = new System.Drawing.Point(435, 4); @@ -493,12 +510,13 @@ private void InitializeComponent() this.FormatCB.Size = new System.Drawing.Size(86, 17); this.FormatCB.TabIndex = 17; this.FormatCB.Text = "Format bytes"; - this.FormatCB.UseVisualStyleBackColor = true; + this.FormatCB.UseVisualStyleBackColor = false; this.FormatCB.CheckedChanged += new System.EventHandler(this.updateScriptDump); // // CommCB // this.CommCB.AutoSize = true; + this.CommCB.BackColor = System.Drawing.Color.Transparent; this.CommCB.Checked = true; this.CommCB.CheckState = System.Windows.Forms.CheckState.Checked; this.CommCB.Location = new System.Drawing.Point(273, 4); @@ -506,12 +524,13 @@ private void InitializeComponent() this.CommCB.Size = new System.Drawing.Size(155, 17); this.CommCB.TabIndex = 16; this.CommCB.Text = "Show generated comments"; - this.CommCB.UseVisualStyleBackColor = true; + this.CommCB.UseVisualStyleBackColor = false; this.CommCB.CheckedChanged += new System.EventHandler(this.updateScriptDump); // // SegAddrCB // this.SegAddrCB.AutoSize = true; + this.SegAddrCB.BackColor = System.Drawing.Color.Transparent; this.SegAddrCB.Checked = true; this.SegAddrCB.CheckState = System.Windows.Forms.CheckState.Checked; this.SegAddrCB.Location = new System.Drawing.Point(130, 4); @@ -519,12 +538,13 @@ private void InitializeComponent() this.SegAddrCB.Size = new System.Drawing.Size(136, 17); this.SegAddrCB.TabIndex = 15; this.SegAddrCB.Text = "Show segment address"; - this.SegAddrCB.UseVisualStyleBackColor = true; + this.SegAddrCB.UseVisualStyleBackColor = false; this.SegAddrCB.CheckedChanged += new System.EventHandler(this.updateScriptDump); // // showRomCB // this.showRomCB.AutoSize = true; + this.showRomCB.BackColor = System.Drawing.Color.Transparent; this.showRomCB.Checked = true; this.showRomCB.CheckState = System.Windows.Forms.CheckState.Checked; this.showRomCB.Location = new System.Drawing.Point(3, 4); @@ -532,7 +552,7 @@ private void InitializeComponent() this.showRomCB.Size = new System.Drawing.Size(121, 17); this.showRomCB.TabIndex = 14; this.showRomCB.Text = "Show ROM address"; - this.showRomCB.UseVisualStyleBackColor = true; + this.showRomCB.UseVisualStyleBackColor = false; this.showRomCB.CheckedChanged += new System.EventHandler(this.updateScriptDump); // // panel1 diff --git a/src/Forms/ScriptDumps.cs b/src/Forms/ScriptDumps.cs index ddfe2c3..226bf45 100644 --- a/src/Forms/ScriptDumps.cs +++ b/src/Forms/ScriptDumps.cs @@ -25,9 +25,9 @@ public ScriptDumps(Level level) currentTextbox = lt_ls_textbox; organizeCurrentLevelScript(level.LevelScriptCommands_ForDump); initObjectList(); + setupTheme(); } - private static uint bytesToInt(byte[] b, int offset, int length) { switch (length) @@ -137,6 +137,7 @@ private void updateScriptDump(object sender, EventArgs e) else { currentTextbox.ResetText(); + currentTextbox.ForeColor = Theme.SCRIPTDUMPS_GEOLAYOUT_TEXTBOX_TEXT; currentTextbox.Text = ""; } } @@ -158,6 +159,7 @@ private void updateScriptDump(object sender, EventArgs e) else { currentTextbox.ResetText(); + currentTextbox.ForeColor = Theme.SCRIPTDUMPS_FAST3D_TEXTBOX_TEXT; currentTextbox.Text = ""; } } @@ -226,5 +228,106 @@ private void sd_tabs_SelectedIndexChanged(object sender, EventArgs e) break; } } + + private void setupTheme() + { + BackColor = Theme.SCRIPTDUMPS_BACKGROUND; + splitContainer1.BackColor = Theme.SCRIPTDUMPS_BACKGROUND; + tabLevel.BackColor = Theme.SCRIPTDUMPS_BACKGROUND; + tabObjects.BackColor = Theme.SCRIPTDUMPS_BACKGROUND; + panel1.BackColor = Theme.SCRIPTDUMPS_OPTIONS_BACKGROUND; + showRomCB.ForeColor = Theme.SCRIPTDUMPS_TEXT; + SegAddrCB.ForeColor = Theme.SCRIPTDUMPS_TEXT; + IndentCB.ForeColor = Theme.SCRIPTDUMPS_TEXT; + wordWrapCB.ForeColor = Theme.SCRIPTDUMPS_TEXT; + FormatCB.ForeColor = Theme.SCRIPTDUMPS_TEXT; + CommCB.ForeColor = Theme.SCRIPTDUMPS_TEXT; + ListObjectsSortLabel.ForeColor = Theme.SCRIPTDUMPS_TEXT; + + lt_f3d_listbox.BackColor = Theme.SCRIPTDUMPS_FAST3D_LISTBOX_BACKGROUND; + listBoxObjects.BackColor = Theme.SCRIPTDUMPS_OBJECTSTAB_LISTBOX_BACKGROUND; + ot_f3d_listbox.BackColor = Theme.SCRIPTDUMPS_FAST3D_LISTBOX_BACKGROUND; + + lt_ls_textbox.BackColor = Theme.SCRIPTDUMPS_LEVEL_TEXTBOX_BACKGROUND; + lt_gls_textbox.BackColor = Theme.SCRIPTDUMPS_GEOLAYOUT_TEXTBOX_BACKGROUND; + lt_f3d_textbox.BackColor = Theme.SCRIPTDUMPS_FAST3D_TEXTBOX_BACKGROUND; + + ot_gls_textbox.BackColor = Theme.SCRIPTDUMPS_GEOLAYOUT_TEXTBOX_BACKGROUND; + ot_f3d_textbox.BackColor = Theme.SCRIPTDUMPS_FAST3D_TEXTBOX_BACKGROUND; + ot_beh_textbox.BackColor = Theme.SCRIPTDUMPS_BEHAVIOR_TEXTBOX_BACKGROUND; + + lt_gls_radioPanel.BackColor = Theme.SCRIPTDUMPS_LEVELTAB_GEOLAYOUT_AREAPANEL_BACKGROUND; + lt_f3d_radioPanel.BackColor = Theme.SCRIPTDUMPS_LEVELTAB_FAST3D_AREAPANEL_BACKGROUND; + + comboBoxObjectSort.BackColor = Theme.SCRIPTDUMPS_OBJECTSTAB_SORT_DROPDOWNLIST_BACKGROUND; + comboBoxObjectSort.ForeColor = Theme.SCRIPTDUMPS_OBJECTSTAB_SORT_DROPDOWNLIST_TEXT; + } + + private void listBoxObjects_DrawItem(object sender, DrawItemEventArgs e) + { + if (e.Index < 0) return; + bool isSelected = (e.State & DrawItemState.Selected) == DrawItemState.Selected; + SolidBrush textBrush = new SolidBrush(Theme.SCRIPTDUMPS_OBJECTSTAB_LISTBOX_TEXT); + if (isSelected) + { + e = new DrawItemEventArgs(e.Graphics, + e.Font, + e.Bounds, + e.Index, + e.State ^ DrawItemState.Selected, + e.ForeColor, + + Theme.SCRIPTDUMPS_OBJECTSTAB_LISTBOX_HIGHLIGHT); + textBrush = new SolidBrush(Theme.SCRIPTDUMPS_OBJECTSTAB_LISTBOX_HIGHLIGHTEDTEXT); + } + + e.DrawBackground(); + e.Graphics.DrawString(listBoxObjects.Items[e.Index].ToString(), e.Font, textBrush, e.Bounds, StringFormat.GenericDefault); + e.DrawFocusRectangle(); + } + + private void lt_f3d_listbox_DrawItem(object sender, DrawItemEventArgs e) + { + if (e.Index < 0) return; + bool isSelected = (e.State & DrawItemState.Selected) == DrawItemState.Selected; + SolidBrush textBrush = new SolidBrush(Theme.SCRIPTDUMPS_FAST3D_LISTBOX_TEXT); + if (isSelected) + { + e = new DrawItemEventArgs(e.Graphics, + e.Font, + e.Bounds, + e.Index, + e.State ^ DrawItemState.Selected, + e.ForeColor, + Theme.SCRIPTDUMPS_FAST3D_LISTBOX_HIGHLIGHT); + textBrush = new SolidBrush(Theme.SCRIPTDUMPS_FAST3D_LISTBOX_HIGHLIGHTEDTEXT); + } + + e.DrawBackground(); + e.Graphics.DrawString(lt_f3d_listbox.Items[e.Index].ToString(), e.Font, textBrush, e.Bounds, StringFormat.GenericDefault); + e.DrawFocusRectangle(); + } + + private void ot_f3d_listbox_DrawItem(object sender, DrawItemEventArgs e) + { + if (e.Index < 0) return; + bool isSelected = (e.State & DrawItemState.Selected) == DrawItemState.Selected; + SolidBrush textBrush = new SolidBrush(Theme.SCRIPTDUMPS_FAST3D_LISTBOX_TEXT); + if (isSelected) + { + e = new DrawItemEventArgs(e.Graphics, + e.Font, + e.Bounds, + e.Index, + e.State ^ DrawItemState.Selected, + e.ForeColor, + Theme.SCRIPTDUMPS_FAST3D_LISTBOX_HIGHLIGHT); + textBrush = new SolidBrush(Theme.SCRIPTDUMPS_FAST3D_LISTBOX_HIGHLIGHTEDTEXT); + } + + e.DrawBackground(); + e.Graphics.DrawString(ot_f3d_listbox.Items[e.Index].ToString(), e.Font, textBrush, e.Bounds, StringFormat.GenericDefault); + e.DrawFocusRectangle(); + } } } diff --git a/src/Forms/ScriptDumps_Tabs/Level/LevelTab_Fast3D.cs b/src/Forms/ScriptDumps_Tabs/Level/LevelTab_Fast3D.cs index cea525d..5b546ce 100644 --- a/src/Forms/ScriptDumps_Tabs/Level/LevelTab_Fast3D.cs +++ b/src/Forms/ScriptDumps_Tabs/Level/LevelTab_Fast3D.cs @@ -73,6 +73,9 @@ private void initFast3DForLevelTab() newButton.Location = new Point(rb_width * i, lt_f3d_radioPanel.Location.Y); newButton.Size = new Size(rb_width, lt_f3d_radioPanel.Height); newButton.CheckedChanged += lt_f3d_areas_CheckedChanged; + newButton.BackColor = Theme.SCRIPTDUMPS_LEVELTAB_FAST3D_AREAPANEL_BACKGROUND; + newButton.ForeColor = Theme.SCRIPTDUMPS_LEVELTAB_FAST3D_AREAPANEL_TEXT; + newButton.FlatStyle = FlatStyle.Flat; //newButton.Anchor = (AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right); if (i == 0) newButton.Checked = true; @@ -143,7 +146,7 @@ private void organizeCurrentFast3DScript(List f3dList) currentTextbox.Clear(); int currentIndent = 0; StringBuilder sb = new StringBuilder(); - sb.Append("{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Courier New;}}{\\colortbl;\\red0\\green0\\blue0;\\red0\\green128\\blue0; }\\viewkind4\\uc1\\pard\\f0\\fs17 "); + sb.Append("{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Courier New;}}{\\colortbl;\\red"+Theme.SCRIPTDUMPS_FAST3D_TEXTBOX_TEXT.R+ "\\green" + Theme.SCRIPTDUMPS_FAST3D_TEXTBOX_TEXT.G + "\\blue" + Theme.SCRIPTDUMPS_FAST3D_TEXTBOX_TEXT.B + ";\\red" + Theme.SCRIPTDUMPS_FAST3D_TEXTBOX_COMMENTS.R + "\\green" + Theme.SCRIPTDUMPS_FAST3D_TEXTBOX_COMMENTS.G + "\\blue" + Theme.SCRIPTDUMPS_FAST3D_TEXTBOX_COMMENTS.B + "; }\\viewkind4\\uc1\\pard\\f0\\fs17\\cf1 "); for (int i = 0; i < f3dList.Count; i++) { ScriptDumpCommandInfo info = f3dList[i]; diff --git a/src/Forms/ScriptDumps_Tabs/Level/LevelTab_GeoLayout.cs b/src/Forms/ScriptDumps_Tabs/Level/LevelTab_GeoLayout.cs index 7f42ca6..6787558 100644 --- a/src/Forms/ScriptDumps_Tabs/Level/LevelTab_GeoLayout.cs +++ b/src/Forms/ScriptDumps_Tabs/Level/LevelTab_GeoLayout.cs @@ -56,6 +56,9 @@ private void initGeoLayoutForLevelTab() newButton.Location = new Point(rb_width * i, lt_gls_radioPanel.Location.Y); newButton.Size = new Size(rb_width, lt_gls_radioPanel.Height); newButton.CheckedChanged += lt_gls_areas_CheckedChanged; + newButton.BackColor = Theme.SCRIPTDUMPS_LEVELTAB_GEOLAYOUT_AREAPANEL_BACKGROUND; + newButton.ForeColor = Theme.SCRIPTDUMPS_LEVELTAB_GEOLAYOUT_AREAPANEL_TEXT; + newButton.FlatStyle = FlatStyle.Flat; //newButton.Anchor = (AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right); if (i == 0) newButton.Checked = true; @@ -182,7 +185,7 @@ private void organizeCurrentGeoLayoutScript(List glsList) currentTextbox.Clear(); int currentIndent = 0; StringBuilder sb = new StringBuilder(); - sb.Append("{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Courier New;}}{\\colortbl;\\red0\\green0\\blue0;\\red0\\green128\\blue0; }\\viewkind4\\uc1\\pard\\f0\\fs17 "); + sb.Append("{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Courier New;}}{\\colortbl;\\red" + Theme.SCRIPTDUMPS_GEOLAYOUT_TEXTBOX_TEXT.R + "\\green" + Theme.SCRIPTDUMPS_GEOLAYOUT_TEXTBOX_TEXT.G + "\\blue" + Theme.SCRIPTDUMPS_GEOLAYOUT_TEXTBOX_TEXT.B + ";\\red" + Theme.SCRIPTDUMPS_GEOLAYOUT_TEXTBOX_COMMENTS.R + "\\green" + Theme.SCRIPTDUMPS_GEOLAYOUT_TEXTBOX_COMMENTS.G + "\\blue" + Theme.SCRIPTDUMPS_GEOLAYOUT_TEXTBOX_COMMENTS.B + "; }\\viewkind4\\uc1\\pard\\f0\\fs17\\cf1 "); for (int i = 0; i < glsList.Count; i++) { ScriptDumpCommandInfo info = glsList[i]; diff --git a/src/Forms/ScriptDumps_Tabs/Level/LevelTab_Levelscripts.cs b/src/Forms/ScriptDumps_Tabs/Level/LevelTab_Levelscripts.cs index fc8e174..85d8476 100644 --- a/src/Forms/ScriptDumps_Tabs/Level/LevelTab_Levelscripts.cs +++ b/src/Forms/ScriptDumps_Tabs/Level/LevelTab_Levelscripts.cs @@ -118,7 +118,7 @@ private void organizeCurrentLevelScript(List lsList) currentTextbox.Clear(); int currentIndent = 0; StringBuilder sb = new StringBuilder(); - sb.Append("{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Courier New;}}{\\colortbl;\\red0\\green0\\blue0;\\red0\\green128\\blue0; }\\viewkind4\\uc1\\pard\\f0\\fs17 "); + sb.Append("{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Courier New;}}{\\colortbl;\\red" + Theme.SCRIPTDUMPS_LEVEL_TEXTBOX_TEXT.R + "\\green" + Theme.SCRIPTDUMPS_LEVEL_TEXTBOX_TEXT.G + "\\blue" + Theme.SCRIPTDUMPS_LEVEL_TEXTBOX_TEXT.B + ";\\red" + Theme.SCRIPTDUMPS_LEVEL_TEXTBOX_COMMENTS.R + "\\green" + Theme.SCRIPTDUMPS_LEVEL_TEXTBOX_COMMENTS.G + "\\blue" + Theme.SCRIPTDUMPS_LEVEL_TEXTBOX_COMMENTS.B + "; }\\viewkind4\\uc1\\pard\\f0\\fs17\\cf1 "); for (int i = 0; i < lsList.Count; i++) { ScriptDumpCommandInfo info = lsList[i]; diff --git a/src/Forms/ScriptDumps_Tabs/Objects/ObjectsTab_Behavior.cs b/src/Forms/ScriptDumps_Tabs/Objects/ObjectsTab_Behavior.cs index edb649a..a320ebc 100644 --- a/src/Forms/ScriptDumps_Tabs/Objects/ObjectsTab_Behavior.cs +++ b/src/Forms/ScriptDumps_Tabs/Objects/ObjectsTab_Behavior.cs @@ -124,7 +124,7 @@ private void organizeCurrentBehaviorScript(List behList) currentTextbox.Clear(); int currentIndent = 0; StringBuilder sb = new StringBuilder(); - sb.Append("{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Courier New;}}{\\colortbl;\\red0\\green0\\blue0;\\red0\\green128\\blue0; }\\viewkind4\\uc1\\pard\\f0\\fs17 "); + sb.Append("{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Courier New;}}{\\colortbl;\\red" + Theme.SCRIPTDUMPS_BEHAVIOR_TEXTBOX_TEXT.R + "\\green" + Theme.SCRIPTDUMPS_BEHAVIOR_TEXTBOX_TEXT.G + "\\blue" + Theme.SCRIPTDUMPS_BEHAVIOR_TEXTBOX_TEXT.B + ";\\red" + Theme.SCRIPTDUMPS_BEHAVIOR_TEXTBOX_COMMENTS.R + "\\green" + Theme.SCRIPTDUMPS_BEHAVIOR_TEXTBOX_COMMENTS.G + "\\blue" + Theme.SCRIPTDUMPS_BEHAVIOR_TEXTBOX_COMMENTS.B + "; }\\viewkind4\\uc1\\pard\\f0\\fs17\\cf1 "); for (int i = 0; i < behList.Count; i++) { ScriptDumpCommandInfo info = behList[i]; diff --git a/src/Forms/SelectBehavior.Designer.cs b/src/Forms/SelectBehavior.Designer.cs index e7dcb16..da89c49 100644 --- a/src/Forms/SelectBehavior.Designer.cs +++ b/src/Forms/SelectBehavior.Designer.cs @@ -39,6 +39,7 @@ private void InitializeComponent() // // cancelButton // + this.cancelButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.cancelButton.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.cancelButton.Location = new System.Drawing.Point(249, 266); this.cancelButton.Name = "cancelButton"; @@ -50,6 +51,7 @@ private void InitializeComponent() // // selectButton // + this.selectButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.selectButton.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.selectButton.Location = new System.Drawing.Point(107, 266); this.selectButton.Name = "selectButton"; @@ -71,7 +73,6 @@ private void InitializeComponent() this.listView1.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.listView1.ForeColor = System.Drawing.SystemColors.MenuText; this.listView1.FullRowSelect = true; - this.listView1.GridLines = true; this.listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; this.listView1.HideSelection = false; this.listView1.Location = new System.Drawing.Point(12, 30); diff --git a/src/Forms/SelectBehavior.cs b/src/Forms/SelectBehavior.cs index d84459b..8f3a8c0 100644 --- a/src/Forms/SelectBehavior.cs +++ b/src/Forms/SelectBehavior.cs @@ -23,11 +23,27 @@ public SelectBehavior() { listView1.Items.Add("("+entry.Behavior.ToString("X8") + ") " + entry.Name); } + updateTheme(); + } + + private void updateTheme() + { + BackColor = Theme.COMBOS_BACKGROUND; + label_filter.BackColor = Theme.COMBOS_BACKGROUND; + label_filter.ForeColor = Theme.COMBOS_TEXT; + selectButton.BackColor = Theme.DEFAULT_BUTTON_BACKGROUND; + selectButton.ForeColor = Theme.DEFAULT_BUTTON_TEXT; + cancelButton.BackColor = Theme.DEFAULT_BUTTON_BACKGROUND; + cancelButton.ForeColor = Theme.DEFAULT_BUTTON_TEXT; + textBox_filter.BackColor = Theme.DEFAULT_DROPDOWNLIST_BACKGROUND; + textBox_filter.ForeColor = Theme.DEFAULT_DROPDOWNLIST_TEXT; + listView1.BackColor = Theme.COMBOS_BACKGROUND; + listView1.ForeColor = Theme.COMBOS_TEXT; } private Font textFont = new Font("Courier New", 10, FontStyle.Bold); - private Brush textBrush = new SolidBrush(Color.DimGray); - private Pen bgPen = new Pen(Color.FromArgb(230, 230, 230), 100.0f); + private Brush textBrush = new SolidBrush(Theme.COMBOS_OTHER_TITLE); + private Pen bgPen = new Pen(Theme.COMBOS_BACKGROUND, 100.0f); private Rectangle bgRect = new Rectangle(0, 0, 400, 2); private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e) { @@ -61,16 +77,17 @@ private void cancelButton_Click(object sender, EventArgs e) Close(); } - private Color col1 = Color.FromArgb(250, 250, 240); - private Color col2 = Color.FromArgb(250, 240, 240); - private Color highlight = Color.FromArgb(200, 200, 255); + private Color col1 = Theme.COMBOS_OTHER_MAIN; + private Color col2 = Theme.COMBOS_OTHER_SECONDARY; + private Color col3 = Theme.COMBOS_OTHER_HIGHLIGHT_TEXT; + private Color col4 = Theme.COMBOS_OTHER_HIGHLIGHT; private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e) { // If this item is the selected item if (e.Item.Selected) { - e.Item.ForeColor = Color.Black; - e.Item.BackColor = highlight; + e.Item.ForeColor = col3; + e.Item.BackColor = col4; } else { diff --git a/src/Forms/SelectComboPreset.Designer.cs b/src/Forms/SelectComboPreset.Designer.cs index 21ac298..65d3a87 100644 --- a/src/Forms/SelectComboPreset.Designer.cs +++ b/src/Forms/SelectComboPreset.Designer.cs @@ -49,7 +49,6 @@ private void InitializeComponent() this.listView1.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.listView1.ForeColor = System.Drawing.SystemColors.MenuText; this.listView1.FullRowSelect = true; - this.listView1.GridLines = true; this.listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; this.listView1.HideSelection = false; this.listView1.Location = new System.Drawing.Point(12, 34); @@ -73,6 +72,7 @@ private void InitializeComponent() // // selectButton // + this.selectButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.selectButton.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.selectButton.Location = new System.Drawing.Point(82, 249); this.selectButton.Name = "selectButton"; @@ -84,6 +84,7 @@ private void InitializeComponent() // // cancelButton // + this.cancelButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.cancelButton.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.cancelButton.Location = new System.Drawing.Point(222, 249); this.cancelButton.Name = "cancelButton"; @@ -123,6 +124,8 @@ private void InitializeComponent() this.Controls.Add(this.listView1); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; this.Name = "SelectComboPreset"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Select Combo/Preset"; diff --git a/src/Forms/SelectComboPreset.cs b/src/Forms/SelectComboPreset.cs index a5e128b..6d4ee31 100644 --- a/src/Forms/SelectComboPreset.cs +++ b/src/Forms/SelectComboPreset.cs @@ -29,6 +29,22 @@ public SelectComboPreset(Level level, int listType, string columnText, Color col this.listType = listType; listView1.Columns[0].Text = columnText; textBrush = new SolidBrush(columnTextColor); + updateTheme(); + } + + private void updateTheme() + { + BackColor = Theme.COMBOS_BACKGROUND; + label_filter.BackColor = Theme.COMBOS_BACKGROUND; + label_filter.ForeColor = Theme.COMBOS_TEXT; + selectButton.BackColor = Theme.DEFAULT_BUTTON_BACKGROUND; + selectButton.ForeColor = Theme.DEFAULT_BUTTON_TEXT; + cancelButton.BackColor = Theme.DEFAULT_BUTTON_BACKGROUND; + cancelButton.ForeColor = Theme.DEFAULT_BUTTON_TEXT; + textBox_filter.BackColor = Theme.DEFAULT_TEXTBOX_BACKGROUND; + textBox_filter.ForeColor = Theme.DEFAULT_TEXTBOX_TEXT; + listView1.BackColor = Theme.DEFAULT_BACKGROUND; + listView1.ForeColor = Theme.DEFAULT_TEXT; } private void LoadSpecialList(List specialList, bool useFilter) @@ -59,7 +75,11 @@ private void LoadSpecialList(List specialList, bool useFilter) presetsTaken.Add(entry.PresetID); } } - col2 = Color.FromArgb(240, 250, 240); + + col1 = Theme.COMBOS_SPECIAL_MAIN; + col2 = Theme.COMBOS_SPECIAL_SECONDARY; + col3 = Theme.COMBOS_SPECIAL_HIGHLIGHT_TEXT; + col4 = Theme.COMBOS_SPECIAL_HIGHLIGHT; } private void SelectComboPreset_Load(object sender, EventArgs e) @@ -77,7 +97,10 @@ private void SelectComboPreset_Load(object sender, EventArgs e) }; int index = listView1.Items.Count - 1; } - col2 = Color.FromArgb(250, 240, 240); + col1 = Theme.COMBOS_3DOBJECTS_MAIN; + col2 = Theme.COMBOS_3DOBJECTS_SECONDARY; + col3 = Theme.COMBOS_3DOBJECTS_HIGHLIGHT_TEXT; + col4 = Theme.COMBOS_3DOBJECTS_HIGHLIGHT; break; case 1: foreach (PresetMacroEntry entry in level.MacroObjectPresets) @@ -97,7 +120,11 @@ private void SelectComboPreset_Load(object sender, EventArgs e) } } } - col2 = Color.FromArgb(240, 240, 250); + col1 = Theme.COMBOS_MACRO_MAIN; + col2 = Theme.COMBOS_MACRO_SECONDARY; + col3 = Theme.COMBOS_MACRO_HIGHLIGHT_TEXT; + col4 = Theme.COMBOS_MACRO_HIGHLIGHT; + //col2 = Color.FromArgb(240, 240, 250); break; case 2: LoadSpecialList(level.SpecialObjectPresets_8, false); @@ -118,16 +145,17 @@ private void SelectComboPreset_Load(object sender, EventArgs e) } } - private Color col1 = Color.FromArgb(250, 250, 240); - private Color col2 = Color.FromArgb(250, 240, 240); - private Color highlight = Color.FromArgb(200, 200, 255); + private Color col1 = Theme.DEFAULT_BACKGROUND; + private Color col2 = Theme.DEFAULT_PANEL_BACKGROUND; + private Color col3 = Theme.DEFAULT_BACKGROUND; + private Color col4 = Theme.DEFAULT_PANEL_BACKGROUND; private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e) { // If this item is the selected item if (e.Item.Selected) { - e.Item.ForeColor = Color.Black; - e.Item.BackColor = highlight; + e.Item.ForeColor = col3; + e.Item.BackColor = col4; } else { @@ -142,8 +170,8 @@ private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e) } private Font textFont = new Font("Courier New", 10, FontStyle.Bold); - private Brush textBrush = new SolidBrush(Color.DimGray); - private Pen bgPen = new Pen(Color.FromArgb(230, 230, 230), 100.0f); + private Brush textBrush = new SolidBrush(Theme.COMBOS_TEXT); + private Pen bgPen = new Pen(Theme.COMBOS_BACKGROUND, 100.0f); private Rectangle bgRect = new Rectangle(0, 0, 400, 2); private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e) { @@ -242,7 +270,7 @@ private void textBox_filter_TextChanged(object sender, EventArgs e) }; } } - col2 = Color.FromArgb(250, 240, 240); + //col2 = Color.FromArgb(250, 240, 240); break; case 1: foreach (PresetMacroEntry entry in level.MacroObjectPresets) @@ -264,7 +292,7 @@ private void textBox_filter_TextChanged(object sender, EventArgs e) } } } - col2 = Color.FromArgb(240, 240, 250); + //col2 = Color.FromArgb(240, 240, 250); break; case 2: LoadSpecialList(level.SpecialObjectPresets_8, true); diff --git a/src/Forms/SelectLevelForm.Designer.cs b/src/Forms/SelectLevelForm.Designer.cs index 45e9dcf..1429557 100644 --- a/src/Forms/SelectLevelForm.Designer.cs +++ b/src/Forms/SelectLevelForm.Designer.cs @@ -29,48 +29,51 @@ protected override void Dispose(bool disposing) private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SelectLevelForm)); - this.comboBox1 = new System.Windows.Forms.ComboBox(); - this.button1 = new System.Windows.Forms.Button(); - this.button2 = new System.Windows.Forms.Button(); + this.level_list = new System.Windows.Forms.ComboBox(); + this.load_button = new System.Windows.Forms.Button(); + this.cancel_button = new System.Windows.Forms.Button(); this.SuspendLayout(); // - // comboBox1 + // level_list // - this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboBox1.FormattingEnabled = true; - this.comboBox1.Location = new System.Drawing.Point(69, 16); - this.comboBox1.Name = "comboBox1"; - this.comboBox1.Size = new System.Drawing.Size(214, 21); - this.comboBox1.TabIndex = 0; + this.level_list.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.level_list.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.level_list.FormattingEnabled = true; + this.level_list.Location = new System.Drawing.Point(69, 16); + this.level_list.Name = "level_list"; + this.level_list.Size = new System.Drawing.Size(214, 21); + this.level_list.TabIndex = 0; // - // button1 + // load_button // - this.button1.Location = new System.Drawing.Point(69, 55); - this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(104, 29); - this.button1.TabIndex = 1; - this.button1.Text = "Load"; - this.button1.UseVisualStyleBackColor = true; - this.button1.Click += new System.EventHandler(this.button1_Click); + this.load_button.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.load_button.Location = new System.Drawing.Point(69, 55); + this.load_button.Name = "load_button"; + this.load_button.Size = new System.Drawing.Size(104, 29); + this.load_button.TabIndex = 1; + this.load_button.Text = "Load"; + this.load_button.UseVisualStyleBackColor = true; + this.load_button.Click += new System.EventHandler(this.button1_Click); // - // button2 + // cancel_button // - this.button2.Location = new System.Drawing.Point(179, 55); - this.button2.Name = "button2"; - this.button2.Size = new System.Drawing.Size(104, 29); - this.button2.TabIndex = 2; - this.button2.Text = "Cancel"; - this.button2.UseVisualStyleBackColor = true; - this.button2.Click += new System.EventHandler(this.button2_Click); + this.cancel_button.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.cancel_button.Location = new System.Drawing.Point(179, 55); + this.cancel_button.Name = "cancel_button"; + this.cancel_button.Size = new System.Drawing.Size(104, 29); + this.cancel_button.TabIndex = 2; + this.cancel_button.Text = "Cancel"; + this.cancel_button.UseVisualStyleBackColor = true; + this.cancel_button.Click += new System.EventHandler(this.button2_Click); // // SelectLevelForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(348, 97); - this.Controls.Add(this.button2); - this.Controls.Add(this.button1); - this.Controls.Add(this.comboBox1); + this.Controls.Add(this.cancel_button); + this.Controls.Add(this.load_button); + this.Controls.Add(this.level_list); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.MaximizeBox = false; @@ -84,8 +87,8 @@ private void InitializeComponent() #endregion - private System.Windows.Forms.ComboBox comboBox1; - private System.Windows.Forms.Button button1; - private System.Windows.Forms.Button button2; + private System.Windows.Forms.ComboBox level_list; + private System.Windows.Forms.Button load_button; + private System.Windows.Forms.Button cancel_button; } } \ No newline at end of file diff --git a/src/Forms/SelectLevelForm.cs b/src/Forms/SelectLevelForm.cs index 748a217..9c6b013 100644 --- a/src/Forms/SelectLevelForm.cs +++ b/src/Forms/SelectLevelForm.cs @@ -1,4 +1,5 @@ -using Quad64.src.LevelInfo; +using Quad64.src; +using Quad64.src.LevelInfo; using System; using System.Collections.Generic; using System.ComponentModel; @@ -22,21 +23,29 @@ public SelectLevelForm(ushort levelID) //comboBox1.Item foreach (KeyValuePair entry in rom.levelIDs) { - comboBox1.Items.Add(entry.Key + " (0x" + entry.Value.ToString("X2") + ")"); + level_list.Items.Add(entry.Key + " (0x" + entry.Value.ToString("X2") + ")"); } foreach (ushort entry in rom.extra_levelIDs) { - comboBox1.Items.Add("[EXT] Extra Level (0x" + entry.ToString("X2") + ")"); + level_list.Items.Add("[EXT] Extra Level (0x" + entry.ToString("X2") + ")"); } //comboBox1.Items.Add("Custom ID value"); - comboBox1.SelectedIndex = rom.getLevelIndexById(levelID); + level_list.SelectedIndex = rom.getLevelIndexById(levelID); + + BackColor = Theme.DEFAULT_BACKGROUND; + level_list.BackColor = Theme.DEFAULT_DROPDOWNLIST_BACKGROUND; + level_list.ForeColor = Theme.DEFAULT_DROPDOWNLIST_TEXT; + cancel_button.BackColor = Theme.DEFAULT_BUTTON_BACKGROUND; + cancel_button.ForeColor = Theme.DEFAULT_BUTTON_TEXT; + load_button.BackColor = Theme.DEFAULT_BUTTON_BACKGROUND; + load_button.ForeColor = Theme.DEFAULT_BUTTON_TEXT; } private void button1_Click(object sender, EventArgs e) { - levelID = ROM.Instance.getLevelIdFromIndex(comboBox1.SelectedIndex); + levelID = ROM.Instance.getLevelIdFromIndex(level_list.SelectedIndex); changeLevel = true; Close(); } diff --git a/src/Forms/SettingsForm.Designer.cs b/src/Forms/SettingsForm.Designer.cs index 077e143..05a6849 100644 --- a/src/Forms/SettingsForm.Designer.cs +++ b/src/Forms/SettingsForm.Designer.cs @@ -75,6 +75,7 @@ private void InitializeComponent() // saveButton // this.saveButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.saveButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.saveButton.Location = new System.Drawing.Point(299, 289); this.saveButton.Name = "saveButton"; this.saveButton.Size = new System.Drawing.Size(76, 24); @@ -87,6 +88,7 @@ private void InitializeComponent() // cancelButton // this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cancelButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.cancelButton.Location = new System.Drawing.Point(381, 289); this.cancelButton.Name = "cancelButton"; this.cancelButton.Size = new System.Drawing.Size(76, 24); @@ -105,6 +107,7 @@ private void InitializeComponent() this.Controls.Add(this.saveButton); this.Controls.Add(this.tabs); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MinimizeBox = false; this.MinimumSize = new System.Drawing.Size(300, 300); this.Name = "SettingsForm"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; diff --git a/src/Forms/SettingsForm.cs b/src/Forms/SettingsForm.cs index fad1b8e..acb54e6 100644 --- a/src/Forms/SettingsForm.cs +++ b/src/Forms/SettingsForm.cs @@ -23,6 +23,14 @@ private void SettingsForm_Load(object sender, EventArgs e) { AddBasicSettings(); AddAdvancedSettings(); + + BackColor = Theme.DEFAULT_BACKGROUND; + Basic.BackColor = Theme.DEFAULT_BACKGROUND; + Advanced.BackColor = Theme.DEFAULT_BACKGROUND; + saveButton.BackColor = Theme.DEFAULT_BUTTON_BACKGROUND; + saveButton.ForeColor = Theme.DEFAULT_BUTTON_TEXT; + cancelButton.BackColor = Theme.DEFAULT_BUTTON_BACKGROUND; + cancelButton.ForeColor = Theme.DEFAULT_BUTTON_TEXT; } private TextBox emuPathTextBox; @@ -112,12 +120,14 @@ private void AddTrackBarSetting(TabPage page, string label, ref Label updateDisp { Label tbl = newLabel(label, x, y + 3); tbl.Width = 70; + updateDisplay.ForeColor = Theme.DEFAULT_TEXT; + updateDisplay.BackColor = Theme.DEFAULT_BACKGROUND; updateDisplay.Location = new Point(x, y + 20); updateDisplay.TextAlign = ContentAlignment.MiddleCenter; updateDisplay.Text = currentValue.ToString(); updateDisplay.Width = 74; TrackBar tb = newTrackBar(x + tbl.Width, y, min, max, currentValue); - tb.BackColor = page.BackColor; + tb.BackColor = Theme.DEFAULT_BACKGROUND; tb.Tag = updateDisplay; tb.ValueChanged += new EventHandler(trackBar_updateLabelValue); page.Controls.Add(tbl); @@ -142,6 +152,7 @@ private Label newLineSeparator(int x, int y, int width) label.Width = width; label.BorderStyle = BorderStyle.Fixed3D; label.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top; + label.BackColor = Theme.DEFAULT_BACKGROUND; return label; } @@ -153,6 +164,8 @@ private Label newLabel(string text, int x, int y) label.Text = text; label.Left = x; label.Top = y; + label.ForeColor = Theme.DEFAULT_TEXT; + label.BackColor = Theme.DEFAULT_BACKGROUND; return label; } @@ -165,6 +178,8 @@ private Label newFancyLabel(string text, int x, int y, Font font) label.Left = x; label.Top = y; label.Font = font; + label.ForeColor = Theme.DEFAULT_TEXT; + label.BackColor = Theme.DEFAULT_BACKGROUND; return label; } @@ -176,6 +191,8 @@ private Button newButton(string text, int x, int y, EventHandler clickEvent) button.Left = x; button.Top = y; button.Click += clickEvent; + button.ForeColor = Theme.DEFAULT_BUTTON_TEXT; + button.BackColor = Theme.DEFAULT_BUTTON_BACKGROUND; return button; } @@ -187,6 +204,8 @@ private TextBox newTextBox(string text, bool readOnly, int x, int y, int width) box.Top = y; box.ReadOnly = readOnly; box.Width = width; + box.ForeColor = Theme.DEFAULT_TEXTBOX_TEXT; + box.BackColor = Theme.DEFAULT_TEXTBOX_BACKGROUND; return box; } @@ -200,6 +219,9 @@ private ComboBox newComboBox(string[] options, int x, int y, int selectedIndex) box.TabStop = false; box.MouseWheel += new MouseEventHandler(comboBox_MouseWheel); box.DropDownStyle = ComboBoxStyle.DropDownList; + box.FlatStyle = FlatStyle.Flat; + box.ForeColor = Theme.DEFAULT_DROPDOWNLIST_TEXT; + box.BackColor = Theme.DEFAULT_DROPDOWNLIST_BACKGROUND; return box; } @@ -212,6 +234,8 @@ private CheckBox newCheckBox(string text, int x, int y, bool isChecked) box.AutoSize = true; box.TabStop = false; box.Checked = isChecked; + box.ForeColor = Theme.DEFAULT_TEXT; + box.BackColor = Theme.DEFAULT_BACKGROUND; return box; } @@ -224,6 +248,7 @@ private TrackBar newTrackBar(int x, int y, int minValue, int maxValue, int curre bar.TickFrequency = 10; bar.Left = x; bar.Top = y; + bar.BackColor = Theme.DEFAULT_BACKGROUND; return bar; } diff --git a/src/Forms/TextureEditor.Designer.cs b/src/Forms/TextureEditor.Designer.cs index 7e79a61..c013fc4 100644 --- a/src/Forms/TextureEditor.Designer.cs +++ b/src/Forms/TextureEditor.Designer.cs @@ -35,19 +35,19 @@ private void InitializeComponent() this.infoTabPanel = new System.Windows.Forms.Panel(); this.info_Format = new System.Windows.Forms.TextBox(); this.info_SegmentAddress = new System.Windows.Forms.TextBox(); - this.button2 = new System.Windows.Forms.Button(); + this.lt_importImage = new System.Windows.Forms.Button(); this.lt_exportImage = new System.Windows.Forms.Button(); this.info_Height = new System.Windows.Forms.TextBox(); this.info_Width = new System.Windows.Forms.TextBox(); this.info_bitmapImage = new System.Windows.Forms.PictureBox(); this.info_Address = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); + this.lt_info_label = new System.Windows.Forms.Label(); this.layoutTabPanel = new System.Windows.Forms.Panel(); - this.radioButton4 = new System.Windows.Forms.RadioButton(); - this.radioButton3 = new System.Windows.Forms.RadioButton(); - this.radioButton2 = new System.Windows.Forms.RadioButton(); - this.radioButton1 = new System.Windows.Forms.RadioButton(); - this.label1 = new System.Windows.Forms.Label(); + this.lt_rb_objects = new System.Windows.Forms.RadioButton(); + this.lt_rb_models = new System.Windows.Forms.RadioButton(); + this.lt_rb_level = new System.Windows.Forms.RadioButton(); + this.lt_rb_all = new System.Windows.Forms.RadioButton(); + this.lt_category_label = new System.Windows.Forms.Label(); this.tabPage2 = new System.Windows.Forms.TabPage(); this.ot_pan_icons = new System.Windows.Forms.Panel(); this.ot_pan_info = new System.Windows.Forms.Panel(); @@ -60,14 +60,14 @@ private void InitializeComponent() this.ot_info_width = new System.Windows.Forms.TextBox(); this.ot_bitmap_preview = new System.Windows.Forms.PictureBox(); this.ot_info_RomAddress = new System.Windows.Forms.TextBox(); - this.label3 = new System.Windows.Forms.Label(); + this.ot_info_label = new System.Windows.Forms.Label(); this.ot_pan_groups = new System.Windows.Forms.Panel(); this.ot_pan_groupButtons = new System.Windows.Forms.Panel(); this.tabPage3 = new System.Windows.Forms.TabPage(); - this.panel1 = new System.Windows.Forms.Panel(); + this.sb_info = new System.Windows.Forms.Panel(); this.checkBox_matchFogColor = new System.Windows.Forms.CheckBox(); - this.label6 = new System.Windows.Forms.Label(); - this.label5 = new System.Windows.Forms.Label(); + this.blue_label = new System.Windows.Forms.Label(); + this.green_label = new System.Windows.Forms.Label(); this.red_label = new System.Windows.Forms.Label(); this.numericUpDown_Blue = new System.Windows.Forms.NumericUpDown(); this.numericUpDown_Green = new System.Windows.Forms.NumericUpDown(); @@ -81,7 +81,7 @@ private void InitializeComponent() this.sb_info_Height = new System.Windows.Forms.TextBox(); this.sb_info_Width = new System.Windows.Forms.TextBox(); this.sb_info_RomAddress = new System.Windows.Forms.TextBox(); - this.label4 = new System.Windows.Forms.Label(); + this.sb_TextureInfo_label = new System.Windows.Forms.Label(); this.sb_imageBox = new System.Windows.Forms.PictureBox(); this.tabControl1.SuspendLayout(); this.tabPage1.SuspendLayout(); @@ -93,7 +93,7 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.ot_bitmap_preview)).BeginInit(); this.ot_pan_groups.SuspendLayout(); this.tabPage3.SuspendLayout(); - this.panel1.SuspendLayout(); + this.sb_info.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDown_Blue)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDown_Green)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDown_Red)).BeginInit(); @@ -143,13 +143,13 @@ private void InitializeComponent() this.infoTabPanel.BackColor = System.Drawing.Color.CornflowerBlue; this.infoTabPanel.Controls.Add(this.info_Format); this.infoTabPanel.Controls.Add(this.info_SegmentAddress); - this.infoTabPanel.Controls.Add(this.button2); + this.infoTabPanel.Controls.Add(this.lt_importImage); this.infoTabPanel.Controls.Add(this.lt_exportImage); this.infoTabPanel.Controls.Add(this.info_Height); this.infoTabPanel.Controls.Add(this.info_Width); this.infoTabPanel.Controls.Add(this.info_bitmapImage); this.infoTabPanel.Controls.Add(this.info_Address); - this.infoTabPanel.Controls.Add(this.label2); + this.infoTabPanel.Controls.Add(this.lt_info_label); this.infoTabPanel.Location = new System.Drawing.Point(502, 0); this.infoTabPanel.Margin = new System.Windows.Forms.Padding(0); this.infoTabPanel.Name = "infoTabPanel"; @@ -186,26 +186,30 @@ private void InitializeComponent() this.info_SegmentAddress.Text = "Seg Addr: N/A"; this.info_SegmentAddress.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; // - // button2 + // lt_importImage // - this.button2.Location = new System.Drawing.Point(0, 301); - this.button2.Margin = new System.Windows.Forms.Padding(0); - this.button2.Name = "button2"; - this.button2.Size = new System.Drawing.Size(150, 23); - this.button2.TabIndex = 11; - this.button2.Text = "Import from image file"; - this.button2.UseVisualStyleBackColor = true; - this.button2.Click += new System.EventHandler(this.lt_importImage_Click); + this.lt_importImage.BackColor = System.Drawing.Color.LightGray; + this.lt_importImage.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.lt_importImage.Location = new System.Drawing.Point(0, 301); + this.lt_importImage.Margin = new System.Windows.Forms.Padding(0); + this.lt_importImage.Name = "lt_importImage"; + this.lt_importImage.Size = new System.Drawing.Size(150, 23); + this.lt_importImage.TabIndex = 11; + this.lt_importImage.Text = "Import from image file"; + this.lt_importImage.UseVisualStyleBackColor = false; + this.lt_importImage.Click += new System.EventHandler(this.lt_importImage_Click); // // lt_exportImage // + this.lt_exportImage.BackColor = System.Drawing.Color.LightGray; + this.lt_exportImage.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.lt_exportImage.Location = new System.Drawing.Point(0, 325); this.lt_exportImage.Margin = new System.Windows.Forms.Padding(0); this.lt_exportImage.Name = "lt_exportImage"; this.lt_exportImage.Size = new System.Drawing.Size(150, 23); this.lt_exportImage.TabIndex = 10; this.lt_exportImage.Text = "Export to image file"; - this.lt_exportImage.UseVisualStyleBackColor = true; + this.lt_exportImage.UseVisualStyleBackColor = false; this.lt_exportImage.Click += new System.EventHandler(this.lt_exportImage_Click); // // info_Height @@ -263,93 +267,101 @@ private void InitializeComponent() this.info_Address.Text = "ROM Address: N/A"; this.info_Address.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; // - // label2 + // lt_info_label // - this.label2.AutoSize = true; - this.label2.Font = new System.Drawing.Font("Consolas", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label2.Location = new System.Drawing.Point(55, 6); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(45, 19); - this.label2.TabIndex = 5; - this.label2.Text = "Info"; + this.lt_info_label.AutoSize = true; + this.lt_info_label.Font = new System.Drawing.Font("Consolas", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lt_info_label.Location = new System.Drawing.Point(55, 6); + this.lt_info_label.Name = "lt_info_label"; + this.lt_info_label.Size = new System.Drawing.Size(45, 19); + this.lt_info_label.TabIndex = 5; + this.lt_info_label.Text = "Info"; // // layoutTabPanel // this.layoutTabPanel.BackColor = System.Drawing.Color.Firebrick; - this.layoutTabPanel.Controls.Add(this.radioButton4); - this.layoutTabPanel.Controls.Add(this.radioButton3); - this.layoutTabPanel.Controls.Add(this.radioButton2); - this.layoutTabPanel.Controls.Add(this.radioButton1); - this.layoutTabPanel.Controls.Add(this.label1); + this.layoutTabPanel.Controls.Add(this.lt_rb_objects); + this.layoutTabPanel.Controls.Add(this.lt_rb_models); + this.layoutTabPanel.Controls.Add(this.lt_rb_level); + this.layoutTabPanel.Controls.Add(this.lt_rb_all); + this.layoutTabPanel.Controls.Add(this.lt_category_label); this.layoutTabPanel.Location = new System.Drawing.Point(0, 0); this.layoutTabPanel.Margin = new System.Windows.Forms.Padding(0); this.layoutTabPanel.Name = "layoutTabPanel"; this.layoutTabPanel.Size = new System.Drawing.Size(100, 397); this.layoutTabPanel.TabIndex = 0; // - // radioButton4 - // - this.radioButton4.Appearance = System.Windows.Forms.Appearance.Button; - this.radioButton4.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.radioButton4.Location = new System.Drawing.Point(0, 106); - this.radioButton4.Name = "radioButton4"; - this.radioButton4.Size = new System.Drawing.Size(100, 24); - this.radioButton4.TabIndex = 4; - this.radioButton4.Text = "Objects Only"; - this.radioButton4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.radioButton4.UseVisualStyleBackColor = true; - this.radioButton4.Click += new System.EventHandler(this.radioButton4_lt_Click); - // - // radioButton3 - // - this.radioButton3.Appearance = System.Windows.Forms.Appearance.Button; - this.radioButton3.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.radioButton3.Location = new System.Drawing.Point(0, 82); - this.radioButton3.Name = "radioButton3"; - this.radioButton3.Size = new System.Drawing.Size(100, 24); - this.radioButton3.TabIndex = 3; - this.radioButton3.Text = "Models Only"; - this.radioButton3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.radioButton3.UseVisualStyleBackColor = true; - this.radioButton3.Click += new System.EventHandler(this.radioButton3_lt_Click); - // - // radioButton2 - // - this.radioButton2.Appearance = System.Windows.Forms.Appearance.Button; - this.radioButton2.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.radioButton2.Location = new System.Drawing.Point(0, 58); - this.radioButton2.Name = "radioButton2"; - this.radioButton2.Size = new System.Drawing.Size(100, 24); - this.radioButton2.TabIndex = 2; - this.radioButton2.Text = "Level Only"; - this.radioButton2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.radioButton2.UseVisualStyleBackColor = true; - this.radioButton2.Click += new System.EventHandler(this.radioButton2_lt_Click); - // - // radioButton1 - // - this.radioButton1.Appearance = System.Windows.Forms.Appearance.Button; - this.radioButton1.Checked = true; - this.radioButton1.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.radioButton1.Location = new System.Drawing.Point(0, 34); - this.radioButton1.Name = "radioButton1"; - this.radioButton1.Size = new System.Drawing.Size(100, 24); - this.radioButton1.TabIndex = 1; - this.radioButton1.TabStop = true; - this.radioButton1.Text = "All"; - this.radioButton1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.radioButton1.UseVisualStyleBackColor = true; - this.radioButton1.Click += new System.EventHandler(this.radioButton1_lt_Click); - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Font = new System.Drawing.Font("Consolas", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label1.Location = new System.Drawing.Point(9, 6); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(81, 19); - this.label1.TabIndex = 0; - this.label1.Text = "Category"; + // lt_rb_objects + // + this.lt_rb_objects.Appearance = System.Windows.Forms.Appearance.Button; + this.lt_rb_objects.BackColor = System.Drawing.Color.LightGray; + this.lt_rb_objects.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.lt_rb_objects.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lt_rb_objects.Location = new System.Drawing.Point(0, 106); + this.lt_rb_objects.Name = "lt_rb_objects"; + this.lt_rb_objects.Size = new System.Drawing.Size(100, 24); + this.lt_rb_objects.TabIndex = 4; + this.lt_rb_objects.Text = "Objects Only"; + this.lt_rb_objects.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lt_rb_objects.UseVisualStyleBackColor = false; + this.lt_rb_objects.Click += new System.EventHandler(this.radioButton4_lt_Click); + // + // lt_rb_models + // + this.lt_rb_models.Appearance = System.Windows.Forms.Appearance.Button; + this.lt_rb_models.BackColor = System.Drawing.Color.LightGray; + this.lt_rb_models.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.lt_rb_models.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lt_rb_models.Location = new System.Drawing.Point(0, 82); + this.lt_rb_models.Name = "lt_rb_models"; + this.lt_rb_models.Size = new System.Drawing.Size(100, 24); + this.lt_rb_models.TabIndex = 3; + this.lt_rb_models.Text = "Models Only"; + this.lt_rb_models.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lt_rb_models.UseVisualStyleBackColor = false; + this.lt_rb_models.Click += new System.EventHandler(this.radioButton3_lt_Click); + // + // lt_rb_level + // + this.lt_rb_level.Appearance = System.Windows.Forms.Appearance.Button; + this.lt_rb_level.BackColor = System.Drawing.Color.LightGray; + this.lt_rb_level.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.lt_rb_level.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lt_rb_level.Location = new System.Drawing.Point(0, 58); + this.lt_rb_level.Name = "lt_rb_level"; + this.lt_rb_level.Size = new System.Drawing.Size(100, 24); + this.lt_rb_level.TabIndex = 2; + this.lt_rb_level.Text = "Level Only"; + this.lt_rb_level.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lt_rb_level.UseVisualStyleBackColor = false; + this.lt_rb_level.Click += new System.EventHandler(this.radioButton2_lt_Click); + // + // lt_rb_all + // + this.lt_rb_all.Appearance = System.Windows.Forms.Appearance.Button; + this.lt_rb_all.BackColor = System.Drawing.Color.LightGray; + this.lt_rb_all.Checked = true; + this.lt_rb_all.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.lt_rb_all.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lt_rb_all.Location = new System.Drawing.Point(0, 34); + this.lt_rb_all.Name = "lt_rb_all"; + this.lt_rb_all.Size = new System.Drawing.Size(100, 24); + this.lt_rb_all.TabIndex = 1; + this.lt_rb_all.TabStop = true; + this.lt_rb_all.Text = "All"; + this.lt_rb_all.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lt_rb_all.UseVisualStyleBackColor = false; + this.lt_rb_all.Click += new System.EventHandler(this.radioButton1_lt_Click); + // + // lt_category_label + // + this.lt_category_label.AutoSize = true; + this.lt_category_label.Font = new System.Drawing.Font("Consolas", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lt_category_label.Location = new System.Drawing.Point(9, 6); + this.lt_category_label.Name = "lt_category_label"; + this.lt_category_label.Size = new System.Drawing.Size(81, 19); + this.lt_category_label.TabIndex = 0; + this.lt_category_label.Text = "Category"; // // tabPage2 // @@ -386,7 +398,7 @@ private void InitializeComponent() this.ot_pan_info.Controls.Add(this.ot_info_width); this.ot_pan_info.Controls.Add(this.ot_bitmap_preview); this.ot_pan_info.Controls.Add(this.ot_info_RomAddress); - this.ot_pan_info.Controls.Add(this.label3); + this.ot_pan_info.Controls.Add(this.ot_info_label); this.ot_pan_info.Location = new System.Drawing.Point(502, 0); this.ot_pan_info.Margin = new System.Windows.Forms.Padding(0); this.ot_pan_info.Name = "ot_pan_info"; @@ -440,24 +452,28 @@ private void InitializeComponent() // // ot_importImage // + this.ot_importImage.BackColor = System.Drawing.Color.LightGray; + this.ot_importImage.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.ot_importImage.Location = new System.Drawing.Point(0, 301); this.ot_importImage.Margin = new System.Windows.Forms.Padding(0); this.ot_importImage.Name = "ot_importImage"; this.ot_importImage.Size = new System.Drawing.Size(150, 23); this.ot_importImage.TabIndex = 11; this.ot_importImage.Text = "Import from image file"; - this.ot_importImage.UseVisualStyleBackColor = true; + this.ot_importImage.UseVisualStyleBackColor = false; this.ot_importImage.Click += new System.EventHandler(this.ot_importImage_Click); // // ot_exportImage // + this.ot_exportImage.BackColor = System.Drawing.Color.LightGray; + this.ot_exportImage.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.ot_exportImage.Location = new System.Drawing.Point(0, 325); this.ot_exportImage.Margin = new System.Windows.Forms.Padding(0); this.ot_exportImage.Name = "ot_exportImage"; this.ot_exportImage.Size = new System.Drawing.Size(150, 23); this.ot_exportImage.TabIndex = 10; this.ot_exportImage.Text = "Export to image file"; - this.ot_exportImage.UseVisualStyleBackColor = true; + this.ot_exportImage.UseVisualStyleBackColor = false; this.ot_exportImage.Click += new System.EventHandler(this.ot_exportImage_Click); // // ot_info_height @@ -515,15 +531,15 @@ private void InitializeComponent() this.ot_info_RomAddress.Text = "ROM Address: N/A"; this.ot_info_RomAddress.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; // - // label3 + // ot_info_label // - this.label3.AutoSize = true; - this.label3.Font = new System.Drawing.Font("Consolas", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label3.Location = new System.Drawing.Point(55, 6); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(45, 19); - this.label3.TabIndex = 5; - this.label3.Text = "Info"; + this.ot_info_label.AutoSize = true; + this.ot_info_label.Font = new System.Drawing.Font("Consolas", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ot_info_label.Location = new System.Drawing.Point(55, 6); + this.ot_info_label.Name = "ot_info_label"; + this.ot_info_label.Size = new System.Drawing.Size(45, 19); + this.ot_info_label.TabIndex = 5; + this.ot_info_label.Text = "Info"; // // ot_pan_groups // @@ -547,7 +563,7 @@ private void InitializeComponent() // // tabPage3 // - this.tabPage3.Controls.Add(this.panel1); + this.tabPage3.Controls.Add(this.sb_info); this.tabPage3.Controls.Add(this.sb_imageBox); this.tabPage3.Location = new System.Drawing.Point(4, 22); this.tabPage3.Name = "tabPage3"; @@ -557,31 +573,31 @@ private void InitializeComponent() this.tabPage3.Text = "Sky Background"; this.tabPage3.UseVisualStyleBackColor = true; // - // panel1 - // - this.panel1.BackColor = System.Drawing.Color.CornflowerBlue; - this.panel1.Controls.Add(this.checkBox_matchFogColor); - this.panel1.Controls.Add(this.label6); - this.panel1.Controls.Add(this.label5); - this.panel1.Controls.Add(this.red_label); - this.panel1.Controls.Add(this.numericUpDown_Blue); - this.panel1.Controls.Add(this.numericUpDown_Green); - this.panel1.Controls.Add(this.numericUpDown_Red); - this.panel1.Controls.Add(this.sb_useSolidColor); - this.panel1.Controls.Add(this.sb_useTexture); - this.panel1.Controls.Add(this.sb_info_Format); - this.panel1.Controls.Add(this.sb_info_SegAddress); - this.panel1.Controls.Add(this.sb_importImage); - this.panel1.Controls.Add(this.sb_exportImage); - this.panel1.Controls.Add(this.sb_info_Height); - this.panel1.Controls.Add(this.sb_info_Width); - this.panel1.Controls.Add(this.sb_info_RomAddress); - this.panel1.Controls.Add(this.label4); - this.panel1.Location = new System.Drawing.Point(471, 0); - this.panel1.Margin = new System.Windows.Forms.Padding(0); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(182, 397); - this.panel1.TabIndex = 4; + // sb_info + // + this.sb_info.BackColor = System.Drawing.Color.CornflowerBlue; + this.sb_info.Controls.Add(this.checkBox_matchFogColor); + this.sb_info.Controls.Add(this.blue_label); + this.sb_info.Controls.Add(this.green_label); + this.sb_info.Controls.Add(this.red_label); + this.sb_info.Controls.Add(this.numericUpDown_Blue); + this.sb_info.Controls.Add(this.numericUpDown_Green); + this.sb_info.Controls.Add(this.numericUpDown_Red); + this.sb_info.Controls.Add(this.sb_useSolidColor); + this.sb_info.Controls.Add(this.sb_useTexture); + this.sb_info.Controls.Add(this.sb_info_Format); + this.sb_info.Controls.Add(this.sb_info_SegAddress); + this.sb_info.Controls.Add(this.sb_importImage); + this.sb_info.Controls.Add(this.sb_exportImage); + this.sb_info.Controls.Add(this.sb_info_Height); + this.sb_info.Controls.Add(this.sb_info_Width); + this.sb_info.Controls.Add(this.sb_info_RomAddress); + this.sb_info.Controls.Add(this.sb_TextureInfo_label); + this.sb_info.Location = new System.Drawing.Point(471, 0); + this.sb_info.Margin = new System.Windows.Forms.Padding(0); + this.sb_info.Name = "sb_info"; + this.sb_info.Size = new System.Drawing.Size(182, 397); + this.sb_info.TabIndex = 4; // // checkBox_matchFogColor // @@ -594,25 +610,25 @@ private void InitializeComponent() this.checkBox_matchFogColor.Text = "Match fog color with bg color"; this.checkBox_matchFogColor.UseVisualStyleBackColor = true; // - // label6 + // blue_label // - this.label6.AutoSize = true; - this.label6.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label6.Location = new System.Drawing.Point(128, 37); - this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(31, 13); - this.label6.TabIndex = 22; - this.label6.Text = "Blue"; + this.blue_label.AutoSize = true; + this.blue_label.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.blue_label.Location = new System.Drawing.Point(128, 37); + this.blue_label.Name = "blue_label"; + this.blue_label.Size = new System.Drawing.Size(31, 13); + this.blue_label.TabIndex = 22; + this.blue_label.Text = "Blue"; // - // label5 + // green_label // - this.label5.AutoSize = true; - this.label5.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label5.Location = new System.Drawing.Point(73, 37); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(37, 13); - this.label5.TabIndex = 21; - this.label5.Text = "Green"; + this.green_label.AutoSize = true; + this.green_label.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.green_label.Location = new System.Drawing.Point(73, 37); + this.green_label.Name = "green_label"; + this.green_label.Size = new System.Drawing.Size(37, 13); + this.green_label.TabIndex = 21; + this.green_label.Text = "Green"; // // red_label // @@ -724,24 +740,28 @@ private void InitializeComponent() // // sb_importImage // + this.sb_importImage.BackColor = System.Drawing.Color.LightGray; + this.sb_importImage.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.sb_importImage.Location = new System.Drawing.Point(16, 289); this.sb_importImage.Margin = new System.Windows.Forms.Padding(0); this.sb_importImage.Name = "sb_importImage"; this.sb_importImage.Size = new System.Drawing.Size(150, 23); this.sb_importImage.TabIndex = 11; this.sb_importImage.Text = "Import from image file"; - this.sb_importImage.UseVisualStyleBackColor = true; + this.sb_importImage.UseVisualStyleBackColor = false; this.sb_importImage.Click += new System.EventHandler(this.sb_importImage_Click); // // sb_exportImage // + this.sb_exportImage.BackColor = System.Drawing.Color.LightGray; + this.sb_exportImage.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.sb_exportImage.Location = new System.Drawing.Point(16, 316); this.sb_exportImage.Margin = new System.Windows.Forms.Padding(0); this.sb_exportImage.Name = "sb_exportImage"; this.sb_exportImage.Size = new System.Drawing.Size(150, 23); this.sb_exportImage.TabIndex = 10; this.sb_exportImage.Text = "Export to image file"; - this.sb_exportImage.UseVisualStyleBackColor = true; + this.sb_exportImage.UseVisualStyleBackColor = false; this.sb_exportImage.Click += new System.EventHandler(this.sb_ExportImage_Click); // // sb_info_Height @@ -787,15 +807,15 @@ private void InitializeComponent() this.sb_info_RomAddress.Text = "(no texture found)"; this.sb_info_RomAddress.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; // - // label4 + // sb_TextureInfo_label // - this.label4.AutoSize = true; - this.label4.Font = new System.Drawing.Font("Consolas", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label4.Location = new System.Drawing.Point(32, 147); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(117, 19); - this.label4.TabIndex = 5; - this.label4.Text = "Texture Info"; + this.sb_TextureInfo_label.AutoSize = true; + this.sb_TextureInfo_label.Font = new System.Drawing.Font("Consolas", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.sb_TextureInfo_label.Location = new System.Drawing.Point(32, 147); + this.sb_TextureInfo_label.Name = "sb_TextureInfo_label"; + this.sb_TextureInfo_label.Size = new System.Drawing.Size(117, 19); + this.sb_TextureInfo_label.TabIndex = 5; + this.sb_TextureInfo_label.Text = "Texture Info"; // // sb_imageBox // @@ -835,8 +855,8 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.ot_bitmap_preview)).EndInit(); this.ot_pan_groups.ResumeLayout(false); this.tabPage3.ResumeLayout(false); - this.panel1.ResumeLayout(false); - this.panel1.PerformLayout(); + this.sb_info.ResumeLayout(false); + this.sb_info.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDown_Blue)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDown_Green)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDown_Red)).EndInit(); @@ -854,17 +874,17 @@ private void InitializeComponent() private System.Windows.Forms.Panel infoTabPanel; private System.Windows.Forms.TabPage tabPage3; private System.Windows.Forms.Panel iconsPanel; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.RadioButton radioButton3; - private System.Windows.Forms.RadioButton radioButton2; - private System.Windows.Forms.RadioButton radioButton1; - private System.Windows.Forms.RadioButton radioButton4; + private System.Windows.Forms.Label lt_category_label; + private System.Windows.Forms.RadioButton lt_rb_models; + private System.Windows.Forms.RadioButton lt_rb_level; + private System.Windows.Forms.RadioButton lt_rb_all; + private System.Windows.Forms.RadioButton lt_rb_objects; private System.Windows.Forms.TextBox info_Address; - private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label lt_info_label; private System.Windows.Forms.PictureBox info_bitmapImage; private System.Windows.Forms.TextBox info_Height; private System.Windows.Forms.TextBox info_Width; - private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button lt_importImage; private System.Windows.Forms.Button lt_exportImage; private System.Windows.Forms.TextBox info_Format; private System.Windows.Forms.TextBox info_SegmentAddress; @@ -878,12 +898,12 @@ private void InitializeComponent() private System.Windows.Forms.TextBox ot_info_width; private System.Windows.Forms.PictureBox ot_bitmap_preview; private System.Windows.Forms.TextBox ot_info_RomAddress; - private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label ot_info_label; private System.Windows.Forms.Panel ot_pan_groups; private System.Windows.Forms.Panel ot_pan_groupButtons; private System.Windows.Forms.TextBox ot_name; private System.Windows.Forms.PictureBox sb_imageBox; - private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel sb_info; private System.Windows.Forms.TextBox sb_info_Format; private System.Windows.Forms.TextBox sb_info_SegAddress; private System.Windows.Forms.Button sb_importImage; @@ -891,14 +911,14 @@ private void InitializeComponent() private System.Windows.Forms.TextBox sb_info_Height; private System.Windows.Forms.TextBox sb_info_Width; private System.Windows.Forms.TextBox sb_info_RomAddress; - private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label sb_TextureInfo_label; private System.Windows.Forms.RadioButton sb_useSolidColor; private System.Windows.Forms.RadioButton sb_useTexture; private System.Windows.Forms.NumericUpDown numericUpDown_Blue; private System.Windows.Forms.NumericUpDown numericUpDown_Green; private System.Windows.Forms.NumericUpDown numericUpDown_Red; - private System.Windows.Forms.Label label6; - private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label blue_label; + private System.Windows.Forms.Label green_label; private System.Windows.Forms.Label red_label; private System.Windows.Forms.CheckBox checkBox_matchFogColor; } diff --git a/src/Forms/TextureEditor.cs b/src/Forms/TextureEditor.cs index d68156d..70b8514 100644 --- a/src/Forms/TextureEditor.cs +++ b/src/Forms/TextureEditor.cs @@ -28,8 +28,98 @@ private void TextureEditor_Load(object sender, EventArgs e) setButtons_lt(true, true, false); loadOtherTexturesTab(); loadBackgroundImage(); + updateTheme(); } + private void updateTheme() + { + BackColor = Theme.TEXTURES_BACKGROUND; + + layoutTabPanel.BackColor = Theme.TEXTURES_LEVEL_BACKGROUND_LEFT; + iconsPanel.BackColor = Theme.TEXTURES_LEVEL_BACKGROUND_MIDDLE; + infoTabPanel.BackColor = Theme.TEXTURES_LEVEL_BACKGROUND_RIGHT; + lt_category_label.ForeColor = Theme.TEXTURES_LEVEL_TEXT; + lt_category_label.BackColor = Theme.TEXTURES_LEVEL_BACKGROUND_LEFT; + lt_info_label.ForeColor = Theme.TEXTURES_LEVEL_TEXT; + lt_info_label.BackColor = Theme.TEXTURES_LEVEL_BACKGROUND_RIGHT; + info_Address.ForeColor = Theme.TEXTURES_LEVEL_TEXT; + info_Address.BackColor = Theme.TEXTURES_LEVEL_BACKGROUND_RIGHT; + info_SegmentAddress.ForeColor = Theme.TEXTURES_LEVEL_TEXT; + info_SegmentAddress.BackColor = Theme.TEXTURES_LEVEL_BACKGROUND_RIGHT; + info_Format.ForeColor = Theme.TEXTURES_LEVEL_TEXT; + info_Format.BackColor = Theme.TEXTURES_LEVEL_BACKGROUND_RIGHT; + info_Width.ForeColor = Theme.TEXTURES_LEVEL_TEXT; + info_Width.BackColor = Theme.TEXTURES_LEVEL_BACKGROUND_RIGHT; + info_Height.ForeColor = Theme.TEXTURES_LEVEL_TEXT; + info_Height.BackColor = Theme.TEXTURES_LEVEL_BACKGROUND_RIGHT; + lt_exportImage.BackColor = Theme.TEXTURES_LEVEL_BUTTON_BACKGROUND; + lt_exportImage.ForeColor = Theme.TEXTURES_LEVEL_BUTTON_TEXT; + lt_importImage.BackColor = Theme.TEXTURES_LEVEL_BUTTON_BACKGROUND; + lt_importImage.ForeColor = Theme.TEXTURES_LEVEL_BUTTON_TEXT; + lt_rb_all.BackColor = Theme.TEXTURES_LEVEL_BUTTON_BACKGROUND; + lt_rb_all.ForeColor = Theme.TEXTURES_LEVEL_BUTTON_TEXT; + lt_rb_level.BackColor = Theme.TEXTURES_LEVEL_BUTTON_BACKGROUND; + lt_rb_level.ForeColor = Theme.TEXTURES_LEVEL_BUTTON_TEXT; + lt_rb_objects.BackColor = Theme.TEXTURES_LEVEL_BUTTON_BACKGROUND; + lt_rb_objects.ForeColor = Theme.TEXTURES_LEVEL_BUTTON_TEXT; + lt_rb_models.BackColor = Theme.TEXTURES_LEVEL_BUTTON_BACKGROUND; + lt_rb_models.ForeColor = Theme.TEXTURES_LEVEL_BUTTON_TEXT; + + ot_pan_groupButtons.BackColor = Theme.TEXTURES_OTHER_BACKGROUND_LEFT; + ot_pan_icons.BackColor = Theme.TEXTURES_OTHER_BACKGROUND_MIDDLE; + ot_pan_info.BackColor = Theme.TEXTURES_OTHER_BACKGROUND_RIGHT; + ot_info_label.ForeColor = Theme.TEXTURES_OTHER_TEXT; + ot_info_label.BackColor = Theme.TEXTURES_OTHER_BACKGROUND_RIGHT; + ot_name.ForeColor = Theme.TEXTURES_OTHER_TEXT; + ot_name.BackColor = Theme.TEXTURES_OTHER_BACKGROUND_RIGHT; + ot_info_RomAddress.ForeColor = Theme.TEXTURES_OTHER_TEXT; + ot_info_RomAddress.BackColor = Theme.TEXTURES_OTHER_BACKGROUND_RIGHT; + ot_info_SegAddress.ForeColor = Theme.TEXTURES_OTHER_TEXT; + ot_info_SegAddress.BackColor = Theme.TEXTURES_OTHER_BACKGROUND_RIGHT; + ot_info_Format.ForeColor = Theme.TEXTURES_OTHER_TEXT; + ot_info_Format.BackColor = Theme.TEXTURES_OTHER_BACKGROUND_RIGHT; + ot_info_width.ForeColor = Theme.TEXTURES_OTHER_TEXT; + ot_info_width.BackColor = Theme.TEXTURES_OTHER_BACKGROUND_RIGHT; + ot_info_height.ForeColor = Theme.TEXTURES_OTHER_TEXT; + ot_info_height.BackColor = Theme.TEXTURES_OTHER_BACKGROUND_RIGHT; + + ot_exportImage.BackColor = Theme.TEXTURES_OTHER_BUTTON_BACKGROUND; + ot_exportImage.ForeColor = Theme.TEXTURES_OTHER_BUTTON_TEXT; + ot_importImage.BackColor = Theme.TEXTURES_OTHER_BUTTON_BACKGROUND; + ot_importImage.ForeColor = Theme.TEXTURES_OTHER_BUTTON_TEXT; + + sb_TextureInfo_label.ForeColor = Theme.TEXTURES_SKY_TEXT; + sb_TextureInfo_label.BackColor = Theme.TEXTURES_SKY_BACKGROUND_RIGHT; + sb_info_RomAddress.ForeColor = Theme.TEXTURES_SKY_TEXT; + sb_info_RomAddress.BackColor = Theme.TEXTURES_SKY_BACKGROUND_RIGHT; + sb_info_SegAddress.ForeColor = Theme.TEXTURES_SKY_TEXT; + sb_info_SegAddress.BackColor = Theme.TEXTURES_SKY_BACKGROUND_RIGHT; + sb_info_Format.ForeColor = Theme.TEXTURES_SKY_TEXT; + sb_info_Format.BackColor = Theme.TEXTURES_SKY_BACKGROUND_RIGHT; + sb_info_Width.ForeColor = Theme.TEXTURES_SKY_TEXT; + sb_info_Width.BackColor = Theme.TEXTURES_SKY_BACKGROUND_RIGHT; + sb_info_Height.ForeColor = Theme.TEXTURES_SKY_TEXT; + sb_info_Height.BackColor = Theme.TEXTURES_SKY_BACKGROUND_RIGHT; + checkBox_matchFogColor.ForeColor = Theme.TEXTURES_SKY_TEXT; + checkBox_matchFogColor.BackColor = Theme.TEXTURES_SKY_BACKGROUND_RIGHT; + sb_useSolidColor.ForeColor = Theme.TEXTURES_SKY_TEXT; + sb_useSolidColor.BackColor = Theme.TEXTURES_SKY_BACKGROUND_RIGHT; + red_label.ForeColor = Theme.TEXTURES_SKY_TEXT; + red_label.BackColor = Theme.TEXTURES_SKY_BACKGROUND_RIGHT; + green_label.ForeColor = Theme.TEXTURES_SKY_TEXT; + green_label.BackColor = Theme.TEXTURES_SKY_BACKGROUND_RIGHT; + blue_label.ForeColor = Theme.TEXTURES_SKY_TEXT; + blue_label.BackColor = Theme.TEXTURES_SKY_BACKGROUND_RIGHT; + sb_useTexture.ForeColor = Theme.TEXTURES_SKY_TEXT; + sb_useSolidColor.BackColor = Theme.TEXTURES_SKY_BACKGROUND_RIGHT; + sb_imageBox.BackColor = Theme.TEXTURES_SKY_BACKGROUND_LEFT; + sb_info.BackColor = Theme.TEXTURES_SKY_BACKGROUND_RIGHT; + sb_exportImage.BackColor = Theme.TEXTURES_SKY_BUTTON_BACKGROUND; + sb_exportImage.ForeColor = Theme.TEXTURES_SKY_BUTTON_TEXT; + sb_importImage.BackColor = Theme.TEXTURES_SKY_BUTTON_BACKGROUND; + sb_importImage.ForeColor = Theme.TEXTURES_SKY_BUTTON_TEXT; + } + private void AddNewImage(ref List buttons, Bitmap bitmap, uint address, EventHandler click_event) { RadioButtonWithInfo texButton = new RadioButtonWithInfo(); diff --git a/src/Forms/TextureEditorComponents/TabEditOtherTextures.cs b/src/Forms/TextureEditorComponents/TabEditOtherTextures.cs index e3cfeb8..37a9795 100644 --- a/src/Forms/TextureEditorComponents/TabEditOtherTextures.cs +++ b/src/Forms/TextureEditorComponents/TabEditOtherTextures.cs @@ -307,6 +307,9 @@ private void loadOtherTexturesTab() { RadioButton rb = new RadioButton(); rb.Appearance = Appearance.Button; + rb.FlatStyle = FlatStyle.Flat; + rb.BackColor = Theme.TEXTURES_OTHER_BUTTON_BACKGROUND; + rb.ForeColor = Theme.TEXTURES_OTHER_BUTTON_TEXT; rb.UseVisualStyleBackColor = true; rb.TextAlign = ContentAlignment.MiddleCenter; rb.Text = name; diff --git a/src/Forms/ThemeSelector.Designer.cs b/src/Forms/ThemeSelector.Designer.cs new file mode 100644 index 0000000..04816c1 --- /dev/null +++ b/src/Forms/ThemeSelector.Designer.cs @@ -0,0 +1,118 @@ +namespace Quad64.src.Forms +{ + partial class ThemeSelector + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ThemeSelector)); + this.listView1 = new System.Windows.Forms.ListView(); + this.test = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.Author = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.cancel_button = new System.Windows.Forms.Button(); + this.load_button = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // listView1 + // + this.listView1.AutoArrange = false; + this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.test, + this.Author}); + this.listView1.FullRowSelect = true; + this.listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.listView1.Location = new System.Drawing.Point(12, 12); + this.listView1.Name = "listView1"; + this.listView1.ShowGroups = false; + this.listView1.Size = new System.Drawing.Size(350, 170); + this.listView1.Sorting = System.Windows.Forms.SortOrder.Ascending; + this.listView1.TabIndex = 0; + this.listView1.TabStop = false; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.View = System.Windows.Forms.View.Details; + this.listView1.SelectedIndexChanged += new System.EventHandler(this.listView1_SelectedIndexChanged); + // + // test + // + this.test.Text = "Name"; + this.test.Width = 250; + // + // Author + // + this.Author.Text = "Author"; + this.Author.Width = 96; + // + // cancel_button + // + this.cancel_button.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.cancel_button.Location = new System.Drawing.Point(187, 188); + this.cancel_button.Name = "cancel_button"; + this.cancel_button.Size = new System.Drawing.Size(104, 29); + this.cancel_button.TabIndex = 4; + this.cancel_button.Text = "Cancel"; + this.cancel_button.UseVisualStyleBackColor = true; + this.cancel_button.Click += new System.EventHandler(this.cancel_button_Click); + // + // load_button + // + this.load_button.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.load_button.Location = new System.Drawing.Point(77, 188); + this.load_button.Name = "load_button"; + this.load_button.Size = new System.Drawing.Size(104, 29); + this.load_button.TabIndex = 3; + this.load_button.Text = "Select"; + this.load_button.UseVisualStyleBackColor = true; + this.load_button.Click += new System.EventHandler(this.load_button_Click); + // + // ThemeSelector + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(372, 223); + this.Controls.Add(this.cancel_button); + this.Controls.Add(this.load_button); + this.Controls.Add(this.listView1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "ThemeSelector"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Select a Theme"; + this.Load += new System.EventHandler(this.ThemeSelector_Load); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.ColumnHeader test; + private System.Windows.Forms.ColumnHeader Author; + private System.Windows.Forms.Button cancel_button; + private System.Windows.Forms.Button load_button; + } +} \ No newline at end of file diff --git a/src/Forms/ThemeSelector.cs b/src/Forms/ThemeSelector.cs new file mode 100644 index 0000000..5978804 --- /dev/null +++ b/src/Forms/ThemeSelector.cs @@ -0,0 +1,88 @@ +using System; +using System.IO; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using Newtonsoft.Json.Linq; + +namespace Quad64.src.Forms +{ + public partial class ThemeSelector : Form + { + public bool doUpdate = false; + public string themePath = ""; + + public ThemeSelector() + { + InitializeComponent(); + updateTheme(); + load_button.Enabled = false; + } + + private void updateTheme() + { + BackColor = Theme.DEFAULT_PANEL_BACKGROUND; + listView1.BackColor = Theme.DEFAULT_BACKGROUND; + listView1.ForeColor = Theme.DEFAULT_TEXT; + load_button.BackColor = Theme.DEFAULT_BUTTON_BACKGROUND; + load_button.ForeColor = Theme.DEFAULT_BUTTON_TEXT; + cancel_button.BackColor = Theme.DEFAULT_BUTTON_BACKGROUND; + cancel_button.ForeColor = Theme.DEFAULT_BUTTON_TEXT; + } + + private void ThemeSelector_Load(object sender, EventArgs e) + { + string[] files = Directory.GetFiles("./data/themes/"); + for (int i = 0; i < files.Length; i++) + { + if(files[i].EndsWith(".json")) + { + string json = File.ReadAllText(files[i]); + JObject o = JObject.Parse(json); + if (o["Info"] != null) + { + string name = "", author = ""; + if (o["Info"]["Name"] != null) + name = o["Info"]["Name"].ToString(); + if (o["Info"]["Author"] != null) + author = o["Info"]["Author"].ToString(); + + ListViewItem item = new ListViewItem(); + item.Tag = files[i]; + item.SubItems.Add(new ListViewItem.ListViewSubItem()); + item.SubItems[0].Text = name; + item.SubItems.Add(new ListViewItem.ListViewSubItem()); + item.SubItems[1].Text = author; + + listView1.Items.Add(item); + } + } + } + } + + private void cancel_button_Click(object sender, EventArgs e) + { + doUpdate = false; + Hide(); + } + + private void load_button_Click(object sender, EventArgs e) + { + doUpdate = true; + themePath = (string)listView1.SelectedItems[0].Tag; + Hide(); + } + + private void listView1_SelectedIndexChanged(object sender, EventArgs e) + { + if (listView1.SelectedIndices.Count > 0) + load_button.Enabled = true; + else + load_button.Enabled = false; + } + } +} diff --git a/src/Forms/ThemeSelector.resx b/src/Forms/ThemeSelector.resx new file mode 100644 index 0000000..4969adf --- /dev/null +++ b/src/Forms/ThemeSelector.resx @@ -0,0 +1,635 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAA9rRcAOq0WGTuhA1TBPgtezjQNGc01DQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAHK0AAA2tAAQxrQw3L64IoDekAvHBPwz1zjUNoM0yCzfSIAAE0CgAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADR0dEA6tbvEp/Hk3BHtCXUJ68A/TSmAf/CPgv/zjML/c1L + KdTMmItwyt3kEsvHxwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0uQAAAGkAAFWuMQWsw5891NLVp6/Kp+1Mtiz/KK8A/1Gv + J//FWzT/zjYO/81TMv/Nq6Ltzc/Pps2roizOJwACtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2pAAAZpwABKa4AFy6vB3Z0v13e0dHR/KO2 + nf9KnDL/bLhW/7TLrP/Ntq7/yXRf/7JROP+6opz/zs7O/M58Zs/NOhRgzjMLC/8AAADcAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAztDOAP/b/wdYtzo8K68DtSyx + BPVptlL/nJ6b/0FIPP9baVX/wMa//9HR0P/Pzs3/x8C+/2pbWP9IQkH/op+f/8lxWv/POBHvzjcQms1i + RSrK+f8Fy8vLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALzLtQCpyJ0Cx8zEIdbQ + 2HZ5wGTcMLEJ/ySXAv8yaCH/KTob/xg1AP9qdGD/ucS2/5zCif/KnIn/x7q2/2hiYv8nAAD/RiIh/387 + Kv+5MQ7/zz0X/c5+as3N1tldx9XVD/+amgCf//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHawAAA6o + AAVEtCNPqsigtdXS1f1/uG7/IHoF/xJEAP8XMwD/J1IA/ylUAP9QdDz/YrNL/0CpD//CSBj/x2tT/21I + Qf9PAAD/bQAA/0kCAf9fEgT/ni8S/8uLev/Q1NTtzKeck8hkSDPFQh4Dx1k7AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAorwEAKK8BISauAIY5sxXincaQ/6+vsP9IYj//FDUA/x9BAP8rWAD/MWMA/yxWAP8kbAX/JqgD/zOm + Af/CPQv/xzQO/20eDP9SAAD/igAA/4AAAP9bAAD/TAsF/3pZUv+7vr//z5iJ/s1JJsjOMwxa0CEDBtAa + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACmyZ4A/+j/ANDR0gnJzMVaVrc4vyivAPgyqA//X4BV/ztFMv8fOgf/J04B/y5dAP8vXgD/MWMA/ytW + AP8fawD/J6gC/0asGf/ETyP/xzQO/24ZBv9SAAD/iQAA/40AAP+JAAD/bwAA/00NDf9aSUn/om1f/8s+ + Gv7ONxDnzWFFkczV2CLCwcEAzc3NAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAALwAAC6sAAAARQABeL9lJL7NupTM0cvpXbdD/iGRAP8WTgL/HDYI/yJFAf8kTxn/IEky/ydS + GP8uWgT/MmMB/ytVAP8nbQr/YbRJ/6nInv/Nq5//x2dN/24gD/9RAAD/iQAA/40AAP+NAAD/jAAA/38A + AP9eBAP/SBMO/30hCv++NBD/zXRc+c/Q0cbOwr9QzFExCMAAAADLNwsAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAASa0iAD2tFxAlrQBSTbctyrHLqvq7v7v/RHc0/xA2AP8bOwH/JU0O/x1O + Qf8KXpL/A3Os/wxVfv8bRT7/LlwL/ylVAP9geVH/v8i8/9LS0//P0ND/x7y4/25STf9RAAD/iAAA/4IA + DP94ARj/iQAE/4UFDP92Bxn/bQEG/0sCAP9aFAb/pGJR/8nLzP7PopbuzVEwiMsyCiTJSCkBykAdAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOK0RAzatD4UsrgT1RLAk/omdgv9TWU7/HTQJ/yNK + AP8mVCL/ElJ9/wJ1vf8AqNP/ALDW/wCYzf8HT5n/KlUc/ypVAP90fWr/xsrF/7DIpP/LsaX/yMTD/25l + Zf9QAAD/iAAB/1cURf8iIYr/UgxI/2gWMv83P3j/UxtK/30BBf9dAAD/SR0b/4B7e/+6joL/zkgk/M04 + EcLMPBk1zD0bAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALa4FBSyuBNQlqwD/JncO/yQ2 + Gf8dPQH/KlYA/yxcDf8SYYX/C47W/yCw1v8TqNb/AqHX/wCX1f8MVJT/LVwS/ytVAP9feVD/fLxq/1Ct + JP/DWC7/yIRy/25UUP9QAAD/iAAB/2gkO/8fZrz/CU+5/yQ6jP8TfbL/FGqq/28PJv+KAAD/cAAA/00O + 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 + AP8vXgD/L14A/zBfAf84ZhD/QnEk/zNpC/8xZAD/JlUA/yJVCv+KnoP/zMnM/5fFiv8xpR//HX1C/xMx + qv9AGaf/lihI/8VGL//No5j/wcPE/45tZ/9hGRH/fRIR/48JCf+SEBD/X0Nm/yUzoP9NDU7/hQAG/4wA + AP+VCgr/ZiUg/7eVjP/QxcPgz8/PMdDQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwvVoAbrxXiUKz + IPgggQP/FC4A/yxZAP8vXgD/L14A/y9eAP8xZAD/MWMA/y5aBP8gUwT/G3MA/zKmD/+qyaH/1NPT/6C+ + pv8wXZb/CxLU/w0N4/8NDuP/IBHM/39Ejf/Iq63/z9DP/8yYiv+yNRT/dR0K/2wWEP+DEBD/jgwN/3sO + IP+FAwr/jAAA/4wAAP+WCgr/ZRMM/7Y+Hv/PdV7iypqNN8mdkQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAArrQQAK60DjSetAfkbeQD/FS4A/y1aAP8vXgD/MGEA/zNnAP8uWwP/QVom/1dySv83mRv/Jq8A/ze1 + Dv+yzan/29zY/83N3/+PjuP/R0fi/xYWzv8aGtP/T0/j/5aX4v/Q0N3/2NfU/9Ofjf/SPRP/yDIK/5g/ + Kf9uR0T/cRwd/4sLC/+TBQT/jAAA/4sAAP+XCQn/ZREL/7UuC//PNg/px0clUcdIJwAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAArrgMAK64DpzGuDP83eSL/FzEB/y5cAP8zZgD/MWEA/yVQAv9JaTb/oZ+h/6bD + nf9IuCb/I58T/yRxYP9zfcz/xsbh/+Pj4v/U1NT/d3eZ/x0da/8nJ3T/jY2p/9zc2//i4uL/wcDf/4Jq + vf+YLk3/yzEN/9BjRv+3qaX/h318/2onI/95Dg7/lAoK/44BAf+XCQn/ZBUR/7E3GP/PNQ3tzTQMXs00 + DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABZuT0AW7o/tYzAfP9ufGj/GzgC/zNmAP8pVQH/HVQA/yN9 + Bv95sWj/1NPU/6rJo/89iGH/ETqd/w8Y0v8aGuH/Skrb/3t7r/9ZWWb/HR1P/w0Ndf8gIJb/PT18/3Fx + gv9/f8L/RETf/xoa4v8nFMb/XxyE/7FcZf/Rv7n/ysfH/6hWQP95Hgz/ZxIO/4oPDv+dDQ3/Yxwb/66A + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAmQA3MdQAJyPRAhgY4B1sa+F5z87g0N3d4fjDw9z/aWmw/xcXeP8+P5X/q6vQ/9nZ + 4P/Z2eHmlZXhrCoq4FAAANwIQji9AUE3vgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM/DwAC+pZ4C4d3VLsbG4YhjY+HSGxvi+g4O + 4f8VFeL/SEjf8K2s36nk5OBT4ODeDeDg3wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADeAAAA + 3QgEBOE2FBPdkBAQ4NsXFdyxIB3UXh4Y0BgeGNEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAvLMwALSrNERIR3jMhHdUeKCPQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD///5///8AAP///D///wAA///wD///AAD//+AH//8AAP//gAH//wAA//4AAP// + AAD//AAAP/8AAP/wAAAf/wAA/+AAAAf/AAD/wAAAA/8AAP8AAAAB/wAA/AAAAAB/AAD4AAAAAB8AAPAA + AAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAP + AADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADwAAAAAA8AAPAA + AAAADwAA8AAAAAAPAADgAAAAAA8AAOAAAAAADwAA4AAAAAAPAADgAAAAAA8AAOAAAAAADwAA4AAAAAAP + AADgAAAAAA8AAPgAAAAAHwAA/gAAAAB/AAD/gAAAAf8AAP/gAAAH/wAA//AAAA//AAD//AAAP/8AAP// + AAD//wAA///AB///AAD///Af//8AAP///D///wAA////////AAAoAAAAOAAAAHAAAAABACAAAAAAAAAx + AADCDgAAwg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnrwAgzzUKMAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOa0TgCiuAO/ONQ3/zTUNgAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAP7QfMDOtDM8orwD/KK8A/841Df/ONQ3/zTQNz89FHzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANHR0YCCwW//KK8A/yiv + AP8orwD/zjUN/841Df/ONQ3/zX1o/8vHx4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJu7h0DR0dHP0dHR/3/BbP8orwD/Kq8C/1i5O//OZkv/zjcP/841 + Df/Of2r/zs7O/8zLys/Pj38gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + Df/KPRi/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7EJ/3a/ + Yf9gaF3/FS4A/y9eAP8vXgD/L14C/xZUc/8Aktf/EpTF/0B3Mf9OhVD/QKTP/wCH1/8FXLv/J1Eg/y9e + AP83bgD/GTgA/yOXAP8orwD/KK8A/841Df/ONQ3/rCwL/yUCAf92AAD/jAAA/4wCAv+Ci5z/B2XU/wBx + 1P8AhdT/AJHU/wCj1P8gOY//hgAH/4wAAP+MAAD/jgMD/1wVFf+fbWD/zkUh/841Db8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsyqL/0dHR/2FiYP8YNQD/L14A/y9e + AP8nVib/A3HL/wCE1P8XfGz/L14A/ytiNf8OhNP/AGjS/xc6XP8vXgD/L14A/zdvAP8ZNwD/I5kA/yiv + AP8qsAP/zjcP/841Df+sLAv/JQIB/3YAAP+MAAD/jAAA/4osMP8sd87/AFrT/xdk0v8Sh9T/AJXU/wZD + qv97ABP/jAAA/4wAAP+PAwP/cBMT/5eXl//Ou7b/znJZvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAx7+/QNHR0f/R0dH/UFVN/xo5AP8vXgD/Ll4D/w5OmP8Addf/A0q2/ylX + Fv8tWgb/CS6T/wBn1/8HNZv/LVkJ/y9eAP8vXgD/OHAA/xg1AP8jmgD/QLQe/5PFhP/OkoL/zkcj/6wt + C/8lAgH/dQAA/4wAAP+MAAD/jhYW/2SXxf8BTNP/KCmf/4+gtf8NitT/AV6+/zQIYv9/AA//jAAA/44C + Av95FBT/jo6O/87Ozv/Ozc2/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADPz89Ayc/H/4HBbv8XPwr/HT0A/y9eAP8gZEP/AWfV/wBf1/8CMbj/EjFv/xApcf8APc7/ADq6/yFH + L/8vXgD/L14A/y9eAP84cAD/GTUC/2qqV//Azrz/0dHR/87Ozv/Ou7b/rWFN/yUDAf91AAD/jAAA/4wA + AP+MAQH/fVtp/xFb1P8HNL3/aWSc/xyB1P8AhdT/AHvH/xYdkv+AAA//jgIC/38UFP+DT0L/zr66/8nG + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAADw/fIFBQ4p/MzOH/4eHh/+Hh4f/X19j/aGiL/wwMQP89PWr/wsLG/+Hh + 4f/h4eH/1NTh/3p64d8NDd9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAM/ExDDh4eG/wMDh/15e4f8VFeH/Dg7d/xMT4f9LS+H/s7Ph/97e4d/f399gAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAfH99ADQ3hvw8P4f8PD+H/Dw/h/xgX2+80L9NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyXRYA4O + 4c8hHdWAr4+PEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////8A////5////wD////D////AP///wD///8A///+AH// + /wD///gAH///AP//4AAP//8A///AAAP//wD//wAAAf//AP/+AAAAf/8A//gAAAA//wD/8AAAAA//AP/A + AAAAB/8A/4AAAAAB/wD+AAAAAAD/APwAAAAAAD8A/AAAAAAAPwD8AAAAAAA/APwAAAAAAD8A/AAAAAAA + PwD4AAAAAAA/APgAAAAAAD8A+AAAAAAAPwD4AAAAAAA/APgAAAAAAD8A+AAAAAAAHwD4AAAAAAAfAPgA + AAAAAB8A+AAAAAAAHwD4AAAAAAAfAPgAAAAAAB8A+AAAAAAAHwD4AAAAAAAfAPgAAAAAAB8A+AAAAAAA + HwDwAAAAAAAfAPAAAAAAAB8A8AAAAAAAHwDwAAAAAAAfAPAAAAAAAB8A8AAAAAAAHwDwAAAAAAAfAPgA + AAAAAB8A/gAAAAAAfwD/gAAAAAH/AP/gAAAAB/8A//gAAAAf/wD//gAAAH//AP//AAAB//8A///AAAf/ + /wD///AAH///AP///AB///8A////Af///wD////D////AP////////8A/////////wA= + + + \ No newline at end of file diff --git a/src/Forms/ToolStripRenderer/MenuBarColorTable.cs b/src/Forms/ToolStripRenderer/MenuBarColorTable.cs new file mode 100644 index 0000000..445b694 --- /dev/null +++ b/src/Forms/ToolStripRenderer/MenuBarColorTable.cs @@ -0,0 +1,116 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace Quad64.src.Forms.ToolStripRenderer +{ + public class CustomToolStripColorTable : ProfessionalColorTable + { + public override Color ToolStripDropDownBackground + { + get + { + return Theme.MAIN_MENUBAR_ITEM_SELECTED; + } + } + + public override Color ImageMarginGradientBegin + { + get + { + return Theme.MAIN_MENUBAR_ITEM_SELECTED; + } + } + + public override Color ImageMarginGradientMiddle + { + get + { + return Theme.MAIN_MENUBAR_ITEM_SELECTED; + } + } + + public override Color ImageMarginGradientEnd + { + get + { + return Theme.MAIN_MENUBAR_ITEM_SELECTED; + } + } + + public override Color MenuBorder + { + get + { + return Theme.MAIN_MENUBAR_BORDER; + } + } + + public override Color MenuItemBorder + { + get + { + return Theme.MAIN_MENUBAR_BORDER; + } + } + + public override Color MenuItemSelected + { + get + { + return Theme.MAIN_MENUBAR_ITEM_HIGHLIGHT; + } + } + + public override Color MenuStripGradientBegin + { + get + { + return Theme.MAIN_MENUBAR_ITEM_SELECTED; + } + } + + public override Color MenuStripGradientEnd + { + get + { + return Theme.MAIN_MENUBAR_ITEM_SELECTED; + } + } + + public override Color MenuItemSelectedGradientBegin + { + get + { + return Theme.MAIN_MENUBAR_ITEM_HIGHLIGHT; + } + } + + public override Color MenuItemSelectedGradientEnd + { + get + { + return Theme.MAIN_MENUBAR_ITEM_HIGHLIGHT; + } + } + + public override Color MenuItemPressedGradientBegin + { + get + { + return Theme.MAIN_MENUBAR_ITEM_SELECTED; + } + } + + public override Color MenuItemPressedGradientEnd + { + get + { + return Theme.MAIN_MENUBAR_ITEM_SELECTED; + } + } + } +} diff --git a/src/JSON/SettingsFile.cs b/src/JSON/SettingsFile.cs index ef9a253..4bbcb13 100644 --- a/src/JSON/SettingsFile.cs +++ b/src/JSON/SettingsFile.cs @@ -23,6 +23,7 @@ public static void SaveGlobalSettings(string profileName) s["EmulatorPath"] = Globals.pathToEmulator; s["AutoSaveOnLaunchROM"] = Globals.autoSaveWhenClickEmulator.ToString(); s["FieldOfView"] = Globals.FOV.ToString(); + s["Theme"] = Theme.lastThemePath; string savePath = "./data/profiles/" + profileName + "/"; Directory.CreateDirectory(savePath); // Create directory if it doesn't exist! @@ -58,6 +59,8 @@ public static void LoadGlobalSettings(string profileName) Globals.autoSaveWhenClickEmulator = bool.Parse(o["AutoSaveOnLaunchROM"].ToString()); if (o["FieldOfView"] != null) Globals.FOV = int.Parse(o["FieldOfView"].ToString()); + if (o["Theme"] != null) + Theme.LoadColorsFromJSONFile(o["Theme"].ToString()); } } } diff --git a/src/LevelInfo/Level.cs b/src/LevelInfo/Level.cs index 1369d7c..c5cb4db 100644 --- a/src/LevelInfo/Level.cs +++ b/src/LevelInfo/Level.cs @@ -370,6 +370,7 @@ public void setAreaBackgroundInfo(ref Area area) } public Level(ushort levelID, ushort startArea) { + ROM.Instance.clearSegments(); this.levelID = levelID; currentAreaID = startArea; diff --git a/src/Scripts/GeoScripts.cs b/src/Scripts/GeoScripts.cs index f6e613d..ed5a45d 100644 --- a/src/Scripts/GeoScripts.cs +++ b/src/Scripts/GeoScripts.cs @@ -61,7 +61,6 @@ public static void parse(ref Model3D mdl, ref Level lvl, byte seg, uint off, byt byte[] cmd = rom.getSubArray_safe(data, off, cmdLen); string desc = "Unknown command"; bool alreadyAdded = false; - //rom.printArray(cmd, cmdLen); if (cmd[0] != 0x05 && nodeCurrent.isSwitch && nodeCurrent.switchPos != 1) { if (nodeCurrent.switchFunc == 0x8029DB48) @@ -310,7 +309,6 @@ private static void CMD_15(ref Model3D mdl, ref Level lvl, byte[] cmd, byte? are return; uint off = bytesToInt(cmd, 5, 3); mdl.builder.Offset = getTotalOffset(); - // Don't bother processing duplicate display lists. if (!mdl.hasGeoDisplayList(off)) { diff --git a/src/Theme.cs b/src/Theme.cs new file mode 100644 index 0000000..3d1692a --- /dev/null +++ b/src/Theme.cs @@ -0,0 +1,358 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Drawing; +using System.IO; +using Newtonsoft.Json.Linq; + +namespace Quad64.src +{ + class Theme + { + /*** Default colors to fallback on if a specific color is not defined ***/ + public static Color DEFAULT_BACKGROUND = Color.FromArgb(0xF0, 0xF0, 0xF0); + public static Color DEFAULT_TEXT = Color.FromArgb(0x00, 0x00, 0x00); + public static Color DEFAULT_PANEL_BACKGROUND = Color.FromArgb(0xE0, 0xE0, 0xE0); + public static Color DEFAULT_LISTBOX_BACKGROUND = Color.FromArgb(0xF0, 0xF0, 0xF0); + public static Color DEFAULT_LISTBOX_TEXT = Color.FromArgb(0x00, 0x00, 0x00); + public static Color DEFAULT_LISTBOX_HIGHLIGHT = Color.FromArgb(0x00, 0x78, 0xD7); + public static Color DEFAULT_LISTBOX_HIGHLIGHTEDTEXT = Color.FromArgb(0xF0, 0xF0, 0xF0); + public static Color DEFAULT_TEXTBOX_BACKGROUND = Color.FromArgb(0xF0, 0xF0, 0xF0); + public static Color DEFAULT_TEXTBOX_TEXT = Color.FromArgb(0x00, 0x00, 0x00); + public static Color DEFAULT_TEXTBOX_COMMENTS = Color.FromArgb(0x00, 0x80, 0x00); + public static Color DEFAULT_DROPDOWNLIST_BACKGROUND = Color.FromArgb(0xF0, 0xF0, 0xF0); + public static Color DEFAULT_DROPDOWNLIST_TEXT = Color.FromArgb(0x00, 0x00, 0x00); + public static Color DEFAULT_BUTTON_BACKGROUND = Color.FromArgb(0xF0, 0xF0, 0xF0); + public static Color DEFAULT_BUTTON_TEXT = Color.FromArgb(0x00, 0x00, 0x00); + public static Color DEFAULT_UPDOWN_BACKGROUND = Color.FromArgb(0xF0, 0xF0, 0xF0); + public static Color DEFAULT_UPDOWN_TEXT = Color.FromArgb(0x00, 0x00, 0x00); + + /******************** Main Form Specifics ********************/ + public static Color MAIN_BACKGROUND = Color.FromArgb(0xF0, 0xF0, 0xF0); + + public static Color MAIN_TREEVIEW_BACKGROUND = Color.FromArgb(0xF0, 0xF0, 0xF0); + public static Color MAIN_TREEVIEW_TEXT = Color.FromArgb(0, 0, 0); + public static Color MAIN_TREEVIEW_HIGHTLIGHT = Color.FromArgb(0x70, 0xBB, 0xDB); + public static Color MAIN_TREEVIEW_3DOBJECTS = Color.FromArgb(192, 0, 0); + public static Color MAIN_TREEVIEW_MACRO = Color.FromArgb(0, 0, 192); + public static Color MAIN_TREEVIEW_SPECIAL = Color.FromArgb(0, 192, 0); + public static Color MAIN_TREEVIEW_WARPS = Color.FromArgb(0, 0, 0); + + public static Color MAIN_PROPERTIES_BACKGROUND = Color.FromArgb(0xF0, 0xF0, 0xF0); + public static Color MAIN_PROPERTIES_LINES = Color.FromArgb(0xA9, 0xA9, 0xA9); + public static Color MAIN_PROPERTIES_TEXT = Color.FromArgb(0, 0, 0); + + public static Color MAIN_CONTROLS_BACKGROUND = Color.FromArgb(0xDC, 0xDC, 0xDC); + public static Color MAIN_CONTROLS_TEXT = Color.FromArgb(0, 0, 0); + public static Color MAIN_CONTROLS_DROPDOWNLIST_BACKGROUND = Color.FromArgb(0xDC, 0xDC, 0xDC); + public static Color MAIN_CONTROLS_DROPDOWNLIST_TEXT = Color.FromArgb(0, 0, 0); + public static Color MAIN_CONTROLS_BUTTON_BACKGROUND = Color.FromArgb(0xDC, 0xDC, 0xDC); + public static Color MAIN_CONTROLS_BUTTON_TEXT = Color.FromArgb(0, 0, 0); + public static Color MAIN_CONTROLS_UPDOWN_BACKGROUND = Color.FromArgb(0xDC, 0xDC, 0xDC); + public static Color MAIN_CONTROLS_UPDOWN_TEXT = Color.FromArgb(0, 0, 0); + + public static Color MAIN_MENUBAR_BORDER = Color.FromArgb(0, 0, 0); + public static Color MAIN_MENUBAR_TEXT = Color.FromArgb(0, 0, 0); + public static Color MAIN_MENUBAR_BACKGROUND = Color.FromArgb(0xD3, 0xD3, 0xD3); + public static Color MAIN_MENUBAR_ITEM_SELECTED = Color.FromArgb(0xF9, 0xF9, 0xF9); + public static Color MAIN_MENUBAR_ITEM_HIGHLIGHT = Color.FromArgb(0xB5, 0xD7, 0xF3); + + /******************** Object Combo Specifics ********************/ + + public static Color COMBOS_BACKGROUND = Color.FromArgb(255, 255, 255); + public static Color COMBOS_TEXT = Color.FromArgb(0, 0, 0); + + public static Color COMBOS_3DOBJECTS_TITLE = Color.DarkRed; + public static Color COMBOS_3DOBJECTS_MAIN = Color.FromArgb(250, 250, 250); + public static Color COMBOS_3DOBJECTS_SECONDARY = Color.FromArgb(250, 240, 240); + public static Color COMBOS_3DOBJECTS_HIGHLIGHT = Color.FromArgb(200, 200, 255); + public static Color COMBOS_3DOBJECTS_HIGHLIGHT_TEXT = Color.FromArgb(0, 0, 0); + + public static Color COMBOS_MACRO_TITLE = Color.DarkBlue; + public static Color COMBOS_MACRO_MAIN = Color.FromArgb(250, 250, 250); + public static Color COMBOS_MACRO_SECONDARY = Color.FromArgb(240, 240, 250); + public static Color COMBOS_MACRO_HIGHLIGHT = Color.FromArgb(200, 200, 255); + public static Color COMBOS_MACRO_HIGHLIGHT_TEXT = Color.FromArgb(0, 0, 0); + + public static Color COMBOS_SPECIAL_TITLE = Color.DarkGreen; + public static Color COMBOS_SPECIAL_MAIN = Color.FromArgb(250, 250, 250); + public static Color COMBOS_SPECIAL_SECONDARY = Color.FromArgb(240, 250, 240); + public static Color COMBOS_SPECIAL_HIGHLIGHT = Color.FromArgb(200, 200, 255); + public static Color COMBOS_SPECIAL_HIGHLIGHT_TEXT = Color.FromArgb(0, 0, 0); + + public static Color COMBOS_OTHER_TITLE = Color.DimGray; + public static Color COMBOS_OTHER_MAIN = Color.FromArgb(250, 250, 250); + public static Color COMBOS_OTHER_SECONDARY = Color.FromArgb(240, 240, 240); + public static Color COMBOS_OTHER_HIGHLIGHT = Color.FromArgb(200, 200, 255); + public static Color COMBOS_OTHER_HIGHLIGHT_TEXT = Color.FromArgb(0, 0, 0); + + /******************** Texture Editor Specifics ********************/ + public static Color TEXTURES_BACKGROUND = Color.FromArgb(240, 240, 240); + + public static Color TEXTURES_LEVEL_TEXT = Color.FromArgb(0, 0, 0); + public static Color TEXTURES_LEVEL_BUTTON_BACKGROUND = Color.FromArgb(225, 225, 225); + public static Color TEXTURES_LEVEL_BUTTON_TEXT = Color.FromArgb(0, 0, 0); + public static Color TEXTURES_LEVEL_BACKGROUND_LEFT = Color.FromArgb(0xB2, 0x22, 0x22); + public static Color TEXTURES_LEVEL_BACKGROUND_MIDDLE = Color.FromArgb(0x00, 0x80, 0x00); + public static Color TEXTURES_LEVEL_BACKGROUND_RIGHT = Color.FromArgb(0x64, 0x95, 0xED); + + public static Color TEXTURES_OTHER_TEXT = Color.FromArgb(0, 0, 0); + public static Color TEXTURES_OTHER_BUTTON_BACKGROUND = Color.FromArgb(225, 225, 225); + public static Color TEXTURES_OTHER_BUTTON_TEXT = Color.FromArgb(0, 0, 0); + public static Color TEXTURES_OTHER_BACKGROUND_LEFT = Color.FromArgb(0xB2, 0x22, 0x22); + public static Color TEXTURES_OTHER_BACKGROUND_MIDDLE = Color.FromArgb(0x00, 0x80, 0x00); + public static Color TEXTURES_OTHER_BACKGROUND_RIGHT = Color.FromArgb(0x64, 0x95, 0xED); + + public static Color TEXTURES_SKY_TEXT = Color.FromArgb(0, 0, 0); + public static Color TEXTURES_SKY_BUTTON_BACKGROUND = Color.FromArgb(225, 225, 225); + public static Color TEXTURES_SKY_BUTTON_TEXT = Color.FromArgb(0, 0, 0); + public static Color TEXTURES_SKY_BACKGROUND_LEFT = Color.FromArgb(0x66, 0xCD, 0xAA); + public static Color TEXTURES_SKY_BACKGROUND_RIGHT = Color.FromArgb(0x64, 0x95, 0xED); + + /******************** Script Dumps Specifics ********************/ + public static Color SCRIPTDUMPS_BACKGROUND = Color.FromArgb(0xF0, 0xF0, 0xF0); + public static Color SCRIPTDUMPS_TEXT = Color.FromArgb(0x00, 0x00, 0x00); + public static Color SCRIPTDUMPS_OPTIONS_BACKGROUND = Color.FromArgb(0xDC, 0xDC, 0xDC); + + public static Color SCRIPTDUMPS_LEVEL_TEXTBOX_BACKGROUND = Color.FromArgb(0xF0, 0xF0, 0xF0); + public static Color SCRIPTDUMPS_LEVEL_TEXTBOX_TEXT = Color.FromArgb(0x00, 0x00, 0x00); + public static Color SCRIPTDUMPS_LEVEL_TEXTBOX_COMMENTS = Color.FromArgb(0x00, 0x80, 0x00); + + public static Color SCRIPTDUMPS_GEOLAYOUT_TEXTBOX_BACKGROUND = Color.FromArgb(0xF0, 0xF0, 0xF0); + public static Color SCRIPTDUMPS_GEOLAYOUT_TEXTBOX_TEXT = Color.FromArgb(0x00, 0x00, 0x00); + public static Color SCRIPTDUMPS_GEOLAYOUT_TEXTBOX_COMMENTS = Color.FromArgb(0x00, 0x80, 0x00); + + public static Color SCRIPTDUMPS_FAST3D_TEXTBOX_BACKGROUND = Color.FromArgb(0xF0, 0xF0, 0xF0); + public static Color SCRIPTDUMPS_FAST3D_TEXTBOX_TEXT = Color.FromArgb(0x00, 0x00, 0x00); + public static Color SCRIPTDUMPS_FAST3D_TEXTBOX_COMMENTS = Color.FromArgb(0x00, 0x80, 0x00); + public static Color SCRIPTDUMPS_FAST3D_LISTBOX_BACKGROUND = Color.FromArgb(0xF0, 0xF0, 0xF0); + public static Color SCRIPTDUMPS_FAST3D_LISTBOX_TEXT = Color.FromArgb(0x00, 0x00, 0x00); + public static Color SCRIPTDUMPS_FAST3D_LISTBOX_HIGHLIGHT = Color.FromArgb(0x00, 0x78, 0xD7); + public static Color SCRIPTDUMPS_FAST3D_LISTBOX_HIGHLIGHTEDTEXT = Color.FromArgb(0xF0, 0xF0, 0xF0); + + public static Color SCRIPTDUMPS_BEHAVIOR_TEXTBOX_BACKGROUND = Color.FromArgb(0xF0, 0xF0, 0xF0); + public static Color SCRIPTDUMPS_BEHAVIOR_TEXTBOX_TEXT = Color.FromArgb(0x00, 0x00, 0x00); + public static Color SCRIPTDUMPS_BEHAVIOR_TEXTBOX_COMMENTS = Color.FromArgb(0x00, 0x80, 0x00); + + public static Color SCRIPTDUMPS_OBJECTSTAB_LISTBOX_BACKGROUND = Color.FromArgb(0xF0, 0xF0, 0xF0); + public static Color SCRIPTDUMPS_OBJECTSTAB_LISTBOX_TEXT = Color.FromArgb(0x00, 0x00, 0x00); + public static Color SCRIPTDUMPS_OBJECTSTAB_LISTBOX_HIGHLIGHT = Color.FromArgb(0x00, 0x78, 0xD7); + public static Color SCRIPTDUMPS_OBJECTSTAB_LISTBOX_HIGHLIGHTEDTEXT = Color.FromArgb(0xF0, 0xF0, 0xF0); + + public static Color SCRIPTDUMPS_LEVELTAB_GEOLAYOUT_AREAPANEL_BACKGROUND = Color.FromArgb(0xF5, 0xF5, 0xF5); + public static Color SCRIPTDUMPS_LEVELTAB_GEOLAYOUT_AREAPANEL_TEXT = Color.FromArgb(0x00, 0x00, 0x00); + public static Color SCRIPTDUMPS_LEVELTAB_FAST3D_AREAPANEL_BACKGROUND = Color.FromArgb(0xF5, 0xF5, 0xF5); + public static Color SCRIPTDUMPS_LEVELTAB_FAST3D_AREAPANEL_TEXT = Color.FromArgb(0x00, 0x00, 0x00); + + public static Color SCRIPTDUMPS_OBJECTSTAB_SORT_DROPDOWNLIST_BACKGROUND = Color.FromArgb(0xF0, 0xF0, 0xF0); + public static Color SCRIPTDUMPS_OBJECTSTAB_SORT_DROPDOWNLIST_TEXT = Color.FromArgb(0x00, 0x00, 0x00); + + public static void LoadColor(ref Color color, Color default_color, JToken token) + { + if (token != null) + { + if (token["R"] != null && token["G"] != null && token["B"] != null) + { + byte R, G, B; + bool red = byte.TryParse(token["R"].ToString(), out R); + bool green = byte.TryParse(token["G"].ToString(), out G); + bool blue = byte.TryParse(token["B"].ToString(), out B); + + if (red && green && blue) + { + color = Color.FromArgb(R, G, B); + return; + } + } + } + + // Load failed, so use default color instead. + color = default_color; + } + + public static string lastThemePath = ""; + + public static void LoadColorsFromJSONFile(string filepath) + { + if (File.Exists(filepath)) + { + lastThemePath = filepath; + + // Reset defaults + DEFAULT_BACKGROUND = Color.FromArgb(0xF0, 0xF0, 0xF0); + DEFAULT_TEXT = Color.FromArgb(0x00, 0x00, 0x00); + DEFAULT_PANEL_BACKGROUND = Color.FromArgb(0xDC, 0xDC, 0xDC); + DEFAULT_LISTBOX_BACKGROUND = Color.FromArgb(0xF0, 0xF0, 0xF0); + DEFAULT_LISTBOX_TEXT = Color.FromArgb(0x00, 0x00, 0x00); + DEFAULT_LISTBOX_HIGHLIGHT = Color.FromArgb(0x00, 0x78, 0xD7); + DEFAULT_LISTBOX_HIGHLIGHTEDTEXT = Color.FromArgb(0xFF, 0xFF, 0xFF); + DEFAULT_TEXTBOX_BACKGROUND = Color.FromArgb(0xFF, 0xFF, 0xFF); + DEFAULT_TEXTBOX_TEXT = Color.FromArgb(0x00, 0x00, 0x00); + DEFAULT_TEXTBOX_COMMENTS = Color.FromArgb(0x00, 0x80, 0x00); + DEFAULT_DROPDOWNLIST_BACKGROUND = Color.FromArgb(0xD0, 0xD0, 0xD0); + DEFAULT_DROPDOWNLIST_TEXT = Color.FromArgb(0x00, 0x00, 0x00); + DEFAULT_BUTTON_BACKGROUND = Color.FromArgb(0xF0, 0xF0, 0xF0); + DEFAULT_BUTTON_TEXT = Color.FromArgb(0x00, 0x00, 0x00); + DEFAULT_UPDOWN_BACKGROUND = Color.FromArgb(0xF0, 0xF0, 0xF0); + DEFAULT_UPDOWN_TEXT = Color.FromArgb(0x00, 0x00, 0x00); + + + string json = File.ReadAllText(filepath); + JObject o = JObject.Parse(json); + if (o["Defaults"] != null) + { + LoadColor(ref DEFAULT_BACKGROUND, DEFAULT_BACKGROUND, o["Defaults"]["Background"]); + LoadColor(ref DEFAULT_TEXT, DEFAULT_TEXT, o["Defaults"]["Text"]); + LoadColor(ref DEFAULT_PANEL_BACKGROUND, DEFAULT_PANEL_BACKGROUND, o["Defaults"]["Panel-Background"]); + LoadColor(ref DEFAULT_LISTBOX_BACKGROUND, DEFAULT_LISTBOX_BACKGROUND, o["Defaults"]["ListBox-Background"]); + LoadColor(ref DEFAULT_LISTBOX_TEXT, DEFAULT_LISTBOX_TEXT, o["Defaults"]["ListBox-Text"]); + LoadColor(ref DEFAULT_LISTBOX_HIGHLIGHT, DEFAULT_LISTBOX_HIGHLIGHT, o["Defaults"]["ListBox-Highlight"]); + LoadColor(ref DEFAULT_LISTBOX_HIGHLIGHTEDTEXT, DEFAULT_LISTBOX_HIGHLIGHTEDTEXT, o["Defaults"]["ListBox-HighlightedText"]); + LoadColor(ref DEFAULT_TEXTBOX_BACKGROUND, DEFAULT_TEXTBOX_BACKGROUND, o["Defaults"]["TextBox-Background"]); + LoadColor(ref DEFAULT_TEXTBOX_TEXT, DEFAULT_TEXTBOX_TEXT, o["Defaults"]["TextBox-Text"]); + LoadColor(ref DEFAULT_TEXTBOX_COMMENTS, DEFAULT_TEXTBOX_COMMENTS, o["Defaults"]["TextBox-Comments"]); + LoadColor(ref DEFAULT_DROPDOWNLIST_BACKGROUND, DEFAULT_DROPDOWNLIST_BACKGROUND, o["Defaults"]["DropDown-Background"]); + LoadColor(ref DEFAULT_DROPDOWNLIST_TEXT, DEFAULT_DROPDOWNLIST_TEXT, o["Defaults"]["DropDown-Text"]); + LoadColor(ref DEFAULT_BUTTON_BACKGROUND, DEFAULT_BUTTON_BACKGROUND, o["Defaults"]["Button-Background"]); + LoadColor(ref DEFAULT_BUTTON_TEXT, DEFAULT_BUTTON_TEXT, o["Defaults"]["Button-Text"]); + LoadColor(ref DEFAULT_UPDOWN_BACKGROUND, DEFAULT_UPDOWN_BACKGROUND, o["Defaults"]["NumericUpDown-Background"]); + LoadColor(ref DEFAULT_UPDOWN_TEXT, DEFAULT_UPDOWN_TEXT, o["Defaults"]["NumericUpDown-Text"]); + } + + if (o["ScriptDumps"] != null) + { + LoadColor(ref SCRIPTDUMPS_BACKGROUND, DEFAULT_BACKGROUND, o["ScriptDumps"]["Background"]); + LoadColor(ref SCRIPTDUMPS_TEXT, DEFAULT_TEXT, o["ScriptDumps"]["Text"]); + LoadColor(ref SCRIPTDUMPS_OPTIONS_BACKGROUND, DEFAULT_PANEL_BACKGROUND, o["ScriptDumps"]["Panel-Background"]); + + LoadColor(ref SCRIPTDUMPS_OBJECTSTAB_SORT_DROPDOWNLIST_BACKGROUND, DEFAULT_DROPDOWNLIST_BACKGROUND, o["ScriptDumps"]["DropDown-Background"]); + LoadColor(ref SCRIPTDUMPS_OBJECTSTAB_SORT_DROPDOWNLIST_TEXT, DEFAULT_DROPDOWNLIST_TEXT, o["ScriptDumps"]["DropDown-Text"]); + + LoadColor(ref SCRIPTDUMPS_LEVELTAB_GEOLAYOUT_AREAPANEL_BACKGROUND, DEFAULT_PANEL_BACKGROUND, o["ScriptDumps"]["GeoLayoutScripts-AreaPanel-Background"]); + LoadColor(ref SCRIPTDUMPS_LEVELTAB_GEOLAYOUT_AREAPANEL_TEXT, DEFAULT_TEXT, o["ScriptDumps"]["GeoLayoutScripts-AreaPanel-Text"]); + LoadColor(ref SCRIPTDUMPS_LEVELTAB_FAST3D_AREAPANEL_BACKGROUND, DEFAULT_PANEL_BACKGROUND, o["ScriptDumps"]["Fast3DScripts-AreaPanel-Background"]); + LoadColor(ref SCRIPTDUMPS_LEVELTAB_FAST3D_AREAPANEL_TEXT, DEFAULT_TEXT, o["ScriptDumps"]["Fast3DScripts-AreaPanel-Text"]); + + LoadColor(ref SCRIPTDUMPS_OBJECTSTAB_LISTBOX_BACKGROUND, DEFAULT_LISTBOX_BACKGROUND, o["ScriptDumps"]["Objects-ListBox-Background"]); + LoadColor(ref SCRIPTDUMPS_OBJECTSTAB_LISTBOX_TEXT, DEFAULT_LISTBOX_TEXT, o["ScriptDumps"]["Objects-ListBox-Background"]); + LoadColor(ref SCRIPTDUMPS_OBJECTSTAB_LISTBOX_HIGHLIGHT, DEFAULT_LISTBOX_HIGHLIGHT, o["ScriptDumps"]["Objects-ListBox-Highlight"]); + LoadColor(ref SCRIPTDUMPS_OBJECTSTAB_LISTBOX_HIGHLIGHTEDTEXT, DEFAULT_LISTBOX_HIGHLIGHTEDTEXT, o["ScriptDumps"]["Objects-ListBox-HighlightedText"]); + + LoadColor(ref SCRIPTDUMPS_FAST3D_LISTBOX_BACKGROUND, DEFAULT_LISTBOX_BACKGROUND, o["ScriptDumps"]["Fast3DScripts-ListBox-Background"]); + LoadColor(ref SCRIPTDUMPS_FAST3D_LISTBOX_TEXT, DEFAULT_LISTBOX_TEXT, o["ScriptDumps"]["Fast3DScripts-ListBox-Text"]); + LoadColor(ref SCRIPTDUMPS_FAST3D_LISTBOX_HIGHLIGHT, DEFAULT_LISTBOX_HIGHLIGHT, o["ScriptDumps"]["Fast3DScripts-ListBox-Highlight"]); + LoadColor(ref SCRIPTDUMPS_FAST3D_LISTBOX_HIGHLIGHTEDTEXT, DEFAULT_LISTBOX_HIGHLIGHTEDTEXT, o["ScriptDumps"]["Fast3DScripts-ListBox-HighlightedText"]); + + LoadColor(ref SCRIPTDUMPS_LEVEL_TEXTBOX_BACKGROUND, DEFAULT_TEXTBOX_BACKGROUND, o["ScriptDumps"]["LevelScripts-Background"]); + LoadColor(ref SCRIPTDUMPS_LEVEL_TEXTBOX_TEXT, DEFAULT_TEXTBOX_TEXT, o["ScriptDumps"]["LevelScripts-Text"]); + LoadColor(ref SCRIPTDUMPS_LEVEL_TEXTBOX_COMMENTS, DEFAULT_TEXTBOX_COMMENTS, o["ScriptDumps"]["LevelScripts-Comments"]); + + LoadColor(ref SCRIPTDUMPS_GEOLAYOUT_TEXTBOX_BACKGROUND, DEFAULT_TEXTBOX_BACKGROUND, o["ScriptDumps"]["GeoLayoutScripts-Background"]); + LoadColor(ref SCRIPTDUMPS_GEOLAYOUT_TEXTBOX_TEXT, DEFAULT_TEXTBOX_TEXT, o["ScriptDumps"]["GeoLayoutScripts-Text"]); + LoadColor(ref SCRIPTDUMPS_GEOLAYOUT_TEXTBOX_COMMENTS, DEFAULT_TEXTBOX_COMMENTS, o["ScriptDumps"]["GeoLayoutScripts-Comments"]); + + LoadColor(ref SCRIPTDUMPS_FAST3D_TEXTBOX_BACKGROUND, DEFAULT_TEXTBOX_BACKGROUND, o["ScriptDumps"]["Fast3DScripts-Background"]); + LoadColor(ref SCRIPTDUMPS_FAST3D_TEXTBOX_TEXT, DEFAULT_TEXTBOX_TEXT, o["ScriptDumps"]["Fast3DScripts-Text"]); + LoadColor(ref SCRIPTDUMPS_FAST3D_TEXTBOX_COMMENTS, DEFAULT_TEXTBOX_COMMENTS, o["ScriptDumps"]["Fast3DScripts-Comments"]); + + LoadColor(ref SCRIPTDUMPS_BEHAVIOR_TEXTBOX_BACKGROUND, DEFAULT_TEXTBOX_BACKGROUND, o["ScriptDumps"]["BehaviorScripts-Background"]); + LoadColor(ref SCRIPTDUMPS_BEHAVIOR_TEXTBOX_TEXT, DEFAULT_TEXTBOX_TEXT, o["ScriptDumps"]["BehaviorScripts-Text"]); + LoadColor(ref SCRIPTDUMPS_BEHAVIOR_TEXTBOX_COMMENTS, DEFAULT_TEXTBOX_COMMENTS, o["ScriptDumps"]["BehaviorScripts-Comments"]); + } + + if (o["Main"] != null) + { + LoadColor(ref MAIN_BACKGROUND, DEFAULT_BACKGROUND, o["Main"]["Background"]); + + LoadColor(ref MAIN_TREEVIEW_BACKGROUND, DEFAULT_BACKGROUND, o["Main"]["TreeView-Background"]); + LoadColor(ref MAIN_TREEVIEW_TEXT, DEFAULT_TEXT, o["Main"]["TreeView-Text"]); + LoadColor(ref MAIN_TREEVIEW_HIGHTLIGHT, Color.FromArgb(0x70, 0xBB, 0xDB), o["Main"]["TreeView-Highlight"]); + LoadColor(ref MAIN_TREEVIEW_3DOBJECTS, Color.FromArgb(192, 0, 0), o["Main"]["TreeView-3DObjectsLabel"]); + LoadColor(ref MAIN_TREEVIEW_MACRO, Color.FromArgb(0, 0, 192), o["Main"]["TreeView-MacroObjectsLabel"]); + LoadColor(ref MAIN_TREEVIEW_SPECIAL, Color.FromArgb(0, 192, 0), o["Main"]["TreeView-SpecialObjectsLabel"]); + LoadColor(ref MAIN_TREEVIEW_WARPS, Color.FromArgb(0, 0, 0), o["Main"]["TreeView-WarpsLabel"]); + + LoadColor(ref MAIN_PROPERTIES_BACKGROUND, DEFAULT_BACKGROUND, o["Main"]["Properties-Background"]); + LoadColor(ref MAIN_PROPERTIES_TEXT, DEFAULT_TEXT, o["Main"]["Properties-Text"]); + LoadColor(ref MAIN_PROPERTIES_LINES, Color.FromArgb(0xA9, 0xA9, 0xA9), o["Main"]["Properties-Lines"]); + + LoadColor(ref MAIN_CONTROLS_BACKGROUND, Color.FromArgb(0x90, 0x90, 0x90), o["Main"]["Controls-Background"]); + LoadColor(ref MAIN_CONTROLS_TEXT, DEFAULT_TEXT, o["Main"]["Controls-Text"]); + LoadColor(ref MAIN_CONTROLS_BUTTON_BACKGROUND, DEFAULT_BUTTON_BACKGROUND, o["Main"]["Controls-Button-Background"]); + LoadColor(ref MAIN_CONTROLS_BUTTON_TEXT, DEFAULT_BUTTON_TEXT, o["Main"]["Controls-Button-Text"]); + LoadColor(ref MAIN_CONTROLS_DROPDOWNLIST_BACKGROUND, DEFAULT_DROPDOWNLIST_BACKGROUND, o["Main"]["Controls-DropDown-Background"]); + LoadColor(ref MAIN_CONTROLS_DROPDOWNLIST_TEXT, DEFAULT_DROPDOWNLIST_TEXT, o["Main"]["Controls-DropDown-Text"]); + LoadColor(ref MAIN_CONTROLS_UPDOWN_BACKGROUND, DEFAULT_UPDOWN_BACKGROUND, o["Main"]["Controls-NumericUpDown-Background"]); + LoadColor(ref MAIN_CONTROLS_UPDOWN_TEXT, DEFAULT_UPDOWN_TEXT, o["Main"]["Controls-NumericUpDown-Text"]); + + LoadColor(ref MAIN_MENUBAR_TEXT, DEFAULT_TEXT, o["Main"]["MenuBar-Text"]); + LoadColor(ref MAIN_MENUBAR_BACKGROUND, DEFAULT_PANEL_BACKGROUND, o["Main"]["MenuBar-Background"]); + LoadColor(ref MAIN_MENUBAR_BORDER, Color.Black, o["Main"]["MenuBar-Item-Border"]); + LoadColor(ref MAIN_MENUBAR_ITEM_SELECTED, Color.FromArgb(0xF9, 0xF9, 0xF9), o["Main"]["MenuBar-Item-Selected"]); + LoadColor(ref MAIN_MENUBAR_ITEM_HIGHLIGHT, Color.FromArgb(0xB5, 0xD7, 0xF3), o["Main"]["MenuBar-Item-Highlight"]); + } + + if (o["TextureEditor"] != null) + { + LoadColor(ref TEXTURES_BACKGROUND, DEFAULT_BACKGROUND, o["TextureEditor"]["Background"]); + + LoadColor(ref TEXTURES_LEVEL_BACKGROUND_LEFT, Color.FromArgb(0xB2, 0x22, 0x22), o["TextureEditor"]["LevelTab-Background-Left"]); + LoadColor(ref TEXTURES_LEVEL_BACKGROUND_MIDDLE, Color.FromArgb(0x00, 0x80, 0x00), o["TextureEditor"]["LevelTab-Background-Middle"]); + LoadColor(ref TEXTURES_LEVEL_BACKGROUND_RIGHT, Color.FromArgb(0x64, 0x95, 0xED), o["TextureEditor"]["LevelTab-Background-Right"]); + LoadColor(ref TEXTURES_LEVEL_TEXT, DEFAULT_TEXT, o["TextureEditor"]["LevelTab-Text"]); + LoadColor(ref TEXTURES_LEVEL_BUTTON_BACKGROUND, DEFAULT_BUTTON_BACKGROUND, o["TextureEditor"]["LevelTab-Button-Background"]); + LoadColor(ref TEXTURES_LEVEL_BUTTON_TEXT, DEFAULT_BUTTON_TEXT, o["TextureEditor"]["LevelTab-Button-Text"]); + + LoadColor(ref TEXTURES_OTHER_BACKGROUND_LEFT, Color.FromArgb(0xB2, 0x22, 0x22), o["TextureEditor"]["OtherTab-Background-Left"]); + LoadColor(ref TEXTURES_OTHER_BACKGROUND_MIDDLE, Color.FromArgb(0x00, 0x80, 0x00), o["TextureEditor"]["OtherTab-Background-Middle"]); + LoadColor(ref TEXTURES_OTHER_BACKGROUND_RIGHT, Color.FromArgb(0x64, 0x95, 0xED), o["TextureEditor"]["OtherTab-Background-Right"]); + LoadColor(ref TEXTURES_OTHER_TEXT, DEFAULT_TEXT, o["TextureEditor"]["OtherTab-Text"]); + LoadColor(ref TEXTURES_OTHER_BUTTON_BACKGROUND, DEFAULT_BUTTON_BACKGROUND, o["TextureEditor"]["OtherTab-Button-Background"]); + LoadColor(ref TEXTURES_OTHER_BUTTON_TEXT, DEFAULT_BUTTON_TEXT, o["TextureEditor"]["OtherTab-Button-Text"]); + + LoadColor(ref TEXTURES_SKY_BACKGROUND_LEFT, Color.FromArgb(0x66, 0xCD, 0xAA), o["TextureEditor"]["SkyTab-Background-Left"]); + LoadColor(ref TEXTURES_SKY_BACKGROUND_RIGHT, Color.FromArgb(0x64, 0x95, 0xED), o["TextureEditor"]["SkyTab-Background-Right"]); + LoadColor(ref TEXTURES_SKY_TEXT, DEFAULT_TEXT, o["TextureEditor"]["SkyTab-Text"]); + LoadColor(ref TEXTURES_SKY_BUTTON_BACKGROUND, DEFAULT_BUTTON_BACKGROUND, o["TextureEditor"]["SkyTab-Button-Background"]); + LoadColor(ref TEXTURES_SKY_BUTTON_TEXT, DEFAULT_BUTTON_TEXT, o["TextureEditor"]["SkyTab-Button-Text"]); + } + + if (o["ObjectCombos"] != null) + { + LoadColor(ref COMBOS_BACKGROUND, DEFAULT_BACKGROUND, o["ObjectCombos"]["Background"]); + LoadColor(ref COMBOS_TEXT, DEFAULT_TEXT, o["ObjectCombos"]["Text"]); + + LoadColor(ref COMBOS_3DOBJECTS_TITLE, Color.DarkRed, o["ObjectCombos"]["3DObjects-Title"]); + LoadColor(ref COMBOS_3DOBJECTS_MAIN, Color.FromArgb(250, 250, 250), o["ObjectCombos"]["3DObjects-Item"]); + LoadColor(ref COMBOS_3DOBJECTS_SECONDARY, Color.FromArgb(250, 240, 240), o["ObjectCombos"]["3DObjects-Item-Alt"]); + LoadColor(ref COMBOS_3DOBJECTS_HIGHLIGHT, Color.FromArgb(200, 200, 255), o["ObjectCombos"]["3DObjects-Item-Highlight"]); + LoadColor(ref COMBOS_3DOBJECTS_HIGHLIGHT_TEXT, DEFAULT_TEXT, o["ObjectCombos"]["3DObjects-Item-Highlight-Text"]); + + LoadColor(ref COMBOS_MACRO_TITLE, Color.DarkBlue, o["ObjectCombos"]["MacroObjects-Title"]); + LoadColor(ref COMBOS_MACRO_MAIN, Color.FromArgb(250, 250, 250), o["ObjectCombos"]["MacroObjects-Item"]); + LoadColor(ref COMBOS_MACRO_SECONDARY, Color.FromArgb(240, 240, 250), o["ObjectCombos"]["MacroObjects-Item-Alt"]); + LoadColor(ref COMBOS_MACRO_HIGHLIGHT, Color.FromArgb(200, 200, 255), o["ObjectCombos"]["MacroObjects-Item-Highlight"]); + LoadColor(ref COMBOS_MACRO_HIGHLIGHT_TEXT, DEFAULT_TEXT, o["ObjectCombos"]["MacroObjects-Item-Highlight-Text"]); + + LoadColor(ref COMBOS_SPECIAL_TITLE, Color.DarkGreen, o["ObjectCombos"]["SpecialObjects-Title"]); + LoadColor(ref COMBOS_SPECIAL_MAIN, Color.FromArgb(250, 250, 250), o["ObjectCombos"]["SpecialObjects-Item"]); + LoadColor(ref COMBOS_SPECIAL_SECONDARY, Color.FromArgb(240, 250, 240), o["ObjectCombos"]["SpecialObjects-Item-Alt"]); + LoadColor(ref COMBOS_SPECIAL_HIGHLIGHT, Color.FromArgb(200, 200, 255), o["ObjectCombos"]["SpecialObjects-Item-Highlight"]); + LoadColor(ref COMBOS_SPECIAL_HIGHLIGHT_TEXT, DEFAULT_TEXT, o["ObjectCombos"]["SpecialObjects-Item-Highlight-Text"]); + + LoadColor(ref COMBOS_OTHER_TITLE, Color.DimGray, o["ObjectCombos"]["Other-Title"]); + LoadColor(ref COMBOS_OTHER_MAIN, Color.FromArgb(250, 250, 250), o["ObjectCombos"]["Other-Item"]); + LoadColor(ref COMBOS_OTHER_SECONDARY, Color.FromArgb(240, 240, 240), o["ObjectCombos"]["Other-Item-Alt"]); + LoadColor(ref COMBOS_OTHER_HIGHLIGHT, Color.FromArgb(200, 200, 255), o["ObjectCombos"]["Other-Item-Highlight"]); + LoadColor(ref COMBOS_OTHER_HIGHLIGHT_TEXT, DEFAULT_TEXT, o["ObjectCombos"]["Other-Item-Highlight-Text"]); + } + + } + else + { + Console.WriteLine("THEME ERROR: File: \"" + filepath + "\" could not be found!"); + } + } + } +}