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

Revision 4833, 11.4 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.Navigation;
13using System.Windows.Shapes;
14using System.Windows.Threading;
15//using System.Windows.Forms;
16
17
18namespace FileWatcher
19{
20    /// <summary>
21    /// Interaction logic for MainWindow.xaml
22    /// </summary>
23    public partial class MainWindow : Window
24    {
25        public const string DIRECTORY_DEFAULT_TEXT = @"C:\MyParentFolder\MyFolder";
26        public const string EXTENSIONS_DEFAULT_TEXT = ".mp3, .avi, .txt, .*";
27
28        public static ScrollViewer MessageWindow;
29        public static ListBox ProgramWindow;
30        public static TextBox Directory;
31        public static TextBox Extensions;
32        public static CheckBox CreationBox;
33        public static CheckBox DeletionBox;
34        public static CheckBox ChangeBox;
35        public static CheckBox RenameBox;
36        public static CheckBox SubfolderBox;
37        public static Button StartButton;
38        public static Button StopButton;
39        public static Button ResetButton;
40        public static Button LoadButton;
41        public static Button DirectoryBrowseButton;
42        public static Dispatcher UIDispatcher = Dispatcher.CurrentDispatcher;
43
44        public MainWindow()
45        {
46            InitializeComponent();
47            MessageWindow = messageWindow;
48            ProgramWindow = programList;
49            CreationBox = creationBox;
50            DeletionBox = deletionBox;
51            ChangeBox = changeBox;
52            RenameBox = renameBox;
53            Directory = directory;
54            Extensions = extensions;
55            SubfolderBox = subdirectoryCheckbox;
56            StartButton = startButton;
57            StopButton = stopButton;
58            ResetButton = clearButton;
59            LoadButton = loadSettings;
60            DirectoryBrowseButton = directorySelection;
61            Program.Initialize();
62        }
63
64        private void directorySelection_Click(object sender, RoutedEventArgs e)
65        {
66            var dialog = new System.Windows.Forms.FolderBrowserDialog();
67            System.Windows.Forms.DialogResult result = dialog.ShowDialog();
68            Program.SelectedFolder = dialog.SelectedPath;
69            directory.Text = dialog.SelectedPath;
70            directory.Foreground = Brushes.Black;
71        }
72
73        private void directory_TextChanged(object sender, TextChangedEventArgs e)
74        {
75
76        }
77
78        /// <summary>
79        /// Hakemistotekstiboksia klikataan
80        /// </summary>
81        /// <param name="sender"></param>
82        /// <param name="e"></param>
83        private void directory_GotFocus(object sender, RoutedEventArgs e)
84        {
85            if (directory.Text == DIRECTORY_DEFAULT_TEXT)
86            {
87                directory.Text = "";
88                directory.Foreground = Brushes.Black;
89            }
90        }
91
92        private void directory_LostFocus(object sender, RoutedEventArgs e)
93        {
94            if (directory.Text == "")
95            {
96                directory.Text = DIRECTORY_DEFAULT_TEXT;
97                directory.Foreground = Brushes.Silver;
98            }
99        }
100
101        private void directory_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
102        {
103            if (e.Key == Key.Enter)
104            {
105                Program.SelectedFolder = directory.Text;
106                directory.MoveFocus(new TraversalRequest(FocusNavigationDirection.Down));
107            }
108        }
109
110        private void extensions_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
111        {
112            if (e.Key == Key.Enter)
113            {
114                Program.SelectedFileExtensions = ErotteleTiedostotyypit(extensions.Text);
115            }
116        }
117
118        /// <summary>
119        /// Erotellaan merkkijonosta tiedostopäätteet erilleen.
120        /// </summary>
121        /// <param name="tyypit">Tiedostotyypit eroteltuna pilkulla.</param>
122        private String[] ErotteleTiedostotyypit(String tyypit)
123        {
124            String[] päätteet;
125            StringBuilder sb = new StringBuilder();
126
127            // poistetaan välilyönnit
128            for (int i = 0; i < tyypit.Length; i++)
129            {
130                if (tyypit[i] != ' ') sb.Append(tyypit[i]);
131            }
132
133            päätteet = sb.ToString().Split(',');
134
135            for (int i = 0; i < päätteet.Length; i++)
136            {
137                päätteet[i] = päätteet[i].Insert(0, "*");
138            }
139
140            return päätteet;
141        }
142
143        private void extensions_LostFocus(object sender, RoutedEventArgs e)
144        {
145            if (extensions.Text == "")
146            {
147                extensions.Text = EXTENSIONS_DEFAULT_TEXT;
148                extensions.Foreground = Brushes.Silver;
149            }
150            else Program.SelectedFileExtensions = ErotteleTiedostotyypit(extensions.Text);
151        }
152
153        private void extensions_GotFocus(object sender, RoutedEventArgs e)
154        {
155            if (extensions.Text == EXTENSIONS_DEFAULT_TEXT)
156            {
157                extensions.Text = "";
158                extensions.Foreground = Brushes.Black;
159            }
160        }
161
162        private void startButton_Click(object sender, RoutedEventArgs e)
163        {
164            bool onnistuiko = Program.Start();
165            if (onnistuiko)
166            {
167                extensions.IsEnabled = false;
168                directory.IsEnabled = false;
169                startButton.IsEnabled = false;
170                stopButton.IsEnabled = true;
171                clearButton.IsEnabled = false;
172
173                subdirectoryCheckbox.IsEnabled = false;
174                CreationBox.IsEnabled = false;
175                DeletionBox.IsEnabled = false;
176                ChangeBox.IsEnabled = false;
177                RenameBox.IsEnabled = false;
178                LoadButton.IsEnabled = false;
179                DirectoryBrowseButton.IsEnabled = false;
180            }
181        }
182
183        private void executeAdd_Click(object sender, RoutedEventArgs e)
184        {
185            ProgramSelection selectionWindow;
186            /*if (MainWindow.ProgramWindow.SelectedIndex != -1)
187            {
188                selectionWindow = new ProgramSelection(MainWindow.ProgramWindow.SelectedIndex, true);
189            }
190            else */selectionWindow = new ProgramSelection();
191            selectionWindow.Show();
192        }
193
194        private void executeRemove_Click(object sender, RoutedEventArgs e)
195        {
196            int i = programList.SelectedIndex;
197            if (i == -1) return;
198
199            Program.ExecutablePrograms.RemoveAt(i);
200            Program.UpdateExecutableList();
201        }
202
203        private void executeEdit_Click(object sender, RoutedEventArgs e)
204        {
205            if (programList.SelectedIndex == -1) return;
206            ProgramSelection selectionWindow = new ProgramSelection(Program.ExecutablePrograms[programList.SelectedIndex].Path, Program.ExecutablePrograms[programList.SelectedIndex].Arguments, Program.ExecutablePrograms[programList.SelectedIndex].HasFileAsFirstParameter, programList.SelectedIndex);
207            selectionWindow.Show();
208        }
209
210        private void stopButton_Click(object sender, RoutedEventArgs e)
211        {
212            Program.StopWatching();
213            stopButton.IsEnabled = false;
214            startButton.IsEnabled = true;
215            extensions.IsEnabled = true;
216            directory.IsEnabled = true;
217            clearButton.IsEnabled = true;
218
219            subdirectoryCheckbox.IsEnabled = true;
220            CreationBox.IsEnabled = true;
221            DeletionBox.IsEnabled = true;
222            ChangeBox.IsEnabled = true;
223            RenameBox.IsEnabled = true;
224            DirectoryBrowseButton.IsEnabled = true;
225            LoadButton.IsEnabled = true;
226        }
227
228        private void optionsButton_Click(object sender, RoutedEventArgs e)
229        {
230            Options options = new Options();
231            options.Show();
232        }
233
234        public static void UpdateVisuals()
235        {
236            if (Program.SelectedFolder != "" && Program.SelectedFolder != null)
237            {
238                Directory.Text = Program.SelectedFolder;
239                Directory.Foreground = Brushes.Black;
240            }
241
242            if (Program.SelectedFileExtensions != null)
243            {
244                string result = "";
245                foreach (String extension in Program.SelectedFileExtensions)
246                {
247                    result += extension;
248                }
249
250                if (result != "")
251                {
252                    Extensions.Text = result;
253                    Extensions.Foreground = Brushes.Black;
254                }
255            }
256
257            if (Program.ExecutablePrograms != null)
258                Program.UpdateExecutableList();
259
260            CreationBox.IsChecked = Program.WatchCreation;
261            DeletionBox.IsChecked = Program.WatchDeletion;
262            ChangeBox.IsChecked = Program.WatchChanges;
263            RenameBox.IsChecked = Program.WatchRenaming;
264            SubfolderBox.IsChecked = Program.WatchSubdirectories;
265        }
266
267        private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
268        {
269            if (Program.SaveSettingsAutomatically)
270            {
271                Program.SaveSettings();
272                Program.LogWriter.WriteLine();
273                Program.LogWriter.WriteLine();
274                Program.LogWriter.Flush();
275                Program.LogWriter.Close();
276                Program.LogWriter.Dispose();
277            }
278            Program.StopWatching();
279        }
280
281        private void saveSettings_Click(object sender, RoutedEventArgs e)
282        {
283            Program.SaveSettings();
284            Program.AddMessage("Saved current settings.");
285        }
286
287        private void loadSettings_Click(object sender, RoutedEventArgs e)
288        {
289            OptionsFile of = Program.LoadSettings();
290            Program.UseSettings(of);
291            UpdateVisuals();
292            Program.AddMessage("Loaded previous settings.");
293        }
294
295        private void clearButton_Click(object sender, RoutedEventArgs e)
296        {
297            directory.Text = DIRECTORY_DEFAULT_TEXT;
298            directory.Foreground = Brushes.Silver;
299            Program.SelectedFolder = "";
300            extensions.Text = EXTENSIONS_DEFAULT_TEXT;
301            extensions.Foreground = Brushes.Silver;
302            Program.SelectedFileExtensions = null;
303            creationBox.IsChecked = true;
304            deletionBox.IsChecked = false;
305            changeBox.IsChecked = false;
306            renameBox.IsChecked = false;
307            if (Program.ExecutablePrograms != null)
308            {
309                Program.ExecutablePrograms.Clear();
310                Program.UpdateExecutableList();
311            }
312            Program.ClearMessages();
313        }
314
315        private void subdirectoryCheckbox_Checked(object sender, RoutedEventArgs e)
316        {
317            Program.WatchSubdirectories = true;
318        }
319
320        private void subdirectoryCheckbox_Unchecked(object sender, RoutedEventArgs e)
321        {
322            Program.WatchSubdirectories = false;
323        }
324    }
325}
Note: See TracBrowser for help on using the repository browser.