lipsync/trunk/LipSync/Editor/FormSeriesImage.cs

208 lines
7.2 KiB
C#

/*
* FormSeriesImage.cs
* Copyright (c) 2007-2009 kbinani
*
* This file is part of LipSync.
*
* LipSync is free software; you can redistribute it and/or
* modify it under the terms of the BSD License.
*
* LipSync 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.
*/
using System;
using System.IO;
using System.Drawing;
using System.Windows.Forms;
using System.Reflection;
using Boare.Lib.AppUtil;
namespace LipSync {
public partial class FormSeriesImage : Form, IMultiLanguageControl {
float m_start = 0f;
float m_end = 0f;
public FormSeriesImage() {
InitializeComponent();
ApplyLanguage();
ApplyFont( AppManager.Config.Font.GetFont() );
Type type = typeof( System.Drawing.Imaging.ImageFormat );
PropertyInfo[] properties = type.GetProperties();
int i = -1;
foreach ( PropertyInfo pi in properties ) {
if ( pi.PropertyType.Equals( typeof( System.Drawing.Imaging.ImageFormat ) ) ) {
System.Drawing.Imaging.ImageFormat ifm = (System.Drawing.Imaging.ImageFormat)pi.GetValue( null, null );
string ext = Misc.GetExtensionFromImageFormat( ifm );
if ( ext.Length > 0 ) {
i++;
comboFormat.Items.Add( pi.Name );
if ( i == 0 ) {
comboFormat.SelectedIndex = 0;
}
if ( ext == "bmp" ) {
comboFormat.SelectedIndex = i;
}
}
}
}
}
public void ApplyFont( Font font ) {
this.Font = font;
foreach ( Control c in this.Controls ) {
Boare.Lib.AppUtil.Misc.ApplyFontRecurse( c, font );
}
}
public string ParserString {
get {
if ( chkAutomaticallyAddExtension.Checked ) {
return txtParser.Text + "." + Misc.GetExtensionFromImageFormat( ImageFormat );
} else {
return txtParser.Text;
}
}
}
public System.Drawing.Imaging.ImageFormat ImageFormat {
get {
if ( comboFormat.SelectedItem == null ){
return System.Drawing.Imaging.ImageFormat.Bmp;
}
string title = (string)comboFormat.SelectedItem;
#if DEBUG
Console.WriteLine( "ImageFormat.get()" );
Console.WriteLine( " System.Drawing.Imaging.ImageFormat.Bmp.ToString()=" + System.Drawing.Imaging.ImageFormat.Bmp.ToString() );
#endif
PropertyInfo[] properties = typeof( System.Drawing.Imaging.ImageFormat ).GetProperties();
foreach ( PropertyInfo pi in properties ) {
if ( pi.PropertyType.Equals( typeof( System.Drawing.Imaging.ImageFormat ) ) ) {
if ( pi.Name == title ) {
return (System.Drawing.Imaging.ImageFormat)pi.GetValue( null, null );
}
}
}
return System.Drawing.Imaging.ImageFormat.Bmp;
}
}
public string DirectoryName {
get {
return txtDirectory.Text;
}
}
public void ApplyLanguage() {
this.Text = _( "Series Image" );
btnCancel.Text = _( "Cancel" );
btnOK.Text = _( "Save" );
lblFileName.Text = _( "Directory" );
groupStartEnd.Text = _( "Specify output range" );
chkStart.Text = _( "Start" );
chkEnd.Text = _( "End" );
groupFileName.Text = _( "File Name" );
lblParser.Text = _( "Parser String" );
chkAutomaticallyAddExtension.Text = _( "Automatically Add Extension" );
lblFormat.Text = _( "Image Format" );
}
public static string _( string s ) {
return Messaging.GetMessage( s );
}
public float Start {
get {
return m_start;
}
}
public float End {
get {
return m_end;
}
}
private void btnOK_Click( object sender, EventArgs e ) {
try {
m_start = float.Parse( txtStart.Text );
m_end = float.Parse( txtEnd.Text );
this.DialogResult = DialogResult.OK;
} catch ( Exception ex ) {
MessageBox.Show(
_( "Invalid value has been entered" ),
_( "Error" ),
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation
);
Common.LogPush( ex );
}
}
private void btnFile_Click( object sender, EventArgs e ) {
using ( FolderBrowserDialog fbd = new FolderBrowserDialog() ) {
if ( fbd.ShowDialog() == DialogResult.OK ) {
txtDirectory.Text = fbd.SelectedPath;
}
}
}
private void chkStart_CheckedChanged( object sender, EventArgs e ) {
txtStart.Enabled = chkStart.Checked;
if ( txtStart.Enabled ) {
txtStart.Focus();
}
}
private void checkBox1_CheckedChanged( object sender, EventArgs e ) {
txtEnd.Enabled = chkEnd.Checked;
if ( txtEnd.Enabled ) {
txtEnd.Focus();
}
}
public bool StartSpecified {
get {
return chkStart.Checked;
}
}
public bool EndSpecified {
get {
return chkEnd.Checked;
}
}
private void txtParser_TextChanged( object sender, EventArgs e ) {
UpdateSampleFileNames();
}
private void comboFormat_SelectedIndexChanged( object sender, EventArgs e ) {
UpdateSampleFileNames();
}
private void UpdateSampleFileNames() {
string ret = _( "Sample File Name" ) + Environment.NewLine;
System.Drawing.Imaging.ImageFormat ifm = ImageFormat;
string ext = Misc.GetExtensionFromImageFormat( ifm );
string parser = ParserString;
try {
ret += string.Format( parser, 0 ) + Environment.NewLine;
ret += string.Format( parser, 1 ) + Environment.NewLine;
ret += " ... " + Environment.NewLine;
ret += string.Format( parser, 1234 );
} catch {
ret += _( "Error: Invalid parser string." );
}
txtPreview.Text = ret;
}
private void chkAutomaticallyAddExtension_CheckedChanged( object sender, EventArgs e ) {
UpdateSampleFileNames();
}
}
}