library/forms/tabview.cpp (74 lines of code) (raw):

/* * Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License, version 2.0, * as published by the Free Software Foundation. * * This program is designed to work with certain software (including * but not limited to OpenSSL) that is licensed under separate terms, as * designated in a particular file or component or in included license * documentation. The authors of MySQL hereby grant you an additional * permission to link the program and your derivative works with the * separately licensed software that they have either included with * the program or referenced in the documentation. * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See * the GNU General Public License, version 2.0, for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "mforms/mforms.h" using namespace mforms; //-------------------------------------------------------------------------------------------------- TabView::TabView(TabViewType tabType) : _type(tabType), _aux_view(NULL), _menu_tab(0), _tab_menu(NULL) { _tabview_impl = &ControlFactory::get_instance()->_tabview_impl; _tabview_impl->create(this, tabType); } //-------------------------------------------------------------------------------------------------- TabView::~TabView() { if (_aux_view) _aux_view->release(); _aux_view = NULL; } //-------------------------------------------------------------------------------------------------- void TabView::set_active_tab(int index) { _tabview_impl->set_active_tab(this, index); } //-------------------------------------------------------------------------------------------------- int TabView::get_active_tab() { return _tabview_impl->get_active_tab(this); } //-------------------------------------------------------------------------------------------------- int TabView::add_page(View *page, const std::string &caption, bool hasCloseButton) { cache_view(page); return _tabview_impl->add_page(this, page, caption, hasCloseButton); } //-------------------------------------------------------------------------------------------------- void TabView::remove_page(View *page) { page->retain(); int i = get_page_index(page); _tabview_impl->remove_page(this, page); remove_from_cache(page); _signal_tab_closed(page, i); page->release(); } //-------------------------------------------------------------------------------------------------- void TabView::reordered(View *view, int index) { int old_index = get_subview_index(view); reorder_cache(view, index); _signal_tab_reordered(view, old_index, index); } //-------------------------------------------------------------------------------------------------- void TabView::pin_changed(int tab, bool pinned) { _signal_tab_pin_changed(tab, pinned); } //-------------------------------------------------------------------------------------------------- int TabView::page_count() { return get_subview_count(); } //-------------------------------------------------------------------------------------------------- int TabView::get_page_index(View *page) { return get_subview_index(page); } //-------------------------------------------------------------------------------------------------- View *TabView::get_page(int index) { return get_subview_at_index(index); } //-------------------------------------------------------------------------------------------------- void TabView::set_tab_title(int page, const std::string &caption) { _tabview_impl->set_tab_title(this, page, caption); } //-------------------------------------------------------------------------------------------------- bool TabView::can_close_tab(int index) { if (!_signal_tab_closing.empty()) return *_signal_tab_closing(index); return true; } //-------------------------------------------------------------------------------------------------- void TabView::set_aux_view(View *view) { if (_aux_view) _aux_view->release(); _aux_view = view; if (_aux_view) _aux_view->retain(); _tabview_impl->set_aux_view(this, view); } //-------------------------------------------------------------------------------------------------- void TabView::set_allows_reordering(bool flag) { _tabview_impl->set_allows_reordering(this, flag); } //-------------------------------------------------------------------------------------------------- void TabView::set_tab_menu(ContextMenu *menu) { _tab_menu = menu; } //-------------------------------------------------------------------------------------------------- void TabView::set_menu_tab(int tab) { _menu_tab = tab; } //-------------------------------------------------------------------------------------------------- int TabView::get_menu_tab() { return _menu_tab; }