static void on_retrieve_clicked (GtkButton *button, Widgets *w) { g_return_if_fail (GTK_IS_TEXT_VIEW(w->textview)); GtkTextBuffer *buffer; GtkTextIter start = {0,}; GtkTextIter end = {0,}; gchar *text; /* * The selected text provides us with two iterators, which we use to display * the substring from buffer to stdout. */ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(w->textview)); gtk_text_buffer_get_selection_bounds (buffer, &start, &end); /* * Let's check whether our text selection is non-empty. */ if (gtk_text_iter_equal(&start, &end)) { return; } text = gtk_text_buffer_get_text (buffer, &start, &end, FALSE); create_message_dialog (w, "Text retrieved", text); }
static GtkResponseType moo_message_dialog (GtkWidget *parent, GtkMessageType type, GtkButtonsType buttons, const char *text, const char *secondary_text, GtkResponseType default_response) { GtkWidget *dialog, *toplevel = NULL; GtkResponseType response; if (parent) toplevel = gtk_widget_get_toplevel (parent); if (!toplevel || !GTK_IS_WINDOW (toplevel)) toplevel = NULL; dialog = create_message_dialog (toplevel ? GTK_WINDOW (toplevel) : NULL, type, buttons, text, secondary_text, default_response); g_return_val_if_fail (dialog != NULL, GTK_RESPONSE_NONE); moo_position_window_real (dialog, parent, FALSE, FALSE, 0, 0); response = GtkResponseType (gtk_dialog_run (GTK_DIALOG (dialog))); gtk_widget_destroy (dialog); return response; }
/** * eel_create_question_dialog: * * Create a dialog asking a question with at least two choices. * The caller needs to set up any necessary callbacks * for the buttons. The dialog is not yet shown, so that the * caller can add additional buttons or make other visual changes * without causing flashiness. * @question: The text of the question. * @answer_0: The label of the leftmost button (index 0) * @answer_1: The label of the 2nd-to-leftmost button (index 1) * @parent: The parent window for this dialog. */ GtkDialog * eel_create_question_dialog (const char *primary_text, const char *secondary_text, const char *answer_1, int response_1, const char *answer_2, int response_2, GtkWindow *parent) { GtkDialog *dialog; dialog = create_message_dialog (primary_text, secondary_text, GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, parent); if (g_strcmp0 (answer_1, "process-stop") == 0) eel_dialog_add_button (dialog, _("_Cancel"), answer_1, response_1); else gtk_dialog_add_button (dialog, answer_1, response_1); if (g_strcmp0 (answer_2, "gtk-ok") == 0) eel_dialog_add_button (dialog, _("_OK"), answer_2, response_2); else if (g_strcmp0 (answer_2, "edit-clear") == 0) eel_dialog_add_button (dialog, _("_Clear"), answer_2, response_2); else gtk_dialog_add_button (dialog, answer_2, response_2); return dialog; }
GtkDialog * eel_create_info_dialog (const char *primary_text, const char *secondary_text, GtkWindow *parent) { return create_message_dialog (primary_text, secondary_text, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, parent); }
void send_button_press(GtkWidget *widget,struct text_view_info *viewinfo){ GtkTextIter start, end; gtk_text_buffer_get_start_iter(viewinfo->view2_buffer,&start); gtk_text_buffer_get_end_iter(viewinfo->view2_buffer,&end); char *buffer=gtk_text_buffer_get_text(viewinfo->view2_buffer,&start,&end,TRUE);//FALSE);/ int len=strlen(buffer); if (len > 0){ //print_msg(viewinfo,"我:\n",buffer); gtk_text_buffer_set_text(viewinfo->view2_buffer,"", -1); send_message_callback(buffer); } else create_message_dialog(GTK_MESSAGE_INFO,"The message is not allowed to be empty!"); }
static void on_find_clicked (GtkButton *button, Widgets *w) { g_return_if_fail (GTK_IS_TEXT_VIEW(w->textview)); g_return_if_fail (GTK_IS_ENTRY(w->entry)); GtkTextBuffer *buffer; GtkTextIter iter = {0,}; GtkTextIter start = {0,}; GtkTextIter end = {0,}; gboolean found = FALSE; const gchar *find; gchar *output; buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(w->textview)); /* * Let's check whether there is something to search for. */ if (0 == gtk_entry_get_text_length (GTK_ENTRY(w->entry))) { return; } find = gtk_entry_get_text (GTK_ENTRY(w->entry)); gtk_text_buffer_get_start_iter (buffer, &iter); /* * Will only find first match, if not looped over. * TODO: Find every match, indicate if no match was found. */ found = gtk_text_iter_forward_search (&iter, find, GTK_TEXT_SEARCH_TEXT_ONLY, &start, &end, NULL); /* * The start and end iterators may only be valid if * gtk_text_iter_forward_search() returned successfully! Remember that you * have no control ("opaque") over iterators whatsoever. */ if (found) { output = gtk_text_buffer_get_text (buffer, &start, &end, FALSE); create_message_dialog(w, "Text found", output); } }
/** * eel_create_question_dialog: * * Create a dialog asking a question with at least two choices. * The caller needs to set up any necessary callbacks * for the buttons. The dialog is not yet shown, so that the * caller can add additional buttons or make other visual changes * without causing flashiness. * @question: The text of the question. * @answer_0: The label of the leftmost button (index 0) * @answer_1: The label of the 2nd-to-leftmost button (index 1) * @parent: The parent window for this dialog. */ GtkDialog * eel_create_question_dialog (const char *primary_text, const char *secondary_text, const char *answer_1, int response_1, const char *answer_2, int response_2, GtkWindow *parent) { GtkDialog *dialog; dialog = create_message_dialog (primary_text, secondary_text, GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, parent); gtk_dialog_add_buttons (dialog, answer_1, response_1, answer_2, response_2, NULL); return dialog; }
static GtkDialog * show_message_dialog (const char *primary_text, const char *secondary_text, GtkMessageType type, GtkButtonsType buttons_type, const char *details_text, GtkWindow *parent) { GtkDialog *dialog; dialog = create_message_dialog (primary_text, secondary_text, type, buttons_type, parent); if (details_text != NULL) { eel_gtk_message_dialog_set_details_label (GTK_MESSAGE_DIALOG (dialog), details_text); } gtk_widget_show (GTK_WIDGET (dialog)); g_signal_connect (dialog, "response", G_CALLBACK (gtk_widget_destroy), NULL); return dialog; }