public void ApplyItemTemplate(string templateName) { string assemblyFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); string templatePath = Path.Combine(assemblyFolder, "ItemTemplates", templateName + ".xaml"); if (!File.Exists(templatePath)) { ToolbarLogger.GetLogger("EverythingToolbar").Error("Item template file not found. Defaulting to 'Normal' template."); templatePath = Path.Combine(assemblyFolder, "ItemTemplates", "Normal.xaml"); } AddResource(templatePath); }
public void ApplyTheme(string themeName) { string assemblyFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); string themePath = Path.Combine(assemblyFolder, "Themes", themeName + ".xaml"); if (!File.Exists(themePath)) { ToolbarLogger.GetLogger("EverythingToolbar").Error("Theme file not found. Defaulting to 'Medium' theme."); themePath = Path.Combine(assemblyFolder, "Themes", "Medium.xaml"); } AddResource(themePath); }
public bool AddOrReplace(string name, Key key, ModifierKeys modifiers, EventHandler <HotkeyEventArgs> handler) { try { shortcuts[name] = handler; HotkeyManager.Current.AddOrReplace(name, key, modifiers, handler); return(true); } catch (Exception e) { ToolbarLogger.GetLogger("EverythingInstance").Error(e, "Failed to register hotkey."); return(false); } }
public void SaveHistory() { try { Directory.CreateDirectory(Path.GetDirectoryName(historyPath)); var serializer = new XmlSerializer(history.GetType()); using (var writer = XmlWriter.Create(historyPath)) { serializer.Serialize(writer, history); } } catch (Exception e) { ToolbarLogger.GetLogger("EverythingToolbar").Error(e, "Failed to save search term history."); } }
public void AddResource(string path) { if (!File.Exists(path)) { ToolbarLogger.GetLogger("EverythingToolbar").Error("Could not find resource file " + path); return; } ResourceChanged?.Invoke(this, new ResourcesChangedEventArgs() { NewResource = new ResourceDictionary() { Source = new Uri(path) } }); }
public bool AddResource(string type, string name) { string assemblyFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); string path = Path.Combine(assemblyFolder, type, name + ".xaml"); if (!File.Exists(path)) { ToolbarLogger.GetLogger("EverythingToolbar").Error("Could not find resource file " + path); return(false); } ResourceChanged?.Invoke(this, new ResourcesChangedEventArgs() { NewResource = new ResourceDictionary() { Source = new Uri(path) } }); return(true); }
public List <string> LoadHistory() { if (File.Exists(historyPath)) { var serializer = new XmlSerializer(history.GetType()); try { using (var reader = XmlReader.Create(historyPath)) { return((List <string>)serializer.Deserialize(reader)); } } catch (Exception e) { ToolbarLogger.GetLogger("EverythingToolbar").Error(e, "Failed to load search term history."); } } return(new List <string>()); }
ObservableCollection <Filter> LoadFilters() { var filters = new ObservableCollection <Filter>(); if (!File.Exists(Properties.Settings.Default.filtersPath)) { ToolbarLogger.GetLogger("EverythingToolbar").Info("Filters.csv could not be found at " + Properties.Settings.Default.filtersPath); MessageBox.Show(Properties.Resources.MessageBoxSelectFiltersCsv, Properties.Resources.MessageBoxSelectFiltersCsvTitle, MessageBoxButtons.OK, MessageBoxIcon.Information); using (OpenFileDialog openFileDialog = new OpenFileDialog()) { openFileDialog.InitialDirectory = Path.Combine(Properties.Settings.Default.filtersPath, ".."); openFileDialog.Filter = "Filters.csv|Filters.csv|All files (*.*)|*.*"; openFileDialog.FilterIndex = 1; if (openFileDialog.ShowDialog() == DialogResult.OK) { Properties.Settings.Default.filtersPath = openFileDialog.FileName; CreateFileWatcher(); Properties.Settings.Default.Save(); } else { Properties.Settings.Default.isImportFilters = false; Properties.Settings.Default.Save(); return(defaultUserFilters); } } } try { using (TextFieldParser csvParser = new TextFieldParser(Properties.Settings.Default.filtersPath)) { csvParser.CommentTokens = new string[] { "#" }; csvParser.SetDelimiters(new string[] { "," }); csvParser.HasFieldsEnclosedInQuotes = true; // Skip header row csvParser.ReadLine(); while (!csvParser.EndOfData) { string[] fields = csvParser.ReadFields(); // Skip default filters string search = fields[6].Trim(); if (search == "file:" || search == "folder:" || search == "") { continue; } // Everything's default filters are uppercase fields[0] = fields[0].Replace("AUDIO", Properties.Resources.UserFilterAudio); fields[0] = fields[0].Replace("COMPRESSED", Properties.Resources.UserFilterCompressed); fields[0] = fields[0].Replace("DOCUMENT", Properties.Resources.UserFilterDocument); fields[0] = fields[0].Replace("EXECUTABLE", Properties.Resources.UserFilterExecutable); fields[0] = fields[0].Replace("PICTURE", Properties.Resources.UserFilterPicture); fields[0] = fields[0].Replace("VIDEO", Properties.Resources.UserFilterVideo); filters.Add(new Filter() { Name = fields[0], IsMatchCase = fields[1] == "1", IsMatchWholeWord = fields[2] == "1", IsMatchPath = fields[3] == "1", IsRegExEnabled = fields[5] == "1", Search = fields[6], Macro = fields[7] }); } } } catch (Exception e) { ToolbarLogger.GetLogger("EverythingToolbar").Error(e, "Parsing Filters.csv failed."); return(defaultUserFilters); } return(filters); }
ObservableCollection <Filter> LoadFilters() { var filters = new ObservableCollection <Filter>(); if (!File.Exists(Properties.Settings.Default.filtersPath)) { ToolbarLogger.GetLogger("EverythingToolbar").Info("Filters.csv could not be found at " + Properties.Settings.Default.filtersPath); string everythingIniPath = Path.Combine(Properties.Settings.Default.filtersPath, "..", "Everything.ini"); if (!File.Exists(everythingIniPath)) { ToolbarLogger.GetLogger("EverythingToolbar").Info("Everything.ini could not be found."); MessageBox.Show("Pleae select Filters.csv. It gets created after editing filters in Everything for the first time."); using (OpenFileDialog openFileDialog = new OpenFileDialog()) { openFileDialog.InitialDirectory = "c:\\"; openFileDialog.Filter = "Filters.csv|Filters.csv|All files (*.*)|*.*"; openFileDialog.FilterIndex = 1; if (openFileDialog.ShowDialog() == DialogResult.OK) { Properties.Settings.Default.filtersPath = openFileDialog.FileName; Properties.Settings.Default.Save(); } else { return(defaultUserFilters); } } } else { ToolbarLogger.GetLogger("EverythingToolbar").Info("Filters.csv does not exist. Using default filters."); return(defaultUserFilters); } } try { using (TextFieldParser csvParser = new TextFieldParser(Properties.Settings.Default.filtersPath)) { csvParser.CommentTokens = new string[] { "#" }; csvParser.SetDelimiters(new string[] { "," }); csvParser.HasFieldsEnclosedInQuotes = true; // Skip header row csvParser.ReadLine(); while (!csvParser.EndOfData) { string[] fields = csvParser.ReadFields(); // Skip default filters string search = fields[6].Trim(); if (search == "file:" || search == "folder:" || search == "") { continue; } // Everything's default filters are uppercase fields[0] = fields[0].Replace("AUDIO", "Audio"); fields[0] = fields[0].Replace("COMPRESSED", "Compressed"); fields[0] = fields[0].Replace("DOCUMENT", "Document"); fields[0] = fields[0].Replace("EXECUTABLE", "Executable"); fields[0] = fields[0].Replace("PICTURE", "Picture"); fields[0] = fields[0].Replace("VIDEO", "Video"); filters.Add(new Filter() { Name = fields[0], IsMatchCase = fields[1] == "1", IsMatchWholeWord = fields[2] == "1", IsMatchPath = fields[3] == "1", IsRegExEnabled = fields[5] == "1", Search = fields[6], Macro = fields[7] }); } } } catch (Exception e) { ToolbarLogger.GetLogger("EverythingToolbar").Error(e, "Parsing Filters.csv failed."); return(defaultUserFilters); } return(filters); }
// Taken from: https://stackoverflow.com/a/11124118/1477251 public static string GetBytesReadable(string path) { // Get file length long length; try { length = new FileInfo(path).Length; } catch (Exception e) { ToolbarLogger.GetLogger("EverythingToolbar").Error(e, "Failed to get file size."); return(""); } // Get absolute value long absolute_i = length < 0 ? -length : length; // Determine the suffix and readable value string suffix; double readable; if (absolute_i >= 0x1000000000000000) // Exabyte { suffix = "EB"; readable = (length >> 50); } else if (absolute_i >= 0x4000000000000) // Petabyte { suffix = "PB"; readable = (length >> 40); } else if (absolute_i >= 0x10000000000) // Terabyte { suffix = "TB"; readable = (length >> 30); } else if (absolute_i >= 0x40000000) // Gigabyte { suffix = "GB"; readable = (length >> 20); } else if (absolute_i >= 0x100000) // Megabyte { suffix = "MB"; readable = (length >> 10); } else if (absolute_i >= 0x400) // Kilobyte { suffix = "KB"; readable = length; } else { return(length.ToString("0 B")); // Byte } // Divide by 1024 to get fractional value readable /= 1024; // Return formatted number with suffix return(readable.ToString("0.### ") + suffix); }
ObservableCollection <Filter> LoadFilters() { var filters = new ObservableCollection <Filter>(); if (!File.Exists(Properties.Settings.Default.filtersPath)) { ToolbarLogger.GetLogger("EverythingToolbar").Info("Filters.csv could not be found at " + Properties.Settings.Default.filtersPath); MessageBox.Show("Please select the Filters.csv file. By default it can be found in %APPDATA%\\Everything. " + "Its location might be different depending on your installation. If the file does not exist for you " + "that means you didn't perform any changes to Everything's default filters.", "Filters.csv not found", MessageBoxButtons.OK, MessageBoxIcon.Information); using (OpenFileDialog openFileDialog = new OpenFileDialog()) { openFileDialog.InitialDirectory = Path.Combine(Properties.Settings.Default.filtersPath, ".."); openFileDialog.Filter = "Filters.csv|Filters.csv|All files (*.*)|*.*"; openFileDialog.FilterIndex = 1; if (openFileDialog.ShowDialog() == DialogResult.OK) { Properties.Settings.Default.filtersPath = openFileDialog.FileName; CreateFileWatcher(); Properties.Settings.Default.Save(); } else { Properties.Settings.Default.isImportFilters = false; Properties.Settings.Default.Save(); return(defaultUserFilters); } } } try { using (TextFieldParser csvParser = new TextFieldParser(Properties.Settings.Default.filtersPath)) { csvParser.CommentTokens = new string[] { "#" }; csvParser.SetDelimiters(new string[] { "," }); csvParser.HasFieldsEnclosedInQuotes = true; // Skip header row csvParser.ReadLine(); while (!csvParser.EndOfData) { string[] fields = csvParser.ReadFields(); // Skip default filters string search = fields[6].Trim(); if (search == "file:" || search == "folder:" || search == "") { continue; } // Everything's default filters are uppercase fields[0] = fields[0].Replace("AUDIO", "Audio"); fields[0] = fields[0].Replace("COMPRESSED", "Compressed"); fields[0] = fields[0].Replace("DOCUMENT", "Document"); fields[0] = fields[0].Replace("EXECUTABLE", "Executable"); fields[0] = fields[0].Replace("PICTURE", "Picture"); fields[0] = fields[0].Replace("VIDEO", "Video"); filters.Add(new Filter() { Name = fields[0], IsMatchCase = fields[1] == "1", IsMatchWholeWord = fields[2] == "1", IsMatchPath = fields[3] == "1", IsRegExEnabled = fields[5] == "1", Search = fields[6], Macro = fields[7] }); } } } catch (Exception e) { ToolbarLogger.GetLogger("EverythingToolbar").Error(e, "Parsing Filters.csv failed."); return(defaultUserFilters); } return(filters); }