// GfxEd8
// Copyright (C) 2004 Ian Cowburn
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
// $Id$
//
using System;
using System.Windows.Forms;
using GfxEdInterface;
namespace GfxEd8
{
///
/// Description of PaletteForm.
///
public class PaletteForm : System.Windows.Forms.Form
{
private System.Windows.Forms.NumericUpDown m_index;
private System.Windows.Forms.Label m_warning;
private System.Windows.Forms.Button m_cancel;
private System.Windows.Forms.Label m_col;
private System.Windows.Forms.ComboBox m_pal;
private System.Windows.Forms.Button m_ok;
private IPlugin m_plugin;
private Sprite m_sprite;
public PaletteForm(IPlugin plugin, Sprite s)
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
m_plugin=plugin;
m_sprite=s;
CancelButton=m_cancel;
foreach (Colour c in m_plugin.Palette)
{
m_pal.Items.Add(c);
}
m_index.Minimum=0;
m_index.Maximum=m_plugin.MaxColours-1;
m_index.Value=1;
}
public Sprite Sprite
{
get {return m_sprite;}
}
#region Windows Forms Designer generated code
///
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
///
private void InitializeComponent() {
this.m_ok = new System.Windows.Forms.Button();
this.m_pal = new System.Windows.Forms.ComboBox();
this.m_col = new System.Windows.Forms.Label();
this.m_cancel = new System.Windows.Forms.Button();
this.m_warning = new System.Windows.Forms.Label();
this.m_index = new System.Windows.Forms.NumericUpDown();
((System.ComponentModel.ISupportInitialize)(this.m_index)).BeginInit();
this.SuspendLayout();
//
// m_ok
//
this.m_ok.Location = new System.Drawing.Point(160, 64);
this.m_ok.Name = "m_ok";
this.m_ok.Size = new System.Drawing.Size(88, 24);
this.m_ok.TabIndex = 0;
this.m_ok.Text = "OK";
this.m_ok.Click += new System.EventHandler(this.OnOK);
//
// m_pal
//
this.m_pal.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.m_pal.Location = new System.Drawing.Point(80, 24);
this.m_pal.Name = "m_pal";
this.m_pal.Size = new System.Drawing.Size(192, 21);
this.m_pal.TabIndex = 3;
this.m_pal.SelectedIndexChanged += new System.EventHandler(this.OnSelectColour);
//
// m_col
//
this.m_col.Location = new System.Drawing.Point(280, 16);
this.m_col.Name = "m_col";
this.m_col.Size = new System.Drawing.Size(64, 40);
this.m_col.TabIndex = 4;
//
// m_cancel
//
this.m_cancel.Location = new System.Drawing.Point(256, 64);
this.m_cancel.Name = "m_cancel";
this.m_cancel.Size = new System.Drawing.Size(88, 24);
this.m_cancel.TabIndex = 1;
this.m_cancel.Text = "Cancel";
this.m_cancel.Click += new System.EventHandler(this.OnCancel);
//
// m_warning
//
this.m_warning.Location = new System.Drawing.Point(8, 48);
this.m_warning.Name = "m_warning";
this.m_warning.Size = new System.Drawing.Size(144, 40);
this.m_warning.TabIndex = 5;
this.m_warning.Text = "label1";
//
// m_index
//
this.m_index.Location = new System.Drawing.Point(8, 24);
this.m_index.Name = "m_index";
this.m_index.Size = new System.Drawing.Size(56, 20);
this.m_index.TabIndex = 2;
this.m_index.ValueChanged += new System.EventHandler(this.OnSelectIndex);
//
// PaletteForm
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(354, 95);
this.ControlBox = false;
this.Controls.Add(this.m_warning);
this.Controls.Add(this.m_col);
this.Controls.Add(this.m_pal);
this.Controls.Add(this.m_index);
this.Controls.Add(this.m_cancel);
this.Controls.Add(this.m_ok);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "PaletteForm";
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Edit Sprite Palette";
((System.ComponentModel.ISupportInitialize)(this.m_index)).EndInit();
this.ResumeLayout(false);
}
#endregion
void OnSelectIndex(object sender, System.EventArgs e)
{
uint i=(uint)m_index.Value;
m_pal.SelectedIndex=(int)m_sprite.Pal(i);
m_pal.Enabled=m_plugin.SprPalEditable[i];
if (m_pal.Enabled && m_plugin.SprPalCommon[i])
{
m_warning.Text="WARNING:\nThis colour is common amongst all sprites";
}
else
{
m_warning.Text="";
}
}
void OnSelectColour(object sender, System.EventArgs e)
{
uint i=(uint)m_pal.SelectedIndex;
if (m_index.Value!=0 && i==0)
{
Util.Message("The background colour cannot be used\n"+
"for anything but the background");
m_pal.SelectedIndex=1;
}
Colour c=(Colour)m_pal.Items[m_pal.SelectedIndex];
m_sprite.Pal((uint)m_index.Value,(uint)m_pal.SelectedIndex);
m_col.BackColor=c.DrawCol;
}
void OnOK(object sender, System.EventArgs e)
{
DialogResult=DialogResult.OK;
Close();
}
void OnCancel(object sender, System.EventArgs e)
{
DialogResult=DialogResult.Cancel;
Close();
}
}
}