Add option to control the number of file history that is shown
(default 5, range 1 to 10 files) git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@4185 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
parent
ae55d848e9
commit
60b5a637f3
@ -206,11 +206,18 @@ static void cb_Close1(Fl_Button*, void*) {
|
|||||||
settings_window->hide();
|
settings_window->hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Fl_Spinner *recent_spinner=(Fl_Spinner *)0;
|
||||||
|
|
||||||
|
static void cb_recent_spinner(Fl_Spinner*, void*) {
|
||||||
|
fluid_prefs.set("recent_files", recent_spinner->value());
|
||||||
|
load_history();
|
||||||
|
}
|
||||||
|
|
||||||
Fl_Double_Window* make_settings_window() {
|
Fl_Double_Window* make_settings_window() {
|
||||||
Fl_Double_Window* w;
|
Fl_Double_Window* w;
|
||||||
{ Fl_Double_Window* o = settings_window = new Fl_Double_Window(300, 190, "GUI Settings");
|
{ Fl_Double_Window* o = settings_window = new Fl_Double_Window(340, 225, "GUI Settings");
|
||||||
w = o;
|
w = o;
|
||||||
{ Fl_Choice* o = scheme_choice = new Fl_Choice(75, 10, 115, 25, "Scheme:");
|
{ Fl_Choice* o = scheme_choice = new Fl_Choice(116, 10, 115, 25, "Scheme:");
|
||||||
o->down_box(FL_BORDER_BOX);
|
o->down_box(FL_BORDER_BOX);
|
||||||
o->labelfont(1);
|
o->labelfont(1);
|
||||||
o->callback((Fl_Callback*)scheme_cb);
|
o->callback((Fl_Callback*)scheme_cb);
|
||||||
@ -220,10 +227,10 @@ Fl_Double_Window* make_settings_window() {
|
|||||||
scheme_choice->value(s);
|
scheme_choice->value(s);
|
||||||
scheme_cb(0, 0);
|
scheme_cb(0, 0);
|
||||||
}
|
}
|
||||||
{ Fl_Group* o = new Fl_Group(75, 45, 215, 100, "Options:\n\n\n\n\n");
|
{ Fl_Group* o = new Fl_Group(116, 45, 215, 100, "Options:\n\n\n\n\n");
|
||||||
o->labelfont(1);
|
o->labelfont(1);
|
||||||
o->align(FL_ALIGN_LEFT);
|
o->align(FL_ALIGN_LEFT);
|
||||||
{ Fl_Check_Button* o = tooltips_button = new Fl_Check_Button(75, 45, 113, 25, "Show Tooltips");
|
{ Fl_Check_Button* o = tooltips_button = new Fl_Check_Button(116, 45, 113, 25, "Show Tooltips");
|
||||||
o->down_box(FL_DOWN_BOX);
|
o->down_box(FL_DOWN_BOX);
|
||||||
o->callback((Fl_Callback*)cb_tooltips_button);
|
o->callback((Fl_Callback*)cb_tooltips_button);
|
||||||
int b;
|
int b;
|
||||||
@ -231,21 +238,21 @@ Fl_Double_Window* make_settings_window() {
|
|||||||
tooltips_button->value(b);
|
tooltips_button->value(b);
|
||||||
Fl_Tooltip::enable(b);
|
Fl_Tooltip::enable(b);
|
||||||
}
|
}
|
||||||
{ Fl_Check_Button* o = completion_button = new Fl_Check_Button(75, 70, 186, 25, "Show Completion Dialogs");
|
{ Fl_Check_Button* o = completion_button = new Fl_Check_Button(116, 70, 186, 25, "Show Completion Dialogs");
|
||||||
o->down_box(FL_DOWN_BOX);
|
o->down_box(FL_DOWN_BOX);
|
||||||
o->callback((Fl_Callback*)cb_completion_button);
|
o->callback((Fl_Callback*)cb_completion_button);
|
||||||
int b;
|
int b;
|
||||||
fluid_prefs.get("show_completion_dialogs", b, 1);
|
fluid_prefs.get("show_completion_dialogs", b, 1);
|
||||||
completion_button->value(b);
|
completion_button->value(b);
|
||||||
}
|
}
|
||||||
{ Fl_Check_Button* o = openlast_button = new Fl_Check_Button(75, 95, 215, 25, "Open Previous File on Startup");
|
{ Fl_Check_Button* o = openlast_button = new Fl_Check_Button(116, 95, 215, 25, "Open Previous File on Startup");
|
||||||
o->down_box(FL_DOWN_BOX);
|
o->down_box(FL_DOWN_BOX);
|
||||||
o->callback((Fl_Callback*)cb_openlast_button);
|
o->callback((Fl_Callback*)cb_openlast_button);
|
||||||
int b;
|
int b;
|
||||||
fluid_prefs.get("open_previous_file", b, 0);
|
fluid_prefs.get("open_previous_file", b, 0);
|
||||||
openlast_button->value(b);
|
openlast_button->value(b);
|
||||||
}
|
}
|
||||||
{ Fl_Check_Button* o = prevpos_button = new Fl_Check_Button(75, 120, 210, 25, "Remember Window Positions");
|
{ Fl_Check_Button* o = prevpos_button = new Fl_Check_Button(116, 120, 210, 25, "Remember Window Positions");
|
||||||
o->down_box(FL_DOWN_BOX);
|
o->down_box(FL_DOWN_BOX);
|
||||||
o->callback((Fl_Callback*)cb_prevpos_button);
|
o->callback((Fl_Callback*)cb_prevpos_button);
|
||||||
int b;
|
int b;
|
||||||
@ -254,10 +261,19 @@ Fl_Double_Window* make_settings_window() {
|
|||||||
}
|
}
|
||||||
o->end();
|
o->end();
|
||||||
}
|
}
|
||||||
{ Fl_Button* o = new Fl_Button(226, 155, 64, 25, "Close");
|
{ Fl_Button* o = new Fl_Button(266, 190, 64, 25, "Close");
|
||||||
o->tooltip("Close this dialog.");
|
o->tooltip("Close this dialog.");
|
||||||
o->callback((Fl_Callback*)cb_Close1);
|
o->callback((Fl_Callback*)cb_Close1);
|
||||||
}
|
}
|
||||||
|
{ Fl_Spinner* o = recent_spinner = new Fl_Spinner(116, 155, 40, 25, "# Recent Files:");
|
||||||
|
o->labelfont(1);
|
||||||
|
o->callback((Fl_Callback*)cb_recent_spinner);
|
||||||
|
o->when(FL_WHEN_CHANGED);
|
||||||
|
int c;
|
||||||
|
fluid_prefs.get("recent_files", c, 5);
|
||||||
|
recent_spinner->maximum(10);
|
||||||
|
recent_spinner->value(c);
|
||||||
|
}
|
||||||
o->end();
|
o->end();
|
||||||
}
|
}
|
||||||
return w;
|
return w;
|
||||||
|
@ -37,6 +37,9 @@ decl {\#include <FL/Fl_Text_Buffer.H>} {public
|
|||||||
decl {\#include <FL/Fl_Text_Display.H>} {public
|
decl {\#include <FL/Fl_Text_Display.H>} {public
|
||||||
}
|
}
|
||||||
|
|
||||||
|
decl {extern void load_history();} {selected public
|
||||||
|
}
|
||||||
|
|
||||||
Function {make_project_window()} {open
|
Function {make_project_window()} {open
|
||||||
} {
|
} {
|
||||||
Fl_Window project_window {
|
Fl_Window project_window {
|
||||||
@ -135,19 +138,19 @@ decl {extern Fl_Preferences fluid_prefs;} {public
|
|||||||
decl {Fl_Text_Buffer *shell_run_buffer;} {public
|
decl {Fl_Text_Buffer *shell_run_buffer;} {public
|
||||||
}
|
}
|
||||||
|
|
||||||
decl {void scheme_cb(Fl_Choice *, void *);} {selected public
|
decl {void scheme_cb(Fl_Choice *, void *);} {public
|
||||||
}
|
}
|
||||||
|
|
||||||
Function {make_settings_window()} {open
|
Function {make_settings_window()} {open
|
||||||
} {
|
} {
|
||||||
Fl_Window settings_window {
|
Fl_Window settings_window {
|
||||||
label {GUI Settings} open
|
label {GUI Settings} open
|
||||||
xywh {326 155 300 190} type Double visible
|
xywh {326 145 340 225} type Double visible
|
||||||
} {
|
} {
|
||||||
Fl_Choice scheme_choice {
|
Fl_Choice scheme_choice {
|
||||||
label {Scheme:}
|
label {Scheme:}
|
||||||
callback scheme_cb
|
callback scheme_cb
|
||||||
xywh {75 10 115 25} down_box BORDER_BOX labelfont 1
|
xywh {116 10 115 25} down_box BORDER_BOX labelfont 1
|
||||||
code0 {int s;}
|
code0 {int s;}
|
||||||
code1 {fluid_prefs.get("scheme", s, 0);}
|
code1 {fluid_prefs.get("scheme", s, 0);}
|
||||||
code2 {scheme_choice->value(s);}
|
code2 {scheme_choice->value(s);}
|
||||||
@ -172,14 +175,14 @@ Function {make_settings_window()} {open
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
} open
|
||||||
xywh {75 45 215 100} labelfont 1 align 4
|
xywh {116 45 215 100} labelfont 1 align 4
|
||||||
} {
|
} {
|
||||||
Fl_Check_Button tooltips_button {
|
Fl_Check_Button tooltips_button {
|
||||||
label {Show Tooltips}
|
label {Show Tooltips}
|
||||||
callback {Fl_Tooltip::enable(tooltips_button->value());
|
callback {Fl_Tooltip::enable(tooltips_button->value());
|
||||||
fluid_prefs.set("show_tooltips", tooltips_button->value());}
|
fluid_prefs.set("show_tooltips", tooltips_button->value());}
|
||||||
xywh {75 45 113 25} down_box DOWN_BOX
|
xywh {116 45 113 25} down_box DOWN_BOX
|
||||||
code0 {int b;}
|
code0 {int b;}
|
||||||
code1 {fluid_prefs.get("show_tooltips", b, 1);}
|
code1 {fluid_prefs.get("show_tooltips", b, 1);}
|
||||||
code2 {tooltips_button->value(b);}
|
code2 {tooltips_button->value(b);}
|
||||||
@ -188,7 +191,7 @@ fluid_prefs.set("show_tooltips", tooltips_button->value());}
|
|||||||
Fl_Check_Button completion_button {
|
Fl_Check_Button completion_button {
|
||||||
label {Show Completion Dialogs}
|
label {Show Completion Dialogs}
|
||||||
callback {fluid_prefs.set("show_completion_dialogs", completion_button->value());}
|
callback {fluid_prefs.set("show_completion_dialogs", completion_button->value());}
|
||||||
xywh {75 70 186 25} down_box DOWN_BOX
|
xywh {116 70 186 25} down_box DOWN_BOX
|
||||||
code0 {int b;}
|
code0 {int b;}
|
||||||
code1 {fluid_prefs.get("show_completion_dialogs", b, 1);}
|
code1 {fluid_prefs.get("show_completion_dialogs", b, 1);}
|
||||||
code2 {completion_button->value(b);}
|
code2 {completion_button->value(b);}
|
||||||
@ -196,7 +199,7 @@ fluid_prefs.set("show_tooltips", tooltips_button->value());}
|
|||||||
Fl_Check_Button openlast_button {
|
Fl_Check_Button openlast_button {
|
||||||
label {Open Previous File on Startup}
|
label {Open Previous File on Startup}
|
||||||
callback {fluid_prefs.set("open_previous_file", openlast_button->value());}
|
callback {fluid_prefs.set("open_previous_file", openlast_button->value());}
|
||||||
xywh {75 95 215 25} down_box DOWN_BOX
|
xywh {116 95 215 25} down_box DOWN_BOX
|
||||||
code0 {int b;}
|
code0 {int b;}
|
||||||
code1 {fluid_prefs.get("open_previous_file", b, 0);}
|
code1 {fluid_prefs.get("open_previous_file", b, 0);}
|
||||||
code2 {openlast_button->value(b);}
|
code2 {openlast_button->value(b);}
|
||||||
@ -204,7 +207,7 @@ fluid_prefs.set("show_tooltips", tooltips_button->value());}
|
|||||||
Fl_Check_Button prevpos_button {
|
Fl_Check_Button prevpos_button {
|
||||||
label {Remember Window Positions}
|
label {Remember Window Positions}
|
||||||
callback {fluid_prefs.set("prev_window_pos", prevpos_button->value());}
|
callback {fluid_prefs.set("prev_window_pos", prevpos_button->value());}
|
||||||
xywh {75 120 210 25} down_box DOWN_BOX
|
xywh {116 120 210 25} down_box DOWN_BOX
|
||||||
code0 {int b;}
|
code0 {int b;}
|
||||||
code1 {fluid_prefs.get("prev_window_pos", b, 1);}
|
code1 {fluid_prefs.get("prev_window_pos", b, 1);}
|
||||||
code2 {prevpos_button->value(b);}
|
code2 {prevpos_button->value(b);}
|
||||||
@ -213,7 +216,17 @@ fluid_prefs.set("show_tooltips", tooltips_button->value());}
|
|||||||
Fl_Button {} {
|
Fl_Button {} {
|
||||||
label Close
|
label Close
|
||||||
callback {settings_window->hide();}
|
callback {settings_window->hide();}
|
||||||
tooltip {Close this dialog.} xywh {226 155 64 25}
|
tooltip {Close this dialog.} xywh {266 190 64 25}
|
||||||
|
}
|
||||||
|
Fl_Spinner recent_spinner {
|
||||||
|
label {\# Recent Files:}
|
||||||
|
callback {fluid_prefs.set("recent_files", recent_spinner->value());
|
||||||
|
load_history();}
|
||||||
|
xywh {116 155 40 25} labelfont 1 when 1
|
||||||
|
code0 {int c;}
|
||||||
|
code1 {fluid_prefs.get("recent_files", c, 5);}
|
||||||
|
code2 {recent_spinner->maximum(10);}
|
||||||
|
code3 {recent_spinner->value(c);}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include <FL/Fl.H>
|
#include <FL/Fl.H>
|
||||||
#include <FL/Fl_Text_Buffer.H>
|
#include <FL/Fl_Text_Buffer.H>
|
||||||
#include <FL/Fl_Text_Display.H>
|
#include <FL/Fl_Text_Display.H>
|
||||||
|
extern void load_history();
|
||||||
#include <FL/Fl_Double_Window.H>
|
#include <FL/Fl_Double_Window.H>
|
||||||
#include <FL/Fl_Preferences.H>
|
#include <FL/Fl_Preferences.H>
|
||||||
#include <FL/Fl_Tooltip.H>
|
#include <FL/Fl_Tooltip.H>
|
||||||
@ -70,6 +71,8 @@ extern Fl_Check_Button *tooltips_button;
|
|||||||
extern Fl_Check_Button *completion_button;
|
extern Fl_Check_Button *completion_button;
|
||||||
extern Fl_Check_Button *openlast_button;
|
extern Fl_Check_Button *openlast_button;
|
||||||
extern Fl_Check_Button *prevpos_button;
|
extern Fl_Check_Button *prevpos_button;
|
||||||
|
#include <FL/Fl_Spinner.H>
|
||||||
|
extern Fl_Spinner *recent_spinner;
|
||||||
Fl_Double_Window* make_settings_window();
|
Fl_Double_Window* make_settings_window();
|
||||||
extern Fl_Menu_Item menu_scheme_choice[];
|
extern Fl_Menu_Item menu_scheme_choice[];
|
||||||
extern Fl_Double_Window *shell_window;
|
extern Fl_Double_Window *shell_window;
|
||||||
|
@ -1470,8 +1470,13 @@ void make_main_window() {
|
|||||||
// Load file history from preferences...
|
// Load file history from preferences...
|
||||||
void load_history() {
|
void load_history() {
|
||||||
int i; // Looping var
|
int i; // Looping var
|
||||||
|
int max_files;
|
||||||
|
|
||||||
for (i = 0; i < 10; i ++) {
|
|
||||||
|
fluid_prefs.get("recent_files", max_files, 5);
|
||||||
|
if (max_files > 10) max_files = 10;
|
||||||
|
|
||||||
|
for (i = 0; i < max_files; i ++) {
|
||||||
fluid_prefs.get( Fl_Preferences::Name("file%d", i), absolute_history[i], "", sizeof(absolute_history[i]));
|
fluid_prefs.get( Fl_Preferences::Name("file%d", i), absolute_history[i], "", sizeof(absolute_history[i]));
|
||||||
if (absolute_history[i][0]) {
|
if (absolute_history[i][0]) {
|
||||||
// Make a relative version of the filename for the menu...
|
// Make a relative version of the filename for the menu...
|
||||||
@ -1479,21 +1484,28 @@ void load_history() {
|
|||||||
absolute_history[i]);
|
absolute_history[i]);
|
||||||
|
|
||||||
Main_Menu[i + HISTORY_ITEM].flags = 0;
|
Main_Menu[i + HISTORY_ITEM].flags = 0;
|
||||||
} else {
|
} else break;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (; i < 10; i ++) {
|
||||||
if (i) Main_Menu[i + HISTORY_ITEM - 1].flags |= FL_MENU_DIVIDER;
|
if (i) Main_Menu[i + HISTORY_ITEM - 1].flags |= FL_MENU_DIVIDER;
|
||||||
Main_Menu[i + HISTORY_ITEM].hide();
|
Main_Menu[i + HISTORY_ITEM].hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Update file history from preferences...
|
// Update file history from preferences...
|
||||||
void update_history(const char *flname) {
|
void update_history(const char *flname) {
|
||||||
int i; // Looping var
|
int i; // Looping var
|
||||||
char absolute[1024];
|
char absolute[1024];
|
||||||
|
int max_files;
|
||||||
|
|
||||||
|
|
||||||
|
fluid_prefs.get("recent_files", max_files, 5);
|
||||||
|
if (max_files > 10) max_files = 10;
|
||||||
|
|
||||||
fl_filename_absolute(absolute, sizeof(absolute), flname);
|
fl_filename_absolute(absolute, sizeof(absolute), flname);
|
||||||
|
|
||||||
for (i = 0; i < 10; i ++)
|
for (i = 0; i < max_files; i ++)
|
||||||
#if defined(WIN32) || defined(__APPLE__)
|
#if defined(WIN32) || defined(__APPLE__)
|
||||||
if (!strcasecmp(absolute, absolute_history[i])) break;
|
if (!strcasecmp(absolute, absolute_history[i])) break;
|
||||||
#else
|
#else
|
||||||
@ -1502,7 +1514,7 @@ void update_history(const char *flname) {
|
|||||||
|
|
||||||
if (i == 0) return;
|
if (i == 0) return;
|
||||||
|
|
||||||
if (i >= 10) i = 9;
|
if (i >= max_files) i = max_files - 1;
|
||||||
|
|
||||||
// Move the other flnames down in the list...
|
// Move the other flnames down in the list...
|
||||||
memmove(absolute_history + 1, absolute_history,
|
memmove(absolute_history + 1, absolute_history,
|
||||||
@ -1517,15 +1529,18 @@ void update_history(const char *flname) {
|
|||||||
absolute_history[0]);
|
absolute_history[0]);
|
||||||
|
|
||||||
// Update the menu items as needed...
|
// Update the menu items as needed...
|
||||||
for (i = 0; i < 10; i ++) {
|
for (i = 0; i < max_files; i ++) {
|
||||||
fluid_prefs.set( Fl_Preferences::Name("file%d", i), absolute_history[i]);
|
fluid_prefs.set( Fl_Preferences::Name("file%d", i), absolute_history[i]);
|
||||||
if (absolute_history[i][0]) Main_Menu[i + HISTORY_ITEM].flags = 0;
|
if (absolute_history[i][0]) Main_Menu[i + HISTORY_ITEM].flags = 0;
|
||||||
else {
|
else break;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (; i < 10; i ++) {
|
||||||
|
fluid_prefs.set( Fl_Preferences::Name("file%d", i), "");
|
||||||
if (i) Main_Menu[i + HISTORY_ITEM - 1].flags |= FL_MENU_DIVIDER;
|
if (i) Main_Menu[i + HISTORY_ITEM - 1].flags |= FL_MENU_DIVIDER;
|
||||||
Main_Menu[i + HISTORY_ITEM].hide();
|
Main_Menu[i + HISTORY_ITEM].hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Shell command support...
|
// Shell command support...
|
||||||
#if (!defined(WIN32) || defined(__CYGWIN__)) && !defined(__MWERKS__)
|
#if (!defined(WIN32) || defined(__CYGWIN__)) && !defined(__MWERKS__)
|
||||||
|
Loading…
Reference in New Issue
Block a user