SearchDialog * search_dialog_open (const gchar *query) { SearchDialog *sd; if (search) return search; sd = SEARCH_DIALOG (g_object_new (SEARCH_DIALOG_TYPE, NULL)); sd->priv->dialog = liferea_dialog_new (NULL, "searchdialog"); if (query) itemset_add_rule (sd->priv->vfolder->itemset, "exact", query, TRUE); sd->priv->re = rule_editor_new (sd->priv->vfolder); /* Note: the following code is somewhat duplicated from search_folder_dialog.c */ /* Setting default rule match type */ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (liferea_dialog_lookup (sd->priv->dialog, "anyRuleRadioBtn2")), TRUE); /* Set up rule list vbox */ gtk_container_add (GTK_CONTAINER (liferea_dialog_lookup (sd->priv->dialog, "ruleview_search_dialog")), rule_editor_get_widget (sd->priv->re)); /* bind buttons */ g_signal_connect (liferea_dialog_lookup (sd->priv->dialog, "addrulebtn2"), "clicked", G_CALLBACK (on_addrulebtn_clicked), sd); g_signal_connect (G_OBJECT (sd->priv->dialog), "response", G_CALLBACK (on_search_dialog_response), sd); gtk_widget_show_all (sd->priv->dialog); search = sd; return sd; }
/* callback copied from search_folder_dialog.c */ static void on_addrulebtn_clicked (GtkButton *button, gpointer user_data) { SearchDialog *sd = SEARCH_DIALOG (user_data); rule_editor_add_rule (sd->priv->re, NULL); }
static void search_dialog_finalize (GObject *object) { SearchDialog *sd = SEARCH_DIALOG (object); gtk_widget_destroy (sd->priv->dialog); if (sd->priv->searchResult) node_free (sd->priv->searchResult); search = NULL; G_OBJECT_CLASS (parent_class)->finalize (object); }
static void search_dialog_finalize (GObject *object) { SearchDialog *sd = SEARCH_DIALOG (object); gtk_widget_destroy (sd->priv->dialog); search_clean_results (sd->priv->vfolder); search = NULL; G_OBJECT_CLASS (parent_class)->finalize (object); }