Moved over from event-editor-utils.c. (e_dialog_editable_get): Likewise.
2000-05-27 Federico Mena Quintero <federico@helixcode.com> * e-dialog-widgets.c (e_dialog_editable_set): Moved over from event-editor-utils.c. (e_dialog_editable_get): Likewise. (e_dialog_toggle_set): Likewise. (e_dialog_toggle_get): Likewise. (e_dialog_spin_set): Likewise. (e_dialog_spin_get_double): Likewise. (e_dialog_spin_get_int): Likewise. (e_dialog_option_menu_set): Likewise, and added a value map. (e_dialog_option_menu_get): Likewise. (e_dialog_dateedit_set): Likewise. (e_dialog_dateedit_get): Likewise. (e_dialog_radio_set): New function. (e_dialog_radio_get): New function. svn path=/trunk/; revision=3232
This commit is contained in:
committed by
Federico Mena Quintero
parent
c5cf5131ea
commit
d206a2e89b
@ -1,3 +1,20 @@
|
||||
2000-05-27 Federico Mena Quintero <federico@helixcode.com>
|
||||
|
||||
* e-dialog-widgets.c (e_dialog_editable_set): Moved over from
|
||||
event-editor-utils.c.
|
||||
(e_dialog_editable_get): Likewise.
|
||||
(e_dialog_toggle_set): Likewise.
|
||||
(e_dialog_toggle_get): Likewise.
|
||||
(e_dialog_spin_set): Likewise.
|
||||
(e_dialog_spin_get_double): Likewise.
|
||||
(e_dialog_spin_get_int): Likewise.
|
||||
(e_dialog_option_menu_set): Likewise, and added a value map.
|
||||
(e_dialog_option_menu_get): Likewise.
|
||||
(e_dialog_dateedit_set): Likewise.
|
||||
(e_dialog_dateedit_get): Likewise.
|
||||
(e_dialog_radio_set): New function.
|
||||
(e_dialog_radio_get): New function.
|
||||
|
||||
2000-05-24 Christopher James Lahey <clahey@helixcode.com>
|
||||
|
||||
* e-paned.c, e-paned.h: Removed.
|
||||
|
||||
@ -20,12 +20,15 @@
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <math.h>
|
||||
#include <time.h>
|
||||
#include <gtk/gtkmenu.h>
|
||||
#include <gtk/gtkmenuitem.h>
|
||||
#include <gtk/gtkoptionmenu.h>
|
||||
#include <gtk/gtkradiobutton.h>
|
||||
#include <gtk/gtksignal.h>
|
||||
#include <gtk/gtkspinbutton.h>
|
||||
#include <libgnomeui/gnome-dateedit.h>
|
||||
#include "e-dialog-widgets.h"
|
||||
|
||||
|
||||
@ -354,9 +357,9 @@ get_spin_button_value (GtkSpinButton *spin, gpointer value_var, gpointer info)
|
||||
*value = adj->value;
|
||||
}
|
||||
|
||||
/* Callback for the "changed" signal of an entry widget */
|
||||
/* Callback for the "changed" signal of a GtkEditable widget */
|
||||
static void
|
||||
changed_cb (GtkEntry *entry, gpointer data)
|
||||
changed_cb (GtkEditable *editable, gpointer data)
|
||||
{
|
||||
GnomePropertyBox *pbox;
|
||||
|
||||
@ -364,27 +367,34 @@ changed_cb (GtkEntry *entry, gpointer data)
|
||||
gnome_property_box_changed (pbox);
|
||||
}
|
||||
|
||||
/* Hooks an entry widget */
|
||||
/* Hooks a GtkEditable widget */
|
||||
static void
|
||||
hook_entry (GtkWidget *dialog, GtkEntry *entry, gpointer value_var, gpointer info)
|
||||
hook_editable (GtkWidget *dialog, GtkEditable *editable, gpointer value_var, gpointer info)
|
||||
{
|
||||
char **value;
|
||||
gint pos;
|
||||
|
||||
/* Set the value */
|
||||
|
||||
value = (char **) value_var;
|
||||
gtk_entry_set_text (entry, *value);
|
||||
|
||||
pos = 0;
|
||||
gtk_editable_delete_text (editable, 0, -1);
|
||||
|
||||
/* Take NULL as empty string */
|
||||
if (*value)
|
||||
gtk_editable_insert_text (editable, *value, strlen (*value), &pos);
|
||||
|
||||
/* Hook to changed */
|
||||
|
||||
if (GNOME_IS_PROPERTY_BOX (dialog))
|
||||
gtk_signal_connect (GTK_OBJECT (entry), "changed",
|
||||
gtk_signal_connect (GTK_OBJECT (editable), "changed",
|
||||
GTK_SIGNAL_FUNC (changed_cb), dialog);
|
||||
}
|
||||
|
||||
/* Gets the value of an entry widget */
|
||||
/* Gets the value of a GtkEditable widget */
|
||||
static void
|
||||
get_entry_value (GtkEntry *entry, gpointer value_var, gpointer data)
|
||||
get_editable_value (GtkEditable *editable, gpointer value_var, gpointer data)
|
||||
{
|
||||
char **value;
|
||||
|
||||
@ -392,7 +402,221 @@ get_entry_value (GtkEntry *entry, gpointer value_var, gpointer data)
|
||||
if (*value)
|
||||
g_free (*value);
|
||||
|
||||
*value = g_strdup (gtk_entry_get_text (entry));
|
||||
*value = gtk_editable_get_chars (editable, 0, -1);
|
||||
}
|
||||
|
||||
void
|
||||
e_dialog_editable_set (GtkWidget *widget, char *value)
|
||||
{
|
||||
g_return_if_fail (widget != NULL);
|
||||
g_return_if_fail (GTK_IS_EDITABLE (widget));
|
||||
|
||||
gtk_editable_delete_text (GTK_EDITABLE (widget), 0, -1);
|
||||
|
||||
if (value) {
|
||||
gint pos;
|
||||
|
||||
pos = 0;
|
||||
gtk_editable_insert_text (GTK_EDITABLE (widget), value, strlen (value), &pos);
|
||||
}
|
||||
}
|
||||
|
||||
char *
|
||||
e_dialog_editable_get (GtkWidget *widget)
|
||||
{
|
||||
g_return_val_if_fail (widget != NULL, NULL);
|
||||
g_return_val_if_fail (GTK_IS_EDITABLE (widget), NULL);
|
||||
|
||||
return gtk_editable_get_chars (GTK_EDITABLE (widget), 0, -1);
|
||||
}
|
||||
|
||||
void
|
||||
e_dialog_radio_set (GtkWidget *widget, int value, const int *value_map)
|
||||
{
|
||||
GSList *group;
|
||||
int i;
|
||||
GSList *l;
|
||||
|
||||
g_return_if_fail (widget != NULL);
|
||||
g_return_if_fail (GTK_IS_RADIO_BUTTON (widget));
|
||||
g_return_if_fail (value_map != NULL);
|
||||
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (widget));
|
||||
|
||||
i = value_to_index (value_map, value);
|
||||
if (i != -1) {
|
||||
l = g_slist_nth (group, i);
|
||||
if (!l)
|
||||
g_message ("e_dialog_radio_set(): could not find index %d in radio group!",
|
||||
i);
|
||||
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (l->data), TRUE);
|
||||
} else
|
||||
g_message ("e_dialog_radio_set(): could not find value %d in value map!",
|
||||
value);
|
||||
}
|
||||
|
||||
int
|
||||
e_dialog_radio_get (GtkWidget *widget, const int *value_map)
|
||||
{
|
||||
GSList *group;
|
||||
GSList *l;
|
||||
int i;
|
||||
int v;
|
||||
|
||||
g_return_val_if_fail (widget != NULL, -1);
|
||||
g_return_val_if_fail (GTK_IS_RADIO_BUTTON (widget), -1);
|
||||
g_return_val_if_fail (value_map != NULL, -1);
|
||||
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (widget));
|
||||
|
||||
for (i = 0, l = group; l; l = l->next) {
|
||||
widget = GTK_WIDGET (l->data);
|
||||
|
||||
if (GTK_TOGGLE_BUTTON (widget)->active)
|
||||
break;
|
||||
}
|
||||
|
||||
if (!l)
|
||||
g_assert_not_reached ();
|
||||
|
||||
v = index_to_value (value_map, i);
|
||||
if (v == -1) {
|
||||
g_message ("e_dialog_radio_get(): could not find index %d in value map!", i);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
void
|
||||
e_dialog_toggle_set (GtkWidget *widget, gboolean value)
|
||||
{
|
||||
g_return_if_fail (widget != NULL);
|
||||
g_return_if_fail (GTK_IS_TOGGLE_BUTTON (widget));
|
||||
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), value);
|
||||
}
|
||||
|
||||
gboolean
|
||||
e_dialog_toggle_get (GtkWidget *widget)
|
||||
{
|
||||
g_return_val_if_fail (widget != NULL, FALSE);
|
||||
g_return_val_if_fail (GTK_IS_TOGGLE_BUTTON (widget), FALSE);
|
||||
|
||||
return GTK_TOGGLE_BUTTON (widget)->active;
|
||||
}
|
||||
|
||||
void
|
||||
e_dialog_spin_set (GtkWidget *widget, double value)
|
||||
{
|
||||
GtkAdjustment *adj;
|
||||
|
||||
g_return_if_fail (widget != NULL);
|
||||
g_return_if_fail (GTK_IS_SPIN_BUTTON (widget));
|
||||
|
||||
adj = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (widget));
|
||||
|
||||
adj->value = value;
|
||||
gtk_signal_emit_by_name (GTK_OBJECT (adj), "value_changed");
|
||||
}
|
||||
|
||||
double
|
||||
e_dialog_spin_get_double (GtkWidget *widget)
|
||||
{
|
||||
GtkAdjustment *adj;
|
||||
|
||||
g_return_val_if_fail (widget != NULL, 0.0);
|
||||
g_return_val_if_fail (GTK_IS_SPIN_BUTTON (widget), 0.0);
|
||||
|
||||
adj = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (widget));
|
||||
return adj->value;
|
||||
}
|
||||
|
||||
int
|
||||
e_dialog_spin_get_int (GtkWidget *widget)
|
||||
{
|
||||
double value;
|
||||
|
||||
g_return_val_if_fail (widget != NULL, -1);
|
||||
g_return_val_if_fail (GTK_IS_SPIN_BUTTON (widget), -1);
|
||||
|
||||
value = e_dialog_spin_get_double (widget);
|
||||
return (int) floor (value);
|
||||
}
|
||||
|
||||
void
|
||||
e_dialog_option_menu_set (GtkWidget *widget, int value, const int *value_map)
|
||||
{
|
||||
int i;
|
||||
|
||||
g_return_if_fail (widget != NULL);
|
||||
g_return_if_fail (GTK_IS_OPTION_MENU (widget));
|
||||
g_return_if_fail (value_map != NULL);
|
||||
|
||||
i = value_to_index (value_map, value);
|
||||
|
||||
if (i != -1)
|
||||
gtk_option_menu_set_history (GTK_OPTION_MENU (widget), i);
|
||||
else
|
||||
g_message ("e_dialog_option_menu_set(): could not find value %d in value map!",
|
||||
value);
|
||||
}
|
||||
|
||||
int
|
||||
e_dialog_option_menu_get (GtkWidget *widget, const int *value_map)
|
||||
{
|
||||
GtkMenu *menu;
|
||||
GtkWidget *active;
|
||||
GList *children;
|
||||
GList *l;
|
||||
int i;
|
||||
int v;
|
||||
|
||||
g_return_val_if_fail (widget != NULL, -1);
|
||||
g_return_val_if_fail (GTK_IS_OPTION_MENU (widget), -1);
|
||||
g_return_val_if_fail (value_map != NULL, -1);
|
||||
|
||||
menu = GTK_MENU (gtk_option_menu_get_menu (GTK_OPTION_MENU (widget)));
|
||||
|
||||
active = gtk_menu_get_active (menu);
|
||||
g_assert (active != NULL);
|
||||
|
||||
children = GTK_MENU_SHELL (menu)->children;
|
||||
|
||||
for (i = 0, l = children; l; l = l->next) {
|
||||
if (GTK_WIDGET (l->data) == active)
|
||||
break;
|
||||
}
|
||||
|
||||
if (!l)
|
||||
g_assert_not_reached ();
|
||||
|
||||
v = index_to_value (value_map, i);
|
||||
if (v == -1) {
|
||||
g_message ("e_dialog_option_menu_get(): could not find index %d in value map!", i);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
void
|
||||
e_dialog_dateedit_set (GtkWidget *widget, time_t t)
|
||||
{
|
||||
g_return_if_fail (widget != NULL);
|
||||
g_return_if_fail (GNOME_IS_DATE_EDIT (widget));
|
||||
|
||||
gnome_date_edit_set_time (GNOME_DATE_EDIT (widget), t);
|
||||
}
|
||||
|
||||
time_t
|
||||
e_dialog_dateedit_get (GtkWidget *widget)
|
||||
{
|
||||
g_return_val_if_fail (widget != NULL, -1);
|
||||
g_return_val_if_fail (GNOME_IS_DATE_EDIT (widget), -1);
|
||||
|
||||
return gnome_date_edit_get_date (GNOME_DATE_EDIT (widget));
|
||||
}
|
||||
|
||||
gboolean
|
||||
@ -421,8 +645,8 @@ e_dialog_widget_hook_value (GtkWidget *dialog, GtkWidget *widget,
|
||||
hook_toggle (dialog, GTK_TOGGLE_BUTTON (widget), value_var, info);
|
||||
else if (GTK_IS_SPIN_BUTTON (widget))
|
||||
hook_spin_button (dialog, GTK_SPIN_BUTTON (widget), value_var, info);
|
||||
else if (GTK_IS_ENTRY (widget))
|
||||
hook_entry (dialog, GTK_ENTRY (widget), value_var, info);
|
||||
else if (GTK_IS_EDITABLE (widget))
|
||||
hook_editable (dialog, GTK_EDITABLE (widget), value_var, info);
|
||||
else
|
||||
return FALSE;
|
||||
|
||||
@ -459,8 +683,8 @@ e_dialog_get_values (GtkWidget *dialog)
|
||||
get_toggle_value (GTK_TOGGLE_BUTTON (wh->widget), wh->value_var, wh->info);
|
||||
else if (GTK_IS_SPIN_BUTTON (wh->widget))
|
||||
get_spin_button_value (GTK_SPIN_BUTTON (wh->widget), wh->value_var, wh->info);
|
||||
else if (GTK_IS_ENTRY (wh->widget))
|
||||
get_entry_value (GTK_ENTRY (wh->widget), wh->value_var, wh->info);
|
||||
else if (GTK_IS_EDITABLE (wh->widget))
|
||||
get_editable_value (GTK_EDITABLE (wh->widget), wh->value_var, wh->info);
|
||||
else
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
|
||||
@ -22,11 +22,31 @@
|
||||
#ifndef E_DIALOG_WIDGETS_H
|
||||
#define E_DIALOG_WIDGETS_H
|
||||
|
||||
#include <time.h>
|
||||
#include <glade/glade.h>
|
||||
#include <libgnomeui/gnome-propertybox.h>
|
||||
|
||||
|
||||
|
||||
void e_dialog_editable_set (GtkWidget *widget, char *value);
|
||||
char *e_dialog_editable_get (GtkWidget *widget);
|
||||
|
||||
void e_dialog_radio_set (GtkWidget *widget, int value, const int *value_map);
|
||||
int e_dialog_radio_get (GtkWidget *widget, const int *value_map);
|
||||
|
||||
void e_dialog_toggle_set (GtkWidget *widget, gboolean value);
|
||||
gboolean e_dialog_toggle_get (GtkWidget *widget);
|
||||
|
||||
void e_dialog_spin_set (GtkWidget *widget, double value);
|
||||
double e_dialog_spin_get_double (GtkWidget *widget);
|
||||
int e_dialog_spin_get_int (GtkWidget *widget);
|
||||
|
||||
void e_dialog_option_menu_set (GtkWidget *widget, int value, const int *value_map);
|
||||
int e_dialog_option_menu_get (GtkWidget *widget, const int *value_map);
|
||||
|
||||
void e_dialog_dateedit_set (GtkWidget *widget, time_t t);
|
||||
time_t e_dialog_dateedit_get (GtkWidget *widget);
|
||||
|
||||
gboolean e_dialog_widget_hook_value (GtkWidget *dialog, GtkWidget *widget,
|
||||
gpointer value_var, gpointer info);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user