public DynamicKeyboardFolder() { // Find all possible xml files string filePath = Settings.Default.DynamicKeyboardsLocation; keyboards = new List <KeyboardInfo>(); if (Directory.Exists(filePath)) { string[] fileArray = Directory.GetFiles(filePath, "*.xml"); Log.InfoFormat("Found {0} keyboard files", fileArray.Length); // Read in keyboard name, symbol, hidden state from each file // Note that ordering is currently undefined foreach (string fileName in fileArray) { string keyboardPath = Path.Combine(filePath, fileName); KeyboardInfo info = GetKeyboardInfo(keyboardPath); if (null != info.fullPath) { if (!info.isHidden) { keyboards.Add(info); Log.InfoFormat("Found keyboard file: {0}", info.fullPath); } else { Log.InfoFormat("Ignoring keyboard file: {0}", info.fullPath); } } } } }
// get name from XML if present private KeyboardInfo GetKeyboardInfo(string keyboardPath) { KeyboardInfo info = new KeyboardInfo(); info.fullPath = keyboardPath; try { XmlKeyboard spec = XmlKeyboard.ReadFromFile(keyboardPath); info.keyboardName = DynamicKeyboard.StringWithValidNewlines(spec.Name); info.symbolString = spec.Symbol; info.isHidden = spec.Hidden; // default to filename if no name given if (info.keyboardName.Length == 0) { info.keyboardName = Path.GetFileName(keyboardPath); } } catch (Exception e) { // replace info with default (no contents) info = new KeyboardInfo(); Log.Error(e.ToString()); } return(info); }
public DynamicKeyboardFolder(String filePath) { if (String.IsNullOrEmpty(filePath)) { filePath = Settings.Default.DynamicKeyboardsLocation; } keyboards = new List <KeyboardInfo>(); // Find all possible xml files if (Directory.Exists(filePath)) { string[] fileArray = Directory.GetFiles(filePath, "*.xml"); Log.InfoFormat("Found {0} keyboard files", fileArray.Length); // Read in keyboard name, symbol, hidden state from each file // Note that ordering is currently undefined foreach (string fullName in fileArray) { KeyboardInfo info = GetKeyboardInfo(fullName); if (null != info.fullPath) { if (!info.isHidden) { keyboards.Add(info); Log.InfoFormat("Found keyboard file: {0}", info.fullPath); } else { Log.InfoFormat("Ignoring keyboard file: {0}", info.fullPath); } } } // Look for any subdirs string[] folderArray = Directory.GetDirectories(filePath); foreach (string fullPath in folderArray) { KeyboardInfo info = GetKeyboardInfo(fullPath); string folderName = new DirectoryInfo(fullPath).Name; if (null != info.fullPath && !folderName.StartsWith(".")) { keyboards.Add(info); Log.InfoFormat("Found keyboard folder: {0}", info.fullPath); } } } }