public AreaVM(string path, string name, AreaInitMode areaInitMode, string host = null, int port = 0) { RefreshCommand = new DelegateCommand(Refresh); PullCommand = new DelegateCommand(Pull); PushCommand = new DelegateCommand(Push); _name = name; DirectoryInfo dir = new DirectoryInfo(path); switch (areaInitMode) { case AreaInitMode.Clone: // Spawn another dialog for the source (or put it in the Clone New button) Client client = new Client(dir); if (client.Connect(host, port, null, true)) { bool result = client.Clone(true); if (!result) result = client.Clone(false); if (result) { string remoteName = "default"; client.Workspace.SetRemote(client.Host, client.Port, client.Module, remoteName); client.Pull(false, client.Workspace.CurrentBranch.ID.ToString()); _area = Area.Load(client.Workspace.Root); _area.Checkout(null, false, false); client.SyncRecords(); } } else { MessageBox.Show(string.Format("Couldn't connect to {0}:{1}", host, port), "Clone Failed", MessageBoxButton.OK, MessageBoxImage.Error); } client.Close(); break; case AreaInitMode.InitNew: // Tell versionr to initialize at path try { dir.Create(); } catch { MessageBox.Show("Error - couldn't create subdirectory \"{0}\"", dir.FullName); break; } _area = Area.Init(dir, name); break; case AreaInitMode.UseExisting: // Add it to settings and refresh UI, get status etc. _area = Area.Load(dir); break; } }
public void ExecuteClientCommand(Action<Client> action, string command, bool requiresWriteAccess = false) { if (SelectedRemote != null) { Client client = new Client(_area); if (client.Connect(SelectedRemote.Host, SelectedRemote.Port, SelectedRemote.Module, requiresWriteAccess)) action.Invoke(client); else MessageBox.Show(string.Format("Couldn't connect to remote {0} while processing {1} command!", SelectedRemote.Host, command), "Command Failed", MessageBoxButton.OK, MessageBoxImage.Error); client.Close(); } }