示例#1
0
文件: console.c 项目: evmar/LogJam
static void
submit_cb(GtkWidget *w, ConsoleUI *cui) {
	char *command;

	command = gtk_editable_get_chars(GTK_EDITABLE(cui->entry), 0, -1);
	if (run_console_command(cui, command))
		gtk_editable_delete_text(GTK_EDITABLE(cui->entry), 0, -1);
	g_free(command);
}
示例#2
0
static void
gdaui_numeric_entry_assume_delete (GdauiEntry *entry, gint virt_start_pos, gint virt_end_pos, gint offset)
{
	GdauiNumericEntry *fentry;
	GString *string;
	gchar *otext, *ntext = NULL;
	gint i, nlen, ndel, olen = 0;
	gint cursor_pos;

	fentry = (GdauiNumericEntry*) entry;
	ndel = virt_end_pos - virt_start_pos;
	otext = gdaui_entry_get_text (GDAUI_ENTRY (entry));
	cursor_pos = gtk_editable_get_position (GTK_EDITABLE (entry));

	if (otext) {
		if ((ndel == 1) && (otext[virt_start_pos] == fentry->priv->decimal_sep) &&
		    (fentry->priv->nb_decimals != G_MAXUINT16)) {
			gtk_editable_set_position (GTK_EDITABLE (entry), cursor_pos - 1);
			g_free (otext);
			return;
		}
		string = g_string_new (otext);
		olen = g_utf8_strlen (otext, -1);
		g_free (otext);
		g_string_erase (string, virt_start_pos, ndel);
	}
	else
		string = g_string_new (NULL);
	
	cursor_pos -= (virt_end_pos - virt_start_pos);
	/*g_print ("RAW: [%s]", string->str);*/
	text_unformat (fentry, string->str, &cursor_pos);
	/*g_print ("SANITIZED: [%s]", string->str);*/

	if (!test_text_validity (fentry, string->str)) {
		if ((string->str[0] == fentry->priv->decimal_sep) &&
		    string->str[1] == 0)
			ntext = g_strdup ("");
		g_string_free (string, TRUE);
		if (!ntext) {
			/*g_print ("ERROR!\n");*/
			return;
		}
	}
	else {
		ntext = text_reformat (fentry, string->str, &cursor_pos, FALSE);
		g_string_free (string, TRUE);
	}
	/*g_print ("NEW: [%s]\n", ntext);*/

	i = offset;
	nlen = strlen (ntext);
	gtk_editable_delete_text ((GtkEditable*) entry, offset, olen + offset);
	gtk_editable_insert_text ((GtkEditable*) entry, ntext, nlen, &i);
	g_free (ntext);	
	gtk_editable_set_position (GTK_EDITABLE (entry), cursor_pos);
}
示例#3
0
void GeCurveGtk::export_file_selected_cb( void *ctx, char *filename, wow_eFileSelType file_type)
{
  GeCurve *curve = (GeCurve *)ctx;
  gint pos = 0;

  gtk_editable_delete_text( GTK_EDITABLE(((GeCurveGtk *)curve)->export_filename_widget), 0, -1);
  gtk_editable_insert_text( GTK_EDITABLE(((GeCurveGtk *)curve)->export_filename_widget), 
			    filename, strlen(filename), &pos);
}
示例#4
0
void
gl_object_editor_set_data (glObjectEditor      *editor,
			    gboolean            merge_flag,
			    glTextNode         *text_node)
{
        gint pos;
 
        gl_debug (DEBUG_EDITOR, "START");
 
        editor->priv->stop_signals = TRUE;

        gtk_widget_set_sensitive (editor->priv->data_key_radio, merge_flag);
 
        if (!text_node->field_flag || !merge_flag) {
 
                gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
                                              (editor->priv->data_literal_radio), TRUE); 
                gtk_widget_set_sensitive (editor->priv->data_text_entry, TRUE);
                gtk_widget_set_sensitive (editor->priv->data_key_combo, FALSE);
		gtk_widget_set_sensitive (editor->priv->data_format_label, FALSE);
		gtk_widget_set_sensitive (editor->priv->data_ex_label, FALSE);
		gtk_widget_set_sensitive (editor->priv->data_digits_spin, FALSE);
		gtk_widget_set_sensitive (editor->priv->data_digits_label, FALSE);
 
                gtk_editable_delete_text (GTK_EDITABLE (editor->priv->data_text_entry), 0, -1);
                pos = 0;
                if (text_node->data != NULL ) {
			gtk_editable_insert_text (GTK_EDITABLE (editor->priv->data_text_entry),
						  text_node->data,
						  strlen (text_node->data),
						  &pos);
                }

        } else {
                                                                                
                gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
                                              (editor->priv->data_key_radio), TRUE);
                                                                                
                gtk_widget_set_sensitive (editor->priv->data_text_entry, FALSE);
                gtk_widget_set_sensitive (editor->priv->data_key_combo, TRUE);
		gtk_widget_set_sensitive (editor->priv->data_format_label, TRUE);
		gtk_widget_set_sensitive (editor->priv->data_ex_label, TRUE);
		gtk_widget_set_sensitive (editor->priv->data_digits_label,
					  !editor->priv->data_format_fixed_flag);
		gtk_widget_set_sensitive (editor->priv->data_digits_spin,
					  !editor->priv->data_format_fixed_flag);
                                                                                

		gl_field_button_set_key (GL_FIELD_BUTTON (editor->priv->data_key_combo),
                                         text_node->data);
        }
                                                                                

        editor->priv->stop_signals = FALSE;

        gl_debug (DEBUG_EDITOR, "END");
}
示例#5
0
void gtk_write_entry_float(GtkWidget *entry, float value)
{

gint r;
char string[400];
		sprintf(string,"%f",value);		
		gtk_editable_delete_text(GTK_EDITABLE(entry), 0,-1);
		gtk_editable_insert_text(GTK_EDITABLE(entry), string, strlen(string), &r);
}
示例#6
0
void gtk_write_entry_string(GtkWidget *entry, char *value)
{

    gint r;
    if(!value) return;

    gtk_editable_delete_text(GTK_EDITABLE(entry), 0,-1);
    gtk_editable_insert_text(GTK_EDITABLE(entry), value, strlen(value), &r);
}
示例#7
0
static void
editable_undo_delete_text (GObject *object,
                           gint position_start,
                           gint position_end)
{
	g_return_if_fail (GTK_IS_EDITABLE (object));

	gtk_editable_delete_text (GTK_EDITABLE (object), position_start, position_end);
}
void
names_entry_insert(GtkEditable * editable,
		   gchar * new_text,
		   gint new_text_length, gint * position,
		   gpointer user_data)
{
    gint pos = *position;
    gchar c;

    if (new_text_length > 1) {
	g_signal_handlers_block_by_func(editable,
					(gpointer) names_entry_insert,
					user_data);
	gtk_editable_delete_text(editable, pos, pos + strlen(new_text));
	g_signal_handlers_unblock_by_func(editable,
					  (gpointer) names_entry_insert,
					  user_data);
	g_signal_stop_emission_by_name(editable, "insert_text");
    } else {
	if (strcmp(new_text, " ") == 0) {
	    g_signal_handlers_block_by_func(editable,
					    (gpointer) names_entry_insert,
					    user_data);
	    gtk_editable_delete_text(editable, pos, pos + 1);
	    g_signal_handlers_unblock_by_func(editable, (gpointer)
					      names_entry_insert,
					      user_data);
	    g_signal_stop_emission_by_name(editable, "insert_text");
	} else {
	    gchar *cad;
	    g_signal_handlers_block_by_func(editable,
					    (gpointer) names_entry_insert,
					    user_data);
	    gtk_editable_delete_text(editable, pos, pos + 1);
	    cad = g_ascii_strdown(new_text, strlen(new_text));
	    gtk_editable_insert_text(editable, cad, strlen(cad), position);
	    g_signal_handlers_unblock_by_func(editable, (gpointer)
					      names_entry_insert,
					      user_data);
	    g_signal_stop_emission_by_name(editable, "insert_text");
	    g_free(cad);
	}
    }
}
示例#9
0
/**
 * gtk_editable_delete_selection:
 * @editable: a #GtkEditable
 *
 * Deletes the currently selected text of the editable.
 * This call doesn’t do anything if there is no selected text.
 */
void
gtk_editable_delete_selection (GtkEditable *editable)
{
  gint start, end;

  g_return_if_fail (GTK_IS_EDITABLE (editable));

  if (gtk_editable_get_selection_bounds (editable, &start, &end))
    gtk_editable_delete_text (editable, start, end);
}
///////////////////////////////////////////////////////////////////////////////////////////
// 
// PRIVATE void clearTextArea(const gchar *pWidgetName)
// IN     : const gchar *pWidgetName : Widget name.
// OUT    : None.
// RETURN : None.
// 
PRIVATE void clearTextArea(const gchar *pWidgetName)
{
/*** Parameters start ***/
	GtkWidget	*widget = NULL;		// Temporary pointer to widget.
/*** Parameters end ***/
	
	widget = lookupWidget(pWidgetName);
	gtk_editable_delete_text(GTK_EDITABLE(widget), 0, -1);
	
	return;
}// End clearTextArea
示例#11
0
文件: entry.c 项目: vifino/dwb
/* entry_focus() {{{*/
void 
entry_focus() 
{
    if (! (dwb.state.bar_visible & BAR_VIS_STATUS)) 
        gtk_widget_show_all(dwb.gui.bottombox);

    gtk_widget_show(dwb.gui.entry);
    gtk_widget_grab_focus(dwb.gui.entry);
    gtk_widget_set_can_focus(CURRENT_WEBVIEW_WIDGET(), false);
    gtk_editable_delete_text(GTK_EDITABLE(dwb.gui.entry), 0, -1);
}/*}}}*/
示例#12
0
bool wxTextCtrl::SetStyle( long start, long end, const wxTextAttr& style )
{
    if ( m_windowStyle & wxTE_MULTILINE )
    {
        if ( style.IsDefault() )
        {
            // nothing to do
            return true;
        }

        // VERY dirty way to do that - removes the required text and re-adds it
        // with styling (FIXME)

        gint l = gtk_text_get_length( GTK_TEXT(m_text) );

        wxCHECK_MSG( start >= 0 && end <= l, false,
                     wxT("invalid range in wxTextCtrl::SetStyle") );

        gint old_pos = gtk_editable_get_position( GTK_EDITABLE(m_text) );
        char *text = gtk_editable_get_chars( GTK_EDITABLE(m_text), start, end );
        wxString tmp(text,*wxConvCurrent);
        g_free( text );

        gtk_editable_delete_text( GTK_EDITABLE(m_text), start, end );
        gtk_editable_set_position( GTK_EDITABLE(m_text), start );

#if wxUSE_UNICODE
        wxWX2MBbuf buf = tmp.mbc_str();
        const char *txt = buf;
        size_t txtlen = strlen(buf);
#else
        const char *txt = tmp;
        size_t txtlen = tmp.length();
#endif

        // use the attributes from style which are set in it and fall back
        // first to the default style and then to the text control default
        // colours for the others
        wxGtkTextInsert(m_text,
                        wxTextAttr::Combine(style, m_defaultStyle, this),
                        txt,
                        txtlen);

        /* does not seem to help under GTK+ 1.2 !!!
        gtk_editable_set_position( GTK_EDITABLE(m_text), old_pos ); */
        SetInsertionPoint( old_pos );

        return true;
    }

    // else single line
    // cannot do this for GTK+'s Entry widget
    return false;
}
示例#13
0
static gboolean on_display_editable_map(GtkWidget *widget, gchar *display)
{
	gint position = 0;
	GtkEditable *editable = GTK_EDITABLE(widget);

	gtk_editable_delete_text(editable, 0, -1);
	gtk_editable_insert_text(editable, display ? display : "", -1, &position);
	gtk_editable_select_region(editable, -1, 0);
	g_free(display);
	return FALSE;
}
示例#14
0
文件: prefs_gpg.c 项目: Mortal/claws
void key_custom_toggled(GtkToggleButton *togglebutton, gpointer user_data)
{
	struct GPGAccountPage *page = (struct GPGAccountPage *) user_data;
	gboolean active;

	active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->key_custom));
	gtk_widget_set_sensitive(GTK_WIDGET(page->keyid_label), active);
	gtk_widget_set_sensitive(GTK_WIDGET(page->keyid), active);
	if (!active)
		gtk_editable_delete_text(GTK_EDITABLE(page->keyid), 0, -1);
}
示例#15
0
static PyObject* ComposeWindow_save_message_to(clawsmail_ComposeWindowObject *self, PyObject *args)
{
  PyObject *arg;

  if(!PyArg_ParseTuple(args, "O", &arg))
    return NULL;

  if(PyString_Check(arg)) {
    GtkEditable *editable;
    gint pos;

    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self->compose->savemsg_checkbtn), TRUE);

    editable = GTK_EDITABLE(gtk_bin_get_child(GTK_BIN(self->compose->savemsg_combo)));
    gtk_editable_delete_text(editable, 0, -1);
    gtk_editable_insert_text(editable, PyString_AsString(arg), -1, &pos);
  }
  else if(clawsmail_folder_check(arg)) {
    GtkEditable *editable;
    gint pos;

    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self->compose->savemsg_checkbtn), TRUE);

    editable = GTK_EDITABLE(gtk_bin_get_child(GTK_BIN(self->compose->savemsg_combo)));
    gtk_editable_delete_text(editable, 0, -1);
    gtk_editable_insert_text(editable, folder_item_get_identifier(clawsmail_folder_get_item(arg)), -1, &pos);
  }
  else if (arg == Py_None){
    /* turn off checkbutton */
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self->compose->savemsg_checkbtn), FALSE);
  }
  else {
    PyErr_SetString(PyExc_TypeError, "function takes exactly one argument which may be a folder object, a string, or None");
    return NULL;
  }

  flush_gtk_queue();

  Py_INCREF(Py_None);
  return Py_None;
}
示例#16
0
/**
    \fn glyphUpdate
    \brief Update all fields in the dialog wrt currentGlyph
*/
void glyphUpdate(void )
{
  if(!currentGlyph) return;
  gtk_widget_set_usize(WID(drawingarea1), currentGlyph->width+4, currentGlyph->height+4);
  glyphDraw();
  gtk_editable_delete_text(GTK_EDITABLE(WID(entry1)), 0,-1); 
  if(currentGlyph->code)
  {
    // Set our text
    gtk_entry_set_text (GTK_ENTRY (WID(entry1)), currentGlyph->code);
  }
}
示例#17
0
static void location_cb (GtkMozEmbed *embed, WebBrowserObject *browser)
{
    browser->FireEvent("OnLocationChange");
    char *location = gtk_moz_embed_get_location(embed);
    if (location) {
        int pos = 0;
        systemObject->Log(0, "location: %s", location);
        gtk_editable_delete_text(GTK_EDITABLE(browser->urlEntry), 0, -1);
        gtk_editable_insert_text(GTK_EDITABLE(browser->urlEntry), location, strlen(location), &pos);
        g_free(location);
    }
    browser->BrowserButtons();
}
示例#18
0
/**
 * e_dialog_editable_set:
 * @widget: A #GtkEditable widget.
 * @value: String value.
 *
 * Sets the string value inside a #GtkEditable-derived widget.
 **/
void
e_dialog_editable_set (GtkWidget *widget,
                       const gchar *value)
{
	gint pos = 0;

	g_return_if_fail (GTK_IS_EDITABLE (widget));

	gtk_editable_delete_text (GTK_EDITABLE (widget), 0, -1);

	if (value)
		gtk_editable_insert_text (GTK_EDITABLE (widget), value, strlen (value), &pos);
}
示例#19
0
文件: myre.c 项目: vobiscum/myre
void
button2_clicked_cb() {
    gtk_editable_delete_text((GtkEditable *) entry, 0, -1);
    gtk_text_buffer_set_text(text1,"",-1);
    gtk_text_buffer_set_text(text2,"",-1);
    /*set focus to entry*/
    gtk_widget_grab_focus(entry);

    gtk_widget_hide(textview1);
    gtk_widget_hide(hboxmain);
    gtk_widget_hide(GTK_WIDGET(status));
    gtk_widget_hide(button2);
    gtk_window_resize((GtkWindow *)window, 500, 20);
}
示例#20
0
static void foldersel_cb(GtkWidget *widget, gpointer data)
{
	GtkWidget *entry = (GtkWidget *) data;
	FolderItem *item;
	gchar *item_id;
	gint newpos = 0;
	
	item = foldersel_folder_sel(NULL, FOLDER_SEL_MOVE, NULL, FALSE);
	if (item && (item_id = folder_item_get_identifier(item)) != NULL) {
		gtk_editable_delete_text(GTK_EDITABLE(entry), 0, -1);
		gtk_editable_insert_text(GTK_EDITABLE(entry), item_id, strlen(item_id), &newpos);
		g_free(item_id);
	}
}
示例#21
0
/**
 * Called when the user selects an entry from the autocomplete list.
 *
 * @param[in] widget
 * @param[in] model     Data structure containing autocomplete strings.
 * @param[in] iter      Pointer into data structure.
 * @param[in] user_data unused here
 *
 * @return Currently always true
 */
static gboolean
on_match_select(GtkEntryCompletion *widget,
                GtkTreeModel *model,
                GtkTreeIter *iter,
                gpointer user_data)
{

  const gchar *varname;
  GtkEditable *e = (GtkEditable*) gtk_entry_completion_get_entry(widget);
  gchar *s = gtk_editable_get_chars(e, 0, -1);
  gint cur_pos = gtk_editable_get_position(e);
  gint p = cur_pos;
  gchar *end;
  gint del_end_pos = -1;

  GValue value = {0, };
  gtk_tree_model_get_value(model, iter, COMPL_VARNAME, &value);
  varname = g_value_get_string(&value);

  for (p = cur_pos; p - 2 > 0; p--)
  {
    if (strncmp(s + p - 2, "$(", 2) == 0)
    {
      break;
    }
  }

  end = s + cur_pos;

  if (end)
  {
    del_end_pos = end - s + 1;
  }
  else
  {
    del_end_pos = cur_pos;
  }

  size_t text_len = strlen(varname) + 2;
  gchar *addtext = (gchar*) g_malloc(text_len);
  snprintf(addtext, text_len, "%s)", varname);

  gtk_editable_delete_text(e, p, del_end_pos);
  gtk_editable_insert_text(e, addtext, -1, &p);
  gtk_editable_set_position(e, p);
  g_value_unset(&value);
  g_free(addtext);
  return TRUE;
}
示例#22
0
void SetCursolPosition(const gchar *entry_name, const gint position)
{
	GtkWidget *entry = NULL;

	entry = glade_xml_get_widget(g_cngplp_xml, entry_name);
	if(entry != NULL){
		if(-1 == position){
			const gint num = GTK_ENTRY(entry)->text_length;
			gtk_editable_set_position(GTK_EDITABLE(entry), num);
		}else{
			gtk_editable_delete_text(GTK_EDITABLE(entry), position, -1);
			gtk_editable_set_position(GTK_EDITABLE(entry), position);
		}
	}
}
示例#23
0
void GeCurveGtk::open_minmax( int idx)
{
  char min_value_str[80];
  char max_value_str[80];
  gint pos = 0;

  create_minmax_dialog();

  if ( idx < cd->cols) {
    sprintf( min_value_str, "%f", cd->y_min_value_axis[idx]);
    sprintf( max_value_str, "%f", cd->y_max_value_axis[idx]);
  }
  else {
    sprintf( min_value_str, "%f", cd->x_min_value_axis[idx - cd->cols]);
    sprintf( max_value_str, "%f", cd->x_max_value_axis[idx - cd->cols]);
  }
  gtk_editable_delete_text( GTK_EDITABLE(minmax_textmin_widget), 0, -1);
  gtk_editable_insert_text( GTK_EDITABLE(minmax_textmin_widget), 
			    min_value_str, strlen(min_value_str), &pos);
  gtk_editable_delete_text( GTK_EDITABLE(minmax_textmax_widget), 0, -1);
  gtk_editable_insert_text( GTK_EDITABLE(minmax_textmax_widget), 
			    max_value_str, strlen(max_value_str), &pos);
  minmax_idx = idx;
}
示例#24
0
static gboolean midorator_entry_key_press_event_cb (MidoratorEntry* e, GdkEventKey* event) {
	if ((event->state & GDK_CONTROL_MASK) && event->keyval == GDK_a) {
		gtk_editable_set_position(GTK_EDITABLE(e), 0);
	} else if ((event->state & GDK_CONTROL_MASK) && event->keyval == GDK_e) {
		gtk_editable_set_position(GTK_EDITABLE(e), -1);
	} else if ((event->state & GDK_CONTROL_MASK) && event->keyval == GDK_f) {
		gtk_editable_set_position(GTK_EDITABLE(e), gtk_editable_get_position(GTK_EDITABLE(e)) + 1);
	} else if ((event->state & GDK_CONTROL_MASK) && event->keyval == GDK_b) {
		gtk_editable_set_position(GTK_EDITABLE(e), gtk_editable_get_position(GTK_EDITABLE(e)) - 1);
	} else if ((event->state & GDK_CONTROL_MASK) && event->keyval == GDK_p) {
		gtk_editable_set_position(GTK_EDITABLE(e), 0);
		midorator_entry_history_up(e);
	} else if ((event->state & GDK_CONTROL_MASK) && event->keyval == GDK_n) {
		gtk_editable_set_position(GTK_EDITABLE(e), 0);
		midorator_entry_history_down(e);
	} else if ((event->state & GDK_CONTROL_MASK) && event->keyval == GDK_w) {
		const char *t = gtk_entry_get_text(GTK_ENTRY(e));
		int pos = gtk_editable_get_position(GTK_EDITABLE(e));
		char *i;
		for (i = g_utf8_offset_to_pointer(t, pos) - 1; i >= t && *i == ' '; i--);
		for (; i >= t && *i != ' '; i--);
		i++;
		int newpos = g_utf8_pointer_to_offset(t, i);
		gtk_editable_delete_text(GTK_EDITABLE(e), newpos, pos);
		gtk_editable_set_position(GTK_EDITABLE(e), newpos);
	} else if (event->keyval == GDK_Escape) {
		g_signal_emit(e, signals[SIG_CANCEL], 0);
	} else if (event->keyval == GDK_Tab) {
		midorator_entry_perform_completion(e);
	} else if (event->keyval == GDK_Up) {
		midorator_entry_history_up(e);
	} else if (event->keyval == GDK_Down) {
		midorator_entry_history_down(e);
	} else if (event->keyval == GDK_Page_Up) {
		gtk_editable_set_position(GTK_EDITABLE(e), 0);
		midorator_entry_history_up(e);
	} else if (event->keyval == GDK_Page_Down) {
		gtk_editable_set_position(GTK_EDITABLE(e), 0);
		midorator_entry_history_down(e);
	} else if (event->keyval == GDK_Return) {
		char *t = g_strdup(gtk_entry_get_text(GTK_ENTRY(e)));
		g_signal_emit(e, signals[SIG_EXECUTE], 0, t);
		midorator_entry_history_add(e, t);
		g_free(t);
	} else
		return false;
	return true;
}
示例#25
0
void wxComboBox::Replace( long from, long to, const wxString& value )
{
    wxCHECK_RET( m_widget != NULL, wxT("invalid combobox") );

    GtkWidget *entry = GTK_COMBO(m_widget)->entry;
    gtk_editable_delete_text( GTK_EDITABLE(entry), (gint)from, (gint)to );
    if (value.IsNull()) return;
    gint pos = (gint)to;

#if wxUSE_UNICODE
    wxCharBuffer buffer = wxConvUTF8.cWX2MB( value );
    gtk_editable_insert_text( GTK_EDITABLE(entry), (const char*) buffer, strlen( (const char*) buffer ), &pos );
#else
    gtk_editable_insert_text( GTK_EDITABLE(entry), value.c_str(), value.length(), &pos );
#endif
}
示例#26
0
void my_int_listener (PluginParam *param) {
  GtkEditable *editable;

  if (sdlGoom->config_win == 0) return;
  editable = GTK_EDITABLE(param->user_data);

  if (editable) {
    int pos = 0;
    char str[256];
    sprintf (str, "%d", IVAL(*param));
    if (strcmp(str,gtk_editable_get_chars(editable,0,-1))) {
      gtk_editable_delete_text (editable,0,-1);
      gtk_editable_insert_text (editable,str,strlen(str),&pos);
    }
  }
}
示例#27
0
/**************************************************************************
  Make a text tag for the selected text.
**************************************************************************/
void inputline_make_tag(GtkEntry *entry, enum text_tag_type type)
{
  char buf[MAX_LEN_MSG];
  GtkEditable *editable = GTK_EDITABLE(entry);
  gint start_pos, end_pos;
  gchar *selection;

  if (!gtk_editable_get_selection_bounds(editable, &start_pos, &end_pos)) {
    /* Let's say the selection starts and ends at the current position. */
    start_pos = end_pos = gtk_editable_get_position(editable);
  }

  selection = gtk_editable_get_chars(editable, start_pos, end_pos);

  if (type == TTT_COLOR) {
    /* Get the color arguments. */
    char fg_color_text[32], bg_color_text[32];
    GdkColor *fg_color = g_object_get_data(G_OBJECT(entry), "fg_color");
    GdkColor *bg_color = g_object_get_data(G_OBJECT(entry), "bg_color");

    if (!fg_color && !bg_color) {
      goto CLEAN_UP;
    }

    color_to_string(fg_color, fg_color_text, sizeof(fg_color_text));
    color_to_string(bg_color, bg_color_text, sizeof(bg_color_text));

    if (0 == featured_text_apply_tag(selection, buf, sizeof(buf),
                                     TTT_COLOR, 0, FT_OFFSET_UNSET,
                                     ft_color(fg_color_text,
                                              bg_color_text))) {
      goto CLEAN_UP;
    }
  } else if (0 == featured_text_apply_tag(selection, buf, sizeof(buf),
                                          type, 0, FT_OFFSET_UNSET)) {
    goto CLEAN_UP;
  }

  /* Replace the selection. */
  gtk_editable_delete_text(editable, start_pos, end_pos);
  end_pos = start_pos;
  gtk_editable_insert_text(editable, buf, -1, &end_pos);
  gtk_editable_select_region(editable, start_pos, end_pos);

CLEAN_UP:
  g_free(selection);
}
示例#28
0
//
//	 Hide all qualifiers.
//
void WUtedGtk::reset_qual()
{
  int		i;

  for( i = 0; i < UTED_QUALS; i++) {
    g_object_set( widgets.qualifier[i], "visible", FALSE, NULL);
    g_object_set( widgets.value[i], "visible", FALSE, NULL);
    g_object_set( widgets.present[i], "visible", FALSE, NULL);
    present_sts[i] = 0;
    gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( widgets.present[i]), FALSE);
    gtk_editable_delete_text( GTK_EDITABLE(widgets.value[i]), 0, -1);
  }

  gtk_label_set_label( GTK_LABEL(widgets.commandlabel), UTED_TEXT_NOCOMMAND);

  current_index = UTED_INDEX_NOCOMMAND;
}
示例#29
0
void
ghack_menu_window_clear(GtkWidget *menuWin, gpointer data)
{
    MenuWinType isMenu;
    int i, numRows;
    menuItem* item;

    isMenu = (MenuWinType) GPOINTER_TO_INT
    	(gtk_object_get_data (GTK_OBJECT (menuWin), "isMenu"));

    if (isMenu == MenuMenu) {
      GtkWidget *clist;

      clist = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (menuWin), "clist"));
      g_assert (clist != NULL);

      /* destroy existing menu data, if any */
      if (clist) {
	/* destroy all the row_data we stored in the clist */
	numRows = GPOINTER_TO_INT( gtk_object_get_data(
		    GTK_OBJECT(clist), "numRows") );
	for( i=0; i<numRows; i++) {
	    item = (menuItem*) gtk_clist_get_row_data( 
		    GTK_CLIST (clist), i);
	    if (item != NULL) {
		g_free( item);
		gtk_clist_set_row_data (GTK_CLIST (clist), i, 
			(gpointer) NULL);
	    }
	}
	gtk_object_set_data (GTK_OBJECT (clist), "numItems",
				GINT_TO_POINTER (-1));
	gtk_clist_clear (GTK_CLIST (clist));
      }
    }
    
    else if (isMenu == MenuText) {
      GnomeLess *gless;

      gless = GNOME_LESS (gtk_object_get_data (GTK_OBJECT (menuWin), "gless"));
      g_assert (gless != NULL);

      gtk_editable_delete_text (GTK_EDITABLE (gless->text), 0, 0);
    }

}
示例#30
0
static void
gdaui_numeric_entry_assume_insert (GdauiEntry *entry, const gchar *text, gint text_length,
				   gint *virt_pos, gint offset)
{
	GdauiNumericEntry *fentry;
	gchar *otext, *ptr, *ntext;
	gchar tmp;
	gint i;
	GString *string;
	gint olen, nlen;

	fentry = (GdauiNumericEntry*) entry;
	otext = gdaui_entry_get_text (GDAUI_ENTRY (entry));
	olen = strlen (otext);
	for (ptr = otext, i = 0; (i < *virt_pos) && *ptr; ptr = g_utf8_next_char (ptr), i++);
	if (i != *virt_pos)
		return;
	tmp = *ptr;
	*ptr = 0;
	string = g_string_new ("");
	g_string_append (string, otext);
	*ptr = tmp;
	g_string_append (string, text);
	g_string_append (string, ptr);
	g_free (otext);

	/*g_print ("RAW: [%s]", string->str);*/
	*virt_pos += text_length;
	text_unformat (fentry, string->str, virt_pos);
	/*g_print ("SANITIZED: [%s]", string->str);*/

	if (!test_text_validity (fentry, string->str)) {
		g_string_free (string, TRUE);
		/*g_print ("ERROR!\n");*/
		return;
	}
	ntext = text_reformat (fentry, string->str, virt_pos, (text[text_length-1] == fentry->priv->decimal_sep));
	g_string_free (string, TRUE);
	/*g_print ("NEW: [%s]\n", ntext);*/

	i = offset;
	nlen = strlen (ntext);
	gtk_editable_delete_text ((GtkEditable*) entry, offset, olen + offset);
	gtk_editable_insert_text ((GtkEditable*) entry, ntext, nlen, &i);
	g_free (ntext);
}