static void gw_application_activate (GApplication *application) { GwApplicationPrivate *priv; GwSearchWindow *searchwindow; GwVocabularyWindow *vocabularywindow; GwSettingsWindow *settingswindow; GwDictionaryList *dictionarylist; priv = GW_APPLICATION (application)->priv; dictionarylist = gw_application_get_installed_dictionarylist (GW_APPLICATION (application)); if (priv->arg_new_vocabulary_window_switch) { vocabularywindow = GW_VOCABULARYWINDOW (gw_vocabularywindow_new (GTK_APPLICATION (application))); gtk_widget_show (GTK_WIDGET (vocabularywindow)); return; } else { searchwindow = GW_SEARCHWINDOW (gw_searchwindow_new (GTK_APPLICATION (application))); gtk_widget_show (GTK_WIDGET (searchwindow)); if (lw_dictionarylist_get_total (LW_DICTIONARYLIST (dictionarylist)) == 0) { settingswindow = GW_SETTINGSWINDOW (gw_settingswindow_new (GTK_APPLICATION (application))); gtk_window_set_transient_for (GTK_WINDOW (settingswindow), GTK_WINDOW (searchwindow)); gtk_widget_show (GTK_WIDGET (settingswindow)); } return; } }
void gw_application_open_settingswindow_cb (GSimpleAction *action, GVariant *parameter, gpointer data) { //Declarations GwApplication *application; GwSearchWindow *searchwindow; GtkWindow *settingswindow; GList *link; //Initializations searchwindow = GW_SEARCHWINDOW (gw_application_get_last_focused_searchwindow (GW_APPLICATION (data))); application = gw_window_get_application (GW_WINDOW (searchwindow)); link = gtk_application_get_windows (GTK_APPLICATION (application)); while (link != NULL && !GW_IS_SETTINGSWINDOW (link->data)) link = link->next; if (link != NULL) { settingswindow = GTK_WINDOW (link->data); gtk_window_set_transient_for (GTK_WINDOW (settingswindow), GTK_WINDOW (searchwindow)); gtk_window_present (GTK_WINDOW (settingswindow)); } else { settingswindow = gw_settingswindow_new (GTK_APPLICATION (application)); gtk_window_set_transient_for (GTK_WINDOW (settingswindow), GTK_WINDOW (searchwindow)); gtk_widget_show (GTK_WIDGET (settingswindow)); } }
//! //! @brief Searches for the word in a webbrower in an external dictionary //! @param widget Unused GtkWidget pointer //! @param data Unused gpointer //! static void _resultpopup_search_online_cb (GtkMenuItem *widget, gpointer data) { //Sanity check g_assert (data != NULL); //Declarations GwApplication *application; LwSearchItem *item; GError *error; GwSearchWindow *window; GtkTextView *view; GwSearchData *sdata; //Initializations item = LW_SEARCHITEM (data); if (item != NULL) { sdata = GW_SEARCHDATA (lw_searchitem_get_data (item)); window = GW_SEARCHWINDOW (sdata->window); application = GW_APPLICATION (gw_window_get_application (GW_WINDOW (window))); view = gw_searchwindow_get_current_textview (window); sdata = gw_searchdata_new (view, window); lw_searchitem_set_data (item, sdata, LW_SEARCHITEM_DATA_FREE_FUNC (gw_searchdata_free)); error = NULL; printf("%s\n", item->queryline->string); gtk_show_uri (NULL, item->queryline->string, gtk_get_current_event_time (), &error); gw_application_handle_error (application, GTK_WINDOW (window), TRUE, &error); } }
//! //! @brief Sets up a print preview for the results //! G_MODULE_EXPORT void gw_print_preview_cb (GtkWidget *widget, gpointer data) { GwSearchWindow *window; GwApplication *application; window = GW_SEARCHWINDOW (gtk_widget_get_ancestor (GTK_WIDGET (data), GW_TYPE_SEARCHWINDOW)); if (window == NULL) return; application = gw_window_get_application (GW_WINDOW (window)); gw_application_block_searches (application); gw_print (GTK_PRINT_OPERATION_ACTION_PREVIEW, window); gw_application_unblock_searches (application); }
GwSearchWindow* gw_application_get_last_focused_searchwindow (GwApplication *application) { GwApplicationPrivate *priv; GwSearchWindow *window; priv = application->priv; window = GW_SEARCHWINDOW (gw_application_get_window_by_type (application, GW_TYPE_SEARCHWINDOW)); if (window != NULL && priv->last_focused != NULL) window = priv->last_focused; return window; }
//! //! @brief Sets up a print operation for the current results //! //! The function checks the results of the results text buffer, and then attempts //! to set up a print operation. If a section of the search results are highlighted //! only those results are printed. //! G_MODULE_EXPORT void gw_print_cb (GSimpleAction *action, GVariant *parameter, gpointer data) { GwSearchWindow *window; GwApplication *application; window = GW_SEARCHWINDOW (gtk_widget_get_ancestor (GTK_WIDGET (data), GW_TYPE_SEARCHWINDOW)); if (window == NULL) return; application = gw_window_get_application (GW_WINDOW (window)); gw_application_block_searches (application); gw_print (GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, window); gw_application_unblock_searches (application); }
void gw_application_cancel_all_searches (GwApplication *application) { GList *list; GList *iter; GtkWindow *window; list = gtk_application_get_windows (GTK_APPLICATION (application)); for (iter = list; iter != NULL; iter = iter->next) { window = GTK_WINDOW (iter->data); if (window != NULL && G_OBJECT_TYPE (window) == GW_TYPE_SEARCHWINDOW) gw_searchwindow_cancel_all_searches (GW_SEARCHWINDOW (window)); } }
//! //! @brief The function that does the grunt work of setting up a search using the window //! //! The function will get the data from the buttons to set up the query and the dictionary //! with that to set up the searchitem. //! //! @param widget Currently unused GtkWidget pointer //! @param data Currently unused gpointer //! G_MODULE_EXPORT void gw_radicalswindow_search_cb (GtkWidget *widget, gpointer data) { //Declarations GwApplication *application; GwRadicalsWindow *window; GwSearchWindow *searchwindow; LwDictInfoList *dictinfolist; LwDictInfo *di; char *text_query; char *text_radicals; char *text_strokes; //Initializations window = GW_RADICALSWINDOW (gtk_widget_get_ancestor (GTK_WIDGET (data), GW_TYPE_RADICALSWINDOW)); if (window == NULL) return; searchwindow = GW_SEARCHWINDOW (gtk_window_get_transient_for (GTK_WINDOW (window))); g_assert (searchwindow != NULL); application = gw_window_get_application (GW_WINDOW (window)); dictinfolist = LW_DICTINFOLIST (gw_application_get_dictinfolist (application)); di = lw_dictinfolist_get_dictinfo (dictinfolist, LW_DICTTYPE_KANJI, "Kanji"); if (di == NULL) return; text_radicals = gw_radicalswindow_strdup_all_selected (window); text_strokes = gw_radicalswindow_strdup_prefered_stroke_count (window); text_query = g_strdup_printf ("%s%s", text_radicals, text_strokes); //Sanity checks if (text_query != NULL && strlen(text_query) > 0) { gw_searchwindow_entry_set_text (searchwindow, text_query); gw_searchwindow_set_dictionary (searchwindow, di->load_position); gw_searchwindow_search_cb (GTK_WIDGET (searchwindow), searchwindow); } //Cleanup if (text_query != NULL) g_free (text_query); if (text_strokes != NULL) g_free (text_strokes); if (text_radicals != NULL) g_free (text_radicals); }
//! //! @brief Sends the user to the gWaei homepage for whatever they need //! @param widget Unused GtkWidget pointer //! @param data Unused gpointer //! G_MODULE_EXPORT void gw_application_open_homepage_cb (GSimpleAction *action, GVariant *parameter, gpointer data) { //Declarations GError *error; GwSearchWindow *window; GwApplication *application; //Initializations error = NULL; window = GW_SEARCHWINDOW (gtk_widget_get_ancestor (GTK_WIDGET (data), GW_TYPE_SEARCHWINDOW)); g_return_if_fail (window != NULL); application = gw_window_get_application (GW_WINDOW (window)); gtk_show_uri (NULL, "http://gwaei.sourceforge.net/", gtk_get_current_event_time (), &error); //Cleanup gw_application_handle_error (application, GTK_WINDOW (window), TRUE, &error); }
//! //! @brief Sets up an initites a new search in a new tab //! //! @param widget Currently unused widget pointer //! @param data A gpointer to a LwSearchItem that hold the search information //! static void _searchwindow_new_tab_with_search_cb (GtkMenuItem *widget, gpointer data) { //Sanity check g_assert (data != NULL); //Declarations GwApplication *application; GwSearchWindow *window; GwSearchWindowPrivate *priv; LwPreferences *preferences; LwSearchItem *item; LwSearchItem *item_new; GtkTextView *view; GwSearchData *sdata; int index; //Initializations item = LW_SEARCHITEM (data); sdata = GW_SEARCHDATA (lw_searchitem_get_data (item)); window = GW_SEARCHWINDOW (sdata->window); application = gw_window_get_application (GW_WINDOW (window)); priv = window->priv; preferences = gw_application_get_preferences (application); item_new = lw_searchitem_new (item->queryline->string, item->dictionary, preferences, NULL); if (!gw_application_can_start_search (application)) return; if (item_new != NULL) { view = gw_searchwindow_get_current_textview (window); sdata = gw_searchdata_new (view, window); lw_searchitem_set_data (item_new, sdata, LW_SEARCHITEM_DATA_FREE_FUNC (gw_searchdata_free)); index = gw_searchwindow_new_tab (window); gtk_notebook_set_current_page (priv->notebook, index); gw_searchwindow_start_search (window, item_new); } }