mirror of https://github.com/odrling/Aegisub
435 lines
16 KiB
C#
435 lines
16 KiB
C#
|
/*
|
||
|
SSATool - A collection of utilities for Advanced Substation Alpha
|
||
|
Copyright (C) 2007 Dan Donovan
|
||
|
|
||
|
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; ONLY under version 2
|
||
|
|
||
|
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||
|
*/
|
||
|
|
||
|
|
||
|
|
||
|
using System;
|
||
|
using System.Drawing;
|
||
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using System.ComponentModel;
|
||
|
using System.Windows.Forms;
|
||
|
|
||
|
namespace SSATool
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Summary description for formEffectsEditor.
|
||
|
/// </summary>
|
||
|
public class formEffectsEditor : System.Windows.Forms.Form
|
||
|
{
|
||
|
#region form stuff
|
||
|
|
||
|
private System.Windows.Forms.MainMenu mainMenu1;
|
||
|
private System.Windows.Forms.MenuItem menuItem1;
|
||
|
private System.Windows.Forms.MenuItem menuItem4;
|
||
|
private System.Windows.Forms.Button cmdNewEffect;
|
||
|
private System.Windows.Forms.Button cmdDelEffect;
|
||
|
private System.Windows.Forms.GroupBox groupBox1;
|
||
|
private System.Windows.Forms.Label label1;
|
||
|
private System.Windows.Forms.Label label2;
|
||
|
private System.Windows.Forms.TextBox txtCode;
|
||
|
private System.Windows.Forms.Label label3;
|
||
|
private System.Windows.Forms.Label label4;
|
||
|
private System.Windows.Forms.TextBox txtDefaultVal;
|
||
|
private System.Windows.Forms.TextBox txtOptName;
|
||
|
private System.ComponentModel.Container components = null;
|
||
|
private System.Windows.Forms.ListBox lstEffects;
|
||
|
private System.Windows.Forms.Button cmdChangeOpt;
|
||
|
private System.Windows.Forms.Button cmdRemoveOpt;
|
||
|
private System.Windows.Forms.Button cmdNewOpt;
|
||
|
private System.Windows.Forms.ListBox lstParams;
|
||
|
private System.Windows.Forms.MenuItem menuLoadEffectsFile;
|
||
|
private System.Windows.Forms.MenuItem menuSaveEffectsFile;
|
||
|
private System.Windows.Forms.MenuItem menuClose;
|
||
|
private System.Windows.Forms.Button cmdChangeCode;
|
||
|
#endregion
|
||
|
|
||
|
private System.Collections.Generic.List<Filter> tColl;
|
||
|
|
||
|
public formEffectsEditor(System.Collections.Generic.List<Filter> templateFilterColl) {
|
||
|
InitializeComponent();
|
||
|
tColl = templateFilterColl;
|
||
|
}
|
||
|
public formEffectsEditor() {
|
||
|
InitializeComponent();
|
||
|
tColl = new System.Collections.Generic.List<Filter>();
|
||
|
}
|
||
|
|
||
|
protected override void Dispose(bool disposing) {
|
||
|
if(disposing) {
|
||
|
if(components != null)
|
||
|
components.Dispose();
|
||
|
}
|
||
|
base.Dispose( disposing );
|
||
|
}
|
||
|
|
||
|
#region Windows Form Designer generated code
|
||
|
/// <summary>
|
||
|
/// Required method for Designer support - do not modify
|
||
|
/// the contents of this method with the code editor.
|
||
|
/// </summary>
|
||
|
private void InitializeComponent()
|
||
|
{
|
||
|
this.lstEffects = new System.Windows.Forms.ListBox();
|
||
|
this.mainMenu1 = new System.Windows.Forms.MainMenu();
|
||
|
this.menuItem1 = new System.Windows.Forms.MenuItem();
|
||
|
this.menuLoadEffectsFile = new System.Windows.Forms.MenuItem();
|
||
|
this.menuSaveEffectsFile = new System.Windows.Forms.MenuItem();
|
||
|
this.menuItem4 = new System.Windows.Forms.MenuItem();
|
||
|
this.menuClose = new System.Windows.Forms.MenuItem();
|
||
|
this.cmdNewEffect = new System.Windows.Forms.Button();
|
||
|
this.cmdDelEffect = new System.Windows.Forms.Button();
|
||
|
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||
|
this.cmdChangeCode = new System.Windows.Forms.Button();
|
||
|
this.txtOptName = new System.Windows.Forms.TextBox();
|
||
|
this.txtDefaultVal = new System.Windows.Forms.TextBox();
|
||
|
this.label4 = new System.Windows.Forms.Label();
|
||
|
this.label3 = new System.Windows.Forms.Label();
|
||
|
this.txtCode = new System.Windows.Forms.TextBox();
|
||
|
this.label2 = new System.Windows.Forms.Label();
|
||
|
this.cmdChangeOpt = new System.Windows.Forms.Button();
|
||
|
this.cmdRemoveOpt = new System.Windows.Forms.Button();
|
||
|
this.cmdNewOpt = new System.Windows.Forms.Button();
|
||
|
this.label1 = new System.Windows.Forms.Label();
|
||
|
this.lstParams = new System.Windows.Forms.ListBox();
|
||
|
this.groupBox1.SuspendLayout();
|
||
|
this.SuspendLayout();
|
||
|
//
|
||
|
// lstEffects
|
||
|
//
|
||
|
this.lstEffects.Location = new System.Drawing.Point(0, 8);
|
||
|
this.lstEffects.Name = "lstEffects";
|
||
|
this.lstEffects.Size = new System.Drawing.Size(160, 251);
|
||
|
this.lstEffects.TabIndex = 0;
|
||
|
this.lstEffects.SelectedIndexChanged += new System.EventHandler(this.lstEffects_SelectedIndexChanged);
|
||
|
//
|
||
|
// mainMenu1
|
||
|
//
|
||
|
this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
|
||
|
this.menuItem1});
|
||
|
//
|
||
|
// menuItem1
|
||
|
//
|
||
|
this.menuItem1.Index = 0;
|
||
|
this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
|
||
|
this.menuLoadEffectsFile,
|
||
|
this.menuSaveEffectsFile,
|
||
|
this.menuItem4,
|
||
|
this.menuClose});
|
||
|
this.menuItem1.Text = "File";
|
||
|
//
|
||
|
// menuLoadEffectsFile
|
||
|
//
|
||
|
this.menuLoadEffectsFile.Index = 0;
|
||
|
this.menuLoadEffectsFile.Text = "Load Effects File";
|
||
|
//
|
||
|
// menuSaveEffectsFile
|
||
|
//
|
||
|
this.menuSaveEffectsFile.Index = 1;
|
||
|
this.menuSaveEffectsFile.Text = "Save Effects File";
|
||
|
this.menuSaveEffectsFile.Click += new System.EventHandler(this.menuSaveEffectsFile_Click);
|
||
|
//
|
||
|
// menuItem4
|
||
|
//
|
||
|
this.menuItem4.Index = 2;
|
||
|
this.menuItem4.Text = "-";
|
||
|
//
|
||
|
// menuClose
|
||
|
//
|
||
|
this.menuClose.Index = 3;
|
||
|
this.menuClose.Text = "Exit";
|
||
|
this.menuClose.Click += new System.EventHandler(this.menuClose_Click);
|
||
|
//
|
||
|
// cmdNewEffect
|
||
|
//
|
||
|
this.cmdNewEffect.Location = new System.Drawing.Point(0, 264);
|
||
|
this.cmdNewEffect.Name = "cmdNewEffect";
|
||
|
this.cmdNewEffect.Size = new System.Drawing.Size(80, 24);
|
||
|
this.cmdNewEffect.TabIndex = 1;
|
||
|
this.cmdNewEffect.Text = "New";
|
||
|
this.cmdNewEffect.Click += new System.EventHandler(this.cmdNewEffect_Click);
|
||
|
//
|
||
|
// cmdDelEffect
|
||
|
//
|
||
|
this.cmdDelEffect.Location = new System.Drawing.Point(80, 264);
|
||
|
this.cmdDelEffect.Name = "cmdDelEffect";
|
||
|
this.cmdDelEffect.Size = new System.Drawing.Size(80, 24);
|
||
|
this.cmdDelEffect.TabIndex = 2;
|
||
|
this.cmdDelEffect.Text = "Remove";
|
||
|
this.cmdDelEffect.Click += new System.EventHandler(this.cmdDelEffect_Click);
|
||
|
//
|
||
|
// groupBox1
|
||
|
//
|
||
|
this.groupBox1.Controls.Add(this.cmdChangeCode);
|
||
|
this.groupBox1.Controls.Add(this.txtOptName);
|
||
|
this.groupBox1.Controls.Add(this.txtDefaultVal);
|
||
|
this.groupBox1.Controls.Add(this.label4);
|
||
|
this.groupBox1.Controls.Add(this.label3);
|
||
|
this.groupBox1.Controls.Add(this.txtCode);
|
||
|
this.groupBox1.Controls.Add(this.label2);
|
||
|
this.groupBox1.Controls.Add(this.cmdChangeOpt);
|
||
|
this.groupBox1.Controls.Add(this.cmdRemoveOpt);
|
||
|
this.groupBox1.Controls.Add(this.cmdNewOpt);
|
||
|
this.groupBox1.Controls.Add(this.label1);
|
||
|
this.groupBox1.Controls.Add(this.lstParams);
|
||
|
this.groupBox1.Location = new System.Drawing.Point(168, 8);
|
||
|
this.groupBox1.Name = "groupBox1";
|
||
|
this.groupBox1.Size = new System.Drawing.Size(416, 280);
|
||
|
this.groupBox1.TabIndex = 3;
|
||
|
this.groupBox1.TabStop = false;
|
||
|
this.groupBox1.Text = "Selected Effect";
|
||
|
//
|
||
|
// cmdChangeCode
|
||
|
//
|
||
|
this.cmdChangeCode.Location = new System.Drawing.Point(328, 256);
|
||
|
this.cmdChangeCode.Name = "cmdChangeCode";
|
||
|
this.cmdChangeCode.Size = new System.Drawing.Size(80, 18);
|
||
|
this.cmdChangeCode.TabIndex = 11;
|
||
|
this.cmdChangeCode.Text = "Change";
|
||
|
this.cmdChangeCode.Click += new System.EventHandler(this.cmdChangeCode_Click);
|
||
|
//
|
||
|
// txtOptName
|
||
|
//
|
||
|
this.txtOptName.Location = new System.Drawing.Point(104, 144);
|
||
|
this.txtOptName.Name = "txtOptName";
|
||
|
this.txtOptName.Size = new System.Drawing.Size(304, 20);
|
||
|
this.txtOptName.TabIndex = 10;
|
||
|
this.txtOptName.Text = "";
|
||
|
//
|
||
|
// txtDefaultVal
|
||
|
//
|
||
|
this.txtDefaultVal.Location = new System.Drawing.Point(104, 168);
|
||
|
this.txtDefaultVal.Name = "txtDefaultVal";
|
||
|
this.txtDefaultVal.Size = new System.Drawing.Size(304, 20);
|
||
|
this.txtDefaultVal.TabIndex = 9;
|
||
|
this.txtDefaultVal.Text = "";
|
||
|
//
|
||
|
// label4
|
||
|
//
|
||
|
this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
|
||
|
this.label4.Location = new System.Drawing.Point(8, 168);
|
||
|
this.label4.Name = "label4";
|
||
|
this.label4.Size = new System.Drawing.Size(96, 24);
|
||
|
this.label4.TabIndex = 8;
|
||
|
this.label4.Text = "Default Value:";
|
||
|
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||
|
//
|
||
|
// label3
|
||
|
//
|
||
|
this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
|
||
|
this.label3.Location = new System.Drawing.Point(8, 144);
|
||
|
this.label3.Name = "label3";
|
||
|
this.label3.Size = new System.Drawing.Size(96, 24);
|
||
|
this.label3.TabIndex = 7;
|
||
|
this.label3.Text = "Option Name:";
|
||
|
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||
|
//
|
||
|
// txtCode
|
||
|
//
|
||
|
this.txtCode.Location = new System.Drawing.Point(8, 256);
|
||
|
this.txtCode.Name = "txtCode";
|
||
|
this.txtCode.Size = new System.Drawing.Size(312, 20);
|
||
|
this.txtCode.TabIndex = 6;
|
||
|
this.txtCode.Text = "";
|
||
|
this.txtCode.TextChanged += new System.EventHandler(this.txtCode_TextChanged);
|
||
|
//
|
||
|
// label2
|
||
|
//
|
||
|
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
|
||
|
this.label2.Location = new System.Drawing.Point(8, 192);
|
||
|
this.label2.Name = "label2";
|
||
|
this.label2.Size = new System.Drawing.Size(400, 64);
|
||
|
this.label2.TabIndex = 5;
|
||
|
this.label2.Text = "Code: Put together the SSA code using the variables above (surrounded by dollar s" +
|
||
|
"igns, IE length would be $length$) here. You may use variables as well.";
|
||
|
this.label2.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||
|
//
|
||
|
// cmdChangeOpt
|
||
|
//
|
||
|
this.cmdChangeOpt.Location = new System.Drawing.Point(296, 104);
|
||
|
this.cmdChangeOpt.Name = "cmdChangeOpt";
|
||
|
this.cmdChangeOpt.Size = new System.Drawing.Size(112, 24);
|
||
|
this.cmdChangeOpt.TabIndex = 4;
|
||
|
this.cmdChangeOpt.Text = "Change";
|
||
|
this.cmdChangeOpt.Click += new System.EventHandler(this.cmdChangeOpt_Click);
|
||
|
//
|
||
|
// cmdRemoveOpt
|
||
|
//
|
||
|
this.cmdRemoveOpt.Location = new System.Drawing.Point(296, 64);
|
||
|
this.cmdRemoveOpt.Name = "cmdRemoveOpt";
|
||
|
this.cmdRemoveOpt.Size = new System.Drawing.Size(112, 24);
|
||
|
this.cmdRemoveOpt.TabIndex = 3;
|
||
|
this.cmdRemoveOpt.Text = "Remove";
|
||
|
this.cmdRemoveOpt.Click += new System.EventHandler(this.cmdRemoveOpt_Click);
|
||
|
//
|
||
|
// cmdNewOpt
|
||
|
//
|
||
|
this.cmdNewOpt.Location = new System.Drawing.Point(296, 40);
|
||
|
this.cmdNewOpt.Name = "cmdNewOpt";
|
||
|
this.cmdNewOpt.Size = new System.Drawing.Size(112, 24);
|
||
|
this.cmdNewOpt.TabIndex = 2;
|
||
|
this.cmdNewOpt.Text = "New";
|
||
|
this.cmdNewOpt.Click += new System.EventHandler(this.cmdNewOpt_Click);
|
||
|
//
|
||
|
// label1
|
||
|
//
|
||
|
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
|
||
|
this.label1.Location = new System.Drawing.Point(8, 16);
|
||
|
this.label1.Name = "label1";
|
||
|
this.label1.Size = new System.Drawing.Size(280, 16);
|
||
|
this.label1.TabIndex = 1;
|
||
|
this.label1.Text = "Parameters";
|
||
|
this.label1.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||
|
//
|
||
|
// lstParams
|
||
|
//
|
||
|
this.lstParams.Location = new System.Drawing.Point(8, 40);
|
||
|
this.lstParams.Name = "lstParams";
|
||
|
this.lstParams.Size = new System.Drawing.Size(280, 95);
|
||
|
this.lstParams.TabIndex = 0;
|
||
|
this.lstParams.SelectedIndexChanged += new System.EventHandler(this.lstParams_SelectedIndexChanged);
|
||
|
//
|
||
|
// formEffectsEditor
|
||
|
//
|
||
|
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
|
||
|
this.ClientSize = new System.Drawing.Size(584, 291);
|
||
|
this.Controls.Add(this.groupBox1);
|
||
|
this.Controls.Add(this.cmdDelEffect);
|
||
|
this.Controls.Add(this.cmdNewEffect);
|
||
|
this.Controls.Add(this.lstEffects);
|
||
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||
|
this.ImeMode = System.Windows.Forms.ImeMode.On;
|
||
|
this.MaximizeBox = false;
|
||
|
this.Menu = this.mainMenu1;
|
||
|
this.Name = "formEffectsEditor";
|
||
|
this.Text = "SSATool Effects Editor";
|
||
|
this.Load += new System.EventHandler(this.formEffectsEditor_Load);
|
||
|
this.groupBox1.ResumeLayout(false);
|
||
|
this.ResumeLayout(false);
|
||
|
|
||
|
}
|
||
|
#endregion
|
||
|
|
||
|
private void formEffectsEditor_Load(object sender, System.EventArgs e) {
|
||
|
foreach(Filter tf in tColl)
|
||
|
lstEffects.Items.Add(tf.ToString());
|
||
|
}
|
||
|
|
||
|
|
||
|
private void cmdNewEffect_Click(object sender, System.EventArgs e) {
|
||
|
InputBoxResult newvalue = InputBox.Show("Enter the name of the new effect:","Input",String.Empty);
|
||
|
if (newvalue.OK == true) {
|
||
|
int index, cmp;
|
||
|
for(index=0;index<tColl.Count;index++) {
|
||
|
cmp = newvalue.Text.CompareTo(tColl[index].ToString());
|
||
|
if (cmp == 0) {
|
||
|
MessageBox.Show("An effect of that name already exists.");
|
||
|
return;
|
||
|
}
|
||
|
if (cmp == -1) break;
|
||
|
}
|
||
|
Filter nt = new Filter(newvalue.Text);
|
||
|
tColl.Insert(index, nt);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void cmdDelEffect_Click(object sender, System.EventArgs e) {
|
||
|
if (lstEffects.SelectedItems.Count != 0) {
|
||
|
tColl.RemoveAt(lstEffects.SelectedIndex);
|
||
|
lstEffects.Items.RemoveAt(lstEffects.SelectedIndex);
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void cmdNewOpt_Click(object sender, System.EventArgs e) {
|
||
|
if (lstEffects.SelectedItems.Count != 0) {
|
||
|
(tColl[lstEffects.SelectedIndex]).AddOption("New Option",String.Empty);
|
||
|
lstParams.Items.Add("New Option");
|
||
|
|
||
|
}
|
||
|
else MessageBox.Show("Select an effect first.");
|
||
|
}
|
||
|
|
||
|
private void cmdRemoveOpt_Click(object sender, System.EventArgs e) {
|
||
|
if ((lstEffects.SelectedItems.Count != 0) && (lstParams.SelectedItems.Count != 0)) {
|
||
|
(tColl[lstEffects.SelectedIndex]).RemoveOptionByIndex(lstParams.SelectedIndex);
|
||
|
lstParams.Items.RemoveAt(lstParams.SelectedIndex);
|
||
|
}
|
||
|
else MessageBox.Show("Select an effect first.");
|
||
|
}
|
||
|
private void cmdChangeOpt_Click(object sender, System.EventArgs e) {
|
||
|
if ((lstEffects.SelectedItems.Count != 0) && (lstParams.SelectedItems.Count != 0)) {
|
||
|
(tColl[lstEffects.SelectedIndex]).SetOptionByIndex(lstParams.SelectedIndex,txtOptName.Text,txtDefaultVal.Text);
|
||
|
lstParams.Items.Clear();
|
||
|
foreach(FilterOption fo in (Filter)tColl[lstEffects.SelectedIndex]) {
|
||
|
lstParams.Items.Add(fo.Name);
|
||
|
}
|
||
|
}
|
||
|
else MessageBox.Show("Select an effect and a parameter first.");
|
||
|
}
|
||
|
private void cmdChangeCode_Click(object sender, System.EventArgs e) {
|
||
|
if (lstEffects.SelectedItems.Count != 0)
|
||
|
(tColl[lstEffects.SelectedIndex]).Code = txtCode.Text;
|
||
|
|
||
|
else MessageBox.Show("Select an effect first.");
|
||
|
}
|
||
|
|
||
|
|
||
|
private void txtCode_TextChanged(object sender, System.EventArgs e) {
|
||
|
if (lstEffects.SelectedItems.Count != 0)
|
||
|
(tColl[lstEffects.SelectedIndex]).Code = txtCode.Text;
|
||
|
}
|
||
|
|
||
|
|
||
|
private void lstEffects_SelectedIndexChanged(object sender, System.EventArgs e) {
|
||
|
lstParams.Items.Clear();
|
||
|
if (lstEffects.SelectedItems.Count != 0) {
|
||
|
foreach(FilterOption fo in (tColl[lstEffects.SelectedIndex])) {
|
||
|
lstParams.Items.Add(fo.Name);
|
||
|
txtCode.Text = (tColl[lstEffects.SelectedIndex]).Code;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void lstParams_SelectedIndexChanged(object sender, System.EventArgs e) {
|
||
|
if ((lstEffects.SelectedItems.Count != 0) && (lstParams.SelectedItems.Count != 0)) {
|
||
|
txtOptName.Text = lstParams.Items[lstParams.SelectedIndex].ToString();
|
||
|
txtDefaultVal.Text = (tColl[lstEffects.SelectedIndex]).GetOptionValueByName(lstParams.Items[lstParams.SelectedIndex].ToString());
|
||
|
}
|
||
|
else
|
||
|
txtOptName.Text = txtDefaultVal.Text = String.Empty;
|
||
|
}
|
||
|
|
||
|
|
||
|
private void menuClose_Click(object sender, System.EventArgs e) {
|
||
|
this.Close();
|
||
|
}
|
||
|
|
||
|
private void menuSaveEffectsFile_Click(object sender, System.EventArgs e) {
|
||
|
SaveFileDialogWithEncoding ofd=new SaveFileDialogWithEncoding();
|
||
|
ofd.DefaultExt="exml";
|
||
|
ofd.EncodingType=EncodingType.ANSI;
|
||
|
ofd.Filter="XML effect files (*.exml)|*.exml|All files (*.*)|*.*";
|
||
|
if (ofd.ShowDialog((IntPtr)this.Handle,Screen.FromControl(this))==DialogResult.OK) {
|
||
|
Form1.SaveEffectsFile(ofd.FileName,tColl);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|