void wxTextCtrl::WriteText( const wxString &text ) { wxCHECK_RET( m_text != NULL, wxT("invalid text ctrl") ); if ( text.empty() ) return; // gtk_text_changed_callback() will set m_modified to true but m_modified // shouldn't be changed by the program writing to the text control itself, // so save the old value and restore when we're done bool oldModified = m_modified; if ( m_windowStyle & wxTE_MULTILINE ) { // After cursor movements, gtk_text_get_point() is wrong by one. gtk_text_set_point( GTK_TEXT(m_text), GET_EDITABLE_POS(m_text) ); // always use m_defaultStyle, even if it is empty as otherwise // resetting the style and appending some more text wouldn't work: if // we don't specify the style explicitly, the old style would be used gtk_editable_delete_selection( GTK_EDITABLE(m_text) ); wxGtkTextInsert(m_text, m_defaultStyle, text.c_str(), text.length()); // we called wxGtkTextInsert with correct font, no need to do anything // in UpdateFontIfNeeded() any longer if ( !text.empty() ) { SetUpdateFont(false); } // Bring editable's cursor back uptodate. SET_EDITABLE_POS(m_text, gtk_text_get_point( GTK_TEXT(m_text) )); } else // single line { // First remove the selection if there is one gtk_editable_delete_selection( GTK_EDITABLE(m_text) ); // This moves the cursor pos to behind the inserted text. gint len = GET_EDITABLE_POS(m_text); gtk_editable_insert_text( GTK_EDITABLE(m_text), text.c_str(), text.length(), &len ); // Bring entry's cursor uptodate. gtk_entry_set_position( GTK_ENTRY(m_text), len ); } m_modified = oldModified; }
void wxTextEntry::WriteText(const wxString& value) { GtkEditable * const edit = GetEditable(); // remove the selection if there is one and suppress the text change event // generated by this: we only want to generate one event for this change, // not two { EventsSuppressor noevents(this); gtk_editable_delete_selection(edit); } // insert new text at the cursor position gint len = gtk_editable_get_position(edit); gtk_editable_insert_text ( edit, wxGTK_CONV_FONT(value, GetEditableWindow()->GetFont()), -1, // text: length: compute it using strlen() &len // will be updated to position after the text end ); // and move cursor to the end of new text gtk_editable_set_position(edit, len); }
/* entry_move_cursor_step(GtkMovementStep, int step, gboolean delete) {{{*/ void entry_move_cursor_step(GtkMovementStep step, int stepcount, gboolean del) { g_signal_emit_by_name(dwb.gui.entry, "move-cursor", step, stepcount, del); if (del) gtk_editable_delete_selection(GTK_EDITABLE(dwb.gui.entry)); }/*}}}*/
static void ide_editor_frame_actions_delete_selection (GSimpleAction *action, GVariant *state, gpointer user_data) { IdeEditorFrame *self = user_data; g_assert (IDE_IS_EDITOR_FRAME (self)); gtk_editable_delete_selection (GTK_EDITABLE (self->search_entry)); }
void wxComboBox::WriteText(const wxString& value) { wxCHECK_RET( m_widget != NULL, wxT("invalid combobox") ); GtkWidget *entry = GTK_COMBO(m_widget)->entry; GtkEditable * const edit = GTK_EDITABLE(entry); gtk_editable_delete_selection(edit); gint len = gtk_editable_get_position(edit); gtk_editable_insert_text(edit, wxGTK_CONV(value), -1, &len); gtk_editable_set_position(edit, len); }
void change_case (gint UpDown) { gint CurrentPage, l_min, l_max; gchar *buffer ; CurrentPage = gtk_notebook_get_current_page (GTK_NOTEBOOK(MainNotebook)); l_min = min_from_selection (GTK_EDITABLE(FPROPS(CurrentPage, Text))); l_max = max_from_selection (GTK_EDITABLE(FPROPS(CurrentPage, Text))); buffer = gtk_editable_get_chars (GTK_EDITABLE(FPROPS(CurrentPage, Text)), l_min, l_max); if (UpDown == 1) g_strup (buffer); else if (UpDown == 2) g_strdown (buffer); else if (UpDown == 3) { gint l_len, i, j; gchar *Delimiters = " \t\b\n\f\'\"{}()[]<>%^&*~-+=_@#$\\|/:;,.?!"; l_len = l_max - l_min; if ((buffer[0] >= 'a') && (buffer[0] <= 'z')) buffer[0] = buffer[0] - 'a' + 'A'; for (i = 1; i < l_len; i++) { for (j = 0; j <= (gint)strlen (Delimiters); j++) { if (buffer [i] == Delimiters[j]) { if ((buffer[i+1] >= 'a') && (buffer[i+1] <= 'z')) buffer[i+1] = buffer[i+1] - 'a' + 'A'; break; } } } } else if (UpDown == 4) { gint l_len, change_case, i; l_len = l_max - l_min; change_case = 'a' - 'A'; for (i = 0; i <= l_len; i++) { if ((buffer[i] >= 'A') && (buffer[i] <= 'Z')) buffer[i] = buffer[i] + change_case; else if ((buffer[i] >= 'a') && (buffer[i] <= 'z')) buffer[i] = buffer[i] - change_case; } } gtk_editable_delete_selection (GTK_EDITABLE(FPROPS(CurrentPage, Text))); gtk_editable_insert_text (GTK_EDITABLE(FPROPS(CurrentPage, Text)), buffer, strlen(buffer), &l_min); g_free (buffer); }
static void edit_delete_activated (GtkAction * action, CMainWindow* self) { if (GTK_IS_EDITABLE (gtk_window_get_focus (GTK_WINDOW (self)))) { gtk_editable_delete_selection (GTK_EDITABLE (gtk_window_get_focus (GTK_WINDOW (self)))); } else if (C_IS_TASK_WIDGET (gtk_window_get_focus (GTK_WINDOW (self)))) { c_task_widget_delete_selected (C_TASK_WIDGET (gtk_window_get_focus (GTK_WINDOW (self)))); } }
static gboolean midorator_entry_paste_clipboard_cb (MidoratorEntry* e, GtkWidget* web_view) { if (!midorator_string_to_bool(midorator_options("option", "paste_primary", NULL))) return false; g_signal_stop_emission_by_name(e, "paste-clipboard"); char *text = gtk_clipboard_wait_for_text(gtk_clipboard_get(GDK_SELECTION_PRIMARY)); if (!text) return true; gtk_editable_delete_selection(GTK_EDITABLE(e)); int pos = gtk_editable_get_position(GTK_EDITABLE(e)); gtk_editable_insert_text(GTK_EDITABLE(e), text, -1, &pos); gtk_editable_set_position(GTK_EDITABLE(e), pos); g_free(text); return true; }
void insert_time (gint CurrentPage) { gint Position; time_t Time; if ((!OpenedFilesCnt) || FPROPS(CurrentPage, ReadOnly)) return; Time = time (NULL); gtk_editable_delete_selection (GTK_EDITABLE(FPROPS(CurrentPage, Text))); gtk_editable_insert_text (GTK_EDITABLE(FPROPS(CurrentPage, Text)), ctime (&Time), 24, &Position); print_msg ("Insert Time..."); }
void on_delete1_activate(GtkMenuItem *menuitem, gpointer user_data) { GtkWidget *focusw = gtk_window_get_focus(GTK_WINDOW(main_widgets.window)); if (GTK_IS_EDITABLE(focusw)) gtk_editable_delete_selection(GTK_EDITABLE(focusw)); else if (IS_SCINTILLA(focusw) && sci_has_selection(SCINTILLA(focusw))) sci_clear(SCINTILLA(focusw)); else if (GTK_IS_TEXT_VIEW(focusw)) { GtkTextBuffer *buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(focusw)); gtk_text_buffer_delete_selection(buffer, TRUE, TRUE); } }
/* A key was pressed in locationbar */ static gboolean _interface_tweaks_on_key_press_event(GSignalInvocationHint *inHint, guint inNumberParams, const GValue *inParams, gpointer inUserData) { g_return_val_if_fail(GTK_IS_ENTRY(inUserData), FALSE); GtkEntry *entry=GTK_ENTRY(inUserData); GtkWidget *target; GdkEventKey *event; guint changedSignalID; GSList *handlers; /* Get target of this event and check if it is for locationbar entry */ target=GTK_WIDGET(g_value_get_object(inParams)); if(target==GTK_WIDGET(entry)) { /* Get key-event data */ inParams++; event=(GdkEventKey*)g_value_get_boxed(inParams); /* Check if key-event would _not_ add any characters */ if(!(gdk_keyval_is_upper(event->keyval)==gdk_keyval_is_lower(event->keyval) && gdk_unicode_to_keyval(gdk_keyval_to_unicode(event->keyval))!=event->keyval)) { /* Get "changed" signal ID */ changedSignalID=g_signal_lookup("changed", GTK_TYPE_ENTRY); /* Block all unblocked signal handlers for "changed" signal, remove selected * text region from entry text and unblock these signal handlers again. * This way we keep Midori's auto-completion working. Otherwise it fetches the * complete entry text with the text portion in selected text region and adds * the pressed key to it which results in a completely wrong text for auto-completion. */ handlers=_interface_tweaks_block_all_handlers(G_OBJECT(entry), changedSignalID); gtk_editable_delete_selection(GTK_EDITABLE(entry)); _interface_tweaks_unblock_handlers(G_OBJECT(entry), handlers); g_slist_free(handlers); } } return(TRUE); }
static int gtkListSetClipboardAttrib(Ihandle *ih, const char *value) { GtkEntry* entry; if (!ih->data->has_editbox) return 0; /* disable callbacks */ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1"); entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); if (iupStrEqualNoCase(value, "COPY")) gtk_editable_copy_clipboard(GTK_EDITABLE(entry)); else if (iupStrEqualNoCase(value, "CUT")) gtk_editable_cut_clipboard(GTK_EDITABLE(entry)); else if (iupStrEqualNoCase(value, "PASTE")) gtk_editable_paste_clipboard(GTK_EDITABLE(entry)); else if (iupStrEqualNoCase(value, "CLEAR")) gtk_editable_delete_selection(GTK_EDITABLE(entry)); iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL); return 0; }
void insert_color (GtkColorSelection *csd) { gdouble Color[3]; gint CurrentPage, Position; gchar *ColorString; CurrentPage = gtk_notebook_get_current_page (GTK_NOTEBOOK(MainNotebook)); if ((!OpenedFilesCnt) || FPROPS(CurrentPage, ReadOnly)) return; gtk_color_selection_get_color (csd, Color); ColorString = g_strdup_printf ("%02x%02x%02x", (guint)(255 * Color[0]), (guint)(255 * Color[1]), (guint)(255 * Color[2])); gtk_editable_delete_selection (GTK_EDITABLE(FPROPS(CurrentPage, Text))); gtk_editable_insert_text (GTK_EDITABLE(FPROPS(CurrentPage, Text)), ColorString, 6, &Position); print_msg ("Insert Color..."); }
static void ekiga_window_append_call_url (EkigaWindow *mw, const char *url) { int pos = -1; GtkEditable *entry; g_return_if_fail (EKIGA_IS_WINDOW (mw)); g_return_if_fail (url != NULL); entry = GTK_EDITABLE (mw->priv->entry); if (gtk_editable_get_selection_bounds (entry, NULL, NULL)) gtk_editable_delete_selection (entry); pos = gtk_editable_get_position (entry); gtk_editable_insert_text (entry, url, strlen (url), &pos); gtk_editable_select_region (entry, -1, -1); gtk_editable_set_position (entry, pos); }
static int gtkListSetSelectedTextAttrib(Ihandle* ih, const char* value) { int start, end; GtkEntry* entry; if (!ih->data->has_editbox) return 0; if (!value) return 0; entry = (GtkEntry*)iupAttribGet(ih, "_IUPGTK_ENTRY"); if (gtk_editable_get_selection_bounds(GTK_EDITABLE(entry), &start, &end)) { /* disable callbacks */ iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", "1"); gtk_editable_delete_selection(GTK_EDITABLE(entry)); gtk_editable_insert_text(GTK_EDITABLE(entry), iupgtkStrConvertToUTF8(value), -1, &start); iupAttribSetStr(ih, "_IUPGTK_DISABLE_TEXT_CB", NULL); } return 0; }
static void on_menuitem_delete_activate(void) { GtkEditable *widget = GTK_EDITABLE(gtk_window_get_focus(gui.window)); gtk_editable_delete_selection(widget); }