Mercurial > defical
diff defical-sharp/defical-gui/main.xaml.cs @ 0:ebed2bd0d300
Initial import from svn. History be damned.
author | Edho P. Arief <me@myconan.net> |
---|---|
date | Fri, 02 Apr 2010 23:11:57 +0700 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/defical-sharp/defical-gui/main.xaml.cs Fri Apr 02 23:11:57 2010 +0700 @@ -0,0 +1,212 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.IO; + +namespace defical_gui +{ + /// <summary> + /// Interaction logic for Window1.xaml + /// </summary> + public partial class main : Window + { + public main() + { + InitializeComponent(); + initBoxes(); + txtNumN.Focus(); + } + private delegate void StringDelegate(int errCode,string message); + private void printMessage(int errCode,string message) + { + switch (errCode) + { + case 0: + { + txtResult.Text += message; + break; + } + default: + { + switch (errCode) + { + case 200: + { + message = "Started"; + break; + } + case 201: + { + message = "Stopped"; + break; + } + case 400: + { + message = "Found"; + break; + } + case 401: + { + message = "SEMT Labeing can't be constructed with first label of " + message; + break; + } + + } + txtResult.Text += "[" + errCode.ToString() + "] " + DateTime.Now.ToString("[yyyy-MM-dd hh:mm:ss]") + ": " + message+"\n"; + break; + } + } + } + private void initBoxes() + { + this.isProcessing = false; + txtResult.Text = + txtNumDef.Text = + txtNumN.Text = ""; + validateInput(); + } + private void txtResult_TextChanged(object sender, TextChangedEventArgs e) + { + switchControls(this.isProcessing); + if (txtResult.Text == "") { btnSave.IsEnabled = false; } else { btnSave.IsEnabled = true; } + txtResult.ScrollToEnd(); + } + private bool validateInput() + { + btnStart.IsEnabled = false; + if (txtNumN.Text == "" || txtNumDef.Text == "") { return false; } + try + { + int numN = Convert.ToInt32(txtNumN.Text); + int numDef = Convert.ToInt32(txtNumDef.Text); + if (numN.ToString() == txtNumN.Text + && numDef.ToString() == txtNumDef.Text + && numN >= 3 + && numDef >= 0) + { + btnStart.IsEnabled = true; + return true; + } + } + catch { return false; } + return false; + } + private void switchControls(bool isWorking) + { + grpGraph.IsEnabled = + grpLabels.IsEnabled = + btnStart.IsEnabled = !isWorking; + btnStop.IsEnabled = + barProgress.IsIndeterminate = isWorking; + } + + private void txtNumN_TextChanged(object sender, TextChangedEventArgs e) + { + validateInput(); + } + + private void txtNumDef_TextChanged(object sender, TextChangedEventArgs e) + { + validateInput(); + } + + private void btnStart_Click(object sender, RoutedEventArgs e) + { + if (!validateInput()) { return; } + switchControls(true); + try + { + this.isFindEverything = (bool)chkIsFindAll.IsChecked; + switch (cmbGraphType.Text) + { + case "Wheel": + this.graphType= "wheel"; + break; + case "Fan": + this.graphType = "fan"; + break; + case "Double Fan": + this.graphType = "doublefan"; + break; + default: + throw new NotImplementedException(); + } + this.numVerDef = Convert.ToInt32(txtNumDef.Text); + int numExtraVer = 0; + switch (this.graphType) + { + case "wheel": + case "fan": + { + numExtraVer = 1; + break; + } + case "doublefan": + { + numExtraVer = 2; + break; + } + default: + throw new NotImplementedException(); + } + this.numVerMain = numExtraVer + Convert.ToInt32(txtNumN.Text); + mainThread = new System.Threading.Thread(go); + mainThread.IsBackground = true; + mainThread.Start(); + } + catch + { + switchControls(false); + } + } + + private void btnStop_Click(object sender, RoutedEventArgs e) + { + this.isProcessing = false; + switchControls(false); + } + + private void btnSave_Click(object sender, RoutedEventArgs e) + { + try + { + System.Windows.Forms.SaveFileDialog dialogSave = new System.Windows.Forms.SaveFileDialog(); + dialogSave.DefaultExt = "txt"; + dialogSave.Filter = "Text file (*.txt)|*.txt|All files (*.*)|*.*"; + dialogSave.AddExtension = true; + dialogSave.RestoreDirectory = true; + dialogSave.Title = "Save result"; + dialogSave.InitialDirectory = Environment.ExpandEnvironmentVariables("%HOMEDRIVE%%HOMEPATH%"); + dialogSave.FileName = "result-" + cmbGraphType.Text + "-" + txtNumN.Text + "," + txtNumDef.Text; + if (dialogSave.ShowDialog() == System.Windows.Forms.DialogResult.OK) + { + StreamWriter fileWriter = null; + if (File.Exists(dialogSave.FileName)) { fileWriter = File.AppendText(dialogSave.FileName); } + else { fileWriter = File.CreateText(dialogSave.FileName); } + fileWriter.Write(txtResult.Text); + fileWriter.Close(); + } + } + catch { } + } + + private void btnClear_Click(object sender, RoutedEventArgs e) + { + txtResult.Text = ""; + } + private void btnExit_Click(object sender, RoutedEventArgs e) + { + this.Close(); + } + } +}