Fix FLUID so that open_cb() and open_history_cb() set the filename

before reading the file so that images are loaded properly.

Return NULL if no file is selected in the file chooser.

Add Fl_File_Input to FLUID.


git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@2154 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Michael R Sweet 2002-05-01 08:51:59 +00:00
parent 43b4048b9c
commit b338c743b4
4 changed files with 44 additions and 12 deletions

View File

@ -1,5 +1,5 @@
//
// "$Id: factory.cxx,v 1.4.2.11.2.6 2002/04/11 11:52:41 easysw Exp $"
// "$Id: factory.cxx,v 1.4.2.11.2.7 2002/05/01 08:51:59 easysw Exp $"
//
// Widget factory code for the Fast Light Tool Kit (FLTK).
//
@ -356,6 +356,35 @@ int Fl_Input_Type::textstuff(int w, Fl_Font& f, int& s, Fl_Color& c) {
////////////////////////////////////////////////////////////////
#include <FL/Fl_File_Input.H>
class Fl_File_Input_Type : public Fl_Widget_Type {
Fl_Menu_Item *subtypes() {return 0;}
int textstuff(int w, Fl_Font& f, int& s, Fl_Color& c);
public:
virtual const char *type_name() {return "Fl_File_Input";}
Fl_Widget *widget(int x,int y,int w,int h) {
Fl_File_Input *myo = new Fl_File_Input(x,y,w,h,"file:");
myo->value("/now/is/the/time/for/a/filename.ext");
return myo;
}
Fl_Widget_Type *_make() {return new Fl_File_Input_Type();}
};
static Fl_File_Input_Type Fl_File_Input_type;
int Fl_File_Input_Type::textstuff(int w, Fl_Font& f, int& s, Fl_Color& c) {
Fl_File_Input *myo = (Fl_File_Input*)(w==4 ? ((Fl_Widget_Type*)factory)->o : o);
switch (w) {
case 4:
case 0: f = myo->textfont(); s = myo->textsize(); c = myo->textcolor(); break;
case 1: myo->textfont(f); break;
case 2: myo->textsize(s); break;
case 3: myo->textcolor(c); break;
}
return 1;
}
////////////////////////////////////////////////////////////////
#include <FL/Fl_Text_Display.H>
class Fl_Text_Display_Type : public Fl_Widget_Type {
int textstuff(int w, Fl_Font& f, int& s, Fl_Color& c);
@ -703,6 +732,7 @@ Fl_Menu_Item New_Menu[] = {
{0,0,cb,(void*)&Fl_Value_Output_type},
{0},
{"text",0,0,0,FL_SUBMENU},
{0,0,cb,(void*)&Fl_File_Input_type},
{0,0,cb,(void*)&Fl_Input_type},
{0,0,cb,(void*)&Fl_Output_type},
{0,0,cb,(void*)&Fl_Text_Display_type},
@ -894,5 +924,5 @@ int lookup_symbol(const char *name, int &v, int numberok) {
}
//
// End of "$Id: factory.cxx,v 1.4.2.11.2.6 2002/04/11 11:52:41 easysw Exp $".
// End of "$Id: factory.cxx,v 1.4.2.11.2.7 2002/05/01 08:51:59 easysw Exp $".
//

View File

@ -1,5 +1,5 @@
//
// "$Id: fluid.cxx,v 1.15.2.13.2.16 2002/04/30 22:25:18 matthiaswm Exp $"
// "$Id: fluid.cxx,v 1.15.2.13.2.17 2002/05/01 08:51:59 easysw Exp $"
//
// FLUID main entry for the Fast Light Tool Kit (FLTK).
//
@ -149,21 +149,22 @@ void open_cb(Fl_Widget *, void *v) {
if (!v && modflag && !fl_ask("Discard changes?")) return;
const char *c;
if (!(c = fl_file_chooser("Open:", "*.f[ld]", filename))) return;
if (!v) {set_filename(c);}
if (!read_file(c, v!=0)) {
fl_message("Can't read %s: %s", c, strerror(errno));
return;
}
if (!v) {set_filename(c); modflag = 0;}
if (!v) {modflag = 0;}
else modflag = 1;
}
void open_history_cb(Fl_Widget *, void *v) {
if (modflag && !fl_ask("Discard changes?")) return;
set_filename((char *)v);
if (!read_file((char *)v, 0)) {
fl_message("Can't read %s: %s", v, strerror(errno));
return;
}
set_filename((char *)v);
modflag = 0;
}
@ -614,5 +615,5 @@ int main(int argc,char **argv) {
}
//
// End of "$Id: fluid.cxx,v 1.15.2.13.2.16 2002/04/30 22:25:18 matthiaswm Exp $".
// End of "$Id: fluid.cxx,v 1.15.2.13.2.17 2002/05/01 08:51:59 easysw Exp $".
//

View File

@ -55,14 +55,12 @@ if ((f = fl_input(filter_label,
code0 {\#include <FL/Fl_File_Browser.H>}
class Fl_File_Browser
}
Fl_Input fileName {
Fl_File_Input fileName {
label {Filename:}
callback {fileNameCB();}
private xywh {10 245 355 35} align 5 when 8
code0 {fileName->when(FL_WHEN_CHANGED | FL_WHEN_ENTER_KEY_ALWAYS);}
code1 {fileName->label(filename_label);}
code2 {\#include <FL/Fl_File_Input.H>}
class Fl_File_Input
}
Fl_Return_Button okButton {
label OK

View File

@ -1,5 +1,5 @@
//
// "$Id: Fl_File_Chooser2.cxx,v 1.1.2.9 2002/05/01 08:28:59 easysw Exp $"
// "$Id: Fl_File_Chooser2.cxx,v 1.1.2.10 2002/05/01 08:51:59 easysw Exp $"
//
// More Fl_File_Chooser routines.
//
@ -228,7 +228,10 @@ Fl_File_Chooser::value(int f) // I - File number
{
name = fileName->value();
if (name[0] == '\0') return NULL;
else return name;
else if (fl_filename_isdir(name)) {
if (type_ & DIRECTORY) return name;
else return NULL;
} else return name;
}
for (i = 1, count = 0; i <= fileList->size(); i ++)
@ -698,5 +701,5 @@ Fl_File_Chooser::fileNameCB()
//
// End of "$Id: Fl_File_Chooser2.cxx,v 1.1.2.9 2002/05/01 08:28:59 easysw Exp $".
// End of "$Id: Fl_File_Chooser2.cxx,v 1.1.2.10 2002/05/01 08:51:59 easysw Exp $".
//