Esempio n. 1
0
 void manager_OnChange(IVCManager sender)
 {
     (PluginBase.MainForm as Form).BeginInvoke((MethodInvoker) delegate
     {
         refreshTimer.Stop();
         refreshTimer.Start();
     });
 }
Esempio n. 2
0
 void manager_OnChange(IVCManager sender)
 {
     (PluginBase.MainForm as Form).BeginInvoke((MethodInvoker)delegate
     {
         refreshTimer.Stop();
         refreshTimer.Start();
     });
 }
Esempio n. 3
0
        static void AskWithTwoFiles(IVCManager manager, string verb, string from, string to, bool commitBoth)
        {
            var fromFileRelative = GetRelativeFile(from);
            var toFileRelative   = GetRelativeFile(to);

            var message = AskForCommit($"{verb} {fromFileRelative} to {toFileRelative}");

            if (message != null)
            {
                manager.Commit(commitBoth ? new[] { from, to } : new [] { to }, message);
            }
        }
Esempio n. 4
0
        private void CreateWatcher(string path, IVCManager manager)
        {
            var watcher = new FileSystemWatcher(path);

            watcher.IncludeSubdirectories = true;
            watcher.NotifyFilter          = NotifyFilters.FileName | NotifyFilters.LastWrite | NotifyFilters.DirectoryName | NotifyFilters.Size | NotifyFilters.Attributes;
            watcher.Changed            += new FileSystemEventHandler(watcher_Changed);
            watcher.Deleted            += new FileSystemEventHandler(watcher_Changed);
            watcher.EnableRaisingEvents = true;
            watchers.Add(watcher, manager);

            dirtyVC.Add(manager);
        }
Esempio n. 5
0
        internal void ForceRefresh()
        {
            lock (dirtyVC)
            {
                foreach (FileSystemWatcher watcher in watchers.Keys)
                {
                    IVCManager manager = watchers[watcher];
                    dirtyVC.Add(manager);
                }
            }

            updateTimer.Stop();
            updateTimer.Interval = 4000;
            updateTimer.Start();
        }
Esempio n. 6
0
        public void Changed(IVCManager manager)
        {
            if (disposing || updateTimer == null)
            {
                return;
            }

            lock (dirtyVC)
            {
                dirtyVC.Add(manager);
            }

            updateTimer.Stop();
            updateTimer.Start();
        }
Esempio n. 7
0
        private void watcher_Changed(object sender, FileSystemEventArgs e)
        {
            if (lastDirtyPath != null && e.FullPath.StartsWith(lastDirtyPath))
            {
                return;
            }
            lastDirtyPath = e.FullPath;

            FileSystemWatcher watcher = (FileSystemWatcher)sender;
            IVCManager        manager = watchers[watcher];

            if (manager.SetPathDirty(e.FullPath, watcher.Path))
            {
                Changed(manager);
            }
        }
        internal void ForceRefresh()
        {
            lock (dirtyVC)
            {
                foreach (FileSystemWatcher watcher in watchers.Keys)
                {
                    IVCManager manager = watchers[watcher];
                    if (!dirtyVC.Contains(manager))
                    {
                        dirtyVC.Add(manager);
                    }
                }
            }

            (PluginBase.MainForm as Form).BeginInvoke((MethodInvoker) delegate
            {
                updateTimer.Stop();
                updateTimer.Interval = 1000;
                updateTimer.Start();
            });
        }
        public void Changed(IVCManager manager)
        {
            if (disposing || updateTimer == null)
            {
                return;
            }

            lock (dirtyVC)
            {
                if (!dirtyVC.Contains(manager))
                {
                    dirtyVC.Add(manager);
                }
            }

            (PluginBase.MainForm as Form).BeginInvoke((MethodInvoker) delegate
            {
                updateTimer.Stop();
                updateTimer.Start();
            });
        }
Esempio n. 10
0
        void UpdateNodeStatus(GenericNode node)
        {
            if (node.Meta == null)
            {
                node.Meta = new Dictionary <string, object>();
            }

            if (!node.Meta.ContainsKey(META_VC))
            {
                LocateVC(node);
            }

            IVCManager currentVC = node.Meta[META_VC] as IVCManager;
            string     root      = (string)node.Meta[META_ROOT];

            if (currentVC != null)
            {
                VCItemStatus status = currentVC.GetOverlay(node.BackingPath, root);
                node.Meta[META_STATUS] = status;
                OverlayMap.SetOverlay(status, node, currentTree);
            }
        }
Esempio n. 11
0
        void updateTimer_Tick(object sender, System.Timers.ElapsedEventArgs e)
        {
            updateTimer.Stop();
            updateTimer.Interval = 4000;
            lastDirtyPath        = null;
            if (disposing)
            {
                return;
            }

            lock (dirtyVC)
            {
                foreach (FileSystemWatcher watcher in watchers.Keys)
                {
                    IVCManager manager = watchers[watcher];
                    if (dirtyVC.Contains(manager))
                    {
                        manager.GetStatus(watcher.Path);
                    }
                }
                dirtyVC.Clear();
            }
        }
Esempio n. 12
0
 public void AddVCManager(IVCManager manager)
 {
     ProjectWatcher.VCManagers.Add(manager);
     manager.OnChange += manager_OnChange;
 }
Esempio n. 13
0
        public void Changed(IVCManager manager)
        {
            if (disposing || updateTimer == null) return;

            lock (dirtyVC)
            {
                if (!dirtyVC.Contains(manager))
                    dirtyVC.Add(manager);
            }

            (PluginBase.MainForm as Form).BeginInvoke((MethodInvoker)delegate
            {
                updateTimer.Stop();
                updateTimer.Start();
            });
        }
Esempio n. 14
0
        public ProjectSelectionState(ProjectTreeView tree)
        {
            if (tree == null || tree.SelectedNodes.Count == 0)
            {
                return;
            }

            foreach (TreeNode node in tree.SelectedNodes)
            {
                if (node is FileNode)
                {
                    Files++;
                }
                else if (node is DirectoryNode)
                {
                    Dirs++;
                }
                else
                {
                    return;  // unknown node in selection - no action
                }
                GenericNode gnode = (GenericNode)node;
                if (gnode.Meta == null || !gnode.Meta.ContainsKey(OverlayManager.META_STATUS) ||
                    !gnode.Meta.ContainsKey(OverlayManager.META_VC))
                {
                    return; // incomplete status
                }
                if (Manager == null)
                {
                    Manager = gnode.Meta[OverlayManager.META_VC] as IVCManager;
                }
                else if (gnode.Meta[OverlayManager.META_VC] != Manager)
                {
                    return; // several managers...
                }
                VCItemStatus status = (VCItemStatus)(gnode.Meta[OverlayManager.META_STATUS]);
                if (status == VCItemStatus.Unknown)
                {
                    Unknown++;
                }
                else if (status == VCItemStatus.Ignored)
                {
                    Ignored++;
                }
                else if (status == VCItemStatus.Added)
                {
                    Added++;
                }
                else if (status == VCItemStatus.Conflicted)
                {
                    Conflict++;
                }
                else if (status == VCItemStatus.Modified)
                {
                    Modified++; Revert++; Diff++;
                }
                else if (status == VCItemStatus.Deleted)
                {
                    Revert++; Diff++;
                }
                else if (status == VCItemStatus.Replaced)
                {
                    Replaced++; Revert++;
                }
                else
                {
                    Other++;
                }
                Total++;
            }
        }
Esempio n. 15
0
        internal static bool HandleFileDelete(string[] paths, bool confirm)
        {
            if (paths == null || paths.Length == 0)
            {
                return(false);
            }
            WatcherVCResult result = fsWatchers.ResolveVC(Path.GetDirectoryName(paths[0]));

            if (result == null)
            {
                return(false);
            }

            List <string> svnRemove       = new List <string>();
            List <string> regularRemove   = new List <string>();
            List <string> hasModification = new List <string>();
            List <string> hasUnknown      = new List <string>();

            try
            {
                foreach (string path in paths)
                {
                    result = fsWatchers.ResolveVC(path, true);
                    if (result == null || result.Status == VCItemStatus.Unknown || result.Status == VCItemStatus.Ignored)
                    {
                        regularRemove.Add(path);
                    }
                    else
                    {
                        IVCManager manager = result.Manager;
                        string     root    = result.Watcher.Path;
                        int        p       = root.Length + 1;

                        if (Directory.Exists(path))
                        {
                            List <string> files = new List <string>();
                            GetAllFiles(path, files);
                            foreach (string file in files)
                            {
                                VCItemStatus status = manager.GetOverlay(file, root);
                                if (status == VCItemStatus.Unknown || status == VCItemStatus.Ignored)
                                {
                                    hasUnknown.Add(file.Substring(p));
                                }
                                else if (status > VCItemStatus.UpToDate)
                                {
                                    hasModification.Add(file.Substring(p));
                                }
                            }
                        }
                        else if (result.Status > VCItemStatus.UpToDate)
                        {
                            hasModification.Add(path);
                        }

                        if (svnRemove.Count > 0)
                        {
                            if (Path.GetDirectoryName(svnRemove[0]) != Path.GetDirectoryName(path))
                            {
                                throw new UnsafeOperationException(TextHelper.GetString("SourceControl.Info.ElementsLocatedInDiffDirs"));
                            }
                        }
                        svnRemove.Add(path);
                    }
                }
                if (regularRemove.Count > 0 && svnRemove.Count > 0)
                {
                    throw new UnsafeOperationException(TextHelper.GetString("SourceControl.Info.MixedSelectionOfElements"));
                }

                if (svnRemove.Count == 0 && regularRemove.Count > 0)
                {
                    return(false); // regular deletion
                }
            }
            catch (UnsafeOperationException upex)
            {
                MessageBox.Show(upex.Message, TextHelper.GetString("SourceControl.Info.UnsafeDeleteOperation"), MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return(true); // prevent regular deletion
            }

            if (hasUnknown.Count > 0 && confirm)
            {
                string title = TextHelper.GetString("FlashDevelop.Title.ConfirmDialog");
                string msg   = TextHelper.GetString("SourceControl.Info.ConfirmUnversionedDelete") + "\n\n" + GetSomeFiles(hasUnknown);
                if (MessageBox.Show(msg, title, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK)
                {
                    return(true);
                }
            }

            if (hasModification.Count > 0 && confirm)
            {
                string title = TextHelper.GetString("FlashDevelop.Title.ConfirmDialog");
                string msg   = TextHelper.GetString("SourceControl.Info.ConfirmLocalModsDelete") + "\n\n" + GetSomeFiles(hasModification);
                if (MessageBox.Show(msg, title, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK)
                {
                    return(true);
                }
            }

            return(result.Manager.FileActions.FileDelete(paths, confirm));
        }
Esempio n. 16
0
 public WatcherVCResult(FileSystemWatcher watcher, IVCManager manager)
 {
     Watcher = watcher;
     Manager = manager;
 }
Esempio n. 17
0
 public void AddVCManager(IVCManager manager)
 {
     ProjectWatcher.VCManagers.Add(manager);
     manager.OnChange += manager_OnChange;
 }
Esempio n. 18
0
        public void Changed(IVCManager manager)
        {
            if (disposing || updateTimer == null) return;

            lock (dirtyVC)
            {
                if (!dirtyVC.Contains(manager))
                    dirtyVC.Add(manager);
            }

            updateTimer.Stop();
            updateTimer.Start();
        }
Esempio n. 19
0
 public WatcherVCResult(FileSystemWatcher watcher, IVCManager manager)
 {
     Watcher = watcher;
     Manager = manager;
 }
Esempio n. 20
0
        private void CreateWatcher(string path, IVCManager manager)
        {
            var watcher = new FileSystemWatcher(path);
            watcher.IncludeSubdirectories = true;
            watcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite | NotifyFilters.DirectoryName | NotifyFilters.Size | NotifyFilters.Attributes;
            watcher.Changed += new FileSystemEventHandler(Watcher_Changed);
            watcher.Deleted += new FileSystemEventHandler(Watcher_Changed);
            watcher.EnableRaisingEvents = true;
            watchers.Add(watcher, manager);

            dirtyVC.Add(manager);
        }