/// <summary> /// 给设计节点添加签出信息,如果已签出的模型节点则用本地存储替换原模型 /// </summary> internal void BindCheckoutInfo(DesignNode node, bool isNewNode) { //if (node.NodeType == DesignNodeType.FolderNode || !node.AllowCheckout) // throw new ArgumentException("不允许绑定签出信息: " + node.NodeType.ToString()); //先判断是否新增的 if (isNewNode) { node.CheckoutInfo = new CheckoutInfo(node.NodeType, node.CheckoutInfoTargetID, node.Version, DesignHub.Session.Name, DesignHub.Session.LeafOrgUnitID); return; } //非新增的比对服务端的签出列表 string key = CheckoutInfo.MakeKey(node.NodeType, node.CheckoutInfoTargetID); if (_checkouts.TryGetValue(key, out CheckoutInfo checkout)) { node.CheckoutInfo = checkout; if (node.IsCheckoutByMe) //如果是被当前用户签出的模型 { if (node is ModelNode modelNode) { //从本地缓存加载 var stagedModel = Staged.FindModel(modelNode.Model.Id); if (stagedModel != null) { modelNode.Model = stagedModel; } } } } }
// Use this for initialization public void Start() { rb = transform.root.GetComponent <Rigidbody>(); vessel = transform.root.GetComponent <Vessel>(); flame = transform.GetComponentInChildren <ParticleSystem>(true).gameObject; staged = GetComponent <Staged>(); part = GetComponent <Part>(); if (part.Parent.GetComponent <ResourceContainer>()) { parentRes = part.Parent.GetComponent <ResourceContainer>(); pump = true; } }
private PathStatus OnStaged(string path, PathStatus status) { if (Options.PerPathNotificationCallback != null) { if (status == null) { status = new PathStatus(Repository, path); } status.IndexPathStatus = IndexPathStatus.Staged; } Staged.Add(path); AnyDifferences = true; return(status); }
public FormCommit() { _syncContext = SynchronizationContext.Current; InitializeComponent(); splitRight.Panel2MinSize = 130; Translate(); SolveMergeconflicts.Font = new Font(SystemFonts.MessageBoxFont, FontStyle.Bold); SelectedDiff.ExtraDiffArgumentsChanged += SelectedDiffExtraDiffArgumentsChanged; closeDialogAfterEachCommitToolStripMenuItem.Checked = Settings.CloseCommitDialogAfterCommit; closeDialogAfterAllFilesCommittedToolStripMenuItem.Checked = Settings.CloseCommitDialogAfterLastCommit; Unstaged.SetNoFilesText(_noUnstagedChanges.Text); Staged.SetNoFilesText(_noStagedChanges.Text); Message.SetEmptyMessage(_enterCommitMessageHint.Text); Unstaged.SelectedIndexChanged += UntrackedSelectionChanged; Staged.SelectedIndexChanged += TrackedSelectionChanged; Unstaged.DoubleClick += Unstaged_DoubleClick; Staged.DoubleClick += Staged_DoubleClick; _gitGetUnstagedCommand = new GitCommandsInstance(); _gitGetUnstagedCommand.Exited += GitCommandsExited; Unstaged.Focus(); SelectedDiff.AddContextMenuEntry(null, null); _StageSelectedLinesToolStripMenuItem = SelectedDiff.AddContextMenuEntry(_stageSelectedLines.Text, StageSelectedLinesToolStripMenuItemClick); SelectedDiff.AddContextMenuEntry(_resetSelectedLines.Text, ResetSelectedLinesToolStripMenuItemClick); splitMain.SplitterDistance = Settings.CommitDialogSplitter; this.HotkeysEnabled = true; this.Hotkeys = HotkeySettingsManager.LoadHotkeys(HotkeySettingsName); Commit.Focus(); }
/// <summary> /// Releases all resources used by the <see cref="Component"/>. /// </summary> protected virtual void Dispose(bool disposing) { if (!Disposed) { if (disposing) { Timer.Elapsed -= Timer_Elapsed; // if an action is staged, invoke it to 'flush' if (FlushOnDispose) { Staged?.Invoke(); } Staged = null; Timer.Dispose(); } Disposed = true; } }
internal async Task LoadNodesAsync() { if (Interlocked.CompareExchange(ref _loadingFlag, 1, 0) != 0) { throw new Exception("DesignTree are loading."); } //先判断是否已经加载过,是则清空准备重新加载 if (Nodes.Count > 0) { DesignHub.ResetTypeSystem(); Nodes.Clear(); } //开始加载 StoreRootNode = new DataStoreRootNode(this); Nodes.Add(StoreRootNode); AppRootNode = new ApplicationRootNode(this); Nodes.Add(AppRootNode); //先加载签出信息及StagedModels _checkouts = await CheckoutService.LoadAllAsync(); Staged = await StagedService.LoadStagedAsync(onlyModelsAndFolders : true); var amodels = await Store.ModelStore.LoadAllApplicationAsync(); var applicationModels = new List <ApplicationModel>(amodels); applicationModels.Sort((a, b) => a.Name.CompareTo(b.Name)); var mfolders = await Store.ModelStore.LoadAllFolderAsync(); var folders = new List <ModelFolder>(mfolders); //从staged中添加新建的并更新修改的文件夹 Staged.UpdateFolders(folders); var mmodels = await Store.ModelStore.LoadAllModelAsync(); var models = new List <ModelBase>(mmodels); #if !FUTURE //加载默认存储模型 var defaultStoreType = Store.SqlStore.Default.GetType(); var defaultStoreModel = new DataStoreModel(DataStoreKind.Sql, $"{defaultStoreType.Assembly.GetName().Name};{defaultStoreType.Name}", "Default"); defaultStoreModel.NameRules = DataStoreNameRules.AppPrefixForTable; //defaultStoreModel.Settings = ""; //TODO:fix settings defaultStoreModel.AcceptChanges(); models.Add(defaultStoreModel); #endif //加载staged中新建的模型,可能包含DataStoreModel models.AddRange(Staged.FindNewModels()); //加入AppModels节点 foreach (var app in applicationModels) { AppRootNode.Nodes.Add(new ApplicationNode(this, app)); } //加入Folders foreach (var f in folders) { FindModelRootNode(f.AppId, f.TargetModelType).AddFolder(f); } //加入Models Staged.RemoveDeletedModels(models); //先移除已删除的 var allModelNodes = new List <ModelNode>(models.Count); foreach (var m in models) { if (m.ModelType == ModelType.DataStore) { var dsModel = (DataStoreModel)m; var dsNode = StoreRootNode.AddModel(dsModel, DesignHub); DesignHub.TypeSystem.CreateStoreDocument(dsNode); } else { allModelNodes.Add(FindModelRootNode(m.AppId, m.ModelType).AddModel(m)); } } //在所有节点加载完后创建模型对应的RoslynDocument foreach (var n in allModelNodes) { await DesignHub.TypeSystem.CreateModelDocumentAsync(n); } Interlocked.Exchange(ref _loadingFlag, 0); //清空Staged Staged = null; #if DEBUG ThreadPool.QueueUserWorkItem(s => { DesignHub.TypeSystem.DumpProjectErrors(DesignHub.TypeSystem.ModelProjectId); //DesignHub.TypeSystem.DumpProjectErrors(DesignHub.TypeSystem.SyncSysServiceProjectId); DesignHub.TypeSystem.DumpProjectErrors(DesignHub.TypeSystem.ServiceBaseProjectId); }); #endif }
private void Timer_Elapsed(object sender, EventArgs args) { Staged?.Invoke(); Staged = null; }
// Use this for initialization void Start() { staged = GetComponent <Staged>(); }