Support type qualifiers before a class name; this allows for things like

"FL_EXPORT Fl_File_Chooser"...

Update Fl_File_Chooser and Fl_Help_Dialog to use the new interface so
that we don't have to add FL_EXPORT every time we make a change...


git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@2934 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Michael R Sweet 2003-01-28 20:51:17 +00:00
parent 226715d978
commit fc22bc93a0
11 changed files with 90 additions and 27 deletions

View File

@ -1,6 +1,9 @@
CHANGES IN FLTK 1.1.3
- Documentation updates.
- FLUID now supports up to two additional qualifiers
before a class name (FL_EXPORT, etc.) to aide in
developing DLL interfaces for WIN32.
- Additional NULL checks in Fl_Button,
fl_draw_boxtype(), Fl_File_Chooser, and
Fl_Window::hotspot().

View File

@ -1,4 +1,4 @@
// generated by Fast Light User Interface Designer (fluid) version 1.0102
// generated by Fast Light User Interface Designer (fluid) version 1.0103
#ifndef Fl_File_Chooser_H
#define Fl_File_Chooser_H

View File

@ -1,4 +1,4 @@
// generated by Fast Light User Interface Designer (fluid) version 1.0101
// generated by Fast Light User Interface Designer (fluid) version 1.0103
#ifndef Fl_Help_Dialog_H
#define Fl_Help_Dialog_H

View File

@ -1,5 +1,5 @@
//
// "$Id: Fl_Function_Type.cxx,v 1.15.2.16.2.11 2002/11/07 03:34:49 easysw Exp $"
// "$Id: Fl_Function_Type.cxx,v 1.15.2.16.2.12 2003/01/28 20:51:09 easysw Exp $"
//
// C function type code for the Fast Light Tool Kit (FLTK).
//
@ -618,11 +618,17 @@ const char* Fl_Type::class_name(const int need_nest) const {
int Fl_Class_Type::is_public() const {return public_;}
void Fl_Class_Type::prefix(const char*p) {
free((void*) class_prefix);
class_prefix=strdup(p ? p : "" );
}
Fl_Type *Fl_Class_Type::make() {
Fl_Type *p = Fl_Type::current;
while (p && !p->is_decl_block()) p = p->parent;
Fl_Class_Type *o = new Fl_Class_Type();
o->name("UserInterface");
o->class_prefix=0;
o->subclass_of = 0;
o->public_ = 1;
o->add(p);
@ -651,11 +657,19 @@ void Fl_Class_Type::read_property(const char *c) {
void Fl_Class_Type::open() {
if (!class_panel) make_class_panel();
c_name_input->static_value(name());
char fullname[1024]="";
if (prefix() && strlen(prefix()))
sprintf(fullname,"%s %s",prefix(),name());
else
strcpy(fullname, name());
c_name_input->static_value(fullname);
c_subclass_input->static_value(subclass_of);
c_public_button->value(public_);
class_panel->show();
const char* message = 0;
char *na=0,*pr=0,*p=0; // name and prefix substrings
for (;;) { // repeat as long as there are errors
if (message) fl_alert(message);
for (;;) {
@ -665,14 +679,30 @@ void Fl_Class_Type::open() {
else if (!w) Fl::wait();
}
const char*c = c_name_input->value();
while (isspace(*c)) c++;
if (!*c) goto OOPS;
while (is_id(*c)) c++;
while (isspace(*c)) c++;
if (*c) {OOPS: message = "class name must be C++ identifier"; continue;}
char *s = strdup(c);
size_t len = strlen(s);
if (!*s) goto OOPS;
p = (char*) (s+len-1);
while (p>=s && isspace(*p)) *(p--)='\0';
if (p<s) goto OOPS;
while (p>=s && is_id(*p)) p--;
if ( (p<s && !is_id(*(p+1))) || !*(p+1) ) {
OOPS: message = "class name must be C++ identifier";
free((void*)s);
continue;
}
na=p+1; // now we have the name
if(p>s) *p--='\0';
while (p>=s && isspace(*p)) *(p--)='\0';
while (p>=s && is_id(*p)) p--;
if (p<s) p++;
if (is_id(*p) && p<na) pr=p; // prefix detected
c = c_subclass_input->value();
message = c_check(c); if (message) continue;
name(c_name_input->value());
message = c_check(c);
if (message) { free((void*)s);continue;}
name(na);
prefix(pr);
free((void*)s);
storestring(c, subclass_of);
public_ = c_public_button->value();
break;
@ -696,7 +726,10 @@ void Fl_Class_Type::write_code1() {
parent_class = current_class;
current_class = this;
write_public_state = 0;
write_h("\nclass %s ", name());
if (prefix() && strlen(prefix()))
write_h("\nclass %s %s ", prefix(), name());
else
write_h("\nclass %s ", name());
if (subclass_of) write_h(": %s ", subclass_of);
write_h("{\n");
}
@ -707,5 +740,5 @@ void Fl_Class_Type::write_code2() {
}
//
// End of "$Id: Fl_Function_Type.cxx,v 1.15.2.16.2.11 2002/11/07 03:34:49 easysw Exp $".
// End of "$Id: Fl_Function_Type.cxx,v 1.15.2.16.2.12 2003/01/28 20:51:09 easysw Exp $".
//

View File

@ -1,5 +1,5 @@
//
// "$Id: Fl_Type.cxx,v 1.6.2.6.2.13 2002/11/19 18:41:15 easysw Exp $"
// "$Id: Fl_Type.cxx,v 1.6.2.6.2.14 2003/01/28 20:51:10 easysw Exp $"
//
// Widget type code for the Fast Light Tool Kit (FLTK).
//
@ -726,6 +726,13 @@ void later_cb(Fl_Widget*,void*) {
void Fl_Type::write() {
write_indent(level);
write_word(type_name());
if (is_class()) {
const char * p = ((Fl_Class_Type*)this)->prefix();
if (p && strlen(p))
write_word(p);
}
write_word(name());
write_open(level);
write_properties();
@ -784,5 +791,5 @@ void Fl_Type::read_property(const char *c) {
int Fl_Type::read_fdesign(const char*, const char*) {return 0;}
//
// End of "$Id: Fl_Type.cxx,v 1.6.2.6.2.13 2002/11/19 18:41:15 easysw Exp $".
// End of "$Id: Fl_Type.cxx,v 1.6.2.6.2.14 2003/01/28 20:51:10 easysw Exp $".
//

View File

@ -1,5 +1,5 @@
//
// "$Id: Fl_Type.h,v 1.5.2.11.2.7 2002/10/30 21:06:14 matthiaswm Exp $"
// "$Id: Fl_Type.h,v 1.5.2.11.2.8 2003/01/28 20:51:11 easysw Exp $"
//
// Widget type header file for the Fast Light Tool Kit (FLTK).
//
@ -230,6 +230,12 @@ public:
int pixmapID() { return 12; }
void write_properties();
void read_property(const char *);
// class prefix attribute access
void prefix(const char* p);
const char* prefix() const {return class_prefix;}
private:
const char* class_prefix;
};
#define NUM_EXTRA_CODE 4
@ -587,5 +593,5 @@ int storestring(const char *n, const char * & p, int nostrip=0);
extern int include_H_from_C;
//
// End of "$Id: Fl_Type.h,v 1.5.2.11.2.7 2002/10/30 21:06:14 matthiaswm Exp $".
// End of "$Id: Fl_Type.h,v 1.5.2.11.2.8 2003/01/28 20:51:11 easysw Exp $".
//

View File

@ -1,5 +1,5 @@
//
// "$Id: file.cxx,v 1.7.2.6.2.7 2002/08/09 22:57:00 easysw Exp $"
// "$Id: file.cxx,v 1.7.2.6.2.8 2003/01/28 20:51:13 easysw Exp $"
//
// Fluid file routines for the Fast Light Tool Kit (FLTK).
//
@ -458,6 +458,12 @@ static void read_children(Fl_Type *p, int paste) {
t->name(read_word());
c = read_word(1);
if (strcmp(c,"{") && t->is_class()) { // <prefix> <name>
((Fl_Class_Type*)t)->prefix(t->name());
t->name(c);
c = read_word(1);
}
if (strcmp(c,"{")) {
read_error("Missing property list for %s\n",t->title());
goto REUSE_C;
@ -631,5 +637,5 @@ void read_fdesign() {
}
//
// End of "$Id: file.cxx,v 1.7.2.6.2.7 2002/08/09 22:57:00 easysw Exp $".
// End of "$Id: file.cxx,v 1.7.2.6.2.8 2003/01/28 20:51:13 easysw Exp $".
//

View File

@ -1,4 +1,4 @@
// generated by Fast Light User Interface Designer (fluid) version 1.0102
// generated by Fast Light User Interface Designer (fluid) version 1.0103
#include "../FL/Fl_File_Chooser.H"

View File

@ -1,8 +1,8 @@
# data file for the Fltk User Interface Designer (fluid)
version 1.0102
version 1.0103
header_name {../FL/Fl_File_Chooser.H}
code_name {.cxx}
class Fl_File_Chooser {open
class FL_EXPORT Fl_File_Chooser {open selected
} {
decl {enum { SINGLE = 0, MULTI = 1, CREATE = 2, DIRECTORY = 4 };} {public
}
@ -116,7 +116,7 @@ window->hide();}
callback {fileName->value("");
fileList->deselect();
Fl::remove_timeout((Fl_Timeout_Handler)previewCB, this);
window->hide();} selected
window->hide();}
private xywh {405 345 75 25}
code0 {o->label(fl_cancel);}
}

View File

@ -1,4 +1,4 @@
// generated by Fast Light User Interface Designer (fluid) version 1.0101
// generated by Fast Light User Interface Designer (fluid) version 1.0103
#include "../FL/Fl_Help_Dialog.H"
#include "flstring.h"
@ -113,7 +113,15 @@ Fl_Help_Dialog::Fl_Help_Dialog() {
o->user_data((void*)(this));
{ Fl_Help_View* o = view_ = new Fl_Help_View(10, 10, 510, 330);
o->box(FL_DOWN_BOX);
o->color(49);
o->selection_color(49);
o->labeltype(FL_NORMAL_LABEL);
o->labelfont(0);
o->labelsize(14);
o->labelcolor(56);
o->callback((Fl_Callback*)cb_view_);
o->align(FL_ALIGN_TOP);
o->when(FL_WHEN_RELEASE);
o->end();
Fl_Group::current()->resizable(o);
}

View File

@ -1,12 +1,12 @@
# data file for the Fltk User Interface Designer (fluid)
version 1.0100
version 1.0103
header_name {../FL/Fl_Help_Dialog.H}
code_name {.cxx}
decl {\#include "flstring.h"} {}
decl {\#include <FL/fl_ask.H>} {}
class Fl_Help_Dialog {open
class FL_EXPORT Fl_Help_Dialog {open selected
} {
decl {int index_;} {}
decl {int max_;} {}
@ -54,7 +54,7 @@ else if (view_->filename())
} {}
Fl_Button {} {
label Close
callback {window_->hide();} selected
callback {window_->hide();}
private xywh {425 350 95 25}
code0 {o->label(fl_close);}
}