#include "stdafx.h" #include "common.h" #include "sabbu.h" #include "resource.h" extern struct sabbu app; GdkPixbuf *gui_main_load_image(int id) { GdkPixbuf *pixbuf = NULL; char *filename = NULL; if(id == IDR_SCALE_UP) filename = "scale-up.png"; else if(id == IDR_SCALE_DOWN) filename = "scale-down.png"; else if(id == IDR_LOGO) filename = "sabbu.jpg"; else if(id == IDR_ARROW_DOWN) filename = "arrow-down.png"; else if(id == IDR_ARROW_RIGHT) filename = "arrow-right.png"; else if(id == IDR_SARROW_UP_LEFT) filename = "sarrow-up-left.png"; else if(id == IDR_SARROW_UP) filename = "sarrow-up.png"; else if(id == IDR_SARROW_UP_RIGHT) filename = "sarrow-up-right.png"; else if(id == IDR_SARROW_LEFT) filename = "sarrow-left.png"; else if(id == IDR_SARROW_RIGHT) filename = "sarrow-right.png"; else if(id == IDR_SARROW_DOWN_LEFT) filename = "sarrow-down-left.png"; else if(id == IDR_SARROW_DOWN) filename = "sarrow-down.png"; else if(id == IDR_SARROW_DOWN_RIGHT) filename = "sarrow-down-right.png"; else if(id == IDR_GEAR) filename = "gear.png"; else if(id == IDR_SYNTAX) filename = "syntax.png"; else if(id == IDR_SYNTAX_OFF) filename = "syntax_off.png"; else if(id == IDR_KARAOKE_BOX) filename = "karaoke_box.png"; else if(id == IDR_KARAOKE_LINE) filename = "karaoke_line.png"; else if(id == IDR_SEARCH_INDICATOR) filename = "search-indicator.png"; else if(id == IDR_ANGLE) filename = "angle.png"; else if(id == IDR_MARGIN_LEFT) filename = "margin-left.png"; else if(id == IDR_MARGIN_RIGHT) filename = "margin-right.png"; else if(id == IDR_MARGIN_VERTICAL) filename = "margin-vertical.png"; else if(id == IDR_SARROW_CENTER) filename = "sarrow-center.png"; else if(id == IDR_SCALEX) filename = "scale-x.png"; else if(id == IDR_SCALEY) filename = "scale-y.png"; else if(id == IDR_SPACING) filename = "spacing.png"; else if(id == IDR_TIME_LEFT) filename = "time-left.png"; else if(id == IDR_TIME_LEFT2) filename = "time-left-2.png"; else if(id == IDR_TIME_RIGHT) filename = "time-right.png"; else if(id == IDR_TIME_RIGHT2) filename = "time-right-2.png"; else if(id == IDR_SYNC_SCROLL) filename = "sync-scroll.png"; else if(id == IDR_SYNC_ZOOM) filename = "sync-zoom.png"; else if(id == IDR_SYNC_SCALE) filename = "sync-scale.png"; else if(id == IDR_PLAY) filename = "play.png"; else if(id == IDR_PLAY_LAST) filename = "play-last.png"; else if(id == IDR_PLAY_SELECTION) filename = "play-selection.png"; else if(id == IDR_PLAY_STOP) filename = "play-stop.png"; else if(id == IDR_GRAB_TIMES) filename = "grab-times.png"; else if(id == IDR_FOCUS_SELECTED) filename = "focus-selected.png"; else if(id == IDR_SHOW_TIME) filename = "show-time.png"; else if(id == IDR_SHOW_KEYFRAMES) filename = "show-keyframes.png"; else if(id == IDR_LEADIN) filename = "lead-in.png"; else if(id == IDR_LEADOUT) filename = "lead-out.png"; else if(id == IDR_LEADBOTH) filename = "lead-both.png"; if(!filename) { g_warning("image not loaded: %d", id); return NULL; } char *local_path = kry_strdup_printf(KRY_LOC "../Images/%s", filename); pixbuf = gdk_pixbuf_new_from_file(local_path, NULL); kry_free(local_path); if(pixbuf) return pixbuf; local_path = kry_strdup_printf(KRY_LOC "./Images/%s", filename); pixbuf = gdk_pixbuf_new_from_file(local_path, NULL); kry_free(local_path); if(pixbuf) return pixbuf; char *install_path = kry_strdup_printf(KRY_LOC "%s/%s", PACKAGE_DATA_DIR, filename); pixbuf = gdk_pixbuf_new_from_file(install_path, NULL); kry_free(install_path); return pixbuf; } void gui_unix_set_filters(GtkFileChooser *chooser, char **filters) { GtkFileFilter *filter = NULL; int idx = 0; while(TRUE) { if(filters[idx] == NULL) break; filter = gtk_file_filter_new(); gtk_file_filter_set_name(filter, __(filters[idx])); char *pattern = kry_strdup(filters[idx+1]); int prevpos = 0; for(unsigned int i = 0; i <= strlen(filters[idx+1]); i++) { if(pattern[i] == ';' || i == strlen(pattern)) { pattern[i] = 0; gtk_file_filter_add_pattern(filter, pattern + prevpos); prevpos = i + 1; } } kry_free(pattern); gtk_file_chooser_add_filter(chooser, filter); idx += 2; } } char *gui_main_save_file(char *title, char **filters, char *default_extension, char *filename) { char *file; GtkFileChooserDialog *dialog = GTK_FILE_CHOOSER_DIALOG(gtk_file_chooser_dialog_new(title, app.ui.window, GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_OK, NULL)); gui_unix_set_filters(GTK_FILE_CHOOSER(dialog), filters); if(filename) gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), filename); gtk_widget_set_sensitive(GTK_WIDGET(app.ui.window), FALSE); if(gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_OK) { gtk_widget_set_sensitive(GTK_WIDGET(app.ui.window), TRUE); gtk_widget_destroy(GTK_WIDGET(dialog)); return NULL; } file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); gtk_widget_set_sensitive(GTK_WIDGET(app.ui.window), TRUE); gtk_widget_destroy(GTK_WIDGET(dialog)); return file; } char *gui_main_open_file(char *title, char **filters) { char *file; GtkFileChooserDialog *dialog = GTK_FILE_CHOOSER_DIALOG(gtk_file_chooser_dialog_new(title, app.ui.window, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL)); gui_unix_set_filters(GTK_FILE_CHOOSER(dialog), filters); gtk_widget_set_sensitive(GTK_WIDGET(app.ui.window), FALSE); if(gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_OK) { gtk_widget_set_sensitive(GTK_WIDGET(app.ui.window), TRUE); gtk_widget_destroy(GTK_WIDGET(dialog)); return NULL; } gtk_widget_set_sensitive(GTK_WIDGET(app.ui.window), TRUE); file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); gtk_widget_destroy(GTK_WIDGET(dialog)); return file; } void gui_main_register_extensions() { }