TILP_EXPORT void on_sc_load1_activate(GtkMenuItem * menuitem, gpointer user_data) { const gchar *filename; GdkPixbuf *pixbuf; GError *error = NULL; filename = create_fsel(local.cwdir, NULL, "*.jpg;*.png;*.xpm;*.bmp", FALSE); if (!filename) return; pixbuf = gdk_pixbuf_new_from_file(filename, &error); if (!pixbuf) { tilp_warning("Failed to load pixbuf file: %s: %s\n", filename, error->message); g_error_free(error); } gtk_image_set_from_pixbuf(GTK_IMAGE(scrn_img), pixbuf); g_object_unref(pixbuf); }
/* Search for command line options and build file list (pseudo-selection) */ int tilp_cmdline_scan(int *argc, char ***argv) { GOptionContext* context; GError *error = NULL; gint ret = 0; // parse command line context = g_option_context_new ("- Tilp Is a Linking Program"); g_option_context_add_main_entries(context, entries, ""/*GETTEXT_PACKAGE*/); g_option_context_set_help_enabled(context, TRUE); g_option_context_set_ignore_unknown_options(context, FALSE); g_option_context_parse(context, argc, argv, &error); g_option_context_free(context); // report error if (error) { tilp_warning("Failed to parse cmdline: %s\n", error->message); g_error_free(error); } if(show_version) { exit(0); } // convert name to value if(calc != NULL) { options.calc_model = ticalcs_string_to_model(calc); g_free(calc); } // convert name to value if(cable != NULL) { options.cable_model = ticables_string_to_model(cable); g_free(cable); } // look for short-options if(array != NULL) { gchar **p; gint len; int i; // check for no extensions for(p = array, len = 0; *p != NULL; p++, len++) { if(strrchr(*p, '.') == NULL) { for(i = 0; i < CABLE_MAX; i++) { if(!g_strcasecmp(ticables_model_to_string(i), *p)) options.cable_model = i; } for(i = 0; i < CALC_MAX; i++) { if(!g_strcasecmp(ticalcs_model_to_string(i), *p)) options.calc_model = i; } } } } // remap for USB handhelds options.calc_model = ticalcs_remap_model_to_usb(options.cable_model, options.calc_model); if(!options.cable_port) { switch(options.cable_model) { case CABLE_VTI: case CABLE_TIE: options.cable_port = PORT_0; break; default: options.cable_port = PORT_1; break; } } // are files passed ? if(array != NULL) { gchar **p, **q; gint len; working_mode = MODE_CMD; // count files for(p = array, len = 0; *p != NULL; p++, len++); // allocate list of files flist = g_malloc0((len + 1) * sizeof(gchar *)); // rebuild a list of file with full path for(p = array, q = flist; *p != NULL; p++, q++) { // skip short-options if(strrchr(*p, '.') == NULL) { q--; continue; } // check whether path is local or absolute if (!g_path_is_absolute(*p)) *q = g_strconcat(g_get_current_dir(), G_DIR_SEPARATOR_S, *p, NULL); else *q = g_strdup(*p); } // build a pseudo file selection for TiLP for(q = flist; *q != NULL; q++) { if(g_file_test(*q, G_FILE_TEST_EXISTS)) { tilp_local_selection_add(*q); } else { gchar *str; str = g_strdup_printf(_("The file <%s> does not exist."), *q); gif->msg_box1(_("Error"), str); g_free(str); ret = -1; } } g_strfreev(array); g_strfreev(flist); } // don't use GUI ? if(dont_use_gui) working_mode &= ~MODE_GUI; else working_mode |= MODE_GUI; return ret; }
TILP_EXPORT void on_sc_save1_activate(GtkMenuItem * menuitem, gpointer user_data) { GdkPixbuf *pixbuf; gboolean result = FALSE; GError *error = NULL; const gchar *type; const gchar *filename = NULL; if(screen_success == FALSE) return; switch (options.screen_format) { case XPM: type = "xpm"; filename = create_fsel(local.cwdir, "screenshot.xpm", "*.xpm", TRUE); if (!filename) return; pixbuf = gtk_image_get_pixbuf(GTK_IMAGE(scrn_img)); result = gdk_pixbuf_save(pixbuf, filename, type, &error, NULL); break; case BMP: type = "bmp"; filename = create_fsel(local.cwdir, "screenshot.bmp", "*.bmp", TRUE); if (!filename) return; pixbuf = gtk_image_get_pixbuf(GTK_IMAGE(scrn_img)); result = gdk_pixbuf_save(pixbuf, filename, type, &error, NULL); break; case JPG: type = "jpeg"; filename = create_fsel(local.cwdir, "screenshot.jpg", "*.jpg", TRUE); if (!filename) return; pixbuf = gtk_image_get_pixbuf(GTK_IMAGE(scrn_img)); result = gdk_pixbuf_save(pixbuf, filename, type, &error, "quality", "100", NULL); break; case PNG: type = "png"; filename = create_fsel(local.cwdir, "screenshot.png", "*.png", TRUE); if (!filename) return; pixbuf = gtk_image_get_pixbuf(GTK_IMAGE(scrn_img)); result = gdk_pixbuf_save(pixbuf, filename, type, &error, NULL); break; case PDF: type = "pdf"; filename = create_fsel(local.cwdir, "screenshot.pdf", "*.pdf", TRUE); if (!filename) return; result = screen_write_pdf(filename, &error); break; case EPS: type = "eps"; filename = create_fsel(local.cwdir, "screenshot.eps", "*.eps", TRUE); if (!filename) return; result = screen_write_eps(filename, &error); break; default: type = ""; break; } if (result == FALSE) { tilp_warning("Failed to save pixbuf file: %s: %s\n", filename, error->message); g_error_free(error); } filename = NULL; }