public bool CheckClosingSlaveTabs(ITdiTab tab) { //FIXME Если появятся подчиненые вкладки у журналов, нужно переделать проверку, что бы при закрыти диалога не требовалось зарывать подчиненные вкладки журнала. if (tab == Journal || tab == ActiveDialog) { return(TabParent.CheckClosingSlaveTabs(this as ITdiTab)); } else { return(TabParent.CheckClosingSlaveTabs(tab)); } }
protected bool CloseDialog(CloseSource source, bool AskSave) { if (TabParent.CheckClosingSlaveTabs(this as ITdiTab)) { return(false); } if (ActiveDialog is ITdiDialog dlg) { if (AskSave && dlg.HasChanges) { string Message = "Объект изменён. Сохранить изменения перед закрытием?"; MessageDialog md = new MessageDialog((Window)this.Toplevel, DialogFlags.Modal, MessageType.Question, ButtonsType.YesNo, Message); md.AddButton("Отмена", ResponseType.Cancel); int result = md.Run(); md.Destroy(); if (result == (int)ResponseType.Cancel || result == (int)ResponseType.DeleteEvent) { return(false); } if (result == (int)ResponseType.Yes) { if (!dlg.Save()) { logger.Warn("Объект не сохранён. Отмена закрытия..."); return(false); } } } } var oldTab = ActiveDialog; ActiveDialog.OnTabClosed(); ActiveDialog = null; activeGlgWidget.Destroy(); (TabParent as TdiNotebook)?.OnSliderTabClosed(this, oldTab, source); OnSliderTabChanged(); return(true); }
protected void OnDialogClose(object sender, TdiTabCloseEventArgs arg) { if (TabParent.CheckClosingSlaveTabs(this as ITdiTab)) { return; } ITdiDialog dlg = sender as ITdiDialog; if (arg.AskSave && dlg.HasChanges) { string Message = "Объект изменён. Сохранить изменения перед закрытием?"; MessageDialog md = new MessageDialog((Window)this.Toplevel, DialogFlags.Modal, MessageType.Question, ButtonsType.YesNo, Message); md.AddButton("Отмена", ResponseType.Cancel); int result = md.Run(); md.Destroy(); if (result == (int)ResponseType.Cancel) { return; } if (result == (int)ResponseType.Yes) { if (!dlg.Save()) { logger.Warn("Объект не сохранён. Отмена закрытия..."); return; } } } ActiveDialog = null; (dlg as Widget).Destroy(); OnSladerTabChanged(); }