From 54170907d62114a2b49cbbe729b1a3eedfea3746 Mon Sep 17 00:00:00 2001 From: leo Date: Fri, 29 Dec 2000 12:43:33 +0000 Subject: Save HTML dialog options git-svn-id: http://svn.leocad.org/trunk@194 c7d43263-9d01-0410-8a33-9dba5d9f93d6 --- common/defines.h | 16 ++++++++++++---- common/project.cpp | 27 ++++++++++++++++++++++++--- common/typedefs.h | 2 +- docs/CHANGES.txt | 4 ++++ linux/dialogs.cpp | 46 +++++++++++++++++++++++++++++++++++++++++++--- 5 files changed, 84 insertions(+), 11 deletions(-) diff --git a/common/defines.h b/common/defines.h index d9c818f..230f6b8 100644 --- a/common/defines.h +++ b/common/defines.h @@ -169,10 +169,18 @@ unsigned long SwapLONG(unsigned long x) // Image Options #define LC_IMAGE_PROGRESSIVE 0x1000 #define LC_IMAGE_TRANSPARENT 0x2000 -#define LC_IMAGE_HIGHCOLOR 0x4000 -#define LC_IMAGE_MASK 0x7000 - -// Bounding box owner +#define LC_IMAGE_HIGHCOLOR 0x4000 +#define LC_IMAGE_MASK 0x7000 + +// HTML export options +#define LC_HTML_SINGLEPAGE 0x01 +#define LC_HTML_INDEX 0x02 +#define LC_HTML_IMAGES 0x04 +#define LC_HTML_LISTEND 0x08 +#define LC_HTML_LISTSTEP 0x10 +#define LC_HTML_HIGHLIGHT 0x20 + +// Bounding box owner (FIXME: cleanup) typedef enum { LC_PIECE, LC_CAMERA, LC_CAMERA_TARGET, LC_LIGHT, LC_LIGHT_TARGET } LC_OBJ_TYPES; diff --git a/common/project.cpp b/common/project.cpp index 492258d..f159dac 100644 --- a/common/project.cpp +++ b/common/project.cpp @@ -3401,7 +3401,7 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam) *ptr = 0; } } - unsigned long image = Sys_ProfileLoadInt ("Default", "HTML Options", 1|LC_IMAGE_TRANSPARENT); + unsigned long image = Sys_ProfileLoadInt ("Default", "HTML Options", 1|LC_IMAGE_TRANSPARENT); opts.imdlg.imopts.background[0] = (unsigned char)(m_fBackground[0]*255); opts.imdlg.imopts.background[1] = (unsigned char)(m_fBackground[1]*255); opts.imdlg.imopts.background[2] = (unsigned char)(m_fBackground[2]*255); @@ -3417,6 +3417,14 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam) opts.imdlg.imopts.pause = 1; opts.imdlg.imopts.format = (unsigned char)(image & ~(LC_IMAGE_MASK)); + unsigned long ul = Sys_ProfileLoadInt ("Default", "HTML Options", LC_HTML_SINGLEPAGE); + opts.singlepage = (ul & LC_HTML_SINGLEPAGE) != 0; + opts.index = (ul & LC_HTML_INDEX) != 0; + opts.images = (ul & LC_HTML_IMAGES) != 0; + opts.listend = (ul & LC_HTML_LISTEND) != 0; + opts.liststep = (ul & LC_HTML_LISTSTEP) != 0; + opts.highlight = (ul & LC_HTML_HIGHLIGHT) != 0; + if (SystemDoDialog(LC_DLG_HTML, &opts)) { FILE* f; @@ -3424,6 +3432,15 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam) int i; unsigned short last = GetLastStep(); + ul = 0; + if (opts.singlepage) ul |= LC_HTML_SINGLEPAGE; + if (opts.index) ul |= LC_HTML_INDEX; + if (opts.images) ul |= LC_HTML_IMAGES; + if (opts.listend) ul |= LC_HTML_LISTEND; + if (opts.liststep) ul |= LC_HTML_LISTSTEP; + if (opts.highlight) ul |= LC_HTML_HIGHLIGHT; + Sys_ProfileSaveInt ("Default", "HTML Options", ul); + switch (opts.imdlg.imopts.format) { case LC_IMAGE_BMP: ext = ".bmp"; break; @@ -3431,6 +3448,10 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam) case LC_IMAGE_JPG: ext = ".jpg"; break; case LC_IMAGE_PNG: ext = ".png"; break; } + + i = strlen (opts.path); + if (i && opts.path[i] != '/' && opts.path[i] != '\\') + strcat (opts.path, "/"); /* // Create destination folder char *MyPath = strdup(dlg.m_strFolder); @@ -3552,7 +3573,7 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam) // Save step pictures LC_IMAGE** images; images = (LC_IMAGE**)malloc(sizeof(LC_IMAGE*)*last); - CreateImages(images, opts.imdlg.width, opts.imdlg.height, 1, last, opts.hilite); + CreateImages(images, opts.imdlg.width, opts.imdlg.height, 1, last, opts.highlight); for (i = 0; i < last; i++) { @@ -5452,7 +5473,7 @@ void Project::HandleCommand(LC_COMMANDS id, unsigned long nParam) if (m_bAnimation) m_nCurFrame = m_nTotalFrames; else - m_nCurStep = 255; + m_nCurStep = GetLastStep (); CalculateStep(); UpdateSelection(); diff --git a/common/typedefs.h b/common/typedefs.h index 2cc007c..502ba49 100644 --- a/common/typedefs.h +++ b/common/typedefs.h @@ -246,7 +246,7 @@ typedef struct bool images; bool listend; bool liststep; - bool hilite; + bool highlight; LC_IMAGEDLG_OPTS imdlg; } LC_HTMLDLG_OPTS; diff --git a/docs/CHANGES.txt b/docs/CHANGES.txt index 4b5eb86..310767b 100644 --- a/docs/CHANGES.txt +++ b/docs/CHANGES.txt @@ -1,5 +1,9 @@ This is a changelog for developers only, not for ordinary users. +28/12/2000 + - Click on "Last Step" goes to the last used step instead of step 255. + - Save HTML dialog options. + 24/12/2000 - Fixed piece combo under linux. diff --git a/linux/dialogs.cpp b/linux/dialogs.cpp index 4db7bfe..264aea5 100644 --- a/linux/dialogs.cpp +++ b/linux/dialogs.cpp @@ -859,13 +859,13 @@ static void htmldlg_ok(GtkWidget *widget, gpointer data) opts->images = (GTK_TOGGLE_BUTTON (s->images)->active) ? true : false; opts->listend = (GTK_TOGGLE_BUTTON (s->list_end)->active) ? true : false; opts->liststep = (GTK_TOGGLE_BUTTON (s->list_step)->active) ? true : false; - opts->hilite = (GTK_TOGGLE_BUTTON (s->highlight)->active) ? true : false; + opts->highlight = (GTK_TOGGLE_BUTTON (s->highlight)->active) ? true : false; strcpy(opts->path, gtk_entry_get_text (GTK_ENTRY (s->directory))); *cur_ret = LC_OK; } -static void htmldlg_images(GtkWidget *widget, gpointer data) +static void htmldlg_images (GtkWidget *widget, gpointer data) { LC_HTMLDLG_STRUCT* s = (LC_HTMLDLG_STRUCT*)data; LC_HTMLDLG_OPTS* opts = (LC_HTMLDLG_OPTS*)s->data; @@ -873,7 +873,28 @@ static void htmldlg_images(GtkWidget *widget, gpointer data) imageoptsdlg_execute(&opts->imdlg ,true); } -int htmldlg_execute(void* param) +static void htmldlg_layout (GtkWidget *widget, gpointer data) +{ + LC_HTMLDLG_STRUCT* s = (LC_HTMLDLG_STRUCT*)data; + + if (GTK_TOGGLE_BUTTON (s->single)->active) + gtk_widget_set_sensitive (s->index, FALSE); + else + gtk_widget_set_sensitive (s->index, TRUE); +} + +static void htmldlg_list (GtkWidget *widget, gpointer data) +{ + LC_HTMLDLG_STRUCT* s = (LC_HTMLDLG_STRUCT*)data; + + if (GTK_TOGGLE_BUTTON (s->list_end)->active || + GTK_TOGGLE_BUTTON (s->list_step)->active) + gtk_widget_set_sensitive (s->images, TRUE); + else + gtk_widget_set_sensitive (s->images, FALSE); +} + +int htmldlg_execute (void* param) { GtkWidget *dlg; GtkWidget *vbox1, *vbox2; @@ -881,6 +902,7 @@ int htmldlg_execute(void* param) GtkWidget *frame, *label, *button; GSList *radio_group = (GSList*)NULL; LC_HTMLDLG_STRUCT s; + LC_HTMLDLG_OPTS* opts = (LC_HTMLDLG_OPTS*)param; s.data = param; dlg = gtk_window_new (GTK_WINDOW_TOPLEVEL); @@ -1005,6 +1027,24 @@ int htmldlg_execute(void* param) gtk_box_pack_end (GTK_BOX (hbox), s.directory, FALSE, TRUE, 0); gtk_widget_set_usize (s.directory, 210, -2); + gtk_signal_connect (GTK_OBJECT (s.single), "toggled", GTK_SIGNAL_FUNC (htmldlg_layout), &s); + gtk_signal_connect (GTK_OBJECT (s.multiple), "toggled", GTK_SIGNAL_FUNC (htmldlg_layout), &s); + gtk_signal_connect (GTK_OBJECT (s.list_step), "toggled", GTK_SIGNAL_FUNC (htmldlg_list), &s); + gtk_signal_connect (GTK_OBJECT (s.list_end), "toggled", GTK_SIGNAL_FUNC (htmldlg_list), &s); + + if (opts->singlepage) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (s.single), TRUE); + else + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (s.multiple), TRUE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (s.index), opts->index); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (s.images), opts->images); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (s.list_end), opts->listend); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (s.list_step), opts->liststep); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (s.highlight), opts->highlight); + + gtk_toggle_button_toggled (GTK_TOGGLE_BUTTON (s.single)); + gtk_toggle_button_toggled (GTK_TOGGLE_BUTTON (s.list_step)); + return dlg_domodal(dlg, LC_CANCEL); } -- cgit v1.2.3