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();
+        }
+    }
+}