summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael R Sweet <michael.r.sweet@gmail.com>2002-05-01 10:36:08 +0000
committerMichael R Sweet <michael.r.sweet@gmail.com>2002-05-01 10:36:08 +0000
commit39a823b5e67625c7fbd38752bac337a958f70c51 (patch)
tree914eb7ca53e4c187b9fee203fbad0399ac1017af
parentb338c743b4423976a98860dab4a231e176e76385 (diff)
Add shell command support to FLUID.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@2155 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
-rw-r--r--CHANGES7
-rw-r--r--fluid/alignment_panel.cxx100
-rw-r--r--fluid/alignment_panel.fl85
-rw-r--r--fluid/alignment_panel.h19
-rw-r--r--fluid/fluid.cxx95
-rw-r--r--fluid/makedepend90
6 files changed, 341 insertions, 55 deletions
diff --git a/CHANGES b/CHANGES
index 218384d15..efbfaa98c 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,8 +1,6 @@
CHANGES IN FLTK 1.1.0rc1
- - Fixed VisualC projects for Fl_File_Input.
- - Added binary support and procedural names to
- Fl_Preferences, updated FLUID
+ - FLUID now supports running shell commands.
- New Fl_File_Input widget that shows directory
separators with filename in input field.
- The Fl_File_Chooser dialog now shows the absolute path
@@ -15,7 +13,8 @@ CHANGES IN FLTK 1.1.0rc1
in WIN32 version of scandir(). This takes care of a
file chooser performance problem with large
directories.
- - Added Fl_Preferences class from Matthias Melcher.
+ - Added Fl_Preferences class from Matthias Melcher,
+ including binary data support.
- FLUID now recognizes the "using" keyword in
declarations.
- fl_file_chooser() didn't highlight the requested file
diff --git a/fluid/alignment_panel.cxx b/fluid/alignment_panel.cxx
index b0d29c33b..e4a9306e5 100644
--- a/fluid/alignment_panel.cxx
+++ b/fluid/alignment_panel.cxx
@@ -114,8 +114,6 @@ Fl_Window* make_alignment_window() {
}
return w;
}
-extern void i18n_cb(Fl_Choice *,void *);
-extern Fl_Preferences fluid_prefs;
Fl_Window *settings_window=(Fl_Window *)0;
@@ -213,3 +211,101 @@ Fl_Window* make_settings_window() {
}
return w;
}
+
+Fl_Window *shell_window=(Fl_Window *)0;
+
+Fl_Input *shell_command_input=(Fl_Input *)0;
+
+static void cb_shell_command_input(Fl_Input*, void*) {
+ fluid_prefs.set("shell_command", shell_command_input->value());
+}
+
+Fl_Check_Button *shell_savefl_button=(Fl_Check_Button *)0;
+
+static void cb_shell_savefl_button(Fl_Check_Button*, void*) {
+ fluid_prefs.set("shell_savefl", shell_savefl_button->value());
+}
+
+Fl_Check_Button *shell_writecode_button=(Fl_Check_Button *)0;
+
+static void cb_shell_writecode_button(Fl_Check_Button*, void*) {
+ fluid_prefs.set("shell_writecode", shell_writecode_button->value());
+}
+
+Fl_Check_Button *shell_writemsgs_button=(Fl_Check_Button *)0;
+
+static void cb_shell_writemsgs_button(Fl_Check_Button*, void*) {
+ fluid_prefs.set("shell_writemsgs", shell_writemsgs_button->value());
+}
+
+static void cb_Cancel(Fl_Button*, void*) {
+ shell_window->hide();
+}
+
+Fl_Window *shell_run_window=(Fl_Window *)0;
+
+Fl_Browser *shell_run_list=(Fl_Browser *)0;
+
+Fl_Return_Button *shell_run_button=(Fl_Return_Button *)0;
+
+static void cb_shell_run_button(Fl_Return_Button*, void*) {
+ shell_run_window->hide();
+}
+
+Fl_Window* make_shell_window() {
+ Fl_Window* w;
+ { Fl_Window* o = shell_window = new Fl_Window(445, 104, "Shell Command");
+ w = o;
+ { Fl_Input* o = shell_command_input = new Fl_Input(85, 10, 350, 20, "Command:");
+ o->callback((Fl_Callback*)cb_shell_command_input);
+ char buf[1024];
+ fluid_prefs.get("shell_command", buf, "", sizeof(buf));
+ shell_command_input->value(buf);
+ }
+ { Fl_Group* o = new Fl_Group(85, 40, 350, 20, "Options:");
+ o->align(FL_ALIGN_LEFT);
+ { Fl_Check_Button* o = shell_savefl_button = new Fl_Check_Button(85, 40, 110, 20, "Save .FL File");
+ o->down_box(FL_DOWN_BOX);
+ o->callback((Fl_Callback*)cb_shell_savefl_button);
+ char b;
+ fluid_prefs.get("shell_savefl", b, 1);
+ shell_savefl_button->value(b);
+ }
+ { Fl_Check_Button* o = shell_writecode_button = new Fl_Check_Button(200, 40, 95, 20, "Write Code");
+ o->down_box(FL_DOWN_BOX);
+ o->callback((Fl_Callback*)cb_shell_writecode_button);
+ char b;
+ fluid_prefs.get("shell_writecode", b, 1);
+ shell_writecode_button->value(b);
+ }
+ { Fl_Check_Button* o = shell_writemsgs_button = new Fl_Check_Button(300, 40, 125, 20, "Write Messages");
+ o->down_box(FL_DOWN_BOX);
+ o->callback((Fl_Callback*)cb_shell_writemsgs_button);
+ char b;
+ fluid_prefs.get("shell_writemsgs", b, 0);
+ shell_writemsgs_button->value(b);
+ }
+ o->end();
+ }
+ { Fl_Button* o = new Fl_Button(370, 70, 65, 25, "Cancel");
+ o->callback((Fl_Callback*)cb_Cancel);
+ }
+ { Fl_Return_Button* o = new Fl_Return_Button(220, 70, 140, 25, "Run Command");
+ o->callback((Fl_Callback*)do_shell_command);
+ }
+ o->end();
+ }
+ { Fl_Window* o = shell_run_window = new Fl_Window(553, 435, "Shell Command Output");
+ w = o;
+ { Fl_Browser* o = shell_run_list = new Fl_Browser(10, 10, 535, 380);
+ o->textfont(4);
+ o->textsize(12);
+ Fl_Group::current()->resizable(o);
+ }
+ { Fl_Return_Button* o = shell_run_button = new Fl_Return_Button(465, 400, 80, 25, "Close");
+ o->callback((Fl_Callback*)cb_shell_run_button);
+ }
+ o->end();
+ }
+ return w;
+}
diff --git a/fluid/alignment_panel.fl b/fluid/alignment_panel.fl
index 3f8624400..2e5236da2 100644
--- a/fluid/alignment_panel.fl
+++ b/fluid/alignment_panel.fl
@@ -6,7 +6,9 @@ Function {make_alignment_window()} {open
} {
Fl_Window alignment_window {
label Preferences open
- xywh {469 112 365 340} modal visible
+ xywh {469 112 365 340}
+ code0 {\#include <FL/Fl_Preferences.H>}
+ code1 {\#include <FL/Fl_Tooltip.H>} modal visible
} {
Fl_Button {} {
label Close
@@ -83,17 +85,17 @@ Function {make_alignment_window()} {open
}
}
-decl {extern void i18n_cb(Fl_Choice *,void *);} {}
+decl {extern void i18n_cb(Fl_Choice *,void *);} {public
+}
-decl {extern Fl_Preferences fluid_prefs;} {}
+decl {extern Fl_Preferences fluid_prefs;} {public
+}
Function {make_settings_window()} {open
} {
Fl_Window settings_window {
label Settings open
- xywh {376 480 400 175}
- code0 {\#include <FL/Fl_Preferences.H>}
- code1 {\#include <FL/Fl_Tooltip.H>} visible
+ xywh {376 480 400 175} visible
} {
Fl_Button {} {
label Close
@@ -132,7 +134,7 @@ Function {make_settings_window()} {open
Fl_Check_Button tooltips_button {
label {Show Tooltips}
callback {Fl_Tooltip::enable(tooltips_button->value());
-fluid_prefs.set("show_tooltips", tooltips_button->value());} selected
+fluid_prefs.set("show_tooltips", tooltips_button->value());}
xywh {165 40 215 20} down_box DOWN_BOX
code0 {char b;}
code1 {fluid_prefs.get("show_tooltips", b, 1);}
@@ -157,3 +159,72 @@ fluid_prefs.set("show_tooltips", tooltips_button->value());} selected
}
}
}
+
+Function {make_shell_window()} {open
+} {
+ Fl_Window shell_window {
+ label {Shell Command} open
+ xywh {630 219 445 104} visible
+ } {
+ Fl_Input shell_command_input {
+ label {Command:}
+ callback {fluid_prefs.set("shell_command", shell_command_input->value());}
+ xywh {85 10 350 20}
+ code0 {char buf[1024];}
+ code1 {fluid_prefs.get("shell_command", buf, "", sizeof(buf));}
+ code2 {shell_command_input->value(buf);}
+ }
+ Fl_Group {} {
+ label {Options:} open
+ xywh {85 40 350 20} align 4
+ } {
+ Fl_Check_Button shell_savefl_button {
+ label {Save .FL File}
+ callback {fluid_prefs.set("shell_savefl", shell_savefl_button->value());}
+ xywh {85 40 110 20} down_box DOWN_BOX
+ code0 {char b;}
+ code1 {fluid_prefs.get("shell_savefl", b, 1);}
+ code2 {shell_savefl_button->value(b);}
+ }
+ Fl_Check_Button shell_writecode_button {
+ label {Write Code}
+ callback {fluid_prefs.set("shell_writecode", shell_writecode_button->value());}
+ xywh {200 40 95 20} down_box DOWN_BOX
+ code0 {char b;}
+ code1 {fluid_prefs.get("shell_writecode", b, 1);}
+ code2 {shell_writecode_button->value(b);}
+ }
+ Fl_Check_Button shell_writemsgs_button {
+ label {Write Messages}
+ callback {fluid_prefs.set("shell_writemsgs", shell_writemsgs_button->value());}
+ xywh {300 40 125 20} down_box DOWN_BOX
+ code0 {char b;}
+ code1 {fluid_prefs.get("shell_writemsgs", b, 0);}
+ code2 {shell_writemsgs_button->value(b);}
+ }
+ }
+ Fl_Button {} {
+ label Cancel
+ callback {shell_window->hide();}
+ xywh {370 70 65 25}
+ }
+ Fl_Return_Button {} {
+ label {Run Command}
+ callback do_shell_command
+ xywh {220 70 140 25}
+ }
+ }
+ Fl_Window shell_run_window {
+ label {Shell Command Output} open
+ xywh {693 386 553 435} resizable visible
+ } {
+ Fl_Browser shell_run_list {selected
+ xywh {10 10 535 380} textfont 4 textsize 12 resizable
+ }
+ Fl_Return_Button shell_run_button {
+ label Close
+ callback {shell_run_window->hide();}
+ xywh {465 400 80 25}
+ }
+ }
+}
diff --git a/fluid/alignment_panel.h b/fluid/alignment_panel.h
index e25a873b3..23553ae29 100644
--- a/fluid/alignment_panel.h
+++ b/fluid/alignment_panel.h
@@ -4,6 +4,8 @@
#define alignment_panel_h
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
+#include <FL/Fl_Preferences.H>
+#include <FL/Fl_Tooltip.H>
extern Fl_Window *alignment_window;
#include <FL/Fl_Button.H>
#include <FL/Fl_Box.H>
@@ -25,8 +27,8 @@ extern Fl_Input *i18n_set_input;
extern Fl_Input *i18n_function_input;
Fl_Window* make_alignment_window();
extern Fl_Menu_Item menu_i18n_type_chooser[];
-#include <FL/Fl_Preferences.H>
-#include <FL/Fl_Tooltip.H>
+extern void i18n_cb(Fl_Choice *,void *);
+extern Fl_Preferences fluid_prefs;
extern Fl_Window *settings_window;
extern void grid_cb(Fl_Input*, long);
extern Fl_Input *horizontal_input;
@@ -37,4 +39,17 @@ extern Fl_Check_Button *tooltips_button;
extern Fl_Check_Button *completion_button;
extern Fl_Check_Button *openlast_button;
Fl_Window* make_settings_window();
+extern Fl_Window *shell_window;
+extern Fl_Input *shell_command_input;
+#include <FL/Fl_Group.H>
+extern Fl_Check_Button *shell_savefl_button;
+extern Fl_Check_Button *shell_writecode_button;
+extern Fl_Check_Button *shell_writemsgs_button;
+#include <FL/Fl_Return_Button.H>
+extern void do_shell_command(Fl_Return_Button*, void*);
+extern Fl_Window *shell_run_window;
+#include <FL/Fl_Browser.H>
+extern Fl_Browser *shell_run_list;
+extern Fl_Return_Button *shell_run_button;
+Fl_Window* make_shell_window();
#endif
diff --git a/fluid/fluid.cxx b/fluid/fluid.cxx
index 3ab7f0226..70c6036be 100644
--- a/fluid/fluid.cxx
+++ b/fluid/fluid.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: fluid.cxx,v 1.15.2.13.2.17 2002/05/01 08:51:59 easysw Exp $"
+// "$Id: fluid.cxx,v 1.15.2.13.2.18 2002/05/01 10:36:08 easysw Exp $"
//
// FLUID main entry for the Fast Light Tool Kit (FLTK).
//
@@ -71,9 +71,11 @@ int snap;
char absolute_history[10][1024];
char relative_history[10][1024];
-void load_history();
-void update_history(const char *);
+void load_history();
+void update_history(const char *);
+// Shell command support...
+void show_shell_window();
////////////////////////////////////////////////////////////////
@@ -419,6 +421,10 @@ Fl_Menu_Item Main_Menu[] = {
{"Settings",FL_CTRL+FL_SHIFT+'p',show_settings_cb},
{0},
{"&New", 0, 0, (void *)New_Menu, FL_SUBMENU_POINTER},
+{"&Shell",0,0,0,FL_SUBMENU},
+ {"Execute Command...",FL_ALT+'x',(Fl_Callback *)show_shell_window},
+ {"Execute Again",FL_ALT+'g',(Fl_Callback *)do_shell_command},
+ {0},
{"&Help",0,0,0,FL_SUBMENU},
{"About FLUID...",0,about_cb},
{"On FLUID...",0,help_cb},
@@ -449,6 +455,7 @@ void make_main_window() {
load_history();
make_settings_window();
+ make_shell_window();
if (!main_window) {
Fl_Widget *o;
@@ -525,6 +532,86 @@ void update_history(const char *filename) {
Main_Menu[3].flags &= ~FL_MENU_INACTIVE;
}
+// Shell command support...
+static FILE *shell_pipe;
+
+void
+shell_pipe_cb(int, void*) {
+ char line[1024]; // Line from command output...
+
+ if (fgets(line, sizeof(line), shell_pipe) != NULL) {
+ // Add the line to the output list...
+ shell_run_list->add(line);
+ shell_run_list->make_visible(shell_run_list->size());
+ } else {
+ // End of file; tell the parent...
+ Fl::remove_fd(fileno(shell_pipe));
+
+ pclose(shell_pipe);
+ shell_pipe = NULL;
+ shell_run_list->add("COMPLETE");
+ }
+}
+
+void
+do_shell_command(Fl_Return_Button*, void*) {
+ const char *command; // Command to run
+
+
+ shell_window->hide();
+
+ if ((command = shell_command_input->value()) == NULL || !*command) {
+ fl_alert("No shell command entered!");
+ return;
+ }
+
+ if (shell_savefl_button->value()) {
+ save_cb(0, 0);
+ }
+
+ if (shell_writecode_button->value()) {
+ compile_only = 1;
+ write_cb(0, 0);
+ compile_only = 0;
+ }
+
+ if (shell_writemsgs_button->value()) {
+ compile_only = 1;
+ write_strings_cb(0, 0);
+ compile_only = 0;
+ }
+
+ // Show the output window and clear things...
+ shell_run_list->clear();
+ shell_run_list->add(command);
+ shell_run_window->label("Shell Command Running...");
+
+ if ((shell_pipe = popen(command, "r")) == NULL) {
+ fl_alert("Unable to run shell command: %s", strerror(errno));
+ return;
+ }
+
+ shell_run_button->deactivate();
+ shell_run_window->hotspot(shell_run_list);
+ shell_run_window->show();
+
+ Fl::add_fd(fileno(shell_pipe), shell_pipe_cb);
+
+ while (shell_pipe) Fl::wait();
+
+ shell_run_button->activate();
+ shell_run_window->label("Shell Command Complete");
+ fl_beep();
+
+ while (shell_run_window->shown()) Fl::wait();
+}
+
+void
+show_shell_window() {
+ shell_window->hotspot(shell_command_input);
+ shell_window->show();
+}
+
void set_filename(const char *c) {
if (filename) free((void *)filename);
filename = strdup(c);
@@ -615,5 +702,5 @@ int main(int argc,char **argv) {
}
//
-// End of "$Id: fluid.cxx,v 1.15.2.13.2.17 2002/05/01 08:51:59 easysw Exp $".
+// End of "$Id: fluid.cxx,v 1.15.2.13.2.18 2002/05/01 10:36:08 easysw Exp $".
//
diff --git a/fluid/makedepend b/fluid/makedepend
index a15987704..f82d0f552 100644
--- a/fluid/makedepend
+++ b/fluid/makedepend
@@ -20,11 +20,14 @@ Fl_Menu_Type.o: ../FL/Fl_Image.H ../FL/x.H ../FL/Fl_Window.H ../FL/Fl_Group.H
Fl_Menu_Type.o: ../FL/Fl_Tabs.H ../FL/Fl_Pack.H ../FL/Fl_Group.H
Fl_Menu_Type.o: ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H
Fl_Menu_Type.o: ../FL/Fl_Menu_.H ../FL/Fl_Choice.H ../FL/Fl_Menu_Bar.H
-Fl_Menu_Type.o: alignment_panel.h ../FL/Fl_Window.H ../FL/Fl_Box.H
-Fl_Menu_Type.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Button.H
-Fl_Menu_Type.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/fl_message.H
-Fl_Menu_Type.o: ../FL/fl_ask.H ../FL/Fl_Output.H ../FL/Fl_Input.H
-Fl_Menu_Type.o: Shortcut_Button.h ../FL/fl_draw.H
+Fl_Menu_Type.o: alignment_panel.h ../FL/Fl_Window.H ../FL/Fl_Button.H
+Fl_Menu_Type.o: ../FL/Fl_Box.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
+Fl_Menu_Type.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H
+Fl_Menu_Type.o: ../FL/Fl_Preferences.H ../FL/Fl_Tooltip.H
+Fl_Menu_Type.o: ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H
+Fl_Menu_Type.o: ../FL/Fl_Return_Button.H ../FL/fl_message.H ../FL/fl_ask.H
+Fl_Menu_Type.o: ../FL/Fl_Output.H ../FL/Fl_Input.H Shortcut_Button.h
+Fl_Menu_Type.o: ../FL/fl_draw.H
Fl_Group_Type.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
Fl_Group_Type.o: ../FL/Fl_Group.H ../FL/fl_message.H ../FL/fl_ask.H
Fl_Group_Type.o: Fl_Widget_Type.h Fl_Type.h ../FL/Fl_Widget.H ../FL/Fl_Menu.H
@@ -44,11 +47,13 @@ Fl_Widget_Type.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Tabs.H
Fl_Widget_Type.o: ../FL/Fl_Pack.H ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H
Fl_Widget_Type.o: ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H ../FL/Fl_Choice.H
Fl_Widget_Type.o: ../FL/Fl_Menu_Bar.H alignment_panel.h ../FL/Fl_Window.H
-Fl_Widget_Type.o: ../FL/Fl_Box.H ../FL/Fl_Button.H ../FL/Fl_Light_Button.H
-Fl_Widget_Type.o: ../FL/Fl_Button.H ../FL/fl_message.H ../FL/fl_ask.H
+Fl_Widget_Type.o: ../FL/Fl_Button.H ../FL/Fl_Box.H ../FL/Fl_Light_Button.H
+Fl_Widget_Type.o: ../FL/Fl_Button.H ../FL/Fl_Preferences.H ../FL/Fl_Tooltip.H
+Fl_Widget_Type.o: ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H
+Fl_Widget_Type.o: ../FL/Fl_Return_Button.H ../FL/fl_message.H ../FL/fl_ask.H
Fl_Widget_Type.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H widget_panel.h
Fl_Widget_Type.o: ../FL/Fl_Value_Input.H ../FL/Fl_Input.H Shortcut_Button.h
-Fl_Widget_Type.o: ../FL/Fl_Return_Button.H ../FL/fl_show_colormap.H
+Fl_Widget_Type.o: ../FL/fl_show_colormap.H
Fl_Type.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
Fl_Type.o: ../FL/Fl_Browser_.H ../FL/Fl_Group.H ../FL/Fl_Scrollbar.H
Fl_Type.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/fl_draw.H Fl_Type.h
@@ -68,11 +73,14 @@ Fl_Window_Type.o: Fluid_Image.h ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H
Fl_Window_Type.o: ../FL/x.H ../FL/Fl_Tabs.H ../FL/Fl_Pack.H ../FL/Fl_Group.H
Fl_Window_Type.o: ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H
Fl_Window_Type.o: ../FL/Fl_Menu_.H ../FL/Fl_Choice.H ../FL/Fl_Menu_Bar.H
-Fl_Window_Type.o: alignment_panel.h ../FL/Fl_Window.H ../FL/Fl_Box.H
-Fl_Window_Type.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Button.H
-Fl_Window_Type.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H widget_panel.h
+Fl_Window_Type.o: alignment_panel.h ../FL/Fl_Window.H ../FL/Fl_Button.H
+Fl_Window_Type.o: ../FL/Fl_Box.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
+Fl_Window_Type.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H
+Fl_Window_Type.o: ../FL/Fl_Preferences.H ../FL/Fl_Tooltip.H
+Fl_Window_Type.o: ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H
+Fl_Window_Type.o: ../FL/Fl_Return_Button.H widget_panel.h
Fl_Window_Type.o: ../FL/Fl_Value_Input.H ../FL/Fl_Valuator.H ../FL/Fl_Input.H
-Fl_Window_Type.o: Shortcut_Button.h ../FL/Fl_Return_Button.H
+Fl_Window_Type.o: Shortcut_Button.h
Fluid_Image.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
Fluid_Image.o: ../FL/Fl_Widget.H Fl_Type.h ../FL/Fl_Menu.H
Fluid_Image.o: ../FL/Fl_Menu_Item.H Fluid_Image.h ../FL/Fl_Shared_Image.H
@@ -84,17 +92,19 @@ Fluid_Image.o: ../FL/filename.H ../FL/Fl_File_Chooser.H ../FL/Fl_Window.H
Fluid_Image.o: ../FL/Fl_Button.H ../FL/fl_ask.H ../FL/Fl_File_Browser.H
Fluid_Image.o: ../FL/Fl_Browser.H ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H
Fluid_Image.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_File_Icon.H
-Fluid_Image.o: ../FL/Fl.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-Fluid_Image.o: ../FL/Fl_Return_Button.H ../FL/Fl_Button.H
+Fluid_Image.o: ../FL/Fl.H ../FL/Fl_File_Input.H ../FL/Fl_Input.H
+Fluid_Image.o: ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H ../FL/Fl_Button.H
code.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H Fl_Type.h
code.o: ../FL/Fl_Widget.H ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H Fluid_Image.h
code.o: ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H ../FL/x.H ../FL/Fl_Window.H
code.o: ../FL/Fl_Group.H ../FL/Fl_Tabs.H ../FL/Fl_Pack.H ../FL/Fl_Group.H
code.o: ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H
code.o: ../FL/Fl_Menu_.H ../FL/Fl_Choice.H ../FL/Fl_Menu_Bar.H
-code.o: alignment_panel.h ../FL/Fl_Window.H ../FL/Fl_Box.H ../FL/Fl_Input.H
-code.o: ../FL/Fl_Input_.H ../FL/Fl_Button.H ../FL/Fl_Light_Button.H
-code.o: ../FL/Fl_Button.H ../FL/filename.H
+code.o: alignment_panel.h ../FL/Fl_Window.H ../FL/Fl_Button.H ../FL/Fl_Box.H
+code.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Light_Button.H
+code.o: ../FL/Fl_Button.H ../FL/Fl_Preferences.H ../FL/Fl_Tooltip.H
+code.o: ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H
+code.o: ../FL/Fl_Return_Button.H ../FL/filename.H
factory.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Group.H
factory.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Widget.H ../config.h
factory.o: Fl_Widget_Type.h Fl_Type.h ../FL/Fl_Widget.H ../FL/Fl_Menu.H
@@ -110,21 +120,24 @@ factory.o: ../FL/Fl_Round_Button.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H
factory.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
factory.o: ../FL/Fl_Check_Browser.H ../FL/Fl_File_Browser.H
factory.o: ../FL/Fl_Browser.H ../FL/Fl_File_Icon.H ../FL/Fl_Counter.H
-factory.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Text_Display.H
-factory.o: ../FL/fl_draw.H ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Editor.H
-factory.o: ../FL/Fl_Text_Display.H ../FL/Fl_Clock.H ../FL/Fl_Help_View.H
-factory.o: ../FL/Fl_Shared_Image.H ../FL/Fl_Progress.H ../FL/Fl_Adjuster.H
-factory.o: ../FL/Fl_Dial.H ../FL/Fl_Roller.H ../FL/Fl_Scrollbar.H
-factory.o: ../FL/Fl_Output.H ../FL/Fl_Input.H ../FL/Fl_Value_Input.H
-factory.o: ../FL/Fl_Value_Output.H ../FL/Fl_Value_Slider.H
+factory.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_File_Input.H
+factory.o: ../FL/Fl_Text_Display.H ../FL/fl_draw.H ../FL/Fl_Text_Buffer.H
+factory.o: ../FL/Fl_Text_Editor.H ../FL/Fl_Text_Display.H ../FL/Fl_Clock.H
+factory.o: ../FL/Fl_Help_View.H ../FL/Fl_Shared_Image.H ../FL/Fl_Progress.H
+factory.o: ../FL/Fl_Adjuster.H ../FL/Fl_Dial.H ../FL/Fl_Roller.H
+factory.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Output.H ../FL/Fl_Input.H
+factory.o: ../FL/Fl_Value_Input.H ../FL/Fl_Value_Output.H
+factory.o: ../FL/Fl_Value_Slider.H
file.o: alignment_panel.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-file.o: ../FL/Fl_Window.H ../FL/Fl_Box.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-file.o: ../FL/Fl_Button.H ../FL/Fl_Light_Button.H ../FL/Fl_Button.H
-file.o: ../FL/Fl_Choice.H ../FL/Fl_Menu_.H ../FL/fl_message.H ../FL/fl_ask.H
-file.o: Fl_Widget_Type.h Fl_Type.h ../FL/Fl_Widget.H ../FL/Fl_Menu.H
-file.o: ../FL/Fl_Menu_Item.H Fluid_Image.h ../FL/Fl_Shared_Image.H
-file.o: ../FL/Fl_Image.H ../FL/x.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-file.o: ../FL/Fl_Tabs.H ../FL/Fl_Pack.H ../FL/Fl_Group.H ../FL/Fl_Wizard.H
+file.o: ../FL/Fl_Window.H ../FL/Fl_Button.H ../FL/Fl_Box.H ../FL/Fl_Input.H
+file.o: ../FL/Fl_Input_.H ../FL/Fl_Light_Button.H ../FL/Fl_Button.H
+file.o: ../FL/Fl_Choice.H ../FL/Fl_Menu_.H ../FL/Fl_Preferences.H
+file.o: ../FL/Fl_Tooltip.H ../FL/Fl_Widget.H ../FL/Fl_Check_Button.H
+file.o: ../FL/Fl_Light_Button.H ../FL/Fl_Group.H ../FL/Fl_Return_Button.H
+file.o: ../FL/fl_message.H ../FL/fl_ask.H Fl_Widget_Type.h Fl_Type.h
+file.o: ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H Fluid_Image.h
+file.o: ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H ../FL/x.H ../FL/Fl_Window.H
+file.o: ../FL/Fl_Group.H ../FL/Fl_Tabs.H ../FL/Fl_Pack.H ../FL/Fl_Wizard.H
file.o: ../FL/Fl_Menu_.H ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_Bar.H
fluid.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
fluid.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
@@ -135,10 +148,12 @@ fluid.o: ../FL/Fl_Shared_Image.H ../FL/Fl_Hold_Browser.H ../FL/Fl_Browser.H
fluid.o: ../FL/Fl_Browser_.H ../FL/Fl_Menu_Bar.H ../FL/Fl_Menu_.H
fluid.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/fl_ask.H ../FL/fl_draw.H
fluid.o: ../FL/Fl_File_Chooser.H ../FL/Fl_Window.H ../FL/Fl_Choice.H
-fluid.o: ../FL/Fl_File_Browser.H ../FL/Fl_File_Icon.H
+fluid.o: ../FL/Fl_File_Browser.H ../FL/Fl_File_Icon.H ../FL/Fl_File_Input.H
fluid.o: ../FL/Fl_Return_Button.H ../FL/Fl_Button.H ../FL/fl_message.H
fluid.o: ../FL/fl_ask.H ../FL/filename.H ../src/flstring.h ../config.h
-fluid.o: about_panel.h ../FL/Fl_Group.H Fl_Type.h ../FL/Fl_Widget.H
+fluid.o: alignment_panel.h ../FL/Fl_Light_Button.H ../FL/Fl_Preferences.H
+fluid.o: ../FL/Fl_Tooltip.H ../FL/Fl_Widget.H ../FL/Fl_Check_Button.H
+fluid.o: ../FL/Fl_Light_Button.H ../FL/Fl_Group.H about_panel.h Fl_Type.h
fluid.o: ../FL/Fl_Menu.H ../FL/Fl_Menu_Item.H Fluid_Image.h
fluid.o: ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H ../FL/x.H ../FL/Fl_Tabs.H
fluid.o: ../FL/Fl_Pack.H ../FL/Fl_Wizard.H ../FL/Fl_Menu_.H
@@ -156,10 +171,13 @@ widget_panel.o: ../FL/Fl_Input.H ../FL/Fl_Box.H Shortcut_Button.h
widget_panel.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H
widget_panel.o: ../FL/Fl_Return_Button.H
alignment_panel.o: alignment_panel.h ../FL/Fl.H ../FL/Enumerations.H
-alignment_panel.o: ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Box.H
-alignment_panel.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Button.H
+alignment_panel.o: ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Button.H
+alignment_panel.o: ../FL/Fl_Box.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
alignment_panel.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H
-alignment_panel.o: ../FL/Fl_Choice.H ../FL/Fl_Menu_.H
+alignment_panel.o: ../FL/Fl_Choice.H ../FL/Fl_Menu_.H ../FL/Fl_Preferences.H
+alignment_panel.o: ../FL/Fl_Tooltip.H ../FL/Fl_Widget.H
+alignment_panel.o: ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H
+alignment_panel.o: ../FL/Fl_Group.H ../FL/Fl_Return_Button.H
function_panel.o: function_panel.h ../FL/Fl.H ../FL/Enumerations.H
function_panel.o: ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Light_Button.H
function_panel.o: ../FL/Fl_Button.H ../FL/Fl_Input.H ../FL/Fl_Input_.H