Пример #1
0
        /// <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;
                        }
                    }
                }
            }
        }
Пример #2
0
    // 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;
        }
    }
Пример #3
0
 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);
 }
Пример #4
0
        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();
        }
Пример #5
0
        /// <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;
            }
        }
Пример #6
0
        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
        }
Пример #7
0
 private void Timer_Elapsed(object sender, EventArgs args)
 {
     Staged?.Invoke();
     Staged = null;
 }
Пример #8
0
 // Use this for initialization
 void Start()
 {
     staged = GetComponent <Staged>();
 }