FLTK 1.3.2

- Main Page
- Related Pages
- Modules
- Classes
- Files

- File List
- File Members

Fl_Tree.H
Go to the documentation of this file.

    00001 //
    00002 // "$Id: Fl_Tree.H 9706 2012-11-06 20:46:14Z matt $"
    00003 //
    00004
    00005 #ifndef FL_TREE_H
    00006 #define FL_TREE_H
    00007
    00008 #include <FL/Fl.H>
    00009 #include <FL/Fl_Group.H>
    00010 #include <FL/Fl_Scrollbar.H>
    00011 #include <FL/fl_draw.H>
    00012
    00013 #include <FL/Fl_Tree_Item.H>
    00014 #include <FL/Fl_Tree_Prefs.H>
    00015
    00017 // FL/Fl_Tree.H
    00019 //
    00020 // Fl_Tree -- This file is part of the Fl_Tree widget for FLTK
    00021 // Copyright (C) 2009-2010 by Greg Ercolano.
    00022 //
    00023 // This library is free software. Distribution and use rights are outlined in
    00024 // the file "COPYING" which should have been included with this file.  If this
    00025 // file is missing or damaged, see the license at:
    00026 //
    00027 //     http://www.fltk.org/COPYING.php
    00028 //
    00029 // Please report all bugs and problems on the following page:
    00030 //
    00031 //     http://www.fltk.org/str.php
    00032 //
    00033
    00038
    00295
    00299 enum Fl_Tree_Reason {
    00300   FL_TREE_REASON_NONE=0,
    00301   FL_TREE_REASON_SELECTED,
    00302   FL_TREE_REASON_DESELECTED,
    00303 #if FLTK_ABI_VERSION >= 10301
    00304   FL_TREE_REASON_RESELECTED,
    00305 #endif /*FLTK_ABI_VERSION*/
    00306   FL_TREE_REASON_OPENED,
    00307   FL_TREE_REASON_CLOSED
    00308 };
    00309
    00310 class FL_EXPORT Fl_Tree : public Fl_Group {
    00311   friend class Fl_Tree_Item;
    00312   Fl_Tree_Item  *_root;                         // can be null!
    00313   Fl_Tree_Item  *_item_focus;                   // item that has focus box
    00314   Fl_Tree_Item  *_callback_item;                // item invoked during callback (can be NULL)
    00315   Fl_Tree_Reason _callback_reason;              // reason for the callback
    00316   Fl_Tree_Prefs  _prefs;                        // all the tree's settings
    00317   int            _scrollbar_size;               // size of scrollbar trough
    00318
    00319 #if FLTK_ABI_VERSION >= 10301
    00320   // NEW:
    00321   Fl_Tree_Item *_lastselect;
    00322 #else /*FLTK_ABI_VERSION*/
    00323   // OLD: static data inside handle() method
    00324 #endif /*FLTK_ABI_VERSION*/
    00325
    00326   void fix_scrollbar_order();
    00327
    00328 protected:
    00329   Fl_Scrollbar *_vscroll;
    00330   void item_clicked(Fl_Tree_Item* val);
    00331   void do_callback_for_item(Fl_Tree_Item* item, Fl_Tree_Reason reason);
    00332   Fl_Tree_Item *next_visible_item(Fl_Tree_Item *start, int dir);
    00333   void extend_selection(Fl_Tree_Item *from, Fl_Tree_Item *to);
    00334   int draw_tree();
    00335
    00336 public:
    00337   Fl_Tree(int X, int Y, int W, int H, const char *L=0);
    00338   ~Fl_Tree();
    00339   int handle(int e);
    00340   void draw();
    00341   void show_self();
    00342
    00344   // root methods
    00346   void root_label(const char *new_label);
    00347   Fl_Tree_Item* root();
    00348
    00350   // Item creation/removal methods
    00352   Fl_Tree_Item *add(const char *path);
    00353   Fl_Tree_Item* add(Fl_Tree_Item *item, const char *name);
    00354   Fl_Tree_Item *insert_above(Fl_Tree_Item *above, const char *name);
    00355   Fl_Tree_Item* insert(Fl_Tree_Item *item, const char *name, int pos);
    00356   int remove(Fl_Tree_Item *item);
    00357   void clear();
    00358   void clear_children(Fl_Tree_Item *item);
    00359
    00361   // Item lookup methods
    00363   Fl_Tree_Item *find_item(const char *path);
    00364   const Fl_Tree_Item *find_item(const char *path) const;
    00365   int item_pathname(char *pathname, int pathnamelen, const Fl_Tree_Item *item) const;
    00366   const Fl_Tree_Item *find_clicked() const;
    00367   Fl_Tree_Item *item_clicked();
    00368   Fl_Tree_Item *first();
    00369   Fl_Tree_Item *first_visible();
    00370   Fl_Tree_Item *next(Fl_Tree_Item *item=0);
    00371   Fl_Tree_Item *prev(Fl_Tree_Item *item=0);
    00372   Fl_Tree_Item *last();
    00373   Fl_Tree_Item *last_visible();
    00374   Fl_Tree_Item *first_selected_item();
    00375   Fl_Tree_Item *next_selected_item(Fl_Tree_Item *item=0);
    00376
    00378   // Item open/close methods
    00380   int open(Fl_Tree_Item *item, int docallback=1);
    00381   int open(const char *path, int docallback=1);
    00382   void open_toggle(Fl_Tree_Item *item, int docallback=1);
    00383   int close(Fl_Tree_Item *item, int docallback=1);
    00384   int close(const char *path, int docallback=1);
    00385   int is_open(Fl_Tree_Item *item) const;
    00386   int is_open(const char *path) const;
    00387   int is_close(Fl_Tree_Item *item) const;
    00388   int is_close(const char *path) const;
    00389
    00391   // Item selection methods
    00393   int select(Fl_Tree_Item *item, int docallback=1);
    00394   int select(const char *path, int docallback=1);
    00395   void select_toggle(Fl_Tree_Item *item, int docallback=1);
    00396   int deselect(Fl_Tree_Item *item, int docallback=1);
    00397   int deselect(const char *path, int docallback=1);
    00398   int deselect_all(Fl_Tree_Item *item=0, int docallback=1);
    00399   int select_only(Fl_Tree_Item *selitem, int docallback=1);
    00400   int select_all(Fl_Tree_Item *item=0, int docallback=1);
    00401   void set_item_focus(Fl_Tree_Item *item);
    00402   Fl_Tree_Item *get_item_focus() const;
    00403   int is_selected(Fl_Tree_Item *item) const;
    00404   int is_selected(const char *path);
    00405
    00407   // Item attribute related methods
    00409   Fl_Font     item_labelfont() const;
    00410   void        item_labelfont(Fl_Font val);
    00411   Fl_Fontsize item_labelsize() const;
    00412   void        item_labelsize(Fl_Fontsize val);
    00413   Fl_Color    item_labelfgcolor(void) const;
    00414   void        item_labelfgcolor(Fl_Color val);
    00415   Fl_Color    item_labelbgcolor(void) const;
    00416   void        item_labelbgcolor(Fl_Color val);
    00417   Fl_Color connectorcolor() const;
    00418   void connectorcolor(Fl_Color val);
    00419   int marginleft() const;
    00420   void marginleft(int val);
    00421   int margintop() const;
    00422   void margintop(int val);
    00423 #if FLTK_ABI_VERSION >= 10301
    00424   int marginbottom() const;
    00425   void marginbottom(int val);
    00426 #endif /*FLTK_ABI_VERSION*/
    00427   int linespacing() const;
    00428   void linespacing(int val);
    00429   int openchild_marginbottom() const;
    00430   void openchild_marginbottom(int val);
    00431   int usericonmarginleft() const;
    00432   void usericonmarginleft(int val);
    00433   int labelmarginleft() const;
    00434   void labelmarginleft(int val);
    00435 #if FLTK_ABI_VERSION >= 10301
    00436   int widgetmarginleft() const;
    00437   void widgetmarginleft(int val);
    00438 #endif /*FLTK_ABI_VERSION*/
    00439   int connectorwidth() const;
    00440   void connectorwidth(int val);
    00441   Fl_Image* usericon() const;
    00442   void usericon(Fl_Image *val);
    00443   Fl_Image* openicon() const;
    00444   void openicon(Fl_Image *val);
    00445   Fl_Image* closeicon() const;
    00446   void closeicon(Fl_Image *val);
    00447   int showcollapse() const;
    00448   void showcollapse(int val);
    00449   int showroot() const;
    00450   void showroot(int val);
    00451   Fl_Tree_Connector connectorstyle() const;
    00452   void connectorstyle(Fl_Tree_Connector val);
    00453   Fl_Tree_Sort sortorder() const;
    00454   void sortorder(Fl_Tree_Sort val);
    00455   Fl_Boxtype selectbox() const;
    00456   void selectbox(Fl_Boxtype val);
    00457   Fl_Tree_Select selectmode() const;
    00458   void selectmode(Fl_Tree_Select val);
    00459 #if FLTK_ABI_VERSION >= 10301
    00460   Fl_Tree_Item_Reselect_Mode item_reselect_mode() const;
    00461   void item_reselect_mode(Fl_Tree_Item_Reselect_Mode mode);
    00462   Fl_Tree_Item_Draw_Mode item_draw_mode() const;
    00463   void item_draw_mode(Fl_Tree_Item_Draw_Mode mode);
    00464   void item_draw_mode(int mode);
    00465 #endif /*FLTK_ABI_VERSION*/
    00466   int displayed(Fl_Tree_Item *item);
    00467   void show_item(Fl_Tree_Item *item, int yoff);
    00468   void show_item(Fl_Tree_Item *item);
    00469   void show_item_top(Fl_Tree_Item *item);
    00470   void show_item_middle(Fl_Tree_Item *item);
    00471   void show_item_bottom(Fl_Tree_Item *item);
    00472   void display(Fl_Tree_Item *item);
    00473   int  vposition() const;
    00474   void vposition(int pos);
    00475
    00476   int is_scrollbar(Fl_Widget *w);
    00477   int scrollbar_size() const;
    00478   void scrollbar_size(int size);
    00479   int is_vscroll_visible() const;
    00480
    00482   // callback related
    00484   void callback_item(Fl_Tree_Item* item);
    00485   Fl_Tree_Item* callback_item();
    00486   void callback_reason(Fl_Tree_Reason reason);
    00487   Fl_Tree_Reason callback_reason() const;
    00488
    00490   void load(class Fl_Preferences&);
    00491 };
    00492
    00493 #endif /*FL_TREE_H*/
    00494
    00495 //
    00496 // End of "$Id: Fl_Tree.H 9706 2012-11-06 20:46:14Z matt $".
    00497 //