// -*- c++ -*- // Generated by gtkmmproc from ./../tree.gen_h -- DO NOT MODIFY! #ifndef _GTKMM_TREE_H #define _GTKMM_TREE_H /* $Id: tree.gen_h,v 1.62 2001/07/15 13:33:39 murrayc Exp $ */ /* tree.h * * Copyright (C) 1998-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 namespace Gtk { class Tree; class Tree_Class; } namespace Gtk { Gtk::Tree *wrap (GtkTree *o); } namespace Gtk { namespace Tree_Helpers { class ItemList { public: typedef TreeItem* 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 Gtk::Tree; Gtk::Tree *parent_; explicit ItemList(Tree* parent): parent_(parent) {} GList*& glist() const; // front of list iterator begin_() const; iterator end_() const; public: ~ItemList() {} 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; } iterator insert(iterator position, TreeItem& e); template inline void insert(iterator position, InputIterator first, InputIterator last) { for (;first!=last;++first) position=insert(position,*first); } inline void push_front(TreeItem& e) { insert(begin(), e); } inline void push_back(TreeItem& e) { insert(end(), e); } inline void pop_front() { erase(begin()); } inline void pop_back() { erase(--end()); } void clear(); iterator erase(iterator); void erase(iterator start, iterator stop); void remove(const_reference); void remove(Widget& w); }; class SelectionList { public: typedef TreeItem* 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 Gtk::Tree; Gtk::Tree *parent_; explicit SelectionList(Tree* parent): parent_(parent) {} GList*& glist() const; // front of list iterator begin_() const; iterator end_() const; public: ~SelectionList() {} 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; } }; }; //: A treelist widget. //- The {\class Gtk::Tree} widget is a container that shows users a list of items, //- in a tree complete with branches and leafnodes. Branches can be expanded //- to show their child items, or collapsed to hide them. class Tree : public Container { public: typedef Tree CppObjectType; typedef Tree_Class CppClassType; typedef GtkTree BaseObjectType; typedef GtkTreeClass BaseClassType; private: friend class Tree_Class; static CppClassType tree_class; Tree(const Tree&); Tree& operator=(const Tree&); // not implemented protected: void initialize_class(); explicit Tree(GtkTree *castitem); public: static GtkType get_type(); GtkTree* gtkobj() { return (GtkTree*)(gtkobject); } const GtkTree* gtkobj() const { return (GtkTree*)(gtkobject); } static bool isA(Object *checkcast); // Hook for proxies static const char* const signal_names[]; virtual ~Tree(); private: public: typedef Tree_Helpers::ItemList ItemList; typedef Tree_Helpers::SelectionList SelectionList; Tree(); //: deprecated - use get_tree().push_back(w); void append(Gtk::TreeItem& widget); //: deprecated - use get_tree().push_front(w); void prepend(Gtk::TreeItem& widget); //: deprecated - use get_tree().insert(loc,w); void insert(Gtk::TreeItem& widget,gint position); //: deprecated - use get_tree().erase(start,end); void clear_items(gint start,gint end); //: select item by number. //- equivelent to get_tree()[itemnum]->select(); void select_item(gint item); //: equivelent to get_tree()[itemnum]->unselect(); void unselect_item(gint item); // removes a list of items from the tree. // (no STL equivelent) The iterator must // be to Gtk_TreeItem* and be forward iteratable. template void remove_items(iterator start,iterator stop); //: deprecated use get_tree().remove(w); void remove_item(Gtk::TreeItem& child); // get the index of a tree item. (no STL equiv) gint child_position(Gtk::TreeItem& child) const; void set_selection_mode(GtkSelectionMode mode); void set_view_mode(GtkTreeViewMode mode); void set_view_lines(bool flag); // indicates there has been a change in the selection list. guint get_level() const; ItemList& tree() {return reinterpret_cast(tree_self); } const ItemList& tree() const {return reinterpret_cast(tree_self); } SelectionList& selection() {return reinterpret_cast(tree_self); } const SelectionList& selection() const {return reinterpret_cast(tree_self); } public: class Proxy_select_child : public Gtk::EmitProxySignal1 { typedef Gtk::EmitProxySignal1 BaseType; public: void operator ()(Gtk::Widget&); void emit(Gtk::Widget&); Connection connect(const SigC::Slot1 &s); }; class Proxy_unselect_child : public Gtk::EmitProxySignal1 { typedef Gtk::EmitProxySignal1 BaseType; public: void operator ()(Gtk::Widget&); void emit(Gtk::Widget&); Connection connect(const SigC::Slot1 &s); }; union { CppObjectType * tree_self; Proxy_select_child select_child; Proxy_unselect_child unselect_child; Gtk::ProxySignal0 selection_changed; }; protected: // impl functions virtual void select_child_impl(Gtk::Widget& p0); virtual void unselect_child_impl(Gtk::Widget& p0); virtual void selection_changed_impl(); }; template void Tree::remove_items(iterator start, iterator stop) { GList* items=gtkmm_build_glist(start,stop); if (items) gtk_tree_remove_items(gtkobj(),items); g_list_free(items); } } //+ PROPERTIES(Gtk_Tree) //. name: children //. type: GList* //. get: //. set: //. desc: //. name: root_tree //. type: GtkTree* //. get: //. set: //. desc: owner of selection list //. name: tree_owner //. type: Gtk_Widget* //. get: //. set: //. desc: //. name: selection //. type: GList* //. get: //. set: //. desc: //. name: level //. type: guint //. get: //. set: //. desc: //. name: indent_value //. type: guint //. get: //. set: //. desc: //. name: current_indent //. type: guint //. get: //. set: //. desc: //. name: selection_mode //. type: guint:2 //. get: //. set: //. desc: //. name: view_mode //. type: guint:1 //. get: //. set: //. desc: //. name: view_line //. type: guint:1 //. get: //. set: //. desc: #endif .