mirror of
https://git.femboyfinancial.jp/james/lipsync.git
synced 2025-02-18 00:19:02 -08:00
413 lines
17 KiB
C#
413 lines
17 KiB
C#
/*
|
|
* EnvConfiguration.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.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Windows.Forms;
|
|
|
|
using Boare.Lib.AppUtil;
|
|
|
|
namespace LipSync {
|
|
|
|
public partial class EnvConfiguration : Form, IMultiLanguageControl {
|
|
const string _DEFAULT_LANGUAGE_STRING = "Default";
|
|
EnvSettings m_config;
|
|
|
|
public EnvConfiguration( EnvSettings config ) {
|
|
InitializeComponent();
|
|
ApplyLanguage();
|
|
ApplyFont( AppManager.Config.Font.GetFont() );
|
|
|
|
m_config = (EnvSettings)config.Clone();
|
|
int selected = -1;
|
|
|
|
string[] t_list = Messaging.GetRegisteredLanguage();
|
|
comboLanguage.Items.Clear();
|
|
comboLanguage.Items.Add( _DEFAULT_LANGUAGE_STRING );
|
|
foreach ( string lang in t_list ) {
|
|
comboLanguage.Items.Add( lang );
|
|
if ( lang == Messaging.Language ) {
|
|
selected = comboLanguage.Items.Count - 1;
|
|
}
|
|
}
|
|
if ( selected >= 0 ) {
|
|
comboLanguage.SelectedIndex = selected;
|
|
} else {
|
|
comboLanguage.SelectedIndex = 0;
|
|
}
|
|
|
|
// nn
|
|
string[] list_nn = new string[] { "b", "p", "m", "b'", "p'", "m'" };
|
|
mListClose.Items.Clear();
|
|
for ( int i = 0; i < list_nn.Length; i++ ) {
|
|
string s = list_nn[i];
|
|
mListClose.Items.Add( new ListViewItem( s ) );
|
|
mListClose.Items[i].Checked = VowelType.IsRegisteredToNN( s );
|
|
}
|
|
|
|
// i
|
|
string[] list_i = new string[] { "k'", "g'", "S", "dZ", "tS", "J", "C" };
|
|
mListI.Items.Clear();
|
|
for ( int i = 0; i < list_i.Length; i++ ) {
|
|
string s = list_i[i];
|
|
mListI.Items.Add( new ListViewItem( s ) );
|
|
mListI.Items[i].Checked = VowelType.IsRegisteredToI( s );
|
|
}
|
|
|
|
// u
|
|
string[] list_u = new string[] { @"p\", @"p\'", "w", "ts", "dz" };
|
|
for ( int i = 0; i < list_u.Length; i++ ) {
|
|
string s = list_u[i];
|
|
mListU.Items.Add( new ListViewItem( s ) );
|
|
mListU.Items[i].Checked = VowelType.IsRegisteredToU( s );
|
|
}
|
|
//mListClose.BackColor = tabLipSync.BackColor;
|
|
//mListI.BackColor = tabLipSync.BackColor;
|
|
//mListU.BackColor = tabLipSync.BackColor;
|
|
|
|
ScreenFont = m_config.Font.GetFont();
|
|
numWheelRatio.Value = (decimal)(1.0 / m_config.WheelRatio);
|
|
|
|
chkGenCharacterAutomaticaly.Checked = m_config.GenerateCharacterAutomatically;
|
|
chkHeavyOpenCharacterDialog.Checked = m_config.UseHeavyDialogInOpeningCharacterSettings;
|
|
chkSerialVowel.Checked = m_config.CloseMouthWhenSameVowelsRepeated;
|
|
|
|
txtFFmpeg.Text = m_config.PathFFmpeg;
|
|
txtMEncoder.Text = m_config.PathMEncoder;
|
|
|
|
chkSyncAtCenter.Checked = m_config.SyncAtCentre;
|
|
}
|
|
|
|
public void ApplyFont( Font font ) {
|
|
this.Font = font;
|
|
foreach ( Control c in this.Controls ) {
|
|
Boare.Lib.AppUtil.Misc.ApplyFontRecurse( c, font );
|
|
}
|
|
}
|
|
|
|
public void ApplyLanguage() {
|
|
this.btnOK.Text = _( "OK" );
|
|
this.btnCancel.Text = _( "Cancel" );
|
|
this.groupLanguage.Text = _( "Language" );
|
|
this.Text = _( "Option" );
|
|
|
|
this.tabUserConfig.Text = _( "User Config" );
|
|
this.tabAppearance.Text = _( "Appearance" );
|
|
this.tabLipSync.Text = _( "lip-sync Option" );
|
|
this.tabSystem.Text = _( "System" );
|
|
|
|
this.lblTimeLineTitle.Text = _( "Title of timeline" );
|
|
this.lblTimeLineVSQ.Text = _( "VSQ Entry" );
|
|
this.lblTimeLinePlugin.Text = _( "Plugin Entry" );
|
|
this.lblTimeLineDefault.Text = _( "Another Entry" );
|
|
this.lblEntryHeight.Text = _( "Entry height (pixel)" );
|
|
this.btnChangeTimeLineTitle.Text = _( "Change" );
|
|
this.btnChangeTimeLineVSQ.Text = _( "Change" );
|
|
this.btnChangeTimeLinePlugin.Text = _( "Change" );
|
|
this.btnChangeTimeLineDefault.Text = _( "Change" );
|
|
this.groupPhoneticSymbol.Text = _( "Check phonetic symbol to configure detailed mouth shape control" );
|
|
this.mListClose.Header = _( "Close mouth before pronunciation" );
|
|
this.mListI.Header = _( "\"i\" shaped mouth before pronunciation" );
|
|
this.mListU.Header = _( "\"u\" shaped mouth before pronunciation" );
|
|
this.groupColor.Text = _( "Color" );
|
|
this.groupDesign.Text = _( "Design" );
|
|
this.lblFFmpeg.Text = _( "Path of ffmpeg" );
|
|
this.lblMEncoder.Text = _( "Path of mencoder" );
|
|
this.lblFont.Text = _( "Font" );
|
|
this.btnChangeFont.Text = _( "Change" );
|
|
this.groupSerialVowel.Text = _( "Another settings" );
|
|
this.chkSerialVowel.Text = _( "Close mouth when same vowels repeated" );
|
|
this.groupEncoder.Text = _( "Encoder/Decoder" );
|
|
this.chkGenCharacterAutomaticaly.Text = _( "Generate character automaticaly when importing vsq" );
|
|
this.lblCombineThreshold.Text = _( "Threshold silence length(sec)" );
|
|
this.groupAnotherBehavior.Text = _( "Another settings" );
|
|
this.chkHeavyOpenCharacterDialog.Text = _( "Use preview-enabled dialog in character selection" );
|
|
this.btnReloadLanguageConfig.Text = _( "Reload language configurations" );
|
|
this.groupControl.Text = _( "Operation" );
|
|
this.lblWheelRatio.Text = _( "mouse wheel rate" );
|
|
this.chkSyncAtCenter.Text = _( "Fix cursor to center in Sync mode" );
|
|
}
|
|
|
|
public static string _( string s ) {
|
|
return Messaging.GetMessage( s );
|
|
}
|
|
|
|
private Font ScreenFont {
|
|
get {
|
|
return m_config.Font.GetFont();
|
|
}
|
|
set {
|
|
m_config.Font = new FontConfig( value );
|
|
lblFontName.Text = m_config.Font.GetFont().FontFamily.Name + ", " + m_config.Font.GetFont().SizeInPoints + "pt, " + m_config.Font.GetFont().Style.ToString();
|
|
}
|
|
}
|
|
|
|
private void btnOK_Click( object sender, EventArgs e ) {
|
|
m_config.CloseMouthPhoneticSymbols.Clear();
|
|
foreach ( ListViewItem item in mListClose.Items ) {
|
|
if ( item.Checked ) {
|
|
m_config.CloseMouthPhoneticSymbols.Add( item.Text );
|
|
}
|
|
}
|
|
|
|
m_config.IMouthPhoneticSymbols.Clear();
|
|
foreach ( ListViewItem item in mListI.Items ) {
|
|
if ( item.Checked ) {
|
|
m_config.IMouthPhoneticSymbols.Add( item.Text );
|
|
}
|
|
}
|
|
|
|
m_config.UMouthPhoneticSymbols.Clear();
|
|
foreach ( ListViewItem item in mListU.Items ) {
|
|
if ( item.Checked ) {
|
|
m_config.UMouthPhoneticSymbols.Add( item.Text );
|
|
}
|
|
}
|
|
|
|
try {
|
|
m_config.EntryCombineThreshold = float.Parse( txtCombineThreshold.Text );
|
|
} catch {
|
|
MessageBox.Show(
|
|
_( "Invalid value has been entered" ),
|
|
_( "Error" ),
|
|
MessageBoxButtons.OK,
|
|
MessageBoxIcon.Exclamation );
|
|
this.DialogResult = DialogResult.Cancel;
|
|
}
|
|
this.DialogResult = DialogResult.OK;
|
|
}
|
|
|
|
private void EnvConfiguration_Load( object sender, EventArgs e ) {
|
|
ApplyColorConfig();
|
|
numEntryHeight.Value = m_config.TrackHeight;
|
|
txtCombineThreshold.Text = m_config.EntryCombineThreshold + "";
|
|
}
|
|
|
|
private void ApplyColorConfig() {
|
|
lblTimelineTitleColor.BackColor = m_config.TimeLineTitleColor.Color;
|
|
lblTimeLineVSQColor.BackColor = m_config.TimeLineVsqColor.Color;
|
|
lblTimeLinePluginColor.BackColor = m_config.TimeLinePluginColor.Color;
|
|
lblTimeLineDefaultColor.BackColor = m_config.TimeLineDefaultColor.Color;
|
|
this.Invalidate();
|
|
}
|
|
|
|
private void btnChangeTimeLineTitle_Click( object sender, EventArgs e ) {
|
|
colorDialog1.Reset();
|
|
colorDialog1.Color = m_config.TimeLineTitleColor.Color;
|
|
if ( colorDialog1.ShowDialog() == DialogResult.OK ) {
|
|
m_config.TimeLineTitleColor = new ColorSet( colorDialog1.Color );
|
|
ApplyColorConfig();
|
|
}
|
|
}
|
|
|
|
private void btnChangeTimeLineVSQ_Click( object sender, EventArgs e ) {
|
|
colorDialog1.Reset();
|
|
colorDialog1.Color = m_config.TimeLineVsqColor.Color;
|
|
if ( colorDialog1.ShowDialog() == DialogResult.OK ) {
|
|
m_config.TimeLineVsqColor = new ColorSet( colorDialog1.Color );
|
|
ApplyColorConfig();
|
|
}
|
|
}
|
|
|
|
private void btnChangeTimeLinePlugin_Click( object sender, EventArgs e ) {
|
|
colorDialog1.Reset();
|
|
colorDialog1.Color = m_config.TimeLinePluginColor.Color;
|
|
if ( colorDialog1.ShowDialog() == DialogResult.OK ) {
|
|
m_config.TimeLinePluginColor = new ColorSet( colorDialog1.Color );
|
|
ApplyColorConfig();
|
|
}
|
|
}
|
|
|
|
private void btnChangeTimeLineDefault_Click( object sender, EventArgs e ) {
|
|
colorDialog1.Reset();
|
|
colorDialog1.Color = m_config.TimeLineDefaultColor.Color;
|
|
if ( colorDialog1.ShowDialog() == DialogResult.OK ) {
|
|
m_config.TimeLineDefaultColor = new ColorSet( colorDialog1.Color );
|
|
ApplyColorConfig();
|
|
}
|
|
}
|
|
|
|
private void btnTimeLineTitleDefault_Click( object sender, EventArgs e ) {
|
|
m_config.TimeLineTitleColor = new ColorSet( Color.LightPink );
|
|
ApplyColorConfig();
|
|
}
|
|
|
|
private void btnTimeLineVSQDefault_Click( object sender, EventArgs e ) {
|
|
m_config.TimeLineVsqColor = new ColorSet( Color.FromArgb( 175, 222, 82 ) );
|
|
ApplyColorConfig();
|
|
}
|
|
|
|
private void btnTimeLinePluginDefault_Click( object sender, EventArgs e ) {
|
|
m_config.TimeLinePluginColor = new ColorSet( Color.FromArgb( 255, 184, 51 ) );
|
|
ApplyColorConfig();
|
|
}
|
|
|
|
private void btnTimeLineDefaultDefault_Click( object sender, EventArgs e ) {
|
|
m_config.TimeLineDefaultColor = new ColorSet( Color.LightBlue );
|
|
ApplyColorConfig();
|
|
}
|
|
|
|
private void btnEntryHeightDefault_Click( object sender, EventArgs e ) {
|
|
m_config.TrackHeight = 18;
|
|
numEntryHeight.Value = m_config.TrackHeight;
|
|
}
|
|
|
|
private void numEntryHeight_ValueChanged( object sender, EventArgs e ) {
|
|
m_config.TrackHeight = (int)numEntryHeight.Value;
|
|
}
|
|
|
|
private void btnFFmpeg_Click( object sender, EventArgs e ) {
|
|
using ( OpenFileDialog dlg = new OpenFileDialog() ) {
|
|
if ( m_config.PathFFmpeg != "" ) {
|
|
try {
|
|
dlg.InitialDirectory = Path.GetDirectoryName( m_config.PathFFmpeg );
|
|
dlg.FileName = m_config.PathFFmpeg;
|
|
} catch {
|
|
}
|
|
}
|
|
try {
|
|
dlg.Filter = _( "Executable file(*.exe)|*.exe" ) + "|" + _( "All Files(*.*)|*.*" );
|
|
} catch {
|
|
dlg.Filter = "Executable file(*.exe)|*.exe|All Files(*.*)|*.*";
|
|
}
|
|
if ( dlg.ShowDialog() == DialogResult.OK ) {
|
|
string file = dlg.FileName;
|
|
if ( File.Exists( file ) ) {
|
|
txtFFmpeg.Text = file;
|
|
m_config.PathFFmpeg = file;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void btnMEncoder_Click( object sender, EventArgs e ) {
|
|
using ( OpenFileDialog dlg = new OpenFileDialog() ) {
|
|
if ( m_config.PathMEncoder != "" ) {
|
|
try {
|
|
dlg.InitialDirectory = Path.GetDirectoryName( m_config.PathMEncoder );
|
|
dlg.FileName = m_config.PathMEncoder;
|
|
} catch {
|
|
}
|
|
}
|
|
try {
|
|
dlg.Filter = _( "Executable file(*.exe)|*.exe" ) + "|" + _( "All Files(*.*)|*.*" );
|
|
} catch {
|
|
dlg.Filter = "Executable file(*.exe)|*.exe|All Files(*.*)|*.*";
|
|
}
|
|
if ( dlg.ShowDialog() == DialogResult.OK ) {
|
|
string file = dlg.FileName;
|
|
if ( File.Exists( file ) ) {
|
|
txtMEncoder.Text = file;
|
|
m_config.PathMEncoder = file;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public string PathFFmpeg {
|
|
get {
|
|
return txtFFmpeg.Text;
|
|
}
|
|
set {
|
|
txtFFmpeg.Text = value;
|
|
}
|
|
}
|
|
|
|
public string PathMEncoder {
|
|
get {
|
|
return txtMEncoder.Text;
|
|
}
|
|
set {
|
|
txtMEncoder.Text = value;
|
|
}
|
|
}
|
|
|
|
private void btnChangeFont_Click( object sender, EventArgs e ) {
|
|
fontDialog.Font = ScreenFont;
|
|
if ( fontDialog.ShowDialog() == DialogResult.OK ) {
|
|
ScreenFont = fontDialog.Font;
|
|
}
|
|
}
|
|
|
|
private void btnFontDefault_Click( object sender, EventArgs e ) {
|
|
ScreenFont = new Font( "MS UI Gothic", 9 );
|
|
}
|
|
|
|
private void btnReloadLanguageConfig_Click( object sender, EventArgs e ) {
|
|
Messaging.LoadMessages();
|
|
string current_lang = m_config.Language;
|
|
comboLanguage.Items.Clear();
|
|
List<string> list = new List<string>( Messaging.GetRegisteredLanguage() );
|
|
if ( !list.Contains( current_lang ) ) {
|
|
current_lang = _DEFAULT_LANGUAGE_STRING;
|
|
}
|
|
list.Insert( 0, _DEFAULT_LANGUAGE_STRING );
|
|
comboLanguage.Items.AddRange( list.ToArray() );
|
|
for ( int i = 0; i < list.Count; i++ ) {
|
|
if ( list[i] == current_lang ) {
|
|
comboLanguage.SelectedIndex = i;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void comboLanguage_SelectedIndexChanged( object sender, EventArgs e ) {
|
|
string res = "";
|
|
if( comboLanguage.SelectedIndex >= 0 ) {
|
|
res = (string)comboLanguage.Items[comboLanguage.SelectedIndex];
|
|
}
|
|
if ( res == _DEFAULT_LANGUAGE_STRING ) {
|
|
res = "";
|
|
}
|
|
m_config.Language = res;
|
|
}
|
|
|
|
private void numWheelRatio_ValueChanged( object sender, EventArgs e ) {
|
|
m_config.WheelRatio = (float)(1.0 / (double)numWheelRatio.Value);
|
|
}
|
|
|
|
private void btnWheelRatioDefault_Click( object sender, EventArgs e ) {
|
|
numWheelRatio.Value = 5;
|
|
}
|
|
|
|
public EnvSettings EnvSettings {
|
|
get {
|
|
return m_config;
|
|
}
|
|
}
|
|
|
|
private void chkHeavyOpenCharacterDialog_CheckedChanged( object sender, EventArgs e ) {
|
|
m_config.UseHeavyDialogInOpeningCharacterSettings = chkHeavyOpenCharacterDialog.Checked;
|
|
}
|
|
|
|
private void chkGenCharacterAutomaticaly_CheckedChanged( object sender, EventArgs e ) {
|
|
m_config.GenerateCharacterAutomatically = chkGenCharacterAutomaticaly.Checked;
|
|
}
|
|
|
|
private void txtFFmpeg_TextChanged( object sender, EventArgs e ) {
|
|
m_config.PathFFmpeg = txtFFmpeg.Text;
|
|
}
|
|
|
|
private void txtMEncoder_TextChanged( object sender, EventArgs e ) {
|
|
m_config.PathMEncoder = txtMEncoder.Text;
|
|
}
|
|
|
|
private void chkSyncAtCenter_CheckedChanged( object sender, EventArgs e ) {
|
|
m_config.SyncAtCentre = chkSyncAtCenter.Checked;
|
|
}
|
|
}
|
|
|
|
}
|