Пример #1
0
 static void Main()
 {
     string[] args = Environment.GetCommandLineArgs();
     if (args.Count() > 1) {
         if (UACHelperFunctions.UACHelper.IsAdmin()) {
             Load.FilesCache = Load.FilesCache.LoadFromDisk<Dictionary<UInt32, Item>>(
                 Path.Combine(Application.UserAppDataPath, "FilesCache"));
             Settings settings = new Settings();
             settings =
                 settings.LoadFromDisk<Settings>(Path.Combine(Application.UserAppDataPath,
                                                              "Settings"));
             Dictionary<string, List<string>> aprioriData = new Dictionary<string, List<string>>();
             var allEnabledItems = (from directory in settings.EnabledDirectories select directory.Items).SelectMany(item => item).ToList();
             foreach (Item item in allEnabledItems) {
                 aprioriData[item.Path] = (from tag in item.Tags select tag.Name).ToList();
             }
             Apriori.Apriori apriori = new Apriori.Apriori(aprioriData, 5);
             var frequentSets = apriori.getFrequentSets();
             var filesToSort = from file in allEnabledItems where file.Invalidated select file;
             foreach (Item file in filesToSort) {
                 TreeHelper.createSortedTree(file, frequentSets, settings);
             }
             Load.FilesCache.SaveToDisk(Path.Combine(Application.UserAppDataPath, "FilesCache"));
             Application.Exit();
             return;
         }
     }
     Application.EnableVisualStyles();
     Application.SetCompatibleTextRenderingDefault(false);
     Application.Run(new TwilightSortle());
 }
Пример #2
0
        private void beginLoad(bool async = true)
        {
            Action action = (() => {
                TwoLight_Sortle.Load.FilesCache =
                    TwoLight_Sortle.Load.FilesCache.LoadFromDisk<Dictionary<UInt32, Item>>(
                        Path.Combine(Application.UserAppDataPath, "FilesCache"));
            });
            Action deleteAction = (() => {
                IEnumerable<Item> deletedItems = from kvPair in TwoLight_Sortle.Load.FilesCache
                                                 where !kvPair.Value.Exists
                                                 select kvPair.Value;
                foreach (Item item in deletedItems) {
                    item.Delete();
                }
                TwoLight_Sortle.Load.FilesCache =
                    TwoLight_Sortle.Load.FilesCache.Where(kvPair => kvPair.Value.Exists).
                        ToDictionary(
                            kvPair => kvPair.Key,
                            kvPair => kvPair.Value);
            });
            Action filesAction = (() => {
                Tags.TagList = Tags.TagList.LoadFromDisk<Dictionary<string, Tag>>(Path.Combine(
                    Application.UserAppDataPath, "Tags"));
                TwoLight_Sortle.Load.FilesCache.ToList().ForEach(item => item.Value.Tags.ToList().ForEach(tag => tag.AddedImage(item.Value)));
            });
            settings = new Settings();
            Action loadSettingsAction = (() => {
                settings =
                    settings.LoadFromDisk<Settings>(Path.Combine(Application.UserAppDataPath,
                                                                 "Settings"));
            });
            Action callback = (() => {
                updateMainListing(search.Items);
                updateSearchOptionsMenuCheckedStatus();
                updatePreferencesPanel();
                buildQuickFolderAccessList();
            });
            Action dirStateAction = (() => {
                search = new Search(allEnabledItems(), "", settings.SearchOptions);
                startupComplete = true;
            });
            if (async) {
                runLongOperation(action, null, "Verifying File Cache Integrity");
                runLongOperation(deleteAction, null, "Reticulating Splines");
                runLongOperation(filesAction, null, "Loading Tags Cache");
                runLongOperation(loadSettingsAction, null, "Loading Directory Data");
                runLongOperation(dirStateAction, callback, "Generating Directory State");
            }
            else {
                action();
                deleteAction();
                filesAction();
                loadSettingsAction();
                dirStateAction();
                callback();

            }
        }