summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorleo2000-12-29 12:43:33 +0000
committerleo2000-12-29 12:43:33 +0000
commit54170907d62114a2b49cbbe729b1a3eedfea3746 (patch)
tree1a944257ec82538fb4d78a17c7616d43892a78db
parent0ca5979d14d78aec5a80d8d61dda822525774f1d (diff)
Save HTML dialog options
git-svn-id: http://svn.leocad.org/trunk@194 c7d43263-9d01-0410-8a33-9dba5d9f93d6
-rw-r--r--common/defines.h16
-rw-r--r--common/project.cpp27
-rw-r--r--common/typedefs.h2
-rw-r--r--docs/CHANGES.txt4
-rw-r--r--linux/dialogs.cpp46
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);
}