gchar *filter_name;
} CommandDataName;
+static void filter_got_load_error(SieveSession *session, gpointer data);
static void account_changed(GtkWidget *widget, SieveManagerPage *page);
static void sieve_manager_close(GtkWidget *widget, SieveManagerPage *page);
static gboolean sieve_manager_deleted(GtkWidget *widget, GdkEvent *event,
static void filter_add(GtkWidget *widget, SieveManagerPage *page)
{
SieveSession *session = page->active_session;
+ SieveEditorPage *editor;
if (!session)
return;
gchar *filter_name = input_dialog(_("Add Sieve script"),
if (!filter_name || !filter_name[0])
return;
- sieve_editor_show(sieve_editor_new(session, filter_name));
- /*
- sieve_session_add_script(session, filter_name
- (sieve_session_data_cb_fn)filter_added, (gpointer)page);
- */
+ editor = sieve_editor_get(session, filter_name);
+ if (editor) {
+ /* TODO: show error that filter already exists */
+ sieve_editor_present(editor);
+ g_free(filter_name);
+ sieve_editor_load(editor,
+ (sieve_session_cb_fn)filter_got_load_error, page);
+ } else {
+ editor = sieve_editor_new(session, filter_name);
+ editor->is_new = TRUE;
+ sieve_editor_show(editor);
+ }
}
static void filter_got_load_error(SieveSession *session, gpointer data)
}
static void filter_activated(SieveSession *session, gboolean abort,
- gboolean success, CommandDataName *cmd_data)
+ const gchar *err, CommandDataName *cmd_data)
{
SieveManagerPage *page = cmd_data->page;
GSList *cur;
if (abort) {
- } else if (!success) {
- got_session_error(session, "Unable to set active script", page);
+ } else if (err) {
+ got_session_error(session, err, page);
} else {
manager_sessions_foreach(cur, session, page) {
filter_set_active(page, cmd_data->filter_name);
{
GtkTreeViewColumn *column;
GtkCellRenderer *renderer;
+ GtkWidget *label;
/* Name */
renderer = gtk_cell_renderer_text_new();
NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(list_view), column);
gtk_tree_view_column_set_alignment (column, 0.5);
- CLAWS_SET_TIP(gtk_tree_view_column_get_widget(column),
+
+ /* the column header needs a widget to have a tooltip */
+ label = gtk_label_new(gtk_tree_view_column_get_title(column));
+ gtk_widget_show(label);
+ gtk_tree_view_column_set_widget(column, label);
+ CLAWS_SET_TIP(label,
_("An account can only have one active script at a time."));
+
g_signal_connect(G_OBJECT(renderer), "toggled",
G_CALLBACK(filter_active_toggled), page);
{
SieveManagerPage *page;
GtkWidget *window;
- GtkWidget *hbox, *vbox, *vbox_buttons;
+ GtkWidget *hbox, *vbox, *vbox_allbuttons, *vbox_buttons;
GtkWidget *accounts_menu;
GtkWidget *label;
GtkWidget *scrolledwin;
GDK_HINT_MIN_SIZE);
gtk_widget_set_size_request(window, sieve_config.manager_win_width,
sieve_config.manager_win_height);
+ gtk_window_set_type_hint(GTK_WINDOW(window),
+ GDK_WINDOW_TYPE_HINT_DIALOG);
vbox = gtk_vbox_new (FALSE, 10);
gtk_container_add (GTK_CONTAINER (window), vbox);
/* Buttons */
+ vbox_allbuttons = gtk_vbox_new (FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox), vbox_allbuttons, FALSE, FALSE, 0);
+
+ /* buttons that depend on there being a connection */
vbox_buttons = gtk_vbox_new (FALSE, 8);
gtk_widget_set_sensitive(vbox_buttons, FALSE);
- gtk_box_pack_start (GTK_BOX (hbox), vbox_buttons, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (vbox_allbuttons), vbox_buttons, FALSE, FALSE, 0);
/* new */
btn = gtk_button_new_from_stock(GTK_STOCK_NEW);
G_CALLBACK (filter_delete), page);
/* rename */
- btn = gtk_button_new_with_label("Rename");
+ btn = gtk_button_new_with_label(_("Rename"));
gtk_box_pack_start (GTK_BOX (vbox_buttons), btn, FALSE, FALSE, 0);
g_signal_connect (G_OBJECT(btn), "clicked",
G_CALLBACK (filter_rename), page);
/* refresh */
btn = gtk_button_new_from_stock(GTK_STOCK_REFRESH);
- gtk_box_pack_end (GTK_BOX (vbox_buttons), btn, FALSE, FALSE, 0);
+ gtk_box_pack_end (GTK_BOX (vbox_allbuttons), btn, FALSE, FALSE, 0);
g_signal_connect (G_OBJECT(btn), "clicked",
G_CALLBACK (account_changed), page);
manager_pages = g_slist_prepend(manager_pages, page);
gtk_widget_show_all(page->window);
}
+
+void sieve_manager_script_created(SieveSession *session, const gchar *name)
+{
+ SieveManagerPage *page;
+ SieveScript script = {.name = (gchar *)name};
+ GSList *cur;
+
+ manager_sessions_foreach(cur, session, page) {
+ filters_list_insert_filter(page, &script);
+ }
+}