Added an MailAccountEditorNews, for NNTP configuratuion. Based on
2001-07-02 Sam Creasey <sammy@oh.verio.com> * mail-account-editor-news.c: Added an MailAccountEditorNews, for NNTP configuratuion. Based on MailAccountEditor, but stripped. * Makefile.am: added mail-account-editor-news.c and mail-account-editor-news.h to SOURCES if ENABLE_NNTP is defined. * mail-accounts.c (load_news): Moved this function, and fixed some slight brokenness. (news_edit): Added functional code using MailAccountEditorNews (news_add): Added functional code using news_edit after allocation. * mail-config.glade: news_editor_window widget added. Used by MailAccountEditorNews. * mail-display.c (save_data_cb): Store the pathname used when saving messages so that the next save box will default to the previous path. * message-browser.c (message_browser_new): add signal handler for size_allocate on the message browser. Thus new windows are size as they were last allocated. (message_browser_size_allocate_cb): handler to store allocations. * message-list.c (message_list_setup_etree): connect to the info_changed signals for the state of the message_list->tree. Save the folder state to disk, so that when additional message_lists are created, they are consistant. e.g. the next buttons do the same thing in the browser, and in the message viewer after changing sorting options. * subscribe-dialog.c (build_tree): freeze sc->folder model while building the tree. Not doing so takes a very long time over 40000 newsgroups. svn path=/trunk/; revision=10719
This commit is contained in:
@ -1,3 +1,39 @@
|
||||
2001-07-02 Sam Creasey <sammy@oh.verio.com>
|
||||
* mail-account-editor-news.c: Added an MailAccountEditorNews, for
|
||||
NNTP configuratuion. Based on MailAccountEditor, but stripped.
|
||||
|
||||
* Makefile.am: added mail-account-editor-news.c and
|
||||
mail-account-editor-news.h to SOURCES if ENABLE_NNTP is defined.
|
||||
|
||||
* mail-accounts.c (load_news): Moved this function, and fixed some
|
||||
slight brokenness.
|
||||
(news_edit): Added functional code using MailAccountEditorNews
|
||||
(news_add): Added functional code using news_edit after
|
||||
allocation.
|
||||
|
||||
* mail-config.glade: news_editor_window widget added. Used by
|
||||
MailAccountEditorNews.
|
||||
|
||||
* mail-display.c (save_data_cb): Store the pathname used when
|
||||
saving messages so that the next save box will default to the
|
||||
previous path.
|
||||
|
||||
* message-browser.c (message_browser_new): add signal handler for
|
||||
size_allocate on the message browser. Thus new windows are size
|
||||
as they were last allocated.
|
||||
(message_browser_size_allocate_cb): handler to store allocations.
|
||||
|
||||
* message-list.c (message_list_setup_etree): connect to the
|
||||
info_changed signals for the state of the message_list->tree.
|
||||
Save the folder state to disk, so that when additional
|
||||
message_lists are created, they are consistant. e.g. the next
|
||||
buttons do the same thing in the browser, and in the message
|
||||
viewer after changing sorting options.
|
||||
|
||||
* subscribe-dialog.c (build_tree): freeze sc->folder model while
|
||||
building the tree. Not doing so takes a very long time over 40000
|
||||
newsgroups.
|
||||
|
||||
2001-07-02 Jeffrey Stedfast <fejj@ximian.com>
|
||||
|
||||
* mail-accounts.c (construct): Setup the Empty Trash On Exit
|
||||
|
@ -35,8 +35,16 @@ EVOLUTION_MAIL_CORBA_GENERATED = \
|
||||
Mail-skels.c \
|
||||
Mail-stubs.c
|
||||
|
||||
if ENABLE_NNTP
|
||||
EVOLUTION_MAIL_NNTP = \
|
||||
mail-account-editor-news.c \
|
||||
mail-account-editor-news.h
|
||||
endif
|
||||
|
||||
|
||||
evolution_mail_SOURCES = \
|
||||
$(EVOLUTION_MAIL_CORBA_GENERATED) \
|
||||
$(EVOLUTION_MAIL_NNTP) \
|
||||
component-factory.c \
|
||||
component-factory.h \
|
||||
e-searching-tokenizer.c \
|
||||
|
193
mail/mail-account-editor-news.c
Normal file
193
mail/mail-account-editor-news.c
Normal file
@ -0,0 +1,193 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
||||
/*
|
||||
* Cloned from mail-account-editor by Sam Creasey <sammy@oh.verio.com>
|
||||
*
|
||||
* Authors:
|
||||
* Jeffrey Stedfast <fejj@ximian.com>
|
||||
* Dan Winship <danw@ximian.com>
|
||||
*
|
||||
* Copyright 2001 Ximian, Inc. (www.ximian.com)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <libgnomeui/gnome-messagebox.h>
|
||||
#include <libgnomeui/gnome-stock.h>
|
||||
#include <camel/camel-url.h>
|
||||
#include <gal/widgets/e-unicode.h>
|
||||
#include <gal/widgets/e-gui-utils.h>
|
||||
|
||||
#include "mail-account-editor-news.h"
|
||||
#include "mail-session.h"
|
||||
|
||||
static void mail_account_editor_news_class_init (MailAccountEditorNewsClass *class);
|
||||
static void mail_account_editor_news_finalize (GtkObject *obj);
|
||||
|
||||
static GnomeDialogClass *parent_class;
|
||||
|
||||
|
||||
GtkType
|
||||
mail_account_editor_news_get_type ()
|
||||
{
|
||||
static GtkType type = 0;
|
||||
|
||||
if (!type) {
|
||||
GtkTypeInfo type_info = {
|
||||
"MailAccountEditorNews",
|
||||
sizeof (MailAccountEditorNews),
|
||||
sizeof (MailAccountEditorNewsClass),
|
||||
(GtkClassInitFunc) mail_account_editor_news_class_init,
|
||||
(GtkObjectInitFunc) NULL,
|
||||
(GtkArgSetFunc) NULL,
|
||||
(GtkArgGetFunc) NULL
|
||||
};
|
||||
|
||||
type = gtk_type_unique (gnome_dialog_get_type (), &type_info);
|
||||
}
|
||||
|
||||
return type;
|
||||
}
|
||||
|
||||
static void
|
||||
mail_account_editor_news_class_init (MailAccountEditorNewsClass *class)
|
||||
{
|
||||
GtkObjectClass *object_class;
|
||||
|
||||
object_class = (GtkObjectClass *) class;
|
||||
parent_class = gtk_type_class (gnome_dialog_get_type ());
|
||||
|
||||
object_class->finalize = mail_account_editor_news_finalize;
|
||||
}
|
||||
|
||||
static void
|
||||
mail_account_editor_news_finalize (GtkObject *obj)
|
||||
{
|
||||
MailAccountEditorNews *editor = (MailAccountEditorNews *) obj;
|
||||
|
||||
gtk_object_unref (GTK_OBJECT (editor->xml));
|
||||
|
||||
((GtkObjectClass *)(parent_class))->finalize (obj);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
apply_changes(MailAccountEditorNews *editor)
|
||||
{
|
||||
|
||||
CamelURL *url;
|
||||
GtkEntry *service_ent;
|
||||
|
||||
service_ent = GTK_ENTRY(glade_xml_get_widget(editor->xml, "source_name"));
|
||||
url = g_new0 (CamelURL, 1);
|
||||
|
||||
url->protocol = g_strdup("nntp");
|
||||
url->host = g_strdup(gtk_entry_get_text(service_ent));
|
||||
if(strlen(url->host) == 0) {
|
||||
e_notice (NULL, GNOME_MESSAGE_BOX_ERROR, _("You have not filled in all of the required information."));
|
||||
camel_url_free(url);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if(editor->service->url == NULL)
|
||||
mail_config_add_news(editor->service);
|
||||
|
||||
editor->service->url = camel_url_to_string(url, 0);
|
||||
|
||||
mail_config_write();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
apply_clicked (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
MailAccountEditorNews *editor = data;
|
||||
|
||||
apply_changes (editor);
|
||||
}
|
||||
|
||||
static void
|
||||
ok_clicked (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
MailAccountEditorNews *editor = data;
|
||||
|
||||
if (apply_changes (editor))
|
||||
gtk_widget_destroy (GTK_WIDGET (editor));
|
||||
}
|
||||
|
||||
static void
|
||||
cancel_clicked (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
MailAccountEditorNews *editor = data;
|
||||
|
||||
gtk_widget_destroy (GTK_WIDGET (editor));
|
||||
}
|
||||
|
||||
MailAccountEditorNews *
|
||||
mail_account_editor_news_new (MailConfigService *service)
|
||||
{
|
||||
MailAccountEditorNews *editor;
|
||||
GtkEntry *service_ent;
|
||||
|
||||
editor = (MailAccountEditorNews *) gtk_type_new (mail_account_editor_news_get_type ());
|
||||
|
||||
editor->service = service;
|
||||
editor->xml = glade_xml_new (EVOLUTION_GLADEDIR "/mail-config.glade", NULL);
|
||||
|
||||
/* get our toplevel widget and reparent it */
|
||||
editor->notebook = GTK_NOTEBOOK (glade_xml_get_widget (editor->xml, "news_editor_notebook"));
|
||||
gtk_widget_reparent (GTK_WIDGET (editor->notebook), GNOME_DIALOG (editor)->vbox);
|
||||
|
||||
/* give our dialog an OK button and title */
|
||||
gtk_window_set_title (GTK_WINDOW (editor), _("Evolution News Editor"));
|
||||
gtk_window_set_policy (GTK_WINDOW (editor), FALSE, TRUE, TRUE);
|
||||
gtk_window_set_modal (GTK_WINDOW (editor), TRUE);
|
||||
gnome_dialog_append_buttons (GNOME_DIALOG (editor),
|
||||
GNOME_STOCK_BUTTON_OK,
|
||||
GNOME_STOCK_BUTTON_APPLY,
|
||||
GNOME_STOCK_BUTTON_CANCEL,
|
||||
NULL);
|
||||
|
||||
gnome_dialog_button_connect (GNOME_DIALOG (editor), 0 /* OK */,
|
||||
GTK_SIGNAL_FUNC (ok_clicked),
|
||||
editor);
|
||||
gnome_dialog_button_connect (GNOME_DIALOG (editor), 1 /* APPLY */,
|
||||
GTK_SIGNAL_FUNC (apply_clicked),
|
||||
editor);
|
||||
gnome_dialog_button_connect (GNOME_DIALOG (editor), 2 /* CANCEL */,
|
||||
GTK_SIGNAL_FUNC (cancel_clicked),
|
||||
editor);
|
||||
|
||||
if(service->url) {
|
||||
CamelURL *url;
|
||||
|
||||
url = camel_url_new(service->url, NULL);
|
||||
|
||||
if(url->host) {
|
||||
service_ent = GTK_ENTRY(glade_xml_get_widget(editor->xml, "source_name"));
|
||||
gtk_entry_set_text(service_ent, url->host);
|
||||
}
|
||||
|
||||
camel_url_free(url);
|
||||
}
|
||||
|
||||
return editor;
|
||||
}
|
72
mail/mail-account-editor-news.h
Normal file
72
mail/mail-account-editor-news.h
Normal file
@ -0,0 +1,72 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
|
||||
/*
|
||||
* Cloned from mail-account-editor by Sam Creasey <sammy@oh.verio.com>
|
||||
*
|
||||
* Authors: Jeffrey Stedfast <fejj@helixcode.com>
|
||||
*
|
||||
* Copyright 2001 Helix Code, Inc. (www.helixcode.com)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef MAIL_ACCOUNT_EDITOR_NEWS_H
|
||||
#define MAIL_ACCOUNT_EDITOR_NEWS_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#pragma }
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#include <libgnomeui/gnome-dialog.h>
|
||||
#include <libgnomeui/gnome-file-entry.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <glade/glade-xml.h>
|
||||
#include <camel/camel-provider.h>
|
||||
|
||||
#include "mail-config.h"
|
||||
|
||||
#define MAIL_ACCOUNT_EDITOR_NEWS_TYPE (mail_account_editor_news_get_type ())
|
||||
#define MAIL_ACCOUNT_EDITOR_NEWS(o) (GTK_CHECK_CAST ((o), MAIL_ACCOUNT_EDITOR_NEWS_TYPE, MailAccountEditorNews))
|
||||
#define MAIL_ACCOUNT_EDITOR_NEWS_CLASS(k) (GTK_CHECK_CLASS_CAST((k), MAIL_ACCOUNT_EDITOR_NEWS_TYPE, MailAccountEditorNewsClass))
|
||||
#define MAIL_IS_ACCOUNT_EDITOR_NEWS(o) (GTK_CHECK_TYPE ((o), MAIL_ACCOUNT_EDITOR_NEWS_TYPE))
|
||||
#define MAIL_IS_ACCOUNT_EDITOR_NEWS_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), MAIL_ACCOUNT_EDITOR_NEWS_TYPE))
|
||||
|
||||
struct _MailAccountEditorNews {
|
||||
GnomeDialog parent;
|
||||
|
||||
GladeXML *xml;
|
||||
MailConfigService *service;
|
||||
GtkNotebook *notebook;
|
||||
};
|
||||
|
||||
typedef struct _MailAccountEditorNews MailAccountEditorNews;
|
||||
|
||||
typedef struct {
|
||||
GnomeDialogClass parent_class;
|
||||
|
||||
/* signals */
|
||||
|
||||
} MailAccountEditorNewsClass;
|
||||
|
||||
GtkType mail_account_editor_news_get_type (void);
|
||||
|
||||
MailAccountEditorNews *mail_account_editor_news_new (MailConfigService *service);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* MAIL_ACCOUNT_EDITOR_NEWS_H */
|
@ -38,6 +38,9 @@
|
||||
#include "mail-config.h"
|
||||
#include "mail-config-druid.h"
|
||||
#include "mail-account-editor.h"
|
||||
#ifdef ENABLE_NNTP
|
||||
#include "mail-account-editor-news.h"
|
||||
#endif
|
||||
#include "mail-session.h"
|
||||
|
||||
static void mail_accounts_dialog_class_init (MailAccountsDialogClass *class);
|
||||
@ -149,50 +152,6 @@ load_accounts (MailAccountsDialog *dialog)
|
||||
mail_unselect (dialog->mail_accounts, 0, 0, NULL, dialog);
|
||||
}
|
||||
|
||||
#ifdef ENABLE_NNTP
|
||||
static void
|
||||
load_news (MailAccountsDialog *dialog)
|
||||
{
|
||||
const MailConfigAccount *account;
|
||||
const GSList *node = dialog->accounts;
|
||||
int i = 0;
|
||||
|
||||
gtk_clist_freeze (dialog->news_accounts);
|
||||
|
||||
gtk_clist_clear (dialog->news_accounts);
|
||||
|
||||
while (node) {
|
||||
CamelURL *url;
|
||||
gchar *text[3];
|
||||
|
||||
account = node->data;
|
||||
|
||||
if (account->source && account->source->url)
|
||||
url = camel_url_new (account->source->url, NULL);
|
||||
else
|
||||
url = NULL;
|
||||
|
||||
text[0] = (account->source && account->source->enabled) ? "+" : "";
|
||||
text[1] = account->name;
|
||||
text[2] = g_strdup_printf ("%s%s", url && url->protocol ? url->protocol : _("None"),
|
||||
account->default_account ? _(" (default)") : "");
|
||||
|
||||
if (url)
|
||||
camel_url_free (url);
|
||||
|
||||
gtk_clist_append (dialog->news_accounts, text);
|
||||
g_free (text[2]);
|
||||
|
||||
/* set the account on the row */
|
||||
gtk_clist_set_row_data (dialog->news_accounts, i, (gpointer) account);
|
||||
|
||||
node = node->next;
|
||||
i++;
|
||||
}
|
||||
|
||||
gtk_clist_thaw (dialog->news_accounts);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* mail callbacks */
|
||||
static void
|
||||
@ -396,6 +355,47 @@ mail_able (GtkButton *button, gpointer data)
|
||||
}
|
||||
|
||||
#ifdef ENABLE_NNTP
|
||||
static void
|
||||
load_news (MailAccountsDialog *dialog)
|
||||
{
|
||||
const MailConfigService *service;
|
||||
const GSList *node = dialog->news;
|
||||
int i = 0;
|
||||
|
||||
gtk_clist_freeze (dialog->news_accounts);
|
||||
|
||||
gtk_clist_clear (dialog->news_accounts);
|
||||
|
||||
while (node) {
|
||||
CamelURL *url;
|
||||
gchar *text[1];
|
||||
|
||||
service = node->data;
|
||||
|
||||
if (service->url)
|
||||
url = camel_url_new (service->url, NULL);
|
||||
else
|
||||
url = NULL;
|
||||
|
||||
text[0] = g_strdup_printf ("%s", url && url->host ? url->host : _("None"));
|
||||
|
||||
if (url)
|
||||
camel_url_free (url);
|
||||
|
||||
gtk_clist_append (dialog->news_accounts, text);
|
||||
g_free (text[0]);
|
||||
|
||||
/* set the account on the row */
|
||||
gtk_clist_set_row_data (dialog->news_accounts, i, (gpointer) service);
|
||||
|
||||
node = node->next;
|
||||
i++;
|
||||
}
|
||||
|
||||
gtk_clist_thaw (dialog->news_accounts);
|
||||
}
|
||||
|
||||
|
||||
/* news callbacks */
|
||||
static void
|
||||
news_select (GtkCList *clist, gint row, gint column, GdkEventButton *event, gpointer data)
|
||||
@ -418,35 +418,75 @@ news_unselect (GtkCList *clist, gint row, gint column, GdkEventButton *event, gp
|
||||
}
|
||||
|
||||
static void
|
||||
news_add_finished(GtkWidget *widget, gpointer data)
|
||||
news_editor_destroyed (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
load_news (MAIL_ACCOUNTS_DIALOG (data));
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
news_edit (GtkButton *button, gpointer data)
|
||||
{
|
||||
/* Either Cancel or Finished was clicked in the druid so reload the accounts */
|
||||
MailAccountsDialog *dialog = data;
|
||||
|
||||
dialog->accounts = mail_config_get_accounts ();
|
||||
load_accounts (dialog);
|
||||
if (dialog->news_row >= 0) {
|
||||
MailConfigService *service;
|
||||
MailAccountEditorNews *editor;
|
||||
|
||||
service = gtk_clist_get_row_data (dialog->news_accounts, dialog->news_row);
|
||||
editor = mail_account_editor_news_new (service);
|
||||
gtk_signal_connect (GTK_OBJECT (editor), "destroy",
|
||||
GTK_SIGNAL_FUNC (news_editor_destroyed),
|
||||
dialog);
|
||||
gtk_widget_show (GTK_WIDGET (editor));
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
news_add_destroyed (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
|
||||
gpointer *send = data;
|
||||
MailAccountsDialog *dialog;
|
||||
MailConfigService *service;
|
||||
GSList *mini;
|
||||
|
||||
service = send[0];
|
||||
dialog = send[1];
|
||||
g_free(send);
|
||||
|
||||
dialog->news = mail_config_get_news ();
|
||||
load_news (dialog);
|
||||
|
||||
mini = g_slist_prepend(NULL, service);
|
||||
mail_load_storages(dialog->shell, mini, FALSE);
|
||||
g_slist_free(mini);
|
||||
|
||||
dialog->news = mail_config_get_news ();
|
||||
load_news (dialog);
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
news_add (GtkButton *button, gpointer data)
|
||||
{
|
||||
MailAccountsDialog *dialog = data;
|
||||
MailConfigDruid *druid;
|
||||
MailConfigService *service;
|
||||
MailAccountEditorNews *editor;
|
||||
gpointer *send;
|
||||
|
||||
druid = mail_config_druid_new (dialog->shell);
|
||||
gtk_signal_connect (GTK_OBJECT (druid), "destroy",
|
||||
GTK_SIGNAL_FUNC (news_add_finished), dialog);
|
||||
|
||||
gtk_widget_show (GTK_WIDGET (druid));
|
||||
}
|
||||
send = g_new(gpointer, 2);
|
||||
|
||||
static void
|
||||
news_edit (GtkButton *button, gpointer data)
|
||||
{
|
||||
MailAccountsDialog *dialog = data;
|
||||
MailConfigService *server;
|
||||
|
||||
/* FIXME: open the editor and stuff */
|
||||
service = g_new0 (MailConfigService, 1);
|
||||
service->url = NULL;
|
||||
|
||||
editor = mail_account_editor_news_new (service);
|
||||
send[0] = service;
|
||||
send[1] = dialog;
|
||||
gtk_signal_connect (GTK_OBJECT (editor), "destroy",
|
||||
GTK_SIGNAL_FUNC (news_add_destroyed),
|
||||
send);
|
||||
gtk_widget_show (GTK_WIDGET (editor));
|
||||
}
|
||||
|
||||
static void
|
||||
@ -683,7 +723,7 @@ construct (MailAccountsDialog *dialog)
|
||||
GTK_SIGNAL_FUNC (mail_able), dialog);
|
||||
|
||||
#ifdef ENABLE_NNTP
|
||||
dialog->news_accounts = GTK_CLIST (glade_xml_get_widget (gui, "clistAccounts"));
|
||||
dialog->news_accounts = GTK_CLIST (glade_xml_get_widget (gui, "clistNews"));
|
||||
gtk_signal_connect (GTK_OBJECT (dialog->news_accounts), "select-row",
|
||||
GTK_SIGNAL_FUNC (news_select), dialog);
|
||||
gtk_signal_connect (GTK_OBJECT (dialog->news_accounts), "unselect-row",
|
||||
|
@ -1937,6 +1937,120 @@ Kerberos
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkWindow</class>
|
||||
<name>news_editor_window</name>
|
||||
<visible>False</visible>
|
||||
<title>newswindow1</title>
|
||||
<type>GTK_WINDOW_TOPLEVEL</type>
|
||||
<position>GTK_WIN_POS_NONE</position>
|
||||
<modal>False</modal>
|
||||
<allow_shrink>False</allow_shrink>
|
||||
<allow_grow>True</allow_grow>
|
||||
<auto_shrink>False</auto_shrink>
|
||||
|
||||
<widget>
|
||||
<class>GtkNotebook</class>
|
||||
<name>news_editor_notebook</name>
|
||||
<can_focus>True</can_focus>
|
||||
<show_tabs>True</show_tabs>
|
||||
<show_border>True</show_border>
|
||||
<tab_pos>GTK_POS_TOP</tab_pos>
|
||||
<scrollable>False</scrollable>
|
||||
<tab_hborder>2</tab_hborder>
|
||||
<tab_vborder>2</tab_vborder>
|
||||
<popup_enable>False</popup_enable>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>source_vbox</name>
|
||||
<border_width>4</border_width>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>4</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkFrame</class>
|
||||
<name>source_frame</name>
|
||||
<border_width>3</border_width>
|
||||
<label>Source Information</label>
|
||||
<label_xalign>0</label_xalign>
|
||||
<shadow_type>GTK_SHADOW_ETCHED_IN</shadow_type>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkVBox</class>
|
||||
<name>vbox31</name>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>0</spacing>
|
||||
|
||||
<widget>
|
||||
<class>GtkHBox</class>
|
||||
<name>hbox24</name>
|
||||
<border_width>3</border_width>
|
||||
<homogeneous>False</homogeneous>
|
||||
<spacing>5</spacing>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<name>source_name_label</name>
|
||||
<label>NNTP Server:</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>False</expand>
|
||||
<fill>False</fill>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkEntry</class>
|
||||
<name>source_name</name>
|
||||
<can_focus>True</can_focus>
|
||||
<editable>True</editable>
|
||||
<text_visible>True</text_visible>
|
||||
<text_max_length>0</text_max_length>
|
||||
<text></text>
|
||||
<child>
|
||||
<padding>0</padding>
|
||||
<expand>True</expand>
|
||||
<fill>True</fill>
|
||||
</child>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkLabel</class>
|
||||
<child_name>Notebook:tab</child_name>
|
||||
<name>label38</name>
|
||||
<label>Source</label>
|
||||
<justify>GTK_JUSTIFY_CENTER</justify>
|
||||
<wrap>False</wrap>
|
||||
<xalign>0.5</xalign>
|
||||
<yalign>0.5</yalign>
|
||||
<xpad>0</xpad>
|
||||
<ypad>0</ypad>
|
||||
</widget>
|
||||
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget>
|
||||
<class>GtkWindow</class>
|
||||
<name>mail_accounts_window</name>
|
||||
|
@ -67,6 +67,8 @@ struct _PixbufLoader {
|
||||
};
|
||||
static GHashTable *thumbnail_cache = NULL;
|
||||
|
||||
static gchar *save_pathname = NULL; /* preserves last directory in save dialog */
|
||||
|
||||
/*----------------------------------------------------------------------*
|
||||
* Callbacks
|
||||
*----------------------------------------------------------------------*/
|
||||
@ -147,12 +149,24 @@ save_data_cb (GtkWidget *widget, gpointer user_data)
|
||||
{
|
||||
GtkFileSelection *file_select = (GtkFileSelection *)
|
||||
gtk_widget_get_ancestor (widget, GTK_TYPE_FILE_SELECTION);
|
||||
gchar *p;
|
||||
|
||||
/* uh, this doesn't really feel right, but i dont know what to do better */
|
||||
gtk_widget_hide (GTK_WIDGET (file_select));
|
||||
write_data_to_file (user_data,
|
||||
gtk_file_selection_get_filename (file_select),
|
||||
FALSE);
|
||||
|
||||
/* preserve the pathname */
|
||||
g_free(save_pathname);
|
||||
save_pathname = g_strdup(gtk_file_selection_get_filename(file_select));
|
||||
if((p = strrchr(save_pathname, '/')) != NULL)
|
||||
p[0] = 0;
|
||||
else {
|
||||
g_free(save_pathname);
|
||||
save_pathname = NULL;
|
||||
}
|
||||
|
||||
gtk_widget_destroy (GTK_WIDGET (file_select));
|
||||
}
|
||||
|
||||
@ -197,7 +211,11 @@ save_part (CamelMimePart *part)
|
||||
GtkFileSelection *file_select;
|
||||
char *filename;
|
||||
|
||||
filename = make_safe_filename (g_get_home_dir (), part);
|
||||
if(save_pathname == NULL)
|
||||
save_pathname = g_get_home_dir();
|
||||
|
||||
filename = make_safe_filename (save_pathname, part);
|
||||
|
||||
file_select = GTK_FILE_SELECTION (
|
||||
gtk_file_selection_new (_("Save Attachment")));
|
||||
gtk_file_selection_set_filename (file_select, filename);
|
||||
|
@ -138,6 +138,14 @@ message_browser_folder_loaded (FolderBrowser *fb, const char *uri, MessageBrowse
|
||||
message_browser_message_list_built, mb);
|
||||
}
|
||||
|
||||
static void
|
||||
message_browser_size_allocate_cb (GtkWidget *widget,
|
||||
GtkAllocation *allocation)
|
||||
{
|
||||
last_allocation = *allocation;
|
||||
|
||||
}
|
||||
|
||||
/* Construction */
|
||||
|
||||
static void
|
||||
@ -225,6 +233,9 @@ message_browser_new (const GNOME_Evolution_Shell shell, const char *uri, const c
|
||||
gtk_widget_reparent (GTK_WIDGET (fb->mail_display), vbox);
|
||||
gtk_widget_show (GTK_WIDGET (fb->mail_display));
|
||||
gtk_widget_show (vbox);
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(new), "size_allocate",
|
||||
GTK_SIGNAL_FUNC(message_browser_size_allocate_cb), NULL);
|
||||
|
||||
bonobo_window_set_contents (BONOBO_WINDOW (new), vbox);
|
||||
gtk_widget_grab_focus (GTK_WIDGET (MAIL_DISPLAY (fb->mail_display)->html));
|
||||
|
@ -1007,9 +1007,17 @@ save_tree_state(MessageList *ml)
|
||||
g_free(filename);
|
||||
}
|
||||
|
||||
static void
|
||||
sort_info_changed (GtkWidget *widget, MessageList *ml)
|
||||
{
|
||||
save_tree_state(ml);
|
||||
}
|
||||
|
||||
static void
|
||||
message_list_setup_etree(MessageList *message_list, gboolean outgoing)
|
||||
{
|
||||
ETableState *etstate;
|
||||
|
||||
/* build the spec based on the folder, and possibly from a saved file */
|
||||
/* otherwise, leave default */
|
||||
if (message_list->folder) {
|
||||
@ -1043,6 +1051,18 @@ message_list_setup_etree(MessageList *message_list, gboolean outgoing)
|
||||
g_free (path);
|
||||
|
||||
g_free (name);
|
||||
|
||||
etstate = e_tree_get_state_object(message_list->tree);
|
||||
gtk_signal_connect(GTK_OBJECT(etstate->sort_info),
|
||||
"sort_info_changed",
|
||||
GTK_SIGNAL_FUNC(sort_info_changed),
|
||||
message_list);
|
||||
gtk_signal_connect(GTK_OBJECT(etstate->sort_info),
|
||||
"group_info_changed",
|
||||
GTK_SIGNAL_FUNC(sort_info_changed),
|
||||
message_list);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -762,12 +762,13 @@ build_tree (SubscribeDialog *sc, CamelStore *store)
|
||||
return;
|
||||
}
|
||||
|
||||
e_tree_memory_freeze(E_TREE_MEMORY(sc->folder_model));
|
||||
e_tree_memory_node_remove (E_TREE_MEMORY(sc->folder_model), sc->folder_root);
|
||||
sc->folder_root = e_tree_memory_node_insert (E_TREE_MEMORY(sc->folder_model), NULL,
|
||||
0, NULL);
|
||||
|
||||
|
||||
build_etree_from_folder_info (sc, sc->folder_root, sc->folder_info);
|
||||
e_tree_memory_thaw(E_TREE_MEMORY(sc->folder_model));
|
||||
|
||||
camel_exception_free (ex);
|
||||
}
|
||||
|
Reference in New Issue
Block a user