source: 2014/tet/FileWatcher/FileWatcher/ProgramSelection.xaml.cs @ 5261

Revision 4833, 6.1 KB checked in by anlakane, 7 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Windows;
6using System.Windows.Controls;
7using System.Windows.Data;
8using System.Windows.Documents;
9using System.Windows.Input;
10using System.Windows.Media;
11using System.Windows.Media.Imaging;
12using System.Windows.Shapes;
13using System.Windows.Forms;
14
15namespace FileWatcher
16{
17    /// <summary>
18    /// Interaction logic for ProgramSelection.xaml
19    /// </summary>
20    public partial class ProgramSelection : Window
21    {
22        public ProgramSelection()
23        {
24            InitializeComponent();
25        }
26
27        public ProgramSelection(string execPath, string args, bool hasFileAsFirstParam, int editedIndex)
28            :this()
29        {
30            isEditMode = true;
31            ExecutablePath = execPath;
32            Arguments = args;
33            hasfileasfirstparameter = hasFileAsFirstParam;
34            EditedIndex = editedIndex;
35            UpdateVisibleParts();
36            programPath.Foreground = Brushes.Black;
37            doneButton.IsEnabled = true;
38        }
39
40        /// <summary>
41        ///
42        /// </summary>
43        /// <param name="programIndex">Mitä ohjelmaa muokataan.</param>
44        /*public ProgramSelection(int programIndex, bool addSubprogram)
45            :this()
46        {
47            ProgramIndex = programIndex;
48            AddSubprogram = addSubprogram;
49        }*/
50
51        private const string PROGRAMPATH_DEFAULTTEXT = @"C:\MyFolder\MyProgram.exe";
52        private const string ARGUMENTSBOX_DEFAULTTEXT = "-f %1 -nogui";
53
54        /// <summary>
55        /// Ohjelman sijainti.
56        /// </summary>
57        private String ExecutablePath { get; set; }
58
59        /// <summary>
60        /// Argumentit ohjelmalle sitä ajettaessa.
61        /// </summary>
62        private String Arguments { get; set; }
63
64        private bool hasfileasfirstparameter = true;
65
66        private bool isEditMode = false;
67        private int EditedIndex;
68        /*private int ProgramIndex;
69        private bool AddSubprogram;*/
70
71        private void browsePath_Click(object sender, RoutedEventArgs e)
72        {
73            var dialog = new System.Windows.Forms.OpenFileDialog();
74            System.Windows.Forms.DialogResult result = dialog.ShowDialog();
75            programPath.Foreground = Brushes.Black;
76            doneButton.IsEnabled = true;
77            ExecutablePath = dialog.FileName;
78            programPath.Text = dialog.FileName;
79        }
80
81        private void programPath_TextChanged(object sender, TextChangedEventArgs e)
82        {
83            ExecutablePath = programPath.Text;
84        }
85
86        private void programPath_GotFocus(object sender, RoutedEventArgs e)
87        {
88            if (programPath.Text == PROGRAMPATH_DEFAULTTEXT)
89            {
90                programPath.Text = "";
91                programPath.Foreground = Brushes.Black;
92            }
93        }
94
95        private void programPath_LostFocus(object sender, RoutedEventArgs e)
96        {
97            if (programPath.Text == "")
98            {
99                programPath.Text = PROGRAMPATH_DEFAULTTEXT;
100                programPath.Foreground = Brushes.Silver;
101                doneButton.IsEnabled = false;
102            }
103            else
104            {
105                doneButton.IsEnabled = true;
106            }
107        }
108
109        private void programPath_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
110        {
111            if (e.Key == Key.Enter)
112            {
113                ExecutablePath = programPath.Text;
114                programPath.MoveFocus(new TraversalRequest(FocusNavigationDirection.Down));
115            }
116        }
117
118        private void argumentsBox_TextChanged(object sender, TextChangedEventArgs e)
119        {
120            Arguments = argumentsBox.Text;
121        }
122
123        private void doneButton_Click(object sender, RoutedEventArgs e)
124        {
125            if (Arguments == ARGUMENTSBOX_DEFAULTTEXT) Arguments = "";
126            if (Program.ExecutablePrograms == null)
127                Program.ExecutablePrograms = new List<Executable>();
128            /*if (Program.ExecutablePrograms.Count != 0 && Program.ExecutablePrograms[ProgramIndex].SubPrograms != null && AddSubprogram)
129            {
130                Program.ExecutablePrograms[ProgramIndex].SubPrograms.Add(new Executable(ExecutablePath, Arguments, hasfileasfirstparameter, Program.ExecutablePrograms[ProgramIndex]));
131            }
132            else */if (isEditMode)
133            {
134                Program.ExecutablePrograms[EditedIndex] = new Executable(ExecutablePath, Arguments, hasfileasfirstparameter);
135            }
136            else Program.ExecutablePrograms.Add(new Executable(ExecutablePath, Arguments, hasfileasfirstparameter));
137
138            Program.UpdateExecutableList();
139            Close();
140        }
141
142        private void radioButton1_Checked(object sender, RoutedEventArgs e)
143        {
144            hasfileasfirstparameter = true;
145        }
146
147        private void radioButton2_Checked(object sender, RoutedEventArgs e)
148        {
149            hasfileasfirstparameter = false;
150        }
151
152        private void cancelButton_Click(object sender, RoutedEventArgs e)
153        {
154            Close();
155        }
156
157        private void UpdateVisibleParts()
158        {
159            programPath.Text = ExecutablePath;
160            argumentsBox.Text = Arguments;
161            if (hasfileasfirstparameter)
162                radioButton1.IsChecked = true;
163            else radioButton2.IsChecked = true;
164        }
165
166        private void argumentsBox_GotFocus(object sender, RoutedEventArgs e)
167        {
168            if (argumentsBox.Text == ARGUMENTSBOX_DEFAULTTEXT)
169            {
170                argumentsBox.Text = "";
171                argumentsBox.Foreground = Brushes.Black;
172            }
173        }
174
175        private void argumentsBox_LostFocus(object sender, RoutedEventArgs e)
176        {
177            if (argumentsBox.Text == "")
178            {
179                argumentsBox.Text = ARGUMENTSBOX_DEFAULTTEXT;
180                argumentsBox.Foreground = Brushes.Silver;
181            }
182        }
183    }
184}
Note: See TracBrowser for help on using the repository browser.