Added Table and Tree support to Fluid.

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8172 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Matthias Melcher 2011-01-03 08:28:38 +00:00
parent 29b06ba51b
commit bb6392f7ec
11 changed files with 277 additions and 22 deletions

View File

@ -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:

View File

@ -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() {
}

View File

@ -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;

View File

@ -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 {

View File

@ -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"

View File

@ -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},

View File

@ -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"));

View File

@ -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}
@ -625,6 +626,12 @@ else
tooltip Scroll xywh {114 30 24 24} box THIN_UP_BOX
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
@ -817,7 +824,7 @@ else
}
}
Fl_Group {} {
xywh {457 3 29 79}
xywh {457 3 54 79}
} {
Fl_Button {} {
user_data {"Fl_Browser"}
@ -825,6 +832,12 @@ else
tooltip Browser xywh {459 5 24 24} box THIN_UP_BOX
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
@ -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]);}
}
}

29
fluid/pixmaps/flTable.xpm Normal file
View File

@ -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"
};

30
fluid/pixmaps/flTree.xpm Normal file
View File

@ -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"
};

View File

@ -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 */,