/** * Copyright 2009 Eric R. Dunstan * Dunstan Software Creations * DunstanSoftwareCreations.com */ using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using System.Collections; namespace GreekNumberOfBeast { public partial class Page : UserControl { const string EmptyText = "Type a Name"; string NameText = ""; int Total = 0; Stack NameIndicesStack = new Stack(); char[] GREEK = new char[]{ (char)913, (char)914, (char)915, (char)916, (char)917, (char)918, (char)919, (char)920, (char)921, (char)922, (char)923, (char)924, (char)925, (char)926, (char)927, (char)928, (char)929, (char)930, (char)931, (char)932, (char)933, (char)934, (char)935, (char)936, (char)937, (char)938}; char[] greek = new char[]{ (char)945, (char)946, (char)947, (char)948, (char)949, (char)950, (char)951, (char)952, (char)953, (char)954, (char)955, (char)956, (char)957, (char)958, (char)959, (char)960, (char)961, (char)962, (char)963, (char)964, (char)965, (char)966, (char)967, (char)968, (char)969, (char)970}; string[] ButtonText = new string[]{ "(A):1", "(B):2", "(G):3", "(D):4", "(E):5", "(Z):7", "(E):8", "(TH):9", "(I):10", "(K):20", "(L):30", "(M):40", "(N):50", "(X):60", "(O):70", "(P):80", "(R):100", "(S):200", "(T):300", "(U,Y):400", "(PH):500", "(CH):600", "(PS):700", "(O):800" }; int[] number = new int[] { 1, 2, 3, 4, 5, 7, 8, 9, 10, 20, 30, 40, 50, 60, 70, 80, 100, 200, 300, 400, 500, 600, 700, 800 }; Button[] buttons = new Button[24]; public Page() { InitializeComponent(); buttons[0] = ButtonAlpha; buttons[1] = ButtonBeta; buttons[2] = ButtonGamma; buttons[3] = ButtonDelta; buttons[4] = ButtonEpsilon; buttons[5] = ButtonZeta; buttons[6] = ButtonEta; buttons[7] = ButtonTheta; buttons[8] = ButtonIota; buttons[9] = ButtonKappa; buttons[10] = ButtonLambda; buttons[11] = ButtonMu; buttons[12] = ButtonNu; buttons[13] = ButtonXi; buttons[14] = ButtonOmicron; buttons[15] = ButtonPi; buttons[16] = ButtonRho; buttons[17] = ButtonSigma; buttons[18] = ButtonTau; buttons[19] = ButtonUpsilon; buttons[20] = ButtonPhi; buttons[21] = ButtonChi; buttons[22] = ButtonPsi; buttons[23] = ButtonOmega; for (int i = 0, j = 0; i < buttons.Length; ++i) { if (i == 17) { j = 1; buttons[i].Content = " " + GREEK[i + j] + "," + greek[i + j] + "," + greek[i] + ButtonText[i] + " "; } else { buttons[i].Content = " " + GREEK[i + j] + "," + greek[i + j] + ButtonText[i] + " "; } } } public void backSpace() { if (NameText.Length > 0) NameText = NameText.Substring(0, NameText.Length - 1); if (NameText.Length == 0) NameBlock.Text = EmptyText; else NameBlock.Text = NameText + " = " + Total; } public void addChar(int index) { if (index < 0) NameText += ' '; else { if (index <= 16) NameText += GREEK[index]; else NameText += GREEK[index + 1]; } NameBlock.Text = NameText + " = " + Total; } private void Button_Click(object sender, RoutedEventArgs e) { Button B = sender as Button; for (int i = 0; i < buttons.Length; ++i) { if (B == buttons[i]) { Total += number[i]; NameIndicesStack.Push(i); addChar(i); break; } } } private void ButtonReset_Click(object sender, RoutedEventArgs e) { NameIndicesStack.Clear(); Total = 0; NameText = ""; NameBlock.Text = EmptyText; } private void ButtonSpace_Click(object sender, RoutedEventArgs e) { if (Total > 0 && NameIndicesStack.Peek() >= 0) { NameIndicesStack.Push(-1); addChar(-1); } } private void ButtonBackSpace_Click(object sender, RoutedEventArgs e) { if (NameIndicesStack.Count > 0) { int i = NameIndicesStack.Pop(); if (i >= 0) Total -= number[i]; backSpace(); } } } }