diff options
author | Russ Allbery <rra@debian.org> | 2008-04-05 11:49:47 -0700 |
---|---|---|
committer | Russ Allbery <rra@debian.org> | 2008-04-05 11:49:47 -0700 |
commit | fe15fa62fee6fe5e5f09e2ad6156be97e2b4f357 (patch) | |
tree | adea8d5c43b20a8fb47f3f83d2032c2e46cb5b52 /gtkexport.c | |
parent | a7b397b9cba0433df7783403a153767f918af350 (diff) |
Imported Upstream version 0.9.0
Diffstat (limited to 'gtkexport.c')
-rw-r--r-- | gtkexport.c | 137 |
1 files changed, 97 insertions, 40 deletions
diff --git a/gtkexport.c b/gtkexport.c index 4bfd664..10e3651 100644 --- a/gtkexport.c +++ b/gtkexport.c @@ -16,13 +16,14 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * $Id: gtkexport.c,v 1.37 2008/01/20 23:38:08 c_anthon Exp $ + * $Id: gtkexport.c,v 1.42 2008/03/13 21:28:18 c_anthon Exp $ */ #include "config.h" #include <gtk/gtk.h> #include <stdio.h> +#include <glib/gstdio.h> #include <stdlib.h> #include <string.h> @@ -183,9 +184,9 @@ ExportGetValues ( exportwidget *pew, exportsetup *pexs ) { pexs->szHTMLPictureURL = g_strdup ( gtk_entry_get_text( GTK_ENTRY( pew->pwHTMLPictureURL ) ) ); - pexs->het = (htmlexporttype)gtk_option_menu_get_history (GTK_OPTION_MENU (pew->pwHTMLType)); + pexs->het = (htmlexporttype)gtk_combo_box_get_active (GTK_COMBO_BOX (pew->pwHTMLType)); - pexs->hecss = (htmlexportcss)gtk_option_menu_get_history (GTK_OPTION_MENU (pew->pwHTMLCSS)); + pexs->hecss = (htmlexportcss)gtk_combo_box_get_active (GTK_COMBO_BOX (pew->pwHTMLCSS)); /* sizes */ pexs->nPNGSize = (int)pew->adjPNGSize->value; @@ -346,7 +347,7 @@ ExportOK ( GtkWidget *pw, exportwidget *pew ) { /* set new values */ SetExportCommands ( pexs, &exsNew ); - free ( exsNew.szHTMLPictureURL ), + g_free ( exsNew.szHTMLPictureURL ); gtk_widget_destroy( gtk_widget_get_toplevel( pw ) ); @@ -422,10 +423,10 @@ ExportSet ( exportwidget *pew ) { gtk_entry_set_text( GTK_ENTRY( pew->pwHTMLPictureURL ), pexs->szHTMLPictureURL ); - gtk_option_menu_set_history ( GTK_OPTION_MENU (pew->pwHTMLType), + gtk_combo_box_set_active ( GTK_COMBO_BOX (pew->pwHTMLType), pexs->het ); - gtk_option_menu_set_history ( GTK_OPTION_MENU (pew->pwHTMLCSS), + gtk_combo_box_set_active ( GTK_COMBO_BOX (pew->pwHTMLCSS), pexs->hecss ); /* Sizes */ @@ -450,20 +451,89 @@ SizeChanged ( GtkAdjustment *adj, GtkWidget *pwSize ) { } +static void ExportHTMLImages(void) +{ + GtkWidget *fc; + gchar *message, *expfolder, *folder, *command; + gint ok = FALSE; + fc = gtk_file_chooser_dialog_new(_ + ("Select top folder for html export"), + NULL, + GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, + GTK_STOCK_CANCEL, + GTK_RESPONSE_CANCEL, + GTK_STOCK_OPEN, + GTK_RESPONSE_ACCEPT, NULL); + gtk_window_set_modal(GTK_WINDOW(fc), TRUE); + gtk_window_set_transient_for(GTK_WINDOW(fc), GTK_WINDOW(pwMain)); + + while (!ok) { + if (gtk_dialog_run(GTK_DIALOG(fc)) == GTK_RESPONSE_CANCEL) { + gtk_widget_destroy(fc); + return; + } + folder = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(fc)); + if (folder) { + char *name = g_path_get_basename(folder); + if (!StrCaseCmp(name, "html-images")) + expfolder = g_strdup(folder); + else + expfolder = g_build_filename(folder, "html-images", NULL); + g_free(name); + if (g_file_test(expfolder, G_FILE_TEST_IS_DIR)) { + message = + g_strdup_printf(_ + ("Folder html-images exists\nin %s\nOK to overwrite images?"), + folder); + ok = GTKGetInputYN(message); + g_free(message); + } + else if (g_mkdir(expfolder, 0777) == 0) + { + ok = TRUE; + } + else + { + message = + g_strdup_printf(_ + ("Folder html-images can't be created\nin %s"), + folder); + GTKMessage(message, DT_ERROR); + g_free(message); + } + if (ok) { + command = + g_strconcat("export htmlimages \"", + expfolder, "\"", NULL); + UserCommand(command); + g_free(command); + } + g_free(expfolder); + g_free(folder); + } + } + gtk_widget_destroy(fc); +} -extern void -GTKShowExport ( exportsetup *pexs ) { +static void GenHtmlImages(GtkWidget *widget, gpointer data) +{ /* Temporariarly set html size and create images */ + int temp = exsExport.nHtmlSize; + exsExport.nHtmlSize = (int)gtk_adjustment_get_value(GTK_ADJUSTMENT(data)); + ExportHTMLImages(); + exsExport.nHtmlSize = temp; +} +extern void GTKShowExport ( exportsetup *pexs ) +{ GtkWidget *pwDialog; GtkWidget *pwVBox; GtkWidget *pwFrame; GtkWidget *pwTable; GtkWidget *pwTableX; - GtkWidget *pwType_menu; - GtkWidget *glade_menuitem; GtkWidget *pwHBox; GtkWidget *pwHScale; + GtkWidget *genHtml; GtkWidget *pw; @@ -712,20 +782,12 @@ GTKShowExport ( exportsetup *pexs ) { gtk_label_new ( _("HTML board type:") ), TRUE, TRUE, 0 ); - pew->pwHTMLType = gtk_option_menu_new (); + pew->pwHTMLType = gtk_combo_box_new_text (); gtk_box_pack_start (GTK_BOX (pwHBox), pew->pwHTMLType, FALSE, FALSE, 0); - pwType_menu = gtk_menu_new (); - glade_menuitem = gtk_menu_item_new_with_label (_("GNU Backgammon")); - gtk_widget_show (glade_menuitem); - gtk_menu_append (GTK_MENU (pwType_menu), glade_menuitem); - glade_menuitem = gtk_menu_item_new_with_label (_("BBS")); - gtk_widget_show (glade_menuitem); - gtk_menu_append (GTK_MENU (pwType_menu), glade_menuitem); - glade_menuitem = gtk_menu_item_new_with_label (_("fibs2html")); - gtk_widget_show (glade_menuitem); - gtk_menu_append (GTK_MENU (pwType_menu), glade_menuitem); - gtk_option_menu_set_menu (GTK_OPTION_MENU (pew->pwHTMLType), pwType_menu); - gtk_option_menu_set_history (GTK_OPTION_MENU (pew->pwHTMLType), 0); + gtk_combo_box_append_text(GTK_COMBO_BOX(pew->pwHTMLType), _("GNU Backgammon")); + gtk_combo_box_append_text(GTK_COMBO_BOX(pew->pwHTMLType), _("BBS")); + gtk_combo_box_append_text(GTK_COMBO_BOX(pew->pwHTMLType), _("fibs2html")); + gtk_combo_box_set_active(GTK_COMBO_BOX (pew->pwHTMLType), 0); gtk_container_set_border_width (GTK_CONTAINER (pwHBox), 4); gtk_box_pack_start (GTK_BOX (pwVBox), pwHBox, FALSE, FALSE, 0); @@ -737,20 +799,12 @@ GTKShowExport ( exportsetup *pexs ) { gtk_label_new ( _("CSS Style sheet:") ), TRUE, TRUE, 0 ); - pew->pwHTMLCSS = gtk_option_menu_new (); + pew->pwHTMLCSS = gtk_combo_box_new_text(); gtk_box_pack_start (GTK_BOX (pwHBox), pew->pwHTMLCSS, FALSE, FALSE, 0); - pwType_menu = gtk_menu_new (); - glade_menuitem = gtk_menu_item_new_with_label (_("In <head>")); - gtk_widget_show (glade_menuitem); - gtk_menu_append (GTK_MENU (pwType_menu), glade_menuitem); - glade_menuitem = gtk_menu_item_new_with_label (_("Inline (in tags)")); - gtk_widget_show (glade_menuitem); - gtk_menu_append (GTK_MENU (pwType_menu), glade_menuitem); - glade_menuitem = gtk_menu_item_new_with_label (_("External file")); - gtk_widget_show (glade_menuitem); - gtk_menu_append (GTK_MENU (pwType_menu), glade_menuitem); - gtk_option_menu_set_menu (GTK_OPTION_MENU (pew->pwHTMLCSS), pwType_menu); - gtk_option_menu_set_history (GTK_OPTION_MENU (pew->pwHTMLCSS), 0); + gtk_combo_box_append_text(GTK_COMBO_BOX(pew->pwHTMLCSS), _("In <head>")); + gtk_combo_box_append_text(GTK_COMBO_BOX(pew->pwHTMLCSS), _("Inline (in tags)")); + gtk_combo_box_append_text(GTK_COMBO_BOX(pew->pwHTMLCSS), _("External file")); + gtk_combo_box_set_active(GTK_COMBO_BOX (pew->pwHTMLCSS), 0); gtk_container_set_border_width (GTK_CONTAINER (pwHBox), 4); gtk_box_pack_start (GTK_BOX (pwVBox), pwHBox, FALSE, FALSE, 0); @@ -810,15 +864,18 @@ GTKShowExport ( exportsetup *pexs ) { gtk_scale_set_digits( GTK_SCALE( pwHScale ), 0 ); gtk_box_pack_start (GTK_BOX (pwVBox), pwHScale, FALSE, FALSE, 0); + genHtml = gtk_button_new_with_label(_("Generate Html images...")); + pwHBox = gtk_hbox_new ( FALSE, 0 ); + gtk_box_pack_start ( GTK_BOX ( pwHBox ), genHtml, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (pwVBox), pwHBox, FALSE, FALSE, 0); + + g_signal_connect( G_OBJECT( genHtml ), "clicked", G_CALLBACK( GenHtmlImages ), pew->adjHtmlSize ); g_signal_connect( G_OBJECT ( pew->adjHtmlSize ), "value-changed", G_CALLBACK ( SizeChanged ), pew->pwHtmlSize ); /* show dialog */ - gtk_widget_show_all( pwDialog ); ExportSet ( pew ); - GTKDisallowStdin(); - gtk_main(); - GTKAllowStdin(); + GTKRunDialog(pwDialog); } |