示例#1
0
        void HandleCloseTab(object sender, TdiTabCloseEventArgs e)
        {
            if (CheckClosingSlaveTabs((ITdiTab)sender))
            {
                return;
            }

            ITDICloseControlTab cct = sender as ITDICloseControlTab;

            if (cct != null && !cct.CanClose())
            {
                return;
            }

            if (!e.AskSave || SaveIfNeed((ITdiTab)sender))
            {
                CloseTab((ITdiTab)sender);
            }
        }
示例#2
0
        public bool AskToCloseTab(ITdiTab tab, CloseSource source = CloseSource.External)
        {
            var slider = tab.TabParent as TdiSliderTab;

            if (slider != null)
            {
                return(slider.AskToCloseTab(tab, source));
            }

            if (CheckClosingSlaveTabs(tab))
            {
                return(false);
            }

            ITDICloseControlTab cct = tab as ITDICloseControlTab;
            ITDICloseControlTab canCloseActiveDialog = (tab as TdiSliderTab)?.ActiveDialog as ITDICloseControlTab;

            if ((cct != null && !cct.CanClose()) || (canCloseActiveDialog != null && !canCloseActiveDialog.CanClose()))
            {
                return(false);
            }

            bool canClose = true;

            try
            {
                canClose = SaveIfNeed(tab);
            }
            catch (Exception e)
            {
                logger.Error(e, "Возникла ошибка при проверке закрытия вкладки");
            }
            if (canClose)
            {
                ForceCloseTab(tab, source);
                return(true);
            }
            return(false);
        }
示例#3
0
        void OnCloseButtonClicked(object sender, EventArgs e)
        {
            Widget  boxWidget = (sender as Widget).Parent;
            TabVBox tab       = null;

            foreach (Widget wid in this.Children)
            {
                if (this.GetTabLabel(wid) == boxWidget)
                {
                    tab = (TabVBox)wid;
                }
            }

            if (tab == null)
            {
                logger.Warn("Не найден вкладка соответствующая кнопке закрыть.");
                return;
            }

            if (CheckClosingSlaveTabs(tab.Tab))
            {
                return;
            }

            ITDICloseControlTab cct = tab.Tab as ITDICloseControlTab;

            if (cct != null && !cct.CanClose())
            {
                return;
            }

            if (SaveIfNeed(tab.Tab))
            {
                CloseTab(tab.Tab);
            }
        }