convert the clist in here to a GtkTreeView. your guess is as good as mine
2002-12-18 Chris Toshok <toshok@ximian.com> * gui/component/e-address-popup.c: convert the clist in here to a GtkTreeView. your guess is as good as mine if it works (i can't test it at present) but it compiles. svn path=/trunk/; revision=19162
This commit is contained in:

committed by
Chris Toshok

parent
0f56ef44c9
commit
f38991684d
@ -1,3 +1,9 @@
|
|||||||
|
2002-12-18 Chris Toshok <toshok@ximian.com>
|
||||||
|
|
||||||
|
* gui/component/e-address-popup.c: convert the clist in here to a
|
||||||
|
GtkTreeView. your guess is as good as mine if it works (i can't
|
||||||
|
test it at present) but it compiles.
|
||||||
|
|
||||||
2002-12-18 Chris Toshok <toshok@ximian.com>
|
2002-12-18 Chris Toshok <toshok@ximian.com>
|
||||||
|
|
||||||
* gui/widgets/e-addressbook-view.c (jump_to_letters):
|
* gui/widgets/e-addressbook-view.c (jump_to_letters):
|
||||||
|
@ -68,7 +68,7 @@ struct _MiniWizard {
|
|||||||
static void
|
static void
|
||||||
mini_wizard_container_add (MiniWizard *wiz, GtkWidget *w)
|
mini_wizard_container_add (MiniWizard *wiz, GtkWidget *w)
|
||||||
{
|
{
|
||||||
GList *iter = gtk_container_children (GTK_CONTAINER (wiz->vbox));
|
GList *iter = gtk_container_get_children (GTK_CONTAINER (wiz->vbox));
|
||||||
while (iter != NULL) {
|
while (iter != NULL) {
|
||||||
GtkWidget *oldw = (GtkWidget *) iter->data;
|
GtkWidget *oldw = (GtkWidget *) iter->data;
|
||||||
iter = g_list_next (iter);
|
iter = g_list_next (iter);
|
||||||
@ -519,44 +519,57 @@ email_table_init (MiniWizard *wiz, ECard *card, const gchar *extra_address)
|
|||||||
typedef struct _CardPicker CardPicker;
|
typedef struct _CardPicker CardPicker;
|
||||||
struct _CardPicker {
|
struct _CardPicker {
|
||||||
GtkWidget *body;
|
GtkWidget *body;
|
||||||
GtkWidget *clist;
|
GtkWidget *list;
|
||||||
|
GtkListStore *model;
|
||||||
GList *cards;
|
GList *cards;
|
||||||
gchar *new_name;
|
gchar *new_name;
|
||||||
gchar *new_email;
|
gchar *new_email;
|
||||||
|
|
||||||
gint current_row;
|
ECard *current_card;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
enum {
|
||||||
card_picker_row_select_cb (GtkCList *clist, gint row, gint col, GdkEventButton *ev, gpointer closure)
|
COLUMN_ACTION,
|
||||||
|
COLUMN_CARD
|
||||||
|
};
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
card_picker_row_select_cb (GtkTreeSelection *selection,
|
||||||
|
GtkTreeModel *model,
|
||||||
|
GtkTreePath *path,
|
||||||
|
gboolean path_currently_selected,
|
||||||
|
gpointer closure)
|
||||||
{
|
{
|
||||||
MiniWizard *wiz = (MiniWizard *) closure;
|
MiniWizard *wiz = (MiniWizard *) closure;
|
||||||
CardPicker *pick = (CardPicker *) wiz->closure;
|
CardPicker *pick = (CardPicker *) wiz->closure;
|
||||||
pick->current_row = row;
|
GtkTreeIter iter;
|
||||||
|
|
||||||
|
if (path_currently_selected) {
|
||||||
|
gtk_tree_model_get_iter (model, &iter, path);
|
||||||
|
gtk_tree_model_get (model, &iter,
|
||||||
|
COLUMN_CARD, &pick->current_card,
|
||||||
|
NULL);
|
||||||
|
|
||||||
gtk_widget_set_sensitive (wiz->ok_button, TRUE);
|
gtk_widget_set_sensitive (wiz->ok_button, TRUE);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
static void
|
pick->current_card = NULL;
|
||||||
card_picker_row_unselect_cb (GtkCList *clist, gint row, gint col, GdkEventButton *ev, gpointer closure)
|
|
||||||
{
|
|
||||||
MiniWizard *wiz = (MiniWizard *) closure;
|
|
||||||
CardPicker *pick = (CardPicker *) wiz->closure;
|
|
||||||
pick->current_row = -1;
|
|
||||||
gtk_widget_set_sensitive (wiz->ok_button, FALSE);
|
gtk_widget_set_sensitive (wiz->ok_button, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
card_picker_ok_cb (MiniWizard *wiz, gpointer closure)
|
card_picker_ok_cb (MiniWizard *wiz, gpointer closure)
|
||||||
{
|
{
|
||||||
CardPicker *pick = (CardPicker *) closure;
|
CardPicker *pick = (CardPicker *) closure;
|
||||||
g_return_if_fail (pick->current_row >= 0);
|
|
||||||
|
|
||||||
if (pick->current_row == 0) {
|
if (pick->current_card == NULL) {
|
||||||
e_contact_quick_add (pick->new_name, pick->new_email, NULL, NULL);
|
e_contact_quick_add (pick->new_name, pick->new_email, NULL, NULL);
|
||||||
mini_wizard_destroy (wiz);
|
mini_wizard_destroy (wiz);
|
||||||
} else {
|
} else {
|
||||||
ECard *card = (ECard *) g_list_nth_data (pick->cards, pick->current_row-1);
|
email_table_init (wiz, pick->current_card, pick->new_email);
|
||||||
email_table_init (wiz, card, pick->new_email);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -578,20 +591,34 @@ card_picker_init (MiniWizard *wiz, const GList *cards, const gchar *new_name, co
|
|||||||
CardPicker *pick;
|
CardPicker *pick;
|
||||||
gchar *str;
|
gchar *str;
|
||||||
GtkWidget *w, *swin;
|
GtkWidget *w, *swin;
|
||||||
|
GtkTreeIter iter;
|
||||||
|
|
||||||
pick = g_new (CardPicker, 1);
|
pick = g_new (CardPicker, 1);
|
||||||
|
|
||||||
pick->body = gtk_vbox_new (FALSE, 2);
|
pick->body = gtk_vbox_new (FALSE, 2);
|
||||||
|
|
||||||
pick->clist = gtk_clist_new (1);
|
pick->model = gtk_list_store_new (2,
|
||||||
gtk_clist_set_column_title (GTK_CLIST (pick->clist), 0, _("Select an Action"));
|
G_TYPE_STRING, G_TYPE_POINTER,
|
||||||
gtk_clist_column_titles_show (GTK_CLIST (pick->clist));
|
NULL);
|
||||||
gtk_clist_set_selection_mode (GTK_CLIST (pick->clist), GTK_SELECTION_SINGLE);
|
|
||||||
|
|
||||||
gtk_clist_freeze (GTK_CLIST (pick->clist));
|
pick->list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (pick->model));
|
||||||
|
|
||||||
|
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (pick->list), TRUE);
|
||||||
|
|
||||||
|
gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (pick->list),
|
||||||
|
COLUMN_ACTION,
|
||||||
|
_("Select an Action"),
|
||||||
|
gtk_cell_renderer_text_new (),
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (pick->list)),
|
||||||
|
GTK_SELECTION_SINGLE);
|
||||||
|
|
||||||
str = g_strdup_printf (_("Create a new contact \"%s\""), new_name);
|
str = g_strdup_printf (_("Create a new contact \"%s\""), new_name);
|
||||||
gtk_clist_append (GTK_CLIST (pick->clist), &str);
|
gtk_list_store_append (pick->model, &iter);
|
||||||
|
gtk_list_store_set (pick->model, &iter,
|
||||||
|
str, NULL,
|
||||||
|
NULL);
|
||||||
g_free (str);
|
g_free (str);
|
||||||
|
|
||||||
pick->cards = NULL;
|
pick->cards = NULL;
|
||||||
@ -603,19 +630,21 @@ card_picker_init (MiniWizard *wiz, const GList *cards, const gchar *new_name, co
|
|||||||
g_object_ref (card);
|
g_object_ref (card);
|
||||||
|
|
||||||
str = g_strdup_printf (_("Add address to existing contact \"%s\""), name_str);
|
str = g_strdup_printf (_("Add address to existing contact \"%s\""), name_str);
|
||||||
gtk_clist_append (GTK_CLIST (pick->clist), &str);
|
gtk_list_store_append (pick->model, &iter);
|
||||||
|
gtk_list_store_set (pick->model, &iter,
|
||||||
|
COLUMN_ACTION, str,
|
||||||
|
COLUMN_CARD, card,
|
||||||
|
NULL);
|
||||||
g_free (name_str);
|
g_free (name_str);
|
||||||
g_free (str);
|
g_free (str);
|
||||||
|
|
||||||
cards = g_list_next (cards);
|
cards = g_list_next (cards);
|
||||||
}
|
}
|
||||||
|
|
||||||
gtk_clist_thaw (GTK_CLIST (pick->clist));
|
|
||||||
|
|
||||||
pick->new_name = g_strdup (new_name);
|
pick->new_name = g_strdup (new_name);
|
||||||
pick->new_email = g_strdup (new_email);
|
pick->new_email = g_strdup (new_email);
|
||||||
|
|
||||||
pick->current_row = -1;
|
pick->current_card = NULL;
|
||||||
gtk_widget_set_sensitive (wiz->ok_button, FALSE);
|
gtk_widget_set_sensitive (wiz->ok_button, FALSE);
|
||||||
|
|
||||||
/* Connect some signals & callbacks */
|
/* Connect some signals & callbacks */
|
||||||
@ -623,14 +652,9 @@ card_picker_init (MiniWizard *wiz, const GList *cards, const gchar *new_name, co
|
|||||||
wiz->ok_cb = card_picker_ok_cb;
|
wiz->ok_cb = card_picker_ok_cb;
|
||||||
wiz->cleanup_cb = card_picker_cleanup_cb;
|
wiz->cleanup_cb = card_picker_cleanup_cb;
|
||||||
|
|
||||||
g_signal_connect (pick->clist,
|
gtk_tree_selection_set_select_func (gtk_tree_view_get_selection (GTK_TREE_VIEW (pick->list)),
|
||||||
"select-row",
|
card_picker_row_select_cb,
|
||||||
G_CALLBACK (card_picker_row_select_cb),
|
wiz, NULL);
|
||||||
wiz);
|
|
||||||
g_signal_connect (pick->clist,
|
|
||||||
"unselect-row",
|
|
||||||
G_CALLBACK (card_picker_row_unselect_cb),
|
|
||||||
wiz);
|
|
||||||
|
|
||||||
/* Build our widget */
|
/* Build our widget */
|
||||||
|
|
||||||
@ -641,7 +665,7 @@ card_picker_init (MiniWizard *wiz, const GList *cards, const gchar *new_name, co
|
|||||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swin),
|
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swin),
|
||||||
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
|
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
|
||||||
|
|
||||||
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (swin), pick->clist);
|
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (swin), pick->list);
|
||||||
|
|
||||||
gtk_box_pack_start (GTK_BOX (pick->body), swin, TRUE, TRUE, 2);
|
gtk_box_pack_start (GTK_BOX (pick->body), swin, TRUE, TRUE, 2);
|
||||||
gtk_widget_show_all (pick->body);
|
gtk_widget_show_all (pick->body);
|
||||||
|
Reference in New Issue
Block a user