summaryrefslogtreecommitdiff
path: root/gtkexport.c
diff options
context:
space:
mode:
authorRuss Allbery <rra@debian.org>2008-04-05 11:49:47 -0700
committerRuss Allbery <rra@debian.org>2008-04-05 11:49:47 -0700
commitfe15fa62fee6fe5e5f09e2ad6156be97e2b4f357 (patch)
treeadea8d5c43b20a8fb47f3f83d2032c2e46cb5b52 /gtkexport.c
parenta7b397b9cba0433df7783403a153767f918af350 (diff)
Imported Upstream version 0.9.0
Diffstat (limited to 'gtkexport.c')
-rw-r--r--gtkexport.c137
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);
}