G_MODULE_EXPORT void on_popup_bookmark_activate(GtkMenuItem *menuitem, gpointer user_data) { gchar *key; if (is_dialog) return; if ((key = _get_key(menu_mod_name))) { gchar *label = g_strdup_printf("%s, %s", key, menu_mod_name); gui_bookmark_dialog(label, menu_mod_name, key); g_free(label); g_free(key); } }
static gboolean on_vbox1_key_press_event(GtkWidget *widget, GdkEventKey *event, gpointer user_data) { /* these are the mods we actually use for global keys, we always only check for these set */ guint state = event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK | GDK_MOD4_MASK); switch (event->keyval) { case XK_Shift_L: /* shift keys - we need this for locking strongs (and */ case XK_Shift_R: /* other stuff) while moving mouse to previewer */ shift_key_pressed = TRUE; /* no break? hm... */ case XK_a: case XK_A: if (state == GDK_MOD1_MASK) { // Alt-A annotation gui_mark_verse_dialog(sM, sV); } else if (state == (GDK_CONTROL_MASK | GDK_MOD1_MASK | GDK_SHIFT_MASK)) on_biblesync_kbd(3); // BSP audience break; case XK_b: case XK_B: if (state == GDK_MOD1_MASK) { // Alt-B bookmark gchar *label = g_strdup_printf("%s, %s", sV, sM); gui_bookmark_dialog(label, sM, sV); g_free(label); } break; case XK_c: case XK_C: if (state == GDK_MOD1_MASK) { // Alt-C commentary pane gtk_widget_grab_focus(navbar_versekey.lookup_entry); gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets.notebook_comm_book), 0); } break; case XK_d: case XK_D: if (state == GDK_MOD1_MASK) // Alt-D dictionary entry gtk_widget_grab_focus(widgets.entry_dict); break; case XK_f: case XK_F: if (state == GDK_CONTROL_MASK) { // Ctrl-F find text if (settings.showtexts) { gui_find_dlg(widgets.html_text, sM, FALSE, NULL); } else if (settings.showcomms) { if (settings.comm_showing) { gui_find_dlg(widgets.html_comm, sC, FALSE, NULL); } else { gui_find_dlg(widgets.html_book, sB, FALSE, NULL); } } else if (settings.showdicts) { gui_find_dlg(widgets.html_dict, sD, FALSE, NULL); } else gui_generic_warning(_("Xiphos: No windows.")); } break; case XK_g: case XK_G: if (state == GDK_MOD1_MASK) { // Alt-G genbook entry gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets.notebook_comm_book), 1); gtk_widget_grab_focus(navbar_book.lookup_entry); } break; case XK_j: if (state == 0) // J "next verse" access_on_down_eventbox_button_release_event(VERSE_BUTTON); break; case XK_k: if (state == 0) // K "previous verse" access_on_up_eventbox_button_release_event(VERSE_BUTTON); break; case XK_l: case XK_L: if (state == GDK_CONTROL_MASK) // Ctrl-L verse entry gtk_widget_grab_focus(navbar_versekey.lookup_entry); break; case XK_m: case XK_M: if (state == GDK_MOD1_MASK) // Alt-M morph { kbd_toggle_option((main_check_for_global_option(sM, "GBFMorph") || main_check_for_global_option(sM, "ThMLMorph") || main_check_for_global_option(sM, "OSISMorph")), "Morphological Tags"); } break; case XK_n: case XK_N: if (state == GDK_CONTROL_MASK) // Ctrl-N verse access_on_down_eventbox_button_release_event(VERSE_BUTTON); else if (state == 0) // n chapter access_on_down_eventbox_button_release_event(CHAPTER_BUTTON); else if (state == GDK_SHIFT_MASK) // N book access_on_down_eventbox_button_release_event(BOOK_BUTTON); else if (state == (GDK_CONTROL_MASK | GDK_MOD1_MASK | GDK_SHIFT_MASK)) { // BSP transient navigate if (biblesync_active_xmit_allowed()) { biblesync_prep_and_xmit(sM, sV); gui_set_statusbar(_("BibleSync: Current navigation sent.")); } else { gui_generic_warning(_("BibleSync: Not speaking.")); } } break; case XK_o: case XK_O: if (state == (GDK_CONTROL_MASK | GDK_MOD1_MASK | GDK_SHIFT_MASK)) on_biblesync_kbd(0); // BSP off break; case XK_p: case XK_P: if (state == GDK_CONTROL_MASK) // Ctrl-P verse access_on_up_eventbox_button_release_event(VERSE_BUTTON); else if (state == 0) // p chapter access_on_up_eventbox_button_release_event(CHAPTER_BUTTON); else if (state == GDK_SHIFT_MASK) // P book access_on_up_eventbox_button_release_event(BOOK_BUTTON); else if (state == GDK_MOD1_MASK) // Alt-P parallel detach on_undockInt_activate(NULL); else if (state == (GDK_CONTROL_MASK | GDK_MOD1_MASK | GDK_SHIFT_MASK)) on_biblesync_kbd(1); // BSP personal break; case XK_q: case XK_Q: if (state == GDK_CONTROL_MASK) // Ctrl-Q quit delete_event(NULL, NULL, NULL); break; case XK_r: case XK_R: if (state == GDK_MOD1_MASK) // Alt-R red words { kbd_toggle_option(((main_check_for_global_option(sM, "GBFRedLetterWords")) || (main_check_for_global_option(sM, "OSISRedLetterWords"))), "Words of Christ in Red"); } break; case XK_s: case XK_S: if (state == GDK_MOD1_MASK) // Alt-S strong's { kbd_toggle_option(((main_check_for_global_option(sM, "GBFStrongs")) || (main_check_for_global_option(sM, "ThMLStrongs")) || (main_check_for_global_option(sM, "OSISStrongs"))), "Strong's Numbers"); } else if (state == (GDK_CONTROL_MASK | GDK_MOD1_MASK | GDK_SHIFT_MASK)) on_biblesync_kbd(2); // BSP speaker break; case XK_t: case XK_T: if (state == GDK_CONTROL_MASK) // open a new tab on_notebook_main_new_tab_clicked(NULL, NULL); break; case XK_z: case XK_Z: if (state == GDK_MOD1_MASK) // Alt-Z open personal commentary access_to_edit_percomm(); break; case XK_plus: // Ctrl-Plus Increase base font size if (state == (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) new_base_font_size(TRUE); break; case XK_minus: // Ctrl-Minus Decrease base font size if (state == GDK_CONTROL_MASK) new_base_font_size(FALSE); break; case XK_0: // Ctrl-0 (zero) Neutralize base font size. if (state == GDK_CONTROL_MASK) { settings.base_font_size = 1; new_base_font_size(FALSE); } break; // ctrl-DIGIT [1-9] selects DIGIT-th tab. case XK_1: case XK_2: case XK_3: case XK_4: case XK_5: case XK_6: case XK_7: case XK_8: case XK_9: if (state == GDK_CONTROL_MASK) gui_select_nth_tab((event->keyval - XK_0) - 1); /* 0-based list */ case XK_F1: // F1 help if (state == 0) on_help_contents_activate(NULL, NULL); break; case XK_F2: // F2 preferences if (state == 0) on_preferences_activate(NULL, NULL); break; case XK_F3: // F3 search if (state == 0) main_open_search_dialog(); else if (state == GDK_CONTROL_MASK) gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets.notebook_sidebar), 2); break; case XK_F4: // F4 module manager if (state == 0) on_module_manager_activate(NULL, NULL); else if (state == GDK_CONTROL_MASK) gui_close_passage_tab(gtk_notebook_page_num(GTK_NOTEBOOK(widgets.notebook_main), ((PASSAGE_TAB_INFO *) cur_passage_tab)->page_widget)); break; case XK_F10: // Shift-F10 bible module right click if (state == GDK_SHIFT_MASK) gui_menu_popup(NULL, sM, NULL); /* FIXME: needs the html widget as first pram */ break; } XI_message(("on_vbox1_key_press_event\nkeycode: %d, keysym: %0x, state: %d", event->hardware_keycode, event->keyval, state)); return FALSE; }
void gui_verselist_to_bookmarks(GList *verses, gint save_as_single) { gint test; gchar *module_name = NULL; GtkTreeIter parent; GtkTreeIter iter; GS_DIALOG *info; RESULTS *list_item; /*gchar *dlg = g_strdup_printf("<span weight=\"bold\">%s</span>\n%s", _("Save these results as a single bookmark?"), _("(rather than as a series of bookmarks)")); */ if (save_as_single) { GString *name = g_string_new(NULL); GString *verse_string = g_string_new(""); gboolean first_entry = TRUE; g_string_printf(name, _("Search result: %s"), settings.searchText); while (verses) { list_item = (RESULTS *)verses->data; if (main_is_Bible_key(list_item->module, list_item->key)) { if (first_entry) { module_name = g_strdup(list_item->module); first_entry = FALSE; } else { verse_string = g_string_append(verse_string, "; "); } verse_string = g_string_append(verse_string, list_item->key); } verses = g_list_next(verses); } gui_bookmark_dialog(name->str, module_name, verse_string->str); g_string_free(name, TRUE); g_string_free(verse_string, TRUE); g_free(module_name); return; } gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter); info = gui_new_dialog(); #ifdef HAVE_GTK_310 info->stock_icon = "document-open"; #else info->stock_icon = GTK_STOCK_OPEN; #endif info->title = _("Bookmark"); info->label_top = _("Enter Folder Name"); info->text1 = g_strdup(settings.searchText); info->label1 = _("Folder: "); info->ok = TRUE; info->cancel = TRUE; /*** open dialog to get name for root node ***/ test = gui_gs_dialog(info); if (test == GS_OK) { gtk_tree_store_append(GTK_TREE_STORE(model), &parent, &iter); gtk_tree_store_set(GTK_TREE_STORE(model), &parent, COL_OPEN_PIXBUF, bm_pixbufs->pixbuf_opened, COL_CLOSED_PIXBUF, bm_pixbufs->pixbuf_closed, COL_CAPTION, info->text1, COL_KEY, NULL, COL_MODULE, NULL, -1); // set_results_position((char) 1); // TOP GString *str = g_string_new(" "); while (verses) { list_item = (RESULTS *)verses->data; module_name = list_item->module; gchar *tmpbuf = list_item->key; g_string_printf(str, "%s, %s", tmpbuf, module_name); XI_message(("bookmark: %s", str->str)); gtk_tree_store_append(GTK_TREE_STORE(model), &iter, &parent); gtk_tree_store_set(GTK_TREE_STORE(model), &iter, COL_OPEN_PIXBUF, bm_pixbufs->pixbuf_helpdoc, COL_CLOSED_PIXBUF, NULL, COL_CAPTION, str->str, COL_KEY, tmpbuf, COL_MODULE, module_name, -1); verses = g_list_next(verses); } g_string_free(str, TRUE); bookmarks_changed = TRUE; gui_save_bookmarks_treeview(); } g_free(info->text1); g_free(info); }