Exemple #1
0
        public int addSynchObject(object obj, SynchType type)
        {
            int         key = System.Guid.NewGuid().ToString().GetHashCode();
            SynchObject so  = new SynchObject(obj, type, key);

            m_SynchObjectList[key] = so;
            return(key);
        }
Exemple #2
0
 public SynchObject(object obj, SynchType synchType, int key)
 {
     m_SynchObject = obj;
     m_SynchType   = synchType;
 }
Exemple #3
0
        /// <summary>
        /// Ovveride method for when user synchs to central.
        /// The goal here is to disable the DTM Tool and prevent pop-ups while synching.
        /// </summary>
        public static void OnSynchToCentral(object sender, ExecutedEventArgs args, SynchType synchType)
        {
            // (Konrad) This will disable the DTM Tool when we are synching to central.
            AppCommand.IsSynching = true;

            RevitCommandId commandId;

            switch (synchType)
            {
            case SynchType.Synch:
                commandId = RevitCommandId.LookupCommandId("ID_FILE_SAVE_TO_MASTER");
                break;

            case SynchType.SynchNow:
                commandId = RevitCommandId.LookupCommandId("ID_FILE_SAVE_TO_MASTER_SHORTCUT");
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(synchType), synchType, null);
            }
            if (commandId == null || !commandId.CanHaveBinding)
            {
                return;
            }

            AppCommand.EnqueueTask(app =>
            {
                try
                {
                    app.RemoveAddInCommandBinding(commandId);

                    switch (synchType)
                    {
                    case SynchType.Synch:
                        AppCommand.IsSynchOverriden = false;
                        break;

                    case SynchType.SynchNow:
                        AppCommand.IsSynchNowOverriden = false;
                        break;

                    default:
                        throw new ArgumentOutOfRangeException(nameof(synchType), synchType, null);
                    }
                }
                catch (Exception e)
                {
                    Log.AppendLog(LogMessageType.EXCEPTION, e.Message);
                }
            });

            AppCommand.EnqueueTask(app =>
            {
                // (Konrad) We can now post the same Command we were overriding since the override is OFF.
                app.PostCommand(commandId);

                // (Konrad) Once the command executes this will turn the override back ON.
                AppCommand.IsSynching = false;

                var doc         = app.ActiveUIDocument.Document;
                var centralPath = FileInfoUtil.GetCentralFilePath(doc);
                if (string.IsNullOrEmpty(centralPath))
                {
                    return;
                }

                // (Konrad) Let's turn the synch command override back on.
                var config = MissionControlSetup.Configurations[centralPath];
                foreach (var updater in config.Updaters)
                {
                    if (!updater.IsUpdaterOn)
                    {
                        continue;
                    }

                    if (string.Equals(updater.UpdaterId.ToLower(),
                                      AppCommand.Instance.DtmUpdaterInstance.UpdaterGuid.ToString().ToLower(), StringComparison.Ordinal))
                    {
                        CreateSynchToCentralOverride();
                    }
                }
            });
        }