3 void category_manager_delete_item(GtkWidget
*button
, GtkWidget
*treeview
);
4 void category_manager_add_item(GtkWidget
*button
, GtkWidget
*treeview
);
5 void category_manager_move_item_up(GtkWidget
*button
, GtkWidget
*treeview
);
6 void category_manager_move_item_down(GtkWidget
*button
, GtkWidget
*treeview
);
7 void tree_edited_string(GtkCellRendererText
*cell
, const char *path_string
, const char *new_text
, GtkWidget
*treeview
);
9 void category_manager(void)
12 GtkWidget
*hbox
, *vbutbox
, *treeview
, *sw
;
14 GtkTreeViewColumn
*column
;
16 GtkCellRenderer
*renderer
;
17 GtkWidget
*newb
, *deleteb
, *upb
, *downb
;
19 gtodo_client_block_changed_callback(cl
);
20 dialog
= gtk_dialog_new_with_buttons(_("Edit Categories"), GTK_WINDOW(mw
.window
),
21 GTK_DIALOG_MODAL
| GTK_DIALOG_DESTROY_WITH_PARENT
| GTK_DIALOG_NO_SEPARATOR
,
22 GTK_STOCK_CLOSE
, GTK_RESPONSE_CANCEL
,
25 hbox
= gtk_hbox_new(FALSE
,12);
26 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog
)->vbox
), hbox
);
27 gtk_container_set_border_width(GTK_CONTAINER(hbox
), 6);
30 list
= gtk_list_store_new(2, G_TYPE_STRING
, G_TYPE_BOOLEAN
);
31 treeview
= gtk_tree_view_new_with_model(GTK_TREE_MODEL(list
));
32 gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(treeview
), TRUE
);
33 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview
), FALSE
);
35 renderer
= gtk_cell_renderer_text_new();
36 column
= gtk_tree_view_column_new_with_attributes(_("Category"), renderer
, "text" , 0, "editable", 1, NULL
);
37 gtk_tree_view_append_column(GTK_TREE_VIEW(treeview
), column
);
39 g_signal_connect(G_OBJECT(renderer
), "edited", G_CALLBACK(tree_edited_string
), treeview
);
41 sw
= gtk_scrolled_window_new(NULL
, NULL
);
42 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw
), GTK_POLICY_NEVER
, GTK_POLICY_AUTOMATIC
);
43 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw
), GTK_SHADOW_ETCHED_IN
);
44 gtk_container_add(GTK_CONTAINER(sw
), treeview
);
46 gtk_box_pack_start(GTK_BOX(hbox
), sw
, TRUE
, TRUE
, 0);
49 vbutbox
= gtk_vbutton_box_new();
50 gtk_button_box_set_layout(GTK_BUTTON_BOX(vbutbox
), GTK_BUTTONBOX_START
);
51 gtk_button_box_set_spacing(GTK_BUTTON_BOX(vbutbox
), 6);
52 gtk_box_pack_start(GTK_BOX(hbox
), vbutbox
, FALSE
, TRUE
, 0);
55 newb
= gtk_button_new_from_stock(GTK_STOCK_NEW
);
57 deleteb
= gtk_button_new_from_stock(GTK_STOCK_DELETE
);
59 upb
= gtk_button_new_from_stock(GTK_STOCK_GO_UP
);
60 downb
= gtk_button_new_from_stock(GTK_STOCK_GO_DOWN
);
61 g_signal_connect(G_OBJECT(deleteb
), "clicked", G_CALLBACK(category_manager_delete_item
), treeview
);
62 g_signal_connect(G_OBJECT(newb
), "clicked", G_CALLBACK(category_manager_add_item
), treeview
);
63 g_signal_connect(G_OBJECT(upb
), "clicked", G_CALLBACK(category_manager_move_item_up
), treeview
);
64 g_signal_connect(G_OBJECT(downb
), "clicked", G_CALLBACK(category_manager_move_item_down
), treeview
);
65 gtk_box_pack_start(GTK_BOX(vbutbox
), newb
, FALSE
, FALSE
,6);
66 gtk_box_pack_start(GTK_BOX(vbutbox
), deleteb
, FALSE
, FALSE
,6);
67 gtk_box_pack_start(GTK_BOX(vbutbox
), gtk_hseparator_new(), FALSE
, FALSE
,6);
68 gtk_box_pack_start(GTK_BOX(vbutbox
), upb
, FALSE
, FALSE
,6);
69 gtk_box_pack_start(GTK_BOX(vbutbox
), downb
, FALSE
, FALSE
,6);
70 /* add the categorys */
71 for(i
=0; i
< categorys
; i
++)
73 gtk_list_store_append(list
, &iter
);
74 gtk_list_store_set(list
, &iter
, 0, mw
.mitems
[i
]->date
, 1, 1, -1);
77 gtk_widget_set_usize(GTK_WIDGET(dialog
), 350, 250);
78 gtk_widget_show_all(dialog
);
79 gtk_dialog_run(GTK_DIALOG(dialog
));
80 gtk_widget_destroy(dialog
);
82 gtodo_client_unblock_changed_callback(cl
);
86 void category_manager_move_item_up(GtkWidget
*button
, GtkWidget
*treeview
)
88 GtkTreeSelection
*selection
;
89 GtkTreeModel
*model
= gtk_tree_view_get_model(GTK_TREE_VIEW(treeview
));
91 GtkTreeIter iter
, iterb
;
94 selection
= gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview
));
95 if(!gtk_tree_selection_get_selected(selection
, &model
, &iter
))return;
96 gtk_tree_model_get(model
, &iter
, 0, &category
, -1);
97 patha
= gtk_tree_model_get_path(model
, &iter
);
98 if(!gtk_tree_path_prev(patha
)) return;
99 if(!gtk_tree_model_get_iter(model
, &iterb
, patha
))
101 gtk_tree_path_free(patha
);
104 gtk_tree_path_free(patha
);
106 gtodo_client_category_move_up(cl
, category
);
107 gtk_list_store_swap(GTK_LIST_STORE(model
), &iterb
, &iter
);
110 void category_manager_move_item_down(GtkWidget
*button
, GtkWidget
*treeview
)
112 GtkTreeSelection
*selection
;
113 GtkTreeModel
*model
= gtk_tree_view_get_model(GTK_TREE_VIEW(treeview
));
115 GtkTreeIter iter
, iterb
;
118 selection
= gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview
));
119 if(!gtk_tree_selection_get_selected(selection
, &model
, &iter
))return;
120 gtk_tree_model_get(model
, &iter
, 0, &category
, -1);
121 patha
= gtk_tree_model_get_path(model
, &iter
);
122 gtk_tree_path_next(patha
);
123 if(!gtk_tree_model_get_iter(model
, &iterb
, patha
))
125 gtk_tree_path_free(patha
);
128 gtk_tree_path_free(patha
);
130 gtodo_client_category_move_down(cl
, category
);
131 gtk_list_store_swap(GTK_LIST_STORE(model
), &iterb
, &iter
);
134 void category_manager_delete_item(GtkWidget
*button
, GtkWidget
*treeview
)
136 GtkTreeSelection
*selection
;
137 GtkTreeModel
*model
= gtk_tree_view_get_model(GTK_TREE_VIEW(treeview
));
139 gchar
*tm
= NULL
, *category
;
141 selection
= gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview
));
142 if(!gtk_tree_selection_get_selected(selection
, &model
, &iter
))return;
143 gtk_tree_model_get(model
, &iter
, 0, &category
, -1);
145 tm
= g_strdup_printf(_("When you delete the category \"%s\", all containing items are lost"), category
);
146 if(!message_box(tm
,_("Delete"),GTK_MESSAGE_WARNING
))
152 gtodo_client_category_remove(cl
, category
);
153 gtk_list_store_remove(GTK_LIST_STORE(model
), &iter
);
157 void category_manager_add_item(GtkWidget
*button
, GtkWidget
*treeview
)
159 GtkTreeModel
*model
= gtk_tree_view_get_model(GTK_TREE_VIEW(treeview
));
161 GtkTreeSelection
*selection
;
164 gtk_list_store_append(GTK_LIST_STORE(model
), &iter
);
166 gtk_list_store_set(GTK_LIST_STORE(model
), &iter
, 0, _("enter name"), 1, 1, -1);
168 selection
= gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview
));
169 gtk_tree_selection_select_iter(selection
, &iter
);
170 path
= gtk_tree_model_get_path(model
, &iter
);
171 gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(treeview
),path
, NULL
, FALSE
, 0, 0);
172 gtk_tree_view_set_cursor(GTK_TREE_VIEW(treeview
), path
, gtk_tree_view_get_column(GTK_TREE_VIEW(treeview
), 0), TRUE
);
173 gtk_tree_path_free(path
);
174 gtodo_client_category_new(cl
, _("enter name"));
177 void tree_edited_string(GtkCellRendererText
*cell
, const char *path_string
, const char *new_text
, GtkWidget
*treeview
)
181 GtkTreeModel
*model
= gtk_tree_view_get_model(GTK_TREE_VIEW(treeview
));
182 GtkTreePath
*path
= gtk_tree_path_new_from_string(path_string
);
184 gtk_tree_model_get_iter (model
, &iter
, path
);
185 gtk_tree_path_free(path
);
186 gtk_tree_model_get(model
, &iter
, 0, &name
, -1);
187 gtk_list_store_set(GTK_LIST_STORE(model
), &iter
, 0, new_text
, -1);
188 gtodo_client_category_edit(cl
, name
, (gchar
*)new_text
);