/// enumを指定してレイアウト要素の内容を訂正後に変更する private void Correct(SWScale target) { // Parse float value; if (!float.TryParse(this.GetTextBox(target).Text, out value)) { this.OverwriteText(target); return; } // Correct float changed; var result = SWScaleInputCorrector.TryChange(target, value, out changed); // 訂正の必要がない=TextChangedで設定済み if (result) { return; } // Update Profile App.Profile.Open(); this.SetSWScaleValue(target, changed); App.Profile.Close(); //--------------------------------------------------------------- // Notify self this.OverwriteText(target); // Notify other controls Commands.CurrentLayoutElementVisualChanged.Execute(null, this); //--------------------------------------------------------------- }
//=================================================================== // IBindingProfileの実装 //=================================================================== /// enumを指定して、イベントハンドラの実行なしにTextBox.Textを置き換える private void OverwriteText(SWScale name) { this.CanChangeProfile = false; var textBox = this.GetTextBox(name); textBox.Text = this.GetSWScaleValueString(name); if (textBox.IsKeyboardFocused) { textBox.Select(textBox.Text.Length, 0); } this.ResetError(name); this.CanChangeProfile = true; }
//------------------------------------------------------------------- /// enum->文字列 private string GetSWScaleValueString(SWScale name) { switch (name) { case SWScale.LumaGBlur: return(StringConverter.GetSWScaleLumaGBlurString(App.Profile.Current)); case SWScale.LumaSharpen: return(StringConverter.GetSWScaleLumaSharpenString(App.Profile.Current)); case SWScale.ChromaHShift: return(StringConverter.GetSWScaleChromaHShiftString(App.Profile.Current)); case SWScale.ChromaGBlur: return(StringConverter.GetSWScaleChromaGBlurString(App.Profile.Current)); case SWScale.ChromaSharpen: return(StringConverter.GetSWScaleChromaSharpenString(App.Profile.Current)); case SWScale.ChromaVShift: return(StringConverter.GetSWScaleChromaVShiftString(App.Profile.Current)); default: Debug.Fail("switch"); throw new System.ArgumentException(); } }
/// enum->ToolTip private ToolTip GetToolTip(SWScale name) { switch (name) { case SWScale.LumaGBlur: return(this.SWScaleLumaGBlurToolTip); case SWScale.LumaSharpen: return(this.SWScaleLumaSharpenToolTip); case SWScale.ChromaHShift: return(this.SWScaleChromaHShiftToolTip); case SWScale.ChromaGBlur: return(this.SWScaleChromaGBlurToolTip); case SWScale.ChromaSharpen: return(this.SWScaleChromaSharpenToolTip); case SWScale.ChromaVShift: return(this.SWScaleChromaVShiftToolTip); default: Debug.Fail("switch"); throw new System.ArgumentException(); } }
/// enumと値を指定してProfileを変更 private void SetSWScaleValue(SWScale name, float value) { switch (name) { case SWScale.LumaGBlur: App.Profile.Current.SWScaleLumaGBlur = value; break; case SWScale.LumaSharpen: App.Profile.Current.SWScaleLumaSharpen = value; break; case SWScale.ChromaHShift: App.Profile.Current.SWScaleChromaHShift = value; break; case SWScale.ChromaGBlur: App.Profile.Current.SWScaleChromaGBlur = value; break; case SWScale.ChromaSharpen: App.Profile.Current.SWScaleChromaSharpen = value; break; case SWScale.ChromaVShift: App.Profile.Current.SWScaleChromaVShift = value; break; default: Debug.Fail("switch"); throw new System.ArgumentException(); } }
//------------------------------------------------------------------- /// enumを指定してレイアウト要素の内容を変更する private void Change(SWScale target) { // Parse float value; if (!float.TryParse(this.GetTextBox(target).Text, out value)) { this.SetError(target, "must be float"); return; } // Correct float changed; var result = SWScaleInputCorrector.TryChange(target, value, out changed); // Error表示 if (result) { // 成功 this.ResetError(target); } else { // 失敗 this.SetWarning(target, "Return/Enter: Correct Value"); return; } // 成功: そのまま書き換え(Textは変更しない) App.Profile.Open(); this.SetSWScaleValue(target, value); App.Profile.Close(); //--------------------------------------------------------------- // Notify self // Notify other controls Commands.CurrentLayoutElementVisualChanged.Execute(null, this); //--------------------------------------------------------------- }
/// enumを指定してレイアウト要素の内容を訂正後に変更する private void Correct(SWScale target) { // Parse float value; if (!float.TryParse(this.GetTextBox(target).Text, out value)) { this.OverwriteText(target); return; } // Correct float changed; var result = SWScaleInputCorrector.TryChange(target, value, out changed); // 訂正の必要がない=TextChangedで設定済み if (result) return; // Update Profile App.Profile.Open(); this.SetSWScaleValue(target, changed); App.Profile.Close(); //--------------------------------------------------------------- // Notify self this.OverwriteText(target); // Notify other controls Commands.CurrentLayoutElementVisualChanged.Execute(null, this); //--------------------------------------------------------------- }
//=================================================================== // SWScaleをキーとしたメソッド群 //=================================================================== /// TextBoxとToolTipの位置的な関連付け private void SetPlacementTarget(SWScale name) { this.GetToolTip(name).PlacementTarget = this.GetTextBox(name); }
/// enum->ToolTip private ToolTip GetToolTip(SWScale name) { switch (name) { case SWScale.LumaGBlur: return this.SWScaleLumaGBlurToolTip; case SWScale.LumaSharpen: return this.SWScaleLumaSharpenToolTip; case SWScale.ChromaHShift: return this.SWScaleChromaHShiftToolTip; case SWScale.ChromaGBlur: return this.SWScaleChromaGBlurToolTip; case SWScale.ChromaSharpen: return this.SWScaleChromaSharpenToolTip; case SWScale.ChromaVShift: return this.SWScaleChromaVShiftToolTip; default: Debug.Fail("switch"); throw new System.ArgumentException(); } }
/// enumを指定してTextBoxの警告状態設定 private void SetWarning(SWScale name, string message = null) { TextBoxError.SetWarning(this.GetTextBox(name), this.GetToolTip(name), message); }
//=================================================================== // 入力エラー処理 //=================================================================== /// enumを指定してTextBoxのエラー状態解除 private void ResetError(SWScale name) { TextBoxError.ResetError(this.GetTextBox(name), this.GetToolTip(name)); }
//------------------------------------------------------------------- /// enum->文字列 private string GetSWScaleValueString(SWScale name) { switch (name) { case SWScale.LumaGBlur: return StringConverter.GetSWScaleLumaGBlurString(App.Profile.Current); case SWScale.LumaSharpen: return StringConverter.GetSWScaleLumaSharpenString(App.Profile.Current); case SWScale.ChromaHShift: return StringConverter.GetSWScaleChromaHShiftString(App.Profile.Current); case SWScale.ChromaGBlur: return StringConverter.GetSWScaleChromaGBlurString(App.Profile.Current); case SWScale.ChromaSharpen: return StringConverter.GetSWScaleChromaSharpenString(App.Profile.Current); case SWScale.ChromaVShift: return StringConverter.GetSWScaleChromaVShiftString(App.Profile.Current); default: Debug.Fail("switch"); throw new System.ArgumentException(); } }