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); }
public SynchObject(object obj, SynchType synchType, int key) { m_SynchObject = obj; m_SynchType = synchType; }
/// <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(); } } }); }