// -*- c++ -*- // Generated by gtkmmproc from ./../mdi.gen_h -- DO NOT MODIFY! #ifndef _GNOMEMM_MDI_H #define _GNOMEMM_MDI_H /* $Id: mdi.gen_h,v 1.16 2001/05/10 00:08:42 murrayc Exp $ */ /* mdi.gen_h * * Copyright (C) 1999 The Gtk-- Development Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #include namespace Gnome { class MDI; class MDI_Class; } namespace Gtk { Gnome::MDI *wrap (GnomeMDI *o); } extern "C" void gnomemm_app_created(GnomeMDI*,GnomeApp* p1); namespace Gnome { using SigC::Connection; namespace MDI_Helpers { class MDIList { public: typedef MDIChild* value_type; typedef value_type & reference; typedef const value_type & const_reference; typedef G_List_Cpp_Iterator iterator; typedef G_List_ConstIterator const_iterator; typedef G_List_ReverseIterator reverse_iterator; typedef G_List_ConstIterator const_reverse_iterator; typedef size_t difference_type; typedef size_t size_type; private: friend class Gnome::MDI; Gnome::MDI *parent_; explicit MDIList(MDI* parent): parent_(parent) {} GList*& glist() const; // front of list iterator begin_() const; iterator end_() const; public: ~MDIList() {} inline iterator begin() {return begin_();} inline iterator end() {return end_();} inline const_iterator begin() const { return const_iterator(begin_()); } inline const_iterator end() const { return const_iterator(end_()); } inline reverse_iterator rbegin() { return reverse_iterator(end_()); } inline reverse_iterator rend() { return reverse_iterator(begin_()); } inline const_reverse_iterator rbegin() const { return const_reverse_iterator(reverse_iterator(end_())); } inline const_reverse_iterator rend() const { return const_reverse_iterator(reverse_iterator(begin_())); } size_type size(void) const; inline size_type max_size(void) { return size_type(-1); } inline bool empty(void) { return glist() == 0; } void clear(); iterator erase(iterator); void erase(iterator start, iterator stop); void remove(const_reference); void remove(MDIChild &w); }; }; // In Gnome MDI holds both views and children, in gnome-- we // will make a distinction. MDI holds children, children hold views, // and there is one active view in a MDI at any one time. // // Design notes: (not really documentation) // MDI contains an APP and Children, Children have views. // Views are widget (not toplevel) // mdi->children is a list of MDIChild // You create a MDI, then ask for a toplevel, add children. class MDI : public Gtk::Object { public: typedef MDI CppObjectType; typedef MDI_Class CppClassType; typedef GnomeMDI BaseObjectType; typedef GnomeMDIClass BaseClassType; private: friend class MDI_Class; static CppClassType mdi_class; MDI(const MDI&); MDI& operator=(const MDI&); // not implemented protected: void initialize_class(); explicit MDI(GnomeMDI *castitem); public: static GtkType get_type(); GnomeMDI* gtkobj() { return (GnomeMDI*)(gtkobject); } const GnomeMDI* gtkobj() const { return (GnomeMDI*)(gtkobject); } static bool isA(Gtk::Object *checkcast); // Hook for proxies static const char* const signal_names[]; virtual ~MDI(); private: public: enum Mode { DEFAULT = GNOME_MDI_DEFAULT_MODE, TOPLEVEL = GNOME_MDI_TOPLEVEL, NOTEBOOK = GNOME_MDI_NOTEBOOK, MODAL = GNOME_MDI_MODAL }; MDI(const Gtk::string &appname, const Gtk::string &title); void set_mode(Mode mode=DEFAULT); void set_menubar_template(const UI::Array &menu_tmpl); void set_toolbar_template(const UI::Array &tbar_tmpl); // Sets the desired position of child-specific menus (which are added to and // removed from the main menus as views of different children are activated). void set_child_menu_path(const Gtk::string& path); // Sets the position for insertion of menu items used to activate the MDI // children that were added to the MDI. Note that if // you want all menu items to be inserted in their own submenu, you have to // create that submenu (and leave it empty, of course). void set_child_list_path(const Gtk::string& path); // Disable inserting menu items for MDI children. void clear_child_list_path(); // Lifespan void register_object(const Gtk::Object& object); void unregister_object(const Gtk::Object& object); // Views // add_view moved to MDIChild::create_view // add_toplevel_view moved to MDIChild::create_toplevel_view // update_child moved to MDIChild::update // set_active_view moved to MDIChild::set_active // remove_view moved to MDIChild // Children gint add(Gnome::MDIChild& child); // force is depecated gint remove(Gnome::MDIChild& child,gint force=false); // removes all children and views. // force is depecated gint clear(gint force=false); void open_toplevel (); static Gnome::MDIChild* find_child(Gtk::Widget& name); Gnome::MDIChild* find_child(const Gtk::string& name); Gtk::Widget* get_active_view(); Gnome::MDIChild* get_active_child(); Gnome::App* get_active_window(); // This *really* doesn't look good // WRAP_METHOD( // GnomeApp* gnome_mdi_get_app_from_view(GtkWidget*), // static Gnome::App* get_app_from_view(const Gtk::Widget &view)); // WRAP_METHOD( // GtkWidget* gnome_mdi_get_view_from_window (GnomeMDI*, GnomeApp*), // Gtk::Widget* get_view_from_window(const Gnome::App &app)); // WRAP_METHOD(GnomeUIInfo* gnome_mdi_get_menubar_info(GnomeApp*), // static GnomeUIInfo* get_menubar_info(const App &app)); // WRAP_METHOD(GnomeUIInfo* gnome_mdi_get_toolbar_info(GnomeApp*), // static GnomeUIInfo* get_toolbar_info(const App &app)); // WRAP_METHOD(GnomeUIInfo* gnome_mdi_get_child_menu_info(GnomeApp *), // static GnomeUIInfo* get_child_menu_info(const App &app)); typedef MDI_Helpers::MDIList MDIList; MDIList& children() {return reinterpret_cast(object_self);} const MDIList& children() const {return reinterpret_cast(object_self);} private: UI::Array menu_; UI::Array toolbar_; public: class Proxy_app_created : public Gtk::EmitProxySignal1 { typedef Gtk::EmitProxySignal1 BaseType; public: void operator ()(Gnome::App&); void emit(Gnome::App&); Connection connect(const SigC::Slot1 &s); }; union { CppObjectType * mdi_self; Proxy_app_created app_created; }; protected: // impl functions virtual void app_created_impl(Gnome::App& p0); }; } #endif .