summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FL/Fl_Table.H2
-rw-r--r--fluid/Fl_Group_Type.cxx122
-rw-r--r--fluid/Fl_Type.cxx8
-rw-r--r--fluid/Fl_Type.h15
-rw-r--r--fluid/Fl_Widget_Type.cxx1
-rw-r--r--fluid/factory.cxx31
-rw-r--r--fluid/function_panel.cxx26
-rw-r--r--fluid/function_panel.fl33
-rw-r--r--fluid/pixmaps/flTable.xpm29
-rw-r--r--fluid/pixmaps/flTree.xpm30
-rw-r--r--ide/Xcode3/FLTK.xcodeproj/project.pbxproj2
11 files changed, 277 insertions, 22 deletions
diff --git a/FL/Fl_Table.H b/FL/Fl_Table.H
index 7b4387d82..ab4a9ef0e 100644
--- a/FL/Fl_Table.H
+++ b/FL/Fl_Table.H
@@ -125,7 +125,7 @@
LICENSE
Greg added the following license to the original distribution of Fl_Table. He
- kindly gave his permission to integrate Fl_Table and Fl_Table_row into FLTK,
+ kindly gave his permission to integrate Fl_Table and Fl_Table_Row into FLTK,
allowing FLTK license to apply while his widgets are part of the library.
If used on its own, this is the license that applies:
diff --git a/fluid/Fl_Group_Type.cxx b/fluid/Fl_Group_Type.cxx
index 8e433834e..ac4b81f88 100644
--- a/fluid/Fl_Group_Type.cxx
+++ b/fluid/Fl_Group_Type.cxx
@@ -32,6 +32,7 @@
#include <FL/Fl.H>
#include <FL/Fl_Group.H>
+#include <FL/Fl_Table.H>
#include <FL/fl_message.H>
#include "Fl_Widget_Type.h"
#include "../src/flstring.h"
@@ -146,6 +147,91 @@ Fl_Pack_Type Fl_Pack_type; // the "factory"
////////////////////////////////////////////////////////////////
+static const int MAX_ROWS = 14;
+static const int MAX_COLS = 7;
+
+// this is a minimal table widget used as an example when adding tables in Fluid
+class Fluid_Table : public Fl_Table {
+ int data[MAX_ROWS][MAX_COLS]; // data array for cells
+
+ // Draw the row/col headings
+ // Make this a dark thin upbox with the text inside.
+ //
+ void DrawHeader(const char *s, int X, int Y, int W, int H) {
+ fl_push_clip(X,Y,W,H);
+ fl_draw_box(FL_THIN_UP_BOX, X,Y,W,H, row_header_color());
+ fl_color(FL_BLACK);
+ fl_draw(s, X,Y,W,H, FL_ALIGN_CENTER);
+ fl_pop_clip();
+ }
+ // Draw the cell data
+ // Dark gray text on white background with subtle border
+ //
+ void DrawData(const char *s, int X, int Y, int W, int H) {
+ fl_push_clip(X,Y,W,H);
+ // Draw cell bg
+ fl_color(FL_WHITE); fl_rectf(X,Y,W,H);
+ // Draw cell data
+ fl_color(FL_GRAY0); fl_draw(s, X,Y,W,H, FL_ALIGN_CENTER);
+ // Draw box border
+ fl_color(color()); fl_rect(X,Y,W,H);
+ fl_pop_clip();
+ }
+ // Handle drawing table's cells
+ // Fl_Table calls this function to draw each visible cell in the table.
+ // It's up to us to use FLTK's drawing functions to draw the cells the way we want.
+ //
+ void draw_cell(TableContext context, int ROW=0, int COL=0, int X=0, int Y=0, int W=0, int H=0) {
+ static char s[40];
+ switch ( context ) {
+ case CONTEXT_STARTPAGE: // before page is drawn..
+ fl_font(FL_HELVETICA, 16); // set the font for our drawing operations
+ return;
+ case CONTEXT_COL_HEADER: // Draw column headers
+ sprintf(s,"%c",'A'+COL); // "A", "B", "C", etc.
+ DrawHeader(s,X,Y,W,H);
+ return;
+ case CONTEXT_ROW_HEADER: // Draw row headers
+ sprintf(s,"%03d:",ROW); // "001:", "002:", etc
+ DrawHeader(s,X,Y,W,H);
+ return;
+ case CONTEXT_CELL: // Draw data in cells
+ sprintf(s,"%d",data[ROW][COL]);
+ DrawData(s,X,Y,W,H);
+ return;
+ default:
+ return;
+ }
+ }
+public:
+ Fluid_Table(int x, int y, int w, int h, const char *l=0L)
+ : Fl_Table(x, y, w, h, l) {
+ for ( int r=0; r<MAX_ROWS; r++ )
+ for ( int c=0; c<MAX_COLS; c++ )
+ data[r][c] = 1000+(r*1000)+c;
+ // Rows
+ rows(MAX_ROWS); // how many rows
+ row_header(1); // enable row headers (along left)
+ row_height_all(20); // default height of rows
+ row_resize(0); // disable row resizing // Cols
+ cols(MAX_COLS); // how many columns
+ col_header(1); // enable column headers (along top)
+ col_width_all(80); // default width of columns
+ col_resize(1); // enable column resizing
+ }
+};
+
+const char table_type_name[] = "Fl_Table";
+
+Fl_Table_Type Fl_Table_type; // the "factory"
+
+Fl_Widget *Fl_Table_Type::widget(int X,int Y,int W,int H) {
+ Fluid_Table *table = new Fluid_Table(X, Y, W, H);
+ return table;
+}
+
+////////////////////////////////////////////////////////////////
+
const char tabs_type_name[] = "Fl_Tabs";
// Override group's resize behavior to do nothing to children:
@@ -201,6 +287,18 @@ void Fl_Tabs_Type::add_child(Fl_Type* c, Fl_Type* before) {
Fl_Group_Type::add_child(c, before);
}
+void Fl_Table_Type::add_child(Fl_Type* cc, Fl_Type* before) {
+ Fl_Widget_Type* c = (Fl_Widget_Type*)cc;
+ Fl_Widget* b = before ? ((Fl_Widget_Type*)before)->o : 0;
+ if (((Fl_Table*)o)->children()==1) { // the FLuid_Table has one extra child
+ fl_message("Inserting child widgets into an Fl_Table is not recommended.\n"
+ "Please refer to the documentation on Fl_Table.");
+ }
+ ((Fl_Table*)o)->insert(*(c->o), b);
+ o->redraw();
+}
+
+
// This is called when o is deleted. If it is in the tab group make
// sure it is not visible:
@@ -217,6 +315,12 @@ void Fl_Tabs_Type::remove_child(Fl_Type* cc) {
Fl_Group_Type::remove_child(c);
}
+void Fl_Table_Type::remove_child(Fl_Type* cc) {
+ Fl_Widget_Type* c = (Fl_Widget_Type*)cc;
+ ((Fl_Table*)o)->remove(*(c->o));
+ o->redraw();
+}
+
// move, don't change selected value:
void Fl_Group_Type::move_child(Fl_Type* cc, Fl_Type* before) {
@@ -227,6 +331,14 @@ void Fl_Group_Type::move_child(Fl_Type* cc, Fl_Type* before) {
o->redraw();
}
+void Fl_Table_Type::move_child(Fl_Type* cc, Fl_Type* before) {
+ Fl_Widget_Type* c = (Fl_Widget_Type*)cc;
+ Fl_Widget* b = before ? ((Fl_Widget_Type*)before)->o : 0;
+ ((Fl_Table*)o)->remove(*(c->o));
+ ((Fl_Table*)o)->insert(*(c->o), b);
+ o->redraw();
+}
+
////////////////////////////////////////////////////////////////
// live mode support
@@ -261,6 +373,16 @@ Fl_Widget *Fl_Tabs_Type::enter_live_mode(int) {
return live_widget;
}
+Fl_Widget *Fl_Table_Type::enter_live_mode(int) {
+ Fl_Group *grp = new Fluid_Table(o->x(), o->y(), o->w(), o->h());
+ live_widget = grp;
+ if (live_widget) {
+ copy_properties();
+ grp->end();
+ }
+ return live_widget;
+}
+
void Fl_Group_Type::leave_live_mode() {
}
diff --git a/fluid/Fl_Type.cxx b/fluid/Fl_Type.cxx
index 422046da0..1c65b50c0 100644
--- a/fluid/Fl_Type.cxx
+++ b/fluid/Fl_Type.cxx
@@ -105,6 +105,8 @@ static Fl_Pixmap protected_pixmap(protected_xpm);
#include "pixmaps/flValueOutput.xpm"
#include "pixmaps/flSpinner.xpm"
#include "pixmaps/flWidgetClass.xpm"
+#include "pixmaps/flTree.xpm"
+#include "pixmaps/flTable.xpm"
static Fl_Pixmap window_pixmap(flWindow_xpm);
static Fl_Pixmap button_pixmap(flButton_xpm);
@@ -155,6 +157,8 @@ static Fl_Pixmap valueoutput_pixmap(flValueOutput_xpm);
static Fl_Pixmap spinner_pixmap(flSpinner_xpm);
static Fl_Pixmap widgetclass_pixmap(flWidgetClass_xpm);
static Fl_Pixmap data_pixmap(flData_xpm);
+static Fl_Pixmap tree_pixmap(flTree_xpm);
+static Fl_Pixmap table_pixmap(flTable_xpm);
Fl_Pixmap *pixmap[] = { 0, &window_pixmap, &button_pixmap, &checkbutton_pixmap, &roundbutton_pixmap, /* 0..4 */
&box_pixmap, &group_pixmap, &function_pixmap, &code_pixmap, &codeblock_pixmap, &declaration_pixmap, /* 5..10 */
@@ -162,10 +166,10 @@ Fl_Pixmap *pixmap[] = { 0, &window_pixmap, &button_pixmap, &checkbutton_pixmap,
&menuitem_pixmap, &menubar_pixmap, &submenu_pixmap, &scroll_pixmap, &tile_pixmap, &wizard_pixmap, /* 16..21 */
&pack_pixmap, &returnbutton_pixmap, &lightbutton_pixmap, &repeatbutton_pixmap, &menubutton_pixmap, /* 22..26 */
&output_pixmap, &textdisplay_pixmap, &textedit_pixmap, &fileinput_pixmap, &browser_pixmap, /* 27..32 */
- &checkbrowser_pixmap, &filebrowser_pixmap, &clock_pixmap, &help_pixmap, &progress_pixmap, /* 33..36 */
+ &checkbrowser_pixmap, &filebrowser_pixmap, &clock_pixmap, &help_pixmap, &progress_pixmap, /* 33..36 */
&slider_pixmap, &scrollbar_pixmap, &valueslider_pixmap, &adjuster_pixmap, &counter_pixmap, /* 37..41 */
&dial_pixmap, &roller_pixmap, &valueinput_pixmap, &valueoutput_pixmap, &comment_pixmap, /* 42..46 */
- &spinner_pixmap, &widgetclass_pixmap, &data_pixmap }; /* 47..49 */
+ &spinner_pixmap, &widgetclass_pixmap, &data_pixmap, &tree_pixmap, &table_pixmap }; /* 47..51 */
extern int show_comments;
diff --git a/fluid/Fl_Type.h b/fluid/Fl_Type.h
index 66bf622ac..5a2dd4675 100644
--- a/fluid/Fl_Type.h
+++ b/fluid/Fl_Type.h
@@ -465,6 +465,21 @@ public:
void copy_properties();
};
+extern const char table_type_name[];
+
+class Fl_Table_Type : public Fl_Group_Type {
+public:
+ virtual const char *type_name() {return table_type_name;}
+ virtual const char *alt_type_name() {return "fltk::TableGroup";}
+ Fl_Widget_Type *_make() {return new Fl_Table_Type();}
+ Fl_Widget *widget(int X,int Y,int W,int H);
+ int pixmapID() { return 51; }
+ virtual Fl_Widget *enter_live_mode(int top=0);
+ void add_child(Fl_Type*, Fl_Type*);
+ void move_child(Fl_Type*, Fl_Type*);
+ void remove_child(Fl_Type*);
+};
+
extern const char tabs_type_name[];
class Fl_Tabs_Type : public Fl_Group_Type {
diff --git a/fluid/Fl_Widget_Type.cxx b/fluid/Fl_Widget_Type.cxx
index 5fe556078..7c567ed97 100644
--- a/fluid/Fl_Widget_Type.cxx
+++ b/fluid/Fl_Widget_Type.cxx
@@ -27,6 +27,7 @@
#include <FL/Fl.H>
#include <FL/Fl_Group.H>
+#include <FL/Fl_Table.H>
#include <FL/Fl_Input.H>
#include "Fl_Widget_Type.h"
#include "alignment_panel.h"
diff --git a/fluid/factory.cxx b/fluid/factory.cxx
index df2a3c033..1c550a7cd 100644
--- a/fluid/factory.cxx
+++ b/fluid/factory.cxx
@@ -37,6 +37,7 @@
#include <FL/Fl_Group.H>
#include <FL/Fl_Menu_Item.H>
#include <FL/Fl_Pixmap.H>
+#include <FL/Fl_Tree.H>
#include <stdio.h>
#include "../src/flstring.h"
#include "undo.h"
@@ -309,6 +310,33 @@ int Fl_Check_Browser_Type::textstuff(int w, Fl_Font& f, int& s, Fl_Color& c) {
return 1;
}
+class Fl_Tree_Type : public Fl_Widget_Type {
+public:
+ virtual void ideal_size(int &w, int &h) {
+ if (h < 60) h = 60;
+ if (w < 80) w = 80;
+ }
+ virtual const char *type_name() {return "Fl_Tree";}
+ virtual const char *alt_type_name() {return "fltk::TreeBrowser";}
+ Fl_Widget *widget(int x,int y,int w,int h) {
+ Fl_Tree* b = new Fl_Tree(x,y,w,h);
+ if (!compile_only) {
+ b->add("/A1/B1/C1");
+ b->add("/A1/B1/C2");
+ b->add("/A1/B2/C1");
+ b->add("/A1/B2/C2");
+ b->add("/A2/B1/C1");
+ b->add("/A2/B1/C2");
+ b->add("/A2/B2/C1");
+ b->add("/A2/B2/C2");
+ }
+ return b;
+ }
+ Fl_Widget_Type *_make() {return new Fl_Tree_Type();}
+ int pixmapID() { return 50; }
+};
+static Fl_Tree_Type Fl_Tree_type;
+
class Fl_File_Browser_Type : public Fl_Widget_Type {
Fl_Menu_Item *subtypes() {return browser_type_menu;}
int textstuff(int w, Fl_Font& f, int& s, Fl_Color& c);
@@ -926,6 +954,7 @@ extern class Fl_Group_Type Fl_Group_type;
extern class Fl_Pack_Type Fl_Pack_type;
extern class Fl_Tabs_Type Fl_Tabs_type;
extern class Fl_Scroll_Type Fl_Scroll_type;
+extern class Fl_Table_Type Fl_Table_type;
extern class Fl_Tile_Type Fl_Tile_type;
extern class Fl_Input_Choice_Type Fl_Input_Choice_type;
extern class Fl_Choice_Type Fl_Choice_type;
@@ -997,6 +1026,7 @@ Fl_Menu_Item New_Menu[] = {
{0,0,cb,(void*)&Fl_Pack_type},
{0,0,cb,(void*)&Fl_Tabs_type},
{0,0,cb,(void*)&Fl_Scroll_type},
+ {0,0,cb,(void*)&Fl_Table_type},
{0,0,cb,(void*)&Fl_Tile_type},
{0,0,cb,(void*)&Fl_Wizard_type},
{0},
@@ -1039,6 +1069,7 @@ Fl_Menu_Item New_Menu[] = {
{0,0,cb,(void*)&Fl_Browser_type},
{0,0,cb,(void*)&Fl_Check_Browser_type},
{0,0,cb,(void*)&Fl_File_Browser_type},
+ {0,0,cb,(void*)&Fl_Tree_type},
{0},
{"Other",0,0,0,FL_SUBMENU},
{0,0,cb,(void*)&Fl_Box_type},
diff --git a/fluid/function_panel.cxx b/fluid/function_panel.cxx
index ed6f79116..d8ca4ef08 100644
--- a/fluid/function_panel.cxx
+++ b/fluid/function_panel.cxx
@@ -711,7 +711,7 @@ else
}
Fl_Window* make_widgetbin() {
- { widgetbin_panel = new Fl_Window(550, 85, "Widget Bin");
+ { widgetbin_panel = new Fl_Window(574, 85, "Widget Bin");
widgetbin_panel->callback((Fl_Callback*)cb_widgetbin_panel);
widgetbin_panel->align(Fl_Align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE));
{ Fl_Group* o = new Fl_Group(3, 3, 79, 79);
@@ -802,6 +802,12 @@ Fl_Window* make_widgetbin() {
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Scroll"));
o->image(pixmap[19]);
} // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(139, 30, 24, 24);
+ o->tooltip("Table");
+ o->box(FL_THIN_UP_BOX);
+ o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Table"));
+ o->image(pixmap[51]);
+ } // Fl_Button* o
{ Fl_Button* o = new Fl_Button(89, 55, 24, 24);
o->tooltip("Tile");
o->box(FL_THIN_UP_BOX);
@@ -990,13 +996,19 @@ Fl_Window* make_widgetbin() {
} // Fl_Button* o
o->end();
} // Fl_Group* o
- { Fl_Group* o = new Fl_Group(457, 3, 29, 79);
+ { Fl_Group* o = new Fl_Group(457, 3, 54, 79);
{ Fl_Button* o = new Fl_Button(459, 5, 24, 24);
o->tooltip("Browser");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Browser"));
o->image(pixmap[31]);
} // Fl_Button* o
+ { Fl_Button* o = new Fl_Button(484, 5, 24, 24);
+ o->tooltip("Tree");
+ o->box(FL_THIN_UP_BOX);
+ o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Tree"));
+ o->image(pixmap[50]);
+ } // Fl_Button* o
{ Fl_Button* o = new Fl_Button(459, 30, 24, 24);
o->tooltip("Check Browser");
o->box(FL_THIN_UP_BOX);
@@ -1011,26 +1023,26 @@ Fl_Window* make_widgetbin() {
} // Fl_Button* o
o->end();
} // Fl_Group* o
- { Fl_Group* o = new Fl_Group(491, 3, 55, 79);
- { Fl_Button* o = new Fl_Button(493, 5, 24, 24);
+ { Fl_Group* o = new Fl_Group(515, 3, 55, 79);
+ { Fl_Button* o = new Fl_Button(517, 5, 24, 24);
o->tooltip("Box");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Box"));
o->image(pixmap[5]);
} // Fl_Button* o
- { Fl_Button* o = new Fl_Button(518, 5, 24, 24);
+ { Fl_Button* o = new Fl_Button(542, 5, 24, 24);
o->tooltip("Clock");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Clock"));
o->image(pixmap[34]);
} // Fl_Button* o
- { Fl_Button* o = new Fl_Button(493, 30, 24, 24);
+ { Fl_Button* o = new Fl_Button(517, 30, 24, 24);
o->tooltip("Help Browser");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Help_View"));
o->image(pixmap[35]);
} // Fl_Button* o
- { Fl_Button* o = new Fl_Button(493, 55, 24, 24);
+ { Fl_Button* o = new Fl_Button(517, 55, 24, 24);
o->tooltip("Progress");
o->box(FL_THIN_UP_BOX);
o->callback((Fl_Callback*)type_make_cb, (void*)("Fl_Progress"));
diff --git a/fluid/function_panel.fl b/fluid/function_panel.fl
index 3659925ad..4be6bc1fd 100644
--- a/fluid/function_panel.fl
+++ b/fluid/function_panel.fl
@@ -393,7 +393,7 @@ Function {make_data_panel()} {open
xywh {10 205 320 20}
} {
Fl_Return_Button data_panel_ok {
- label OK selected
+ label OK
xywh {200 205 60 20} labelsize 11 hotspot
}
Fl_Button data_panel_cancel {
@@ -525,14 +525,15 @@ Function {type_make_cb(Fl_Widget*,void*d)} {return_type void
}} {}
}
-Function {make_widgetbin()} {} {
+Function {make_widgetbin()} {open
+} {
Fl_Window widgetbin_panel {
label {Widget Bin}
callback {if (Fl::event()==FL_SHORTCUT && Fl::event_key()==FL_Escape)
exit_cb((Fl_Widget*)o, v);
else
- toggle_widgetbin_cb((Fl_Widget*)o, v);}
- xywh {410 171 550 85} type Single align 80 non_modal visible
+ toggle_widgetbin_cb((Fl_Widget*)o, v);} open
+ xywh {410 171 574 85} type Single align 80 non_modal visible
} {
Fl_Group {} {
xywh {3 3 79 79}
@@ -626,6 +627,12 @@ else
code0 {o->image(pixmap[19]);}
}
Fl_Button {} {
+ user_data {"Fl_Table"}
+ callback type_make_cb
+ tooltip Table xywh {139 30 24 24} box THIN_UP_BOX
+ code0 {o->image(pixmap[51]);}
+ }
+ Fl_Button {} {
user_data {"Fl_Tile"}
callback type_make_cb
tooltip Tile xywh {89 55 24 24} box THIN_UP_BOX
@@ -817,7 +824,7 @@ else
}
}
Fl_Group {} {
- xywh {457 3 29 79}
+ xywh {457 3 54 79}
} {
Fl_Button {} {
user_data {"Fl_Browser"}
@@ -826,6 +833,12 @@ else
code0 {o->image(pixmap[31]);}
}
Fl_Button {} {
+ user_data {"Fl_Tree"}
+ callback type_make_cb selected
+ tooltip Tree xywh {484 5 24 24} box THIN_UP_BOX
+ code0 {o->image(pixmap[50]);}
+ }
+ Fl_Button {} {
user_data {"Fl_Check_Browser"}
callback type_make_cb
tooltip {Check Browser} xywh {459 30 24 24} box THIN_UP_BOX
@@ -839,30 +852,30 @@ else
}
}
Fl_Group {} {
- xywh {491 3 55 79}
+ xywh {515 3 55 79}
} {
Fl_Button {} {
user_data {"Fl_Box"}
callback type_make_cb
- tooltip Box xywh {493 5 24 24} box THIN_UP_BOX
+ tooltip Box xywh {517 5 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[5]);}
}
Fl_Button {} {
user_data {"Fl_Clock"}
callback type_make_cb
- tooltip Clock xywh {518 5 24 24} box THIN_UP_BOX
+ tooltip Clock xywh {542 5 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[34]);}
}
Fl_Button {} {
user_data {"Fl_Help_View"}
callback type_make_cb
- tooltip {Help Browser} xywh {493 30 24 24} box THIN_UP_BOX
+ tooltip {Help Browser} xywh {517 30 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[35]);}
}
Fl_Button {} {
user_data {"Fl_Progress"}
callback type_make_cb
- tooltip Progress xywh {493 55 24 24} box THIN_UP_BOX
+ tooltip Progress xywh {517 55 24 24} box THIN_UP_BOX
code0 {o->image(pixmap[36]);}
}
}
diff --git a/fluid/pixmaps/flTable.xpm b/fluid/pixmaps/flTable.xpm
new file mode 100644
index 000000000..f93a82756
--- /dev/null
+++ b/fluid/pixmaps/flTable.xpm
@@ -0,0 +1,29 @@
+/* XPM */
+static const char *flTable_xpm[] = {
+/* width height ncolors chars_per_pixel */
+"16 16 6 1",
+/* colors */
+"a c #606060",
+"b c #f0f0f0",
+"c c none",
+"d c #c0c0c0",
+"e c #8080ff",
+"f c #000000",
+/* pixels */
+"cccccccccccccccc",
+"cccccccccccccccc",
+"dddddddddddddddc",
+"dfffffffffffffdc",
+"dfddfddfddfddfdc",
+"dfffffffffffffdc",
+"dfddfddfddfddfdc",
+"dfffffffffffffdc",
+"dfddfddfddfddfdc",
+"dfffffffffffffdc",
+"dfddfddfddfddfdc",
+"dfffffffffffffdc",
+"dfddfddfddfddfdc",
+"dfffffffffffffdc",
+"dddddddddddddddc",
+"cccccccccccccccc"
+};
diff --git a/fluid/pixmaps/flTree.xpm b/fluid/pixmaps/flTree.xpm
new file mode 100644
index 000000000..7796205ab
--- /dev/null
+++ b/fluid/pixmaps/flTree.xpm
@@ -0,0 +1,30 @@
+/* XPM */
+static const char *flTree_xpm[] = {
+/* width height ncolors chars_per_pixel */
+"16 16 7 1",
+/* colors */
+"a c #606060",
+"b c #808080",
+"c c none",
+"d c #c0c0c0",
+"e c #ffffff",
+"f c #000000",
+"g c #303030",
+/* pixels */
+"cccccccccccccccc",
+"dddddddddddddddc",
+"dfffffffffffffdc",
+"dfegeeeeeeebbfdc",
+"dfeggggeeeebdfdc",
+"dfegeegeeeebdfdc",
+"dfegeeggggebffdc",
+"dfegeegeeeebdfdc",
+"dfegeeggggebdfdc",
+"dfegeegeegebdfdc",
+"dfegeegeegebdfdc",
+"dfbbbbbbbbbbbfdc",
+"dfbdddfddddbdfdc",
+"dfffffffffffffdc",
+"dddddddddddddddc",
+"cccccccccccccccc"
+};
diff --git a/ide/Xcode3/FLTK.xcodeproj/project.pbxproj b/ide/Xcode3/FLTK.xcodeproj/project.pbxproj
index a5f342c24..4b14db619 100644
--- a/ide/Xcode3/FLTK.xcodeproj/project.pbxproj
+++ b/ide/Xcode3/FLTK.xcodeproj/project.pbxproj
@@ -4176,7 +4176,6 @@
4343E645136756B9FEEE6902 /* fl_cursor.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = fl_cursor.cxx; path = ../../src/fl_cursor.cxx; sourceTree = SOURCE_ROOT; };
43D9A7CD936B1382F5EA23E1 /* about_panel.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = about_panel.cxx; path = ../../fluid/about_panel.cxx; sourceTree = SOURCE_ROOT; };
44277061B27BFBE1FB22B79B /* menubar.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = menubar.cxx; path = ../../test/menubar.cxx; sourceTree = SOURCE_ROOT; };
- 44B6E71105CCEECB4D5E2DC8 /* ide_support.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ide_support.h; path = ../../fluid/ide_support.h; sourceTree = SOURCE_ROOT; };
451D01896EFDD83277515630 /* glut.H */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = glut.H; path = ../../FL/glut.H; sourceTree = SOURCE_ROOT; };
4577F046D6D5D93D2553BFBC /* jdtrans.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jdtrans.c; path = ../../jpeg/jdtrans.c; sourceTree = SOURCE_ROOT; };
45B993D3FA0EED6037499D3A /* color_chooser.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = color_chooser.cxx; path = ../../test/color_chooser.cxx; sourceTree = SOURCE_ROOT; };
@@ -5632,7 +5631,6 @@
BD209D4716895D1365B6BA73 /* alignment_panel.h */,
8F311718B3CD16844535EEE6 /* comments.h */,
D4E11692C02E48A71A18527C /* function_panel.h */,
- 44B6E71105CCEECB4D5E2DC8 /* ide_support.h */,
176A3053D562D80CD4D3A400 /* print_panel.h */,
4A6DFBFA4FDD6D0B8F65009E /* template_panel.h */,
91726A70C25E6155A2FAF315 /* undo.h */,