Define a new interface called EMailReader, which implements operations
common to both the main shell window and the message browser. Replaces EMFolderView. Also begin to define EMailBrowser (GtkWindow subclass), which implements EMailReader and replaces EMMessageBrowser. svn path=/branches/kill-bonobo/; revision=36933
This commit is contained in:
@ -52,6 +52,11 @@ EShellView
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG EShellView:shell-module ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG EShellView:shell-sidebar ##### -->
|
||||
<para>
|
||||
|
||||
|
||||
@ -38,6 +38,11 @@ EShellWindow
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### ARG EShellWindow:ui-manager ##### -->
|
||||
<para>
|
||||
|
||||
</para>
|
||||
|
||||
<!-- ##### FUNCTION e_shell_window_new ##### -->
|
||||
<para>
|
||||
|
||||
|
||||
@ -344,29 +344,29 @@ e_file_dialog_save_folder (const char *title)
|
||||
* no signals connected and is not shown.
|
||||
**/
|
||||
GtkWidget *
|
||||
e_file_get_save_filesel (GtkWidget *parent, const char *title, const char *name, GtkFileChooserAction action)
|
||||
e_file_get_save_filesel (GtkWindow *parent, const char *title, const char *name, GtkFileChooserAction action)
|
||||
{
|
||||
GtkWidget *filesel;
|
||||
char *uri;
|
||||
|
||||
filesel = gtk_file_chooser_dialog_new (title,
|
||||
NULL,
|
||||
action,
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||
(action == GTK_FILE_CHOOSER_ACTION_OPEN) ? GTK_STOCK_OPEN:GTK_STOCK_SAVE, GTK_RESPONSE_OK,
|
||||
NULL);
|
||||
g_return_val_if_fail (GTK_IS_WINDOW (parent), NULL);
|
||||
|
||||
filesel = gtk_file_chooser_dialog_new (
|
||||
title, parent, action,
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||
(action == GTK_FILE_CHOOSER_ACTION_OPEN) ?
|
||||
GTK_STOCK_OPEN : GTK_STOCK_SAVE, GTK_RESPONSE_OK, NULL);
|
||||
gtk_dialog_set_default_response (GTK_DIALOG (filesel), GTK_RESPONSE_OK);
|
||||
gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (filesel), FALSE);
|
||||
|
||||
if (parent)
|
||||
e_dialog_set_transient_for((GtkWindow *)filesel, parent);
|
||||
uri = e_file_get_save_path ();
|
||||
|
||||
uri = e_file_get_save_path();
|
||||
|
||||
gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (filesel), uri);
|
||||
gtk_file_chooser_set_current_folder_uri (
|
||||
GTK_FILE_CHOOSER (filesel), uri);
|
||||
|
||||
if (name && name[0])
|
||||
gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (filesel), name);
|
||||
gtk_file_chooser_set_current_name (
|
||||
GTK_FILE_CHOOSER (filesel), name);
|
||||
|
||||
g_free (uri);
|
||||
|
||||
|
||||
@ -43,7 +43,7 @@ char *e_file_dialog_save (const char *title, const char *fname)
|
||||
|
||||
char *e_file_dialog_save_folder (const char *title);
|
||||
|
||||
GtkWidget * e_file_get_save_filesel (GtkWidget *parent, const char *title, const char *name, GtkFileChooserAction action);
|
||||
GtkWidget * e_file_get_save_filesel (GtkWindow *parent, const char *title, const char *name, GtkFileChooserAction action);
|
||||
|
||||
gboolean e_file_can_save(GtkWindow *parent, const char *uri);
|
||||
gboolean e_file_check_local(const char *name);
|
||||
|
||||
@ -35,6 +35,12 @@ module_LTLIBRARIES = \
|
||||
libevolution-module-mail.la
|
||||
|
||||
libevolution_module_mail_la_SOURCES = \
|
||||
e-mail-browser.c \
|
||||
e-mail-browser.h \
|
||||
e-mail-reader.c \
|
||||
e-mail-reader.h \
|
||||
e-mail-reader-utils.c \
|
||||
e-mail-reader-utils.h \
|
||||
e-mail-shell-module.c \
|
||||
e-mail-shell-module.h \
|
||||
e-mail-shell-module-migrate.c \
|
||||
|
||||
291
mail/e-mail-browser.c
Normal file
291
mail/e-mail-browser.c
Normal file
@ -0,0 +1,291 @@
|
||||
/*
|
||||
* e-mail-browser.c
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) version 3.
|
||||
*
|
||||
* 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with the program; if not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*
|
||||
* Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
|
||||
*
|
||||
*/
|
||||
|
||||
#include "e-mail-browser.h"
|
||||
|
||||
#include <glib/gi18n.h>
|
||||
#include <camel/camel-folder.h>
|
||||
|
||||
#include "mail/e-mail-reader.h"
|
||||
#include "mail/e-mail-shell-module.h"
|
||||
#include "mail/em-folder-tree-model.h"
|
||||
#include "mail/em-format-html-display.h"
|
||||
#include "mail/message-list.h"
|
||||
|
||||
#define E_MAIL_BROWSER_GET_PRIVATE(obj) \
|
||||
(G_TYPE_INSTANCE_GET_PRIVATE \
|
||||
((obj), E_TYPE_MAIL_BROWSER, EMailBrowserPrivate))
|
||||
|
||||
struct _EMailBrowserPrivate {
|
||||
GtkUIManager *ui_manager;
|
||||
EShellModule *shell_module;
|
||||
GtkActionGroup *action_group;
|
||||
};
|
||||
|
||||
enum {
|
||||
PROP_0,
|
||||
PROP_SHELL_MODULE,
|
||||
PROP_UI_MANAGER
|
||||
};
|
||||
|
||||
static gpointer parent_class;
|
||||
|
||||
static void
|
||||
mail_browser_set_shell_module (EMailBrowser *browser,
|
||||
EShellModule *shell_module)
|
||||
{
|
||||
g_return_if_fail (browser->priv->shell_module == NULL);
|
||||
|
||||
browser->priv->shell_module = g_object_ref (shell_module);
|
||||
}
|
||||
|
||||
static void
|
||||
mail_browser_set_property (GObject *object,
|
||||
guint property_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
switch (property_id) {
|
||||
case PROP_SHELL_MODULE:
|
||||
mail_browser_set_shell_module (
|
||||
E_MAIL_BROWSER (object),
|
||||
g_value_get_object (value));
|
||||
return;
|
||||
}
|
||||
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||
}
|
||||
|
||||
static void
|
||||
mail_browser_get_property (GObject *object,
|
||||
guint property_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
switch (property_id) {
|
||||
case PROP_SHELL_MODULE:
|
||||
g_value_set_object (
|
||||
value, e_mail_browser_get_shell_module (
|
||||
E_MAIL_BROWSER (object)));
|
||||
return;
|
||||
|
||||
case PROP_UI_MANAGER:
|
||||
g_value_set_object (
|
||||
value, e_mail_browser_get_ui_manager (
|
||||
E_MAIL_BROWSER (object)));
|
||||
return;
|
||||
}
|
||||
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||
}
|
||||
|
||||
static void
|
||||
mail_browser_dispose (GObject *object)
|
||||
{
|
||||
EMailBrowserPrivate *priv;
|
||||
|
||||
priv = E_MAIL_BROWSER_GET_PRIVATE (object);
|
||||
|
||||
if (priv->ui_manager != NULL) {
|
||||
g_object_unref (priv->ui_manager);
|
||||
priv->ui_manager = NULL;
|
||||
}
|
||||
|
||||
if (priv->shell_module != NULL) {
|
||||
g_object_unref (priv->shell_module);
|
||||
priv->shell_module = NULL;
|
||||
}
|
||||
|
||||
if (priv->action_group != NULL) {
|
||||
g_object_unref (priv->action_group);
|
||||
priv->action_group = NULL;
|
||||
}
|
||||
|
||||
/* Chain up to parent's dispose() method. */
|
||||
G_OBJECT_CLASS (parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
static void
|
||||
mail_browser_constructed (GObject *object)
|
||||
{
|
||||
}
|
||||
|
||||
static GtkActionGroup *
|
||||
mail_browser_get_action_group (EMailReader *reader)
|
||||
{
|
||||
EMailBrowserPrivate *priv;
|
||||
|
||||
priv = E_MAIL_BROWSER_GET_PRIVATE (reader);
|
||||
|
||||
return priv->action_group;
|
||||
}
|
||||
|
||||
static EMFormatHTMLDisplay *
|
||||
mail_browser_get_display (EMailReader *reader)
|
||||
{
|
||||
}
|
||||
|
||||
static CamelFolder *
|
||||
mail_browser_get_folder (EMailReader *reader)
|
||||
{
|
||||
}
|
||||
|
||||
static const gchar *
|
||||
mail_browser_get_folder_uri (EMailReader *reader)
|
||||
{
|
||||
}
|
||||
|
||||
static gboolean
|
||||
mail_browser_get_hide_deleted (EMailReader *reader)
|
||||
{
|
||||
}
|
||||
|
||||
static MessageList *
|
||||
mail_browser_get_message_list (EMailReader *reader)
|
||||
{
|
||||
}
|
||||
|
||||
static EMFolderTreeModel *
|
||||
mail_browser_get_tree_model (EMailReader *reader)
|
||||
{
|
||||
EMailBrowserPrivate *priv;
|
||||
EShellModule *shell_module;
|
||||
|
||||
priv = E_MAIL_BROWSER_GET_PRIVATE (reader);
|
||||
shell_module = priv->shell_module;
|
||||
|
||||
return e_mail_shell_module_get_folder_tree_model (shell_module);
|
||||
}
|
||||
|
||||
static GtkWindow *
|
||||
mail_browser_get_window (EMailReader *reader)
|
||||
{
|
||||
return GTK_WINDOW (reader);
|
||||
}
|
||||
|
||||
static void
|
||||
mail_browser_class_init (EMailBrowserClass *class)
|
||||
{
|
||||
GObjectClass *object_class;
|
||||
|
||||
parent_class = g_type_class_peek_parent (class);
|
||||
g_type_class_add_private (class, sizeof (EMailBrowserPrivate));
|
||||
|
||||
object_class = G_OBJECT_CLASS (class);
|
||||
object_class->set_property = mail_browser_set_property;
|
||||
object_class->get_property = mail_browser_get_property;
|
||||
object_class->dispose = mail_browser_dispose;
|
||||
object_class->constructed = mail_browser_constructed;
|
||||
|
||||
g_object_class_install_property (
|
||||
object_class,
|
||||
PROP_SHELL_MODULE,
|
||||
g_param_spec_object (
|
||||
"shell-module",
|
||||
_("Shell Module"),
|
||||
_("The mail shell module"),
|
||||
E_TYPE_SHELL_MODULE,
|
||||
G_PARAM_READWRITE |
|
||||
G_PARAM_CONSTRUCT_ONLY));
|
||||
}
|
||||
|
||||
static void
|
||||
mail_browser_iface_init (EMailReaderIface *iface)
|
||||
{
|
||||
iface->get_action_group = mail_browser_get_action_group;
|
||||
iface->get_display = mail_browser_get_display;
|
||||
iface->get_folder = mail_browser_get_folder;
|
||||
iface->get_folder_uri = mail_browser_get_folder_uri;
|
||||
iface->get_hide_deleted = mail_browser_get_hide_deleted;
|
||||
iface->get_message_list = mail_browser_get_message_list;
|
||||
iface->get_tree_model = mail_browser_get_tree_model;
|
||||
iface->get_window = mail_browser_get_window;
|
||||
}
|
||||
|
||||
static void
|
||||
mail_browser_init (EMailBrowser *browser)
|
||||
{
|
||||
browser->priv = E_MAIL_BROWSER_GET_PRIVATE (browser);
|
||||
|
||||
browser->priv->ui_manager = gtk_ui_manager_new ();
|
||||
browser->priv->action_group = gtk_action_group_new ("mail-browser");
|
||||
}
|
||||
|
||||
GType
|
||||
e_mail_browser_get_type (void)
|
||||
{
|
||||
static GType type = 0;
|
||||
|
||||
if (G_UNLIKELY (type == 0)) {
|
||||
static const GTypeInfo type_info = {
|
||||
sizeof (EMailBrowserClass),
|
||||
(GBaseInitFunc) NULL,
|
||||
(GBaseFinalizeFunc) NULL,
|
||||
(GClassInitFunc) mail_browser_class_init,
|
||||
(GClassFinalizeFunc) NULL,
|
||||
NULL, /* class_data */
|
||||
sizeof (EMailBrowser),
|
||||
0, /* n_preallocs */
|
||||
(GInstanceInitFunc) mail_browser_init,
|
||||
NULL /* value_table */
|
||||
};
|
||||
|
||||
static const GInterfaceInfo iface_info = {
|
||||
(GInterfaceInitFunc) mail_browser_iface_init,
|
||||
(GInterfaceFinalizeFunc) NULL,
|
||||
NULL /* interface_data */
|
||||
};
|
||||
|
||||
type = g_type_register_static (
|
||||
GTK_TYPE_WINDOW, "EMailBrowser", &type_info, 0);
|
||||
|
||||
g_type_add_interface_static (
|
||||
type, E_TYPE_MAIL_BROWSER, &iface_info);
|
||||
}
|
||||
|
||||
return type;
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
e_mail_browser_new (EShellModule *shell_module)
|
||||
{
|
||||
g_return_val_if_fail (E_IS_SHELL_MODULE (shell_module), NULL);
|
||||
|
||||
return g_object_new (
|
||||
E_TYPE_MAIL_BROWSER,
|
||||
"shell-module", shell_module, NULL);
|
||||
}
|
||||
|
||||
EShellModule *
|
||||
e_mail_browser_get_shell_module (EMailBrowser *browser)
|
||||
{
|
||||
g_return_val_if_fail (E_IS_MAIL_BROWSER (browser), NULL);
|
||||
|
||||
return browser->priv->shell_module;
|
||||
}
|
||||
|
||||
GtkUIManager *
|
||||
e_mail_browser_get_ui_manager (EMailBrowser *browser)
|
||||
{
|
||||
g_return_val_if_fail (E_IS_MAIL_BROWSER (browser), NULL);
|
||||
|
||||
return browser->priv->ui_manager;
|
||||
}
|
||||
69
mail/e-mail-browser.h
Normal file
69
mail/e-mail-browser.h
Normal file
@ -0,0 +1,69 @@
|
||||
/*
|
||||
* e-mail-browser.h
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) version 3.
|
||||
*
|
||||
* 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with the program; if not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*
|
||||
* Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef E_MAIL_BROWSER_H
|
||||
#define E_MAIL_BROWSER_H
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include <shell/e-shell-module.h>
|
||||
|
||||
/* Standard GObject macros */
|
||||
#define E_TYPE_MAIL_BROWSER \
|
||||
(e_mail_browser_get_type ())
|
||||
#define E_MAIL_BROWSER(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST \
|
||||
((obj), E_TYPE_MAIL_BROWSER, EMailBrowser))
|
||||
#define E_MAIL_BROWSER_CLASS(cls) \
|
||||
(G_TYPE_CHECK_CLASS_CAST \
|
||||
((cls), E_TYPE_MAIL_BROWSER, EMailBrowserClass))
|
||||
#define E_IS_MAIL_BROWSER(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((obj), E_TYPE_MAIL_BROWSER))
|
||||
#define E_IS_MAIL_BROWSER_CLASS(cls) \
|
||||
(G_TYPE_CHECK_CLASS_CAST \
|
||||
((cls), E_TYPE_MAIL_BROWSER))
|
||||
#define E_MAIL_BROWSER_GET_CLASS(obj) \
|
||||
(G_TYPE_INSTANCE_GET_CLASS \
|
||||
((obj), E_TYPE_MAIL_BROWSER, EMailBrowserClass))
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
typedef struct _EMailBrowser EMailBrowser;
|
||||
typedef struct _EMailBrowserClass EMailBrowserClass;
|
||||
typedef struct _EMailBrowserPrivate EMailBrowserPrivate;
|
||||
|
||||
struct _EMailBrowser {
|
||||
GtkWindow parent;
|
||||
EMailBrowserPrivate *priv;
|
||||
};
|
||||
|
||||
struct _EMailBrowserClass {
|
||||
GtkWindowClass parent_class;
|
||||
};
|
||||
|
||||
GType e_mail_browser_get_type (void);
|
||||
GtkWidget * e_mail_browser_new (EShellModule *shell_module);
|
||||
EShellModule * e_mail_browser_get_shell_module (EMailBrowser *browser);
|
||||
GtkUIManager * e_mail_browser_get_ui_manager (EMailBrowser *browser);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* E_MAIL_BROWSER_H */
|
||||
1653
mail/e-mail-reader.c
Normal file
1653
mail/e-mail-reader.c
Normal file
File diff suppressed because it is too large
Load Diff
85
mail/e-mail-reader.h
Normal file
85
mail/e-mail-reader.h
Normal file
@ -0,0 +1,85 @@
|
||||
/*
|
||||
* e-mail-reader.h
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) version 3.
|
||||
*
|
||||
* 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with the program; if not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*
|
||||
* Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef E_MAIL_READER_H
|
||||
#define E_MAIL_READER_H
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include <camel/camel-folder.h>
|
||||
#include <mail/em-folder-tree-model.h>
|
||||
#include <mail/em-format-html-display.h>
|
||||
#include <mail/message-list.h>
|
||||
#include <shell/e-shell-settings.h>
|
||||
|
||||
/* Standard GObject macros */
|
||||
#define E_TYPE_MAIL_READER \
|
||||
(e_mail_reader_get_type ())
|
||||
#define E_MAIL_READER(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_CAST \
|
||||
((obj), E_TYPE_MAIL_READER, EMailReader))
|
||||
#define E_IS_MAIL_READER(obj) \
|
||||
(G_TYPE_CHECK_INSTANCE_TYPE \
|
||||
((obj), E_TYPE_MAIL_READER))
|
||||
#define E_MAIL_READER_GET_IFACE(obj) \
|
||||
(G_TYPE_INSTANCE_GET_INTERFACE \
|
||||
((obj), E_TYPE_MAIL_READER, EMailReaderIface))
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
typedef struct _EMailReader EMailReader;
|
||||
typedef struct _EMailReaderIface EMailReaderIface;
|
||||
|
||||
struct _EMailReaderIface {
|
||||
GTypeInterface parent_iface;
|
||||
|
||||
/* XXX This is getting kinda bloated. Try to reduce. */
|
||||
GtkActionGroup *
|
||||
(*get_action_group) (EMailReader *reader);
|
||||
EMFormatHTMLDisplay *
|
||||
(*get_display) (EMailReader *reader);
|
||||
CamelFolder * (*get_folder) (EMailReader *reader);
|
||||
const gchar * (*get_folder_uri) (EMailReader *reader);
|
||||
gboolean (*get_hide_deleted) (EMailReader *reader);
|
||||
MessageList * (*get_message_list) (EMailReader *reader);
|
||||
EShellSettings *(*get_shell_settings) (EMailReader *reader);
|
||||
EMFolderTreeModel *
|
||||
(*get_tree_model) (EMailReader *reader);
|
||||
GtkWindow * (*get_window) (EMailReader *reader);
|
||||
};
|
||||
|
||||
GType e_mail_reader_get_type (void);
|
||||
void e_mail_reader_init (EMailReader *reader);
|
||||
GtkActionGroup *
|
||||
e_mail_reader_get_action_group (EMailReader *reader);
|
||||
EMFormatHTMLDisplay *
|
||||
e_mail_reader_get_display (EMailReader *reader);
|
||||
CamelFolder * e_mail_reader_get_folder (EMailReader *reader);
|
||||
const gchar * e_mail_reader_get_folder_uri (EMailReader *reader);
|
||||
gboolean e_mail_reader_get_hide_deleted (EMailReader *reader);
|
||||
MessageList * e_mail_reader_get_message_list (EMailReader *reader);
|
||||
EShellSettings *e_mail_reader_get_shell_settings(EMailReader *reader);
|
||||
EMFolderTreeModel *
|
||||
e_mail_reader_get_tree_model (EMailReader *reader);
|
||||
GtkWindow * e_mail_reader_get_window (EMailReader *reader);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* E_MAIL_READER_H */
|
||||
@ -34,6 +34,9 @@
|
||||
#include "em-utils.h"
|
||||
#include "mail-config.h"
|
||||
|
||||
#include "e-mail-reader.h"
|
||||
#include "e-mail-shell-module.h"
|
||||
|
||||
#define E_MAIL_SHELL_CONTENT_GET_PRIVATE(obj) \
|
||||
(G_TYPE_INSTANCE_GET_PRIVATE \
|
||||
((obj), E_TYPE_MAIL_SHELL_CONTENT, EMailShellContentPrivate))
|
||||
@ -359,6 +362,101 @@ mail_shell_content_check_state (EShellContent *shell_content)
|
||||
return state;
|
||||
}
|
||||
|
||||
static GtkActionGroup *
|
||||
mail_shell_content_get_action_group (EMailReader *reader)
|
||||
{
|
||||
EShellContent *shell_content;
|
||||
EShellWindow *shell_window;
|
||||
EShellView *shell_view;
|
||||
|
||||
shell_content = E_SHELL_CONTENT (reader);
|
||||
shell_view = e_shell_content_get_shell_view (shell_content);
|
||||
shell_window = e_shell_view_get_shell_window (shell_view);
|
||||
|
||||
return e_shell_window_get_action_group (shell_window, "mail");
|
||||
}
|
||||
|
||||
static EMFormatHTMLDisplay *
|
||||
mail_shell_content_get_display (EMailReader *reader)
|
||||
{
|
||||
EMailShellContent *mail_shell_content;
|
||||
|
||||
mail_shell_content = E_MAIL_SHELL_CONTENT (reader);
|
||||
|
||||
return e_mail_shell_content_get_preview_format (mail_shell_content);
|
||||
}
|
||||
|
||||
static CamelFolder *
|
||||
mail_shell_content_get_folder (EMailReader *reader)
|
||||
{
|
||||
EMailShellContent *mail_shell_content;
|
||||
EMFolderView *folder_view;
|
||||
|
||||
mail_shell_content = E_MAIL_SHELL_CONTENT (reader);
|
||||
folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
|
||||
|
||||
return folder_view->folder;
|
||||
}
|
||||
|
||||
static const gchar *
|
||||
mail_shell_content_get_folder_uri (EMailReader *reader)
|
||||
{
|
||||
EMailShellContent *mail_shell_content;
|
||||
EMFolderView *folder_view;
|
||||
|
||||
mail_shell_content = E_MAIL_SHELL_CONTENT (reader);
|
||||
folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
|
||||
|
||||
return folder_view->folder_uri;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
mail_shell_content_get_hide_deleted (EMailReader *reader)
|
||||
{
|
||||
/* FIXME */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static MessageList *
|
||||
mail_shell_content_get_message_list (EMailReader *reader)
|
||||
{
|
||||
EMailShellContent *mail_shell_content;
|
||||
EMFolderView *folder_view;
|
||||
|
||||
mail_shell_content = E_MAIL_SHELL_CONTENT (reader);
|
||||
folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
|
||||
|
||||
return folder_view->list;
|
||||
}
|
||||
|
||||
static EMFolderTreeModel *
|
||||
mail_shell_content_get_tree_model (EMailReader *reader)
|
||||
{
|
||||
EShellContent *shell_content;
|
||||
EShellModule *shell_module;
|
||||
EShellView *shell_view;
|
||||
|
||||
shell_content = E_SHELL_CONTENT (reader);
|
||||
shell_view = e_shell_content_get_shell_view (shell_content);
|
||||
shell_module = e_shell_view_get_shell_module (shell_view);
|
||||
|
||||
return e_mail_shell_module_get_folder_tree_model (shell_module);
|
||||
}
|
||||
|
||||
static GtkWindow *
|
||||
mail_shell_content_get_window (EMailReader *reader)
|
||||
{
|
||||
EShellContent *shell_content;
|
||||
EShellWindow *shell_window;
|
||||
EShellView *shell_view;
|
||||
|
||||
shell_content = E_SHELL_CONTENT (reader);
|
||||
shell_view = e_shell_content_get_shell_view (shell_content);
|
||||
shell_window = e_shell_view_get_shell_window (shell_view);
|
||||
|
||||
return GTK_WINDOW (shell_window);
|
||||
}
|
||||
|
||||
static void
|
||||
mail_shell_content_class_init (EMailShellContentClass *class)
|
||||
{
|
||||
@ -400,6 +498,19 @@ mail_shell_content_class_init (EMailShellContentClass *class)
|
||||
G_PARAM_READWRITE));
|
||||
}
|
||||
|
||||
static void
|
||||
mail_shell_content_iface_init (EMailReaderIface *iface)
|
||||
{
|
||||
iface->get_action_group = mail_shell_content_get_action_group;
|
||||
iface->get_display = mail_shell_content_get_display;
|
||||
iface->get_folder = mail_shell_content_get_folder;
|
||||
iface->get_folder_uri = mail_shell_content_get_folder_uri;
|
||||
iface->get_hide_deleted = mail_shell_content_get_hide_deleted;
|
||||
iface->get_message_list = mail_shell_content_get_message_list;
|
||||
iface->get_tree_model = mail_shell_content_get_tree_model;
|
||||
iface->get_window = mail_shell_content_get_window;
|
||||
}
|
||||
|
||||
static void
|
||||
mail_shell_content_init (EMailShellContent *mail_shell_content)
|
||||
{
|
||||
@ -430,9 +541,18 @@ e_mail_shell_content_get_type (void)
|
||||
NULL /* value_table */
|
||||
};
|
||||
|
||||
static const GInterfaceInfo iface_info = {
|
||||
(GInterfaceInitFunc) mail_shell_content_iface_init,
|
||||
(GInterfaceFinalizeFunc) NULL,
|
||||
NULL /* interface_data */
|
||||
};
|
||||
|
||||
type = g_type_register_static (
|
||||
E_TYPE_SHELL_CONTENT, "EMailShellContent",
|
||||
&type_info, 0);
|
||||
|
||||
g_type_add_interface_static (
|
||||
type, E_TYPE_MAIL_READER, &iface_info);
|
||||
}
|
||||
|
||||
return type;
|
||||
|
||||
@ -243,6 +243,18 @@ e_mail_shell_module_init_settings (EShell *shell)
|
||||
shell_settings, "mail-only-local-photos",
|
||||
"/apps/evolution/mail/display/photo_local");
|
||||
|
||||
e_shell_settings_install_property (
|
||||
g_param_spec_boolean (
|
||||
"mail-prompt-delete-in-vfolder",
|
||||
NULL,
|
||||
NULL,
|
||||
FALSE,
|
||||
G_PARAM_READWRITE));
|
||||
|
||||
e_shell_settings_bind_to_gconf (
|
||||
shell_settings, "mail-prompt-delete-in-vfolder",
|
||||
"/apps/evolution/mail/prompts/delete_in_vfolder");
|
||||
|
||||
e_shell_settings_install_property (
|
||||
g_param_spec_boolean (
|
||||
"mail-show-animated-images",
|
||||
|
||||
@ -38,9 +38,11 @@
|
||||
|
||||
#include "em-account-prefs.h"
|
||||
#include "em-composer-prefs.h"
|
||||
#include "em-composer-utils.h"
|
||||
#include "em-config.h"
|
||||
#include "em-event.h"
|
||||
#include "em-folder-tree-model.h"
|
||||
#include "em-folder-utils.h"
|
||||
#include "em-format-hook.h"
|
||||
#include "em-format-html-display.h"
|
||||
#include "em-junk-hook.h"
|
||||
@ -399,14 +401,58 @@ static void
|
||||
action_mail_folder_new_cb (GtkAction *action,
|
||||
EShellWindow *shell_window)
|
||||
{
|
||||
/* FIXME */
|
||||
EMFolderTree *folder_tree = NULL;
|
||||
EMailShellSidebar *mail_shell_sidebar;
|
||||
EShellSidebar *shell_sidebar;
|
||||
EShellView *shell_view;
|
||||
const gchar *view_name;
|
||||
|
||||
/* Take care not to unnecessarily load the mail shell view. */
|
||||
view_name = e_shell_window_get_active_view (shell_window);
|
||||
if (g_strcmp0 (view_name, MODULE_NAME) != 0)
|
||||
goto exit;
|
||||
|
||||
shell_view = e_shell_window_get_shell_view (shell_window, view_name);
|
||||
shell_sidebar = e_shell_view_get_shell_sidebar (shell_view);
|
||||
|
||||
mail_shell_sidebar = E_MAIL_SHELL_SIDEBAR (shell_sidebar);
|
||||
folder_tree = e_mail_shell_sidebar_get_folder_tree (mail_shell_sidebar);
|
||||
|
||||
exit:
|
||||
em_folder_utils_create_folder (NULL, folder_tree);
|
||||
}
|
||||
|
||||
static void
|
||||
action_mail_message_new_cb (GtkAction *action,
|
||||
EShellWindow *shell_window)
|
||||
{
|
||||
/* FIXME */
|
||||
GtkWindow *window = GTK_WINDOW (shell_window);
|
||||
EMailShellSidebar *mail_shell_sidebar;
|
||||
EShellSidebar *shell_sidebar;
|
||||
EShellView *shell_view;
|
||||
EMFolderTree *folder_tree;
|
||||
const gchar *view_name;
|
||||
gchar *uri = NULL;
|
||||
|
||||
if (!em_utils_check_user_can_send_mail (window))
|
||||
return;
|
||||
|
||||
/* Take care not to unnecessarily load the mail shell view. */
|
||||
view_name = e_shell_window_get_active_view (shell_window);
|
||||
if (g_strcmp0 (view_name, MODULE_NAME) != 0)
|
||||
goto exit;
|
||||
|
||||
shell_view = e_shell_window_get_shell_view (shell_window, view_name);
|
||||
shell_sidebar = e_shell_view_get_shell_sidebar (shell_view);
|
||||
|
||||
mail_shell_sidebar = E_MAIL_SHELL_SIDEBAR (shell_sidebar);
|
||||
folder_tree = e_mail_shell_sidebar_get_folder_tree (mail_shell_sidebar);
|
||||
uri = em_folder_tree_get_selected_uri (folder_tree);
|
||||
|
||||
exit:
|
||||
em_utils_compose_new_message (uri);
|
||||
|
||||
g_free (uri);
|
||||
}
|
||||
|
||||
static GtkActionEntry item_entries[] = {
|
||||
@ -842,11 +888,65 @@ fail:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Helper for e_mail_shell_module_remove_store() */
|
||||
static void
|
||||
mail_shell_module_remove_store_cb (CamelStore *store,
|
||||
gpointer event_data,
|
||||
gpointer user_data)
|
||||
{
|
||||
camel_service_disconnect (CAMEL_SERVICE (store), TRUE, NULL);
|
||||
camel_object_unref (store);
|
||||
}
|
||||
|
||||
void
|
||||
e_mail_shell_module_remove_store (EShellModule *shell_module,
|
||||
CamelStore *store)
|
||||
{
|
||||
g_return_if_fail (E_IS_SHELL_MODULE (shell_module));
|
||||
g_return_if_fail (CAMEL_IS_STORE (store));
|
||||
|
||||
/* Because the store hash holds a reference to each store used
|
||||
* as a key in it, none of them will ever be gc'ed, meaning any
|
||||
* call to camel_session_get_{service,store} with the same URL
|
||||
* will always return the same object. So this works. */
|
||||
|
||||
if (g_hash_table_lookup (store_hash, store) == NULL)
|
||||
return;
|
||||
|
||||
camel_object_ref (store);
|
||||
g_hash_table_remove (store_hash, store);
|
||||
mail_note_store_remove (store);
|
||||
em_folder_tree_model_remove_store (folder_tree_model, store);
|
||||
|
||||
mail_async_event_emit (
|
||||
async_event, MAIL_ASYNC_THREAD,
|
||||
(MailAsyncFunc) mail_shell_module_remove_store_cb,
|
||||
store, NULL, NULL);
|
||||
}
|
||||
|
||||
void
|
||||
e_mail_shell_module_remove_store_by_uri (EShellModule *shell_module,
|
||||
const gchar *uri)
|
||||
{
|
||||
/* FIXME */
|
||||
CamelStore *store;
|
||||
CamelProvider *provider;
|
||||
|
||||
g_return_if_fail (E_IS_SHELL_MODULE (shell_module));
|
||||
g_return_if_fail (uri != NULL);
|
||||
|
||||
provider = camel_provider_get (uri, NULL);
|
||||
if (provider == NULL)
|
||||
return;
|
||||
|
||||
if (!(provider->flags & CAMEL_PROVIDER_IS_STORAGE))
|
||||
return;
|
||||
|
||||
store = (CamelStore *) camel_session_get_service (
|
||||
session, uri, CAMEL_PROVIDER_STORE, NULL);
|
||||
if (store != NULL) {
|
||||
e_mail_shell_module_remove_store (shell_module, store);
|
||||
camel_object_unref (store);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@ -66,6 +66,8 @@ CamelStore * e_mail_shell_module_load_store_by_uri
|
||||
(EShellModule *shell_module,
|
||||
const gchar *uri,
|
||||
const gchar *name);
|
||||
void e_mail_shell_module_remove_store(EShellModule *shell_module,
|
||||
CamelStore *store);
|
||||
void e_mail_shell_module_remove_store_by_uri
|
||||
(EShellModule *shell_module,
|
||||
const gchar *uri);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -125,6 +125,8 @@ e_mail_shell_view_private_init (EMailShellView *mail_shell_view,
|
||||
{
|
||||
EMailShellViewPrivate *priv = mail_shell_view->priv;
|
||||
|
||||
/* Note: EMailShellContent retrieves the "mail" action group
|
||||
* by name to satisfy its EMailReader interface. */
|
||||
priv->mail_actions = gtk_action_group_new ("mail");
|
||||
priv->filter_actions = gtk_action_group_new ("mail-filter");
|
||||
|
||||
@ -186,6 +188,7 @@ e_mail_shell_view_private_constructed (EMailShellView *mail_shell_view)
|
||||
mail_shell_view);
|
||||
|
||||
e_mail_shell_view_actions_init (mail_shell_view);
|
||||
e_mail_reader_init (E_MAIL_READER (mail_shell_content));
|
||||
|
||||
/* Restore the previously selected folder. */
|
||||
folder_tree_model = em_folder_tree_get_model (folder_tree);
|
||||
|
||||
@ -31,6 +31,7 @@
|
||||
#include "e-util/gconf-bridge.h"
|
||||
#include "widgets/menus/gal-view-instance.h"
|
||||
|
||||
#include "e-mail-reader.h"
|
||||
#include "em-composer-utils.h"
|
||||
#include "em-folder-properties.h"
|
||||
#include "em-folder-selector.h"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -96,7 +96,7 @@ emmb_set_message (EMFolderView *emfv,
|
||||
folder_view_class = EM_FOLDER_VIEW_CLASS (parent_class);
|
||||
folder_view_class->set_message (emfv, uid, nomarkseen);
|
||||
|
||||
f (uid == NULL) {
|
||||
if (uid == NULL) {
|
||||
gtk_widget_destroy (GTK_WIDGET (emfv));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -193,13 +193,14 @@ druid_destroy_cb (gpointer user_data, GObject *deadbeef)
|
||||
* otherwise.
|
||||
**/
|
||||
gboolean
|
||||
em_utils_configure_account (GtkWidget *parent)
|
||||
em_utils_configure_account (GtkWindow *parent)
|
||||
{
|
||||
EMAccountEditor *emae;
|
||||
|
||||
g_return_val_if_fail (GTK_IS_WINDOW (parent), FALSE);
|
||||
|
||||
emae = em_account_editor_new(NULL, EMAE_DRUID, "org.gnome.evolution.mail.config.accountDruid");
|
||||
if (parent != NULL)
|
||||
e_dialog_set_transient_for((GtkWindow *)emae->editor, parent);
|
||||
gtk_window_set_transient_for (GTK_WINDOW (emae->editor), parent);
|
||||
|
||||
g_object_weak_ref((GObject *)emae->editor, (GWeakNotify) druid_destroy_cb, NULL);
|
||||
gtk_widget_show(emae->editor);
|
||||
@ -223,10 +224,12 @@ em_utils_configure_account (GtkWidget *parent)
|
||||
* or %FALSE otherwise.
|
||||
**/
|
||||
gboolean
|
||||
em_utils_check_user_can_send_mail (GtkWidget *parent)
|
||||
em_utils_check_user_can_send_mail (GtkWindow *parent)
|
||||
{
|
||||
EAccount *account;
|
||||
|
||||
g_return_val_if_fail (GTK_IS_WINDOW (parent), FALSE);
|
||||
|
||||
if (!mail_config_is_configured ()) {
|
||||
if (!em_utils_configure_account (parent))
|
||||
return FALSE;
|
||||
@ -387,12 +390,14 @@ emu_save_get_filename_for_part (CamelMimePart *part)
|
||||
* Saves a mime part to disk (prompting the user for filename).
|
||||
**/
|
||||
void
|
||||
em_utils_save_part (GtkWidget *parent, const char *prompt, CamelMimePart *part)
|
||||
em_utils_save_part (GtkWindow *parent, const char *prompt, CamelMimePart *part)
|
||||
{
|
||||
GtkWidget *file_chooser;
|
||||
const gchar *utf8_filename;
|
||||
gchar *uri = NULL, *filename;
|
||||
|
||||
g_return_if_fail (GTK_IS_WINDOW (parent));
|
||||
|
||||
utf8_filename = emu_save_get_filename_for_part (part);
|
||||
filename = g_filename_from_utf8 (utf8_filename, -1, NULL, NULL, NULL);
|
||||
em_filename_make_safe (filename);
|
||||
@ -502,7 +507,7 @@ get_unique_file_names (GSList *parts)
|
||||
}
|
||||
|
||||
void
|
||||
em_utils_save_parts (GtkWidget *parent, const gchar *prompt, GSList *parts)
|
||||
em_utils_save_parts (GtkWindow *parent, const gchar *prompt, GSList *parts)
|
||||
{
|
||||
GtkWidget *file_chooser;
|
||||
gchar *path_uri;
|
||||
@ -558,7 +563,7 @@ exit:
|
||||
* Returns %TRUE if saving succeeded, %FALSE otherwise
|
||||
**/
|
||||
gboolean
|
||||
em_utils_save_part_to_file(GtkWidget *parent, const char *filename, CamelMimePart *part)
|
||||
em_utils_save_part_to_file(GtkWindow *parent, const char *filename, CamelMimePart *part)
|
||||
{
|
||||
int done;
|
||||
char *dirname;
|
||||
@ -569,7 +574,7 @@ em_utils_save_part_to_file(GtkWidget *parent, const char *filename, CamelMimePar
|
||||
|
||||
dirname = g_path_get_dirname(filename);
|
||||
if (g_mkdir_with_parents(dirname, 0777) == -1) {
|
||||
GtkWidget *w = e_error_new((GtkWindow *)parent, "mail:no-create-path", filename, g_strerror(errno), NULL);
|
||||
GtkWidget *w = e_error_new(parent, "mail:no-create-path", filename, g_strerror(errno), NULL);
|
||||
g_free(dirname);
|
||||
em_utils_show_error_silent (w);
|
||||
return FALSE;
|
||||
@ -578,13 +583,13 @@ em_utils_save_part_to_file(GtkWidget *parent, const char *filename, CamelMimePar
|
||||
|
||||
if (g_access(filename, F_OK) == 0) {
|
||||
if (g_access(filename, W_OK) != 0) {
|
||||
e_error_run((GtkWindow *)parent, E_ERROR_ASK_FILE_EXISTS_OVERWRITE, filename, NULL);
|
||||
e_error_run(parent, E_ERROR_ASK_FILE_EXISTS_OVERWRITE, filename, NULL);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if (g_stat(filename, &st) != -1 && !S_ISREG(st.st_mode)) {
|
||||
GtkWidget *w = e_error_new((GtkWindow *)parent, "mail:no-write-path-notfile", filename, NULL);
|
||||
GtkWidget *w = e_error_new(parent, "mail:no-write-path-notfile", filename, NULL);
|
||||
em_utils_show_error_silent (w);
|
||||
return FALSE;
|
||||
}
|
||||
@ -637,13 +642,14 @@ emu_save_messages_response(GtkWidget *filesel, int response, struct _save_messag
|
||||
* user for filename).
|
||||
**/
|
||||
void
|
||||
em_utils_save_messages (GtkWidget *parent, CamelFolder *folder, GPtrArray *uids)
|
||||
em_utils_save_messages (GtkWindow *parent, CamelFolder *folder, GPtrArray *uids)
|
||||
{
|
||||
struct _save_messages_data *data;
|
||||
GtkWidget *filesel;
|
||||
char *filename = NULL;
|
||||
CamelMessageInfo *info = NULL;
|
||||
|
||||
g_return_if_fail (GTK_IS_WINDOW (parent));
|
||||
g_return_if_fail (CAMEL_IS_FOLDER (folder));
|
||||
g_return_if_fail (uids != NULL);
|
||||
|
||||
@ -683,7 +689,7 @@ emu_add_address_cb(BonoboListener *listener, const char *name, const CORBA_any *
|
||||
|
||||
/* one of email or vcard should be always NULL, never both of them */
|
||||
static void
|
||||
emu_add_address_or_vcard (struct _GtkWidget *parent, const char *email, const char *vcard)
|
||||
emu_add_address_or_vcard (GtkWindow *parent, const char *email, const char *vcard)
|
||||
{
|
||||
GtkWidget *win;
|
||||
GtkWidget *control;
|
||||
@ -706,14 +712,7 @@ emu_add_address_or_vcard (struct _GtkWidget *parent, const char *email, const ch
|
||||
win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_title((GtkWindow *)win, _("Add address"));
|
||||
|
||||
if (parent && !GTK_IS_WINDOW (parent)) {
|
||||
parent = gtk_widget_get_toplevel (parent);
|
||||
if (!parent || !(GTK_WIDGET_TOPLEVEL (parent)))
|
||||
parent = NULL;
|
||||
}
|
||||
|
||||
if (parent)
|
||||
gtk_window_set_transient_for((GtkWindow *)win, ((GtkWindow *)parent));
|
||||
gtk_window_set_transient_for((GtkWindow *)win, parent);
|
||||
|
||||
gtk_window_set_position((GtkWindow *)win, GTK_WIN_POS_CENTER_ON_PARENT);
|
||||
gtk_window_set_type_hint((GtkWindow *)win, GDK_WINDOW_TYPE_HINT_DIALOG);
|
||||
@ -744,8 +743,10 @@ emu_add_address_or_vcard (struct _GtkWidget *parent, const char *email, const ch
|
||||
* Add address @email to the addressbook.
|
||||
**/
|
||||
void
|
||||
em_utils_add_address (struct _GtkWidget *parent, const char *email)
|
||||
em_utils_add_address (GtkWindow *parent, const char *email)
|
||||
{
|
||||
g_return_if_fail (GTK_IS_WINDOW (parent));
|
||||
|
||||
emu_add_address_or_vcard (parent, email, NULL);
|
||||
}
|
||||
|
||||
@ -754,8 +755,10 @@ em_utils_add_address (struct _GtkWidget *parent, const char *email)
|
||||
* Adds whole vCard to the addressbook.
|
||||
**/
|
||||
void
|
||||
em_utils_add_vcard (struct _GtkWidget *parent, const char *vcard)
|
||||
em_utils_add_vcard (GtkWindow *parent, const char *vcard)
|
||||
{
|
||||
g_return_if_fail (GTK_IS_WINDOW (parent));
|
||||
|
||||
emu_add_address_or_vcard (parent, NULL, vcard);
|
||||
}
|
||||
|
||||
@ -822,19 +825,18 @@ tag_editor_response (GtkWidget *dialog, int button, struct ted_t *ted)
|
||||
* @folder and @uids.
|
||||
**/
|
||||
void
|
||||
em_utils_flag_for_followup (GtkWidget *parent, CamelFolder *folder, GPtrArray *uids)
|
||||
em_utils_flag_for_followup (GtkWindow *parent, CamelFolder *folder, GPtrArray *uids)
|
||||
{
|
||||
GtkWidget *editor;
|
||||
struct ted_t *ted;
|
||||
int i;
|
||||
|
||||
g_return_if_fail (GTK_IS_WINDOW (parent));
|
||||
g_return_if_fail (CAMEL_IS_FOLDER (folder));
|
||||
g_return_if_fail (uids != NULL);
|
||||
|
||||
editor = (GtkWidget *) message_tag_followup_new ();
|
||||
|
||||
if (parent != NULL)
|
||||
e_dialog_set_transient_for ((GtkWindow *) editor, parent);
|
||||
gtk_window_set_transient_for (GTK_WINDOW (editor), parent);
|
||||
|
||||
camel_object_ref (folder);
|
||||
|
||||
@ -886,10 +888,11 @@ em_utils_flag_for_followup (GtkWidget *parent, CamelFolder *folder, GPtrArray *u
|
||||
* @folder and @uids.
|
||||
**/
|
||||
void
|
||||
em_utils_flag_for_followup_clear (GtkWidget *parent, CamelFolder *folder, GPtrArray *uids)
|
||||
em_utils_flag_for_followup_clear (GtkWindow *parent, CamelFolder *folder, GPtrArray *uids)
|
||||
{
|
||||
int i;
|
||||
|
||||
g_return_if_fail (GTK_IS_WINDOW (parent));
|
||||
g_return_if_fail (CAMEL_IS_FOLDER (folder));
|
||||
g_return_if_fail (uids != NULL);
|
||||
|
||||
@ -920,11 +923,12 @@ em_utils_flag_for_followup_clear (GtkWidget *parent, CamelFolder *folder, GPtrAr
|
||||
* Flag-for-Followup.
|
||||
**/
|
||||
void
|
||||
em_utils_flag_for_followup_completed (GtkWidget *parent, CamelFolder *folder, GPtrArray *uids)
|
||||
em_utils_flag_for_followup_completed (GtkWindow *parent, CamelFolder *folder, GPtrArray *uids)
|
||||
{
|
||||
char *now;
|
||||
int i;
|
||||
|
||||
g_return_if_fail (GTK_IS_WINDOW (parent));
|
||||
g_return_if_fail (CAMEL_IS_FOLDER (folder));
|
||||
g_return_if_fail (uids != NULL);
|
||||
|
||||
|
||||
104
mail/em-utils.h
104
mail/em-utils.h
@ -23,79 +23,71 @@
|
||||
#ifndef __EM_UTILS_H__
|
||||
#define __EM_UTILS_H__
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#pragma }
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include <sys/types.h>
|
||||
#include <camel/camel-exception.h>
|
||||
#include <camel/camel-folder.h>
|
||||
#include <camel/camel-internet-address.h>
|
||||
#include <camel/camel-mime-message.h>
|
||||
#include <camel/camel-mime-part.h>
|
||||
#include <camel/camel-stream.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
struct _GtkWidget;
|
||||
struct _GtkWindow;
|
||||
struct _CamelFolder;
|
||||
struct _CamelInternetAddress;
|
||||
struct _CamelStream;
|
||||
struct _CamelMimeMessage;
|
||||
struct _CamelMimePart;
|
||||
struct _GtkSelectionData;
|
||||
struct _GtkAdjustment;
|
||||
struct _CamelException;
|
||||
struct _EMFormat;
|
||||
|
||||
gboolean em_utils_prompt_user(struct _GtkWindow *parent, const char *promptkey, const char *tag, const char *arg0, ...);
|
||||
gboolean em_utils_prompt_user(GtkWindow *parent, const char *promptkey, const char *tag, const char *arg0, ...);
|
||||
|
||||
GPtrArray *em_utils_uids_copy (GPtrArray *uids);
|
||||
void em_utils_uids_free (GPtrArray *uids);
|
||||
|
||||
gboolean em_utils_configure_account (struct _GtkWidget *parent);
|
||||
gboolean em_utils_check_user_can_send_mail (struct _GtkWidget *parent);
|
||||
gboolean em_utils_configure_account (GtkWindow *parent);
|
||||
gboolean em_utils_check_user_can_send_mail (GtkWindow *parent);
|
||||
|
||||
void em_utils_edit_filters (struct _GtkWidget *parent);
|
||||
void em_utils_edit_filters (GtkWidget *parent);
|
||||
void em_filename_make_safe (gchar *string);
|
||||
void em_utils_edit_vfolders (struct _GtkWidget *parent);
|
||||
void em_utils_edit_vfolders (GtkWidget *parent);
|
||||
|
||||
void em_utils_save_part(struct _GtkWidget *parent, const char *prompt, struct _CamelMimePart *part);
|
||||
gboolean em_utils_save_part_to_file(struct _GtkWidget *parent, const char *filename, struct _CamelMimePart *part);
|
||||
void em_utils_save_messages (struct _GtkWidget *parent, struct _CamelFolder *folder, GPtrArray *uids);
|
||||
void em_utils_save_part(GtkWindow *parent, const char *prompt, CamelMimePart *part);
|
||||
gboolean em_utils_save_part_to_file(GtkWindow *parent, const char *filename, CamelMimePart *part);
|
||||
void em_utils_save_messages (GtkWindow *parent, CamelFolder *folder, GPtrArray *uids);
|
||||
|
||||
void em_utils_add_address(struct _GtkWidget *parent, const char *email);
|
||||
void em_utils_add_vcard(struct _GtkWidget *parent, const char *vcard);
|
||||
void em_utils_add_address(GtkWindow *parent, const char *email);
|
||||
void em_utils_add_vcard(GtkWindow *parent, const char *vcard);
|
||||
|
||||
void em_utils_flag_for_followup (struct _GtkWidget *parent, struct _CamelFolder *folder, GPtrArray *uids);
|
||||
void em_utils_flag_for_followup_clear (struct _GtkWidget *parent, struct _CamelFolder *folder, GPtrArray *uids);
|
||||
void em_utils_flag_for_followup_completed (struct _GtkWidget *parent, struct _CamelFolder *folder, GPtrArray *uids);
|
||||
void em_utils_flag_for_followup (GtkWindow *parent, CamelFolder *folder, GPtrArray *uids);
|
||||
void em_utils_flag_for_followup_clear (GtkWindow *parent, CamelFolder *folder, GPtrArray *uids);
|
||||
void em_utils_flag_for_followup_completed (GtkWindow *parent, CamelFolder *folder, GPtrArray *uids);
|
||||
|
||||
/* This stuff that follows probably doesn't belong here, then again, the stuff above probably belongs elsewhere */
|
||||
|
||||
void em_utils_selection_set_mailbox(struct _GtkSelectionData *data, struct _CamelFolder *folder, GPtrArray *uids);
|
||||
void em_utils_selection_get_mailbox(struct _GtkSelectionData *data, struct _CamelFolder *folder);
|
||||
void em_utils_selection_get_message(struct _GtkSelectionData *data, struct _CamelFolder *folder);
|
||||
/* FIXME: be nice if these also worked on struct _CamelFolder's, no easy way to get uri from folder yet tho */
|
||||
void em_utils_selection_set_uidlist(struct _GtkSelectionData *data, const char *uri, GPtrArray *uids);
|
||||
void em_utils_selection_get_uidlist(struct _GtkSelectionData *data, struct _CamelFolder *dest, int move, struct _CamelException *ex);
|
||||
void em_utils_selection_set_urilist(struct _GtkSelectionData *data, struct _CamelFolder *folder, GPtrArray *uids);
|
||||
void em_utils_selection_get_urilist(struct _GtkSelectionData *data, struct _CamelFolder *folder);
|
||||
void em_utils_selection_set_mailbox(GtkSelectionData *data, CamelFolder *folder, GPtrArray *uids);
|
||||
void em_utils_selection_get_mailbox(GtkSelectionData *data, CamelFolder *folder);
|
||||
void em_utils_selection_get_message(GtkSelectionData *data, CamelFolder *folder);
|
||||
/* FIXME: be nice if these also worked on CamelFolder's, no easy way to get uri from folder yet tho */
|
||||
void em_utils_selection_set_uidlist(GtkSelectionData *data, const char *uri, GPtrArray *uids);
|
||||
void em_utils_selection_get_uidlist(GtkSelectionData *data, CamelFolder *dest, int move, CamelException *ex);
|
||||
void em_utils_selection_set_urilist(GtkSelectionData *data, CamelFolder *folder, GPtrArray *uids);
|
||||
void em_utils_selection_get_urilist(GtkSelectionData *data, CamelFolder *folder);
|
||||
|
||||
char *em_utils_temp_save_part(struct _GtkWidget *parent, struct _CamelMimePart *part, gboolean mode);
|
||||
void em_utils_save_parts (struct _GtkWidget *parent, const char *prompt, GSList * parts);
|
||||
char *em_utils_temp_save_part(GtkWidget *parent, CamelMimePart *part, gboolean mode);
|
||||
void em_utils_save_parts (GtkWindow *parent, const char *prompt, GSList * parts);
|
||||
|
||||
gboolean em_utils_folder_is_drafts(struct _CamelFolder *folder, const char *uri);
|
||||
gboolean em_utils_folder_is_templates(struct _CamelFolder *folder, const char *uri);
|
||||
gboolean em_utils_folder_is_sent(struct _CamelFolder *folder, const char *uri);
|
||||
gboolean em_utils_folder_is_outbox(struct _CamelFolder *folder, const char *uri);
|
||||
gboolean em_utils_folder_is_drafts(CamelFolder *folder, const char *uri);
|
||||
gboolean em_utils_folder_is_templates(CamelFolder *folder, const char *uri);
|
||||
gboolean em_utils_folder_is_sent(CamelFolder *folder, const char *uri);
|
||||
gboolean em_utils_folder_is_outbox(CamelFolder *folder, const char *uri);
|
||||
|
||||
void em_utils_adjustment_page(struct _GtkAdjustment *adj, gboolean down);
|
||||
void em_utils_adjustment_page(GtkAdjustment *adj, gboolean down);
|
||||
|
||||
char *em_utils_get_proxy_uri(void);
|
||||
|
||||
/* FIXME: should this have an override charset? */
|
||||
char *em_utils_part_to_html(struct _CamelMimePart *part, ssize_t *len, struct _EMFormat *source);
|
||||
char *em_utils_message_to_html(struct _CamelMimeMessage *msg, const char *credits, guint32 flags, ssize_t *len, struct _EMFormat *source, const char *append);
|
||||
char *em_utils_part_to_html(CamelMimePart *part, ssize_t *len, struct _EMFormat *source);
|
||||
char *em_utils_message_to_html(CamelMimeMessage *msg, const char *credits, guint32 flags, ssize_t *len, struct _EMFormat *source, const char *append);
|
||||
|
||||
void em_utils_expunge_folder (struct _GtkWidget *parent, struct _CamelFolder *folder);
|
||||
void em_utils_empty_trash (struct _GtkWidget *parent);
|
||||
void em_utils_expunge_folder (GtkWidget *parent, CamelFolder *folder);
|
||||
void em_utils_empty_trash (GtkWidget *parent);
|
||||
|
||||
/* returns the folder name portion of an URI */
|
||||
char *em_utils_folder_name_from_uri (const char *uri);
|
||||
@ -105,20 +97,18 @@ char *em_uri_from_camel (const char *curi);
|
||||
char *em_uri_to_camel (const char *euri);
|
||||
|
||||
/* Run errors silently on the status bar */
|
||||
void em_utils_show_error_silent (struct _GtkWidget *widget);
|
||||
void em_utils_show_info_silent (struct _GtkWidget *widget);
|
||||
void em_utils_show_error_silent (GtkWidget *widget);
|
||||
void em_utils_show_info_silent (GtkWidget *widget);
|
||||
|
||||
/* is this address in the addressbook? caches results */
|
||||
gboolean em_utils_in_addressbook (struct _CamelInternetAddress *addr, gboolean local_only);
|
||||
struct _CamelMimePart *em_utils_contact_photo (struct _CamelInternetAddress *addr, gboolean local);
|
||||
gboolean em_utils_in_addressbook (CamelInternetAddress *addr, gboolean local_only);
|
||||
CamelMimePart *em_utils_contact_photo (CamelInternetAddress *addr, gboolean local);
|
||||
|
||||
const char *em_utils_snoop_type(struct _CamelMimePart *part);
|
||||
const char *em_utils_snoop_type(CamelMimePart *part);
|
||||
|
||||
/* clears flag 'get_password_canceled' at every known accounts, so if needed, get_password will show dialog */
|
||||
void em_utils_clear_get_password_canceled_accounts_flag (void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __EM_UTILS_H__ */
|
||||
|
||||
@ -97,7 +97,6 @@
|
||||
|
||||
#define d(x)
|
||||
|
||||
static void create_local_item_cb(EUserCreatableItemsHandler *handler, const char *item_type_name, void *data);
|
||||
static void view_changed_timeout_remove (EComponentView *component_view);
|
||||
|
||||
#define MAIL_COMPONENT_DEFAULT(mc) if (mc == NULL) mc = mail_component_peek();
|
||||
@ -942,44 +941,44 @@ impl_quit(PortableServer_Servant servant, CORBA_Environment *ev)
|
||||
// return list;
|
||||
//}
|
||||
|
||||
static int
|
||||
create_item(const char *type, EMFolderTreeModel *model, const char *uri, gpointer tree)
|
||||
{
|
||||
if (strcmp(type, "message") == 0) {
|
||||
if (!em_utils_check_user_can_send_mail(NULL))
|
||||
return 0;
|
||||
//static int
|
||||
//create_item(const char *type, EMFolderTreeModel *model, const char *uri, gpointer tree)
|
||||
//{
|
||||
// if (strcmp(type, "message") == 0) {
|
||||
// if (!em_utils_check_user_can_send_mail(NULL))
|
||||
// return 0;
|
||||
//
|
||||
// em_utils_compose_new_message(uri);
|
||||
// } else if (strcmp(type, "folder") == 0) {
|
||||
// em_folder_utils_create_folder(NULL, tree);
|
||||
// } else
|
||||
// return -1;
|
||||
//
|
||||
// return 0;
|
||||
//}
|
||||
|
||||
em_utils_compose_new_message(uri);
|
||||
} else if (strcmp(type, "folder") == 0) {
|
||||
em_folder_utils_create_folder(NULL, tree);
|
||||
} else
|
||||
return -1;
|
||||
//static void
|
||||
//create_local_item_cb(EUserCreatableItemsHandler *handler, const char *item_type_name, void *data)
|
||||
//{
|
||||
// EMFolderTree *tree = data;
|
||||
// char *uri = em_folder_tree_get_selected_uri(tree);
|
||||
//
|
||||
// create_item(item_type_name, em_folder_tree_get_model(tree), uri, (gpointer) tree);
|
||||
// g_free(uri);
|
||||
//}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
create_local_item_cb(EUserCreatableItemsHandler *handler, const char *item_type_name, void *data)
|
||||
{
|
||||
EMFolderTree *tree = data;
|
||||
char *uri = em_folder_tree_get_selected_uri(tree);
|
||||
|
||||
create_item(item_type_name, em_folder_tree_get_model(tree), uri, (gpointer) tree);
|
||||
g_free(uri);
|
||||
}
|
||||
|
||||
static void
|
||||
impl_requestCreateItem (PortableServer_Servant servant,
|
||||
const CORBA_char *item_type_name,
|
||||
CORBA_Environment *ev)
|
||||
{
|
||||
MailComponent *mc = MAIL_COMPONENT(bonobo_object_from_servant(servant));
|
||||
|
||||
if (create_item(item_type_name, mc->priv->model, NULL, NULL) == -1) {
|
||||
CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
|
||||
ex_GNOME_Evolution_Component_UnknownType, NULL);
|
||||
}
|
||||
}
|
||||
//static void
|
||||
//impl_requestCreateItem (PortableServer_Servant servant,
|
||||
// const CORBA_char *item_type_name,
|
||||
// CORBA_Environment *ev)
|
||||
//{
|
||||
// MailComponent *mc = MAIL_COMPONENT(bonobo_object_from_servant(servant));
|
||||
//
|
||||
// if (create_item(item_type_name, mc->priv->model, NULL, NULL) == -1) {
|
||||
// CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
|
||||
// ex_GNOME_Evolution_Component_UnknownType, NULL);
|
||||
// }
|
||||
//}
|
||||
|
||||
static void
|
||||
handleuri_got_folder(char *uri, CamelFolder *folder, void *data)
|
||||
@ -1258,12 +1257,12 @@ mail_component_class_init (MailComponentClass *class)
|
||||
mepv->test = impl_mail_test;
|
||||
}
|
||||
|
||||
static void
|
||||
store_hash_free (struct _store_info *si)
|
||||
{
|
||||
si->removed = 1;
|
||||
store_info_unref(si);
|
||||
}
|
||||
//static void
|
||||
//store_hash_free (struct _store_info *si)
|
||||
//{
|
||||
// si->removed = 1;
|
||||
// store_info_unref(si);
|
||||
//}
|
||||
|
||||
static void
|
||||
mail_component_init (MailComponent *component)
|
||||
@ -1417,63 +1416,63 @@ struct _CamelSession *mail_component_peek_session(MailComponent *component)
|
||||
// return store;
|
||||
//}
|
||||
|
||||
static void
|
||||
store_disconnect (CamelStore *store, void *event_data, void *user_data)
|
||||
{
|
||||
camel_service_disconnect (CAMEL_SERVICE (store), TRUE, NULL);
|
||||
camel_object_unref (store);
|
||||
}
|
||||
//static void
|
||||
//store_disconnect (CamelStore *store, void *event_data, void *user_data)
|
||||
//{
|
||||
// camel_service_disconnect (CAMEL_SERVICE (store), TRUE, NULL);
|
||||
// camel_object_unref (store);
|
||||
//}
|
||||
|
||||
void
|
||||
mail_component_remove_store (MailComponent *component, CamelStore *store)
|
||||
{
|
||||
MailComponentPrivate *priv;
|
||||
//void
|
||||
//mail_component_remove_store (MailComponent *component, CamelStore *store)
|
||||
//{
|
||||
// MailComponentPrivate *priv;
|
||||
//
|
||||
// MAIL_COMPONENT_DEFAULT(component);
|
||||
//
|
||||
// priv = component->priv;
|
||||
//
|
||||
// /* Because the store_hash holds a reference to each store
|
||||
// * used as a key in it, none of them will ever be gc'ed, meaning
|
||||
// * any call to camel_session_get_{service,store} with the same
|
||||
// * URL will always return the same object. So this works.
|
||||
// */
|
||||
//
|
||||
// if (g_hash_table_lookup (priv->store_hash, store) == NULL)
|
||||
// return;
|
||||
//
|
||||
// camel_object_ref (store);
|
||||
// g_hash_table_remove (priv->store_hash, store);
|
||||
//
|
||||
// /* so i guess potentially we could have a race, add a store while one
|
||||
// being removed. ?? */
|
||||
// mail_note_store_remove (store);
|
||||
//
|
||||
// em_folder_tree_model_remove_store (priv->model, store);
|
||||
//
|
||||
// mail_async_event_emit (priv->async_event, MAIL_ASYNC_THREAD, (MailAsyncFunc) store_disconnect, store, NULL, NULL);
|
||||
//}
|
||||
|
||||
MAIL_COMPONENT_DEFAULT(component);
|
||||
|
||||
priv = component->priv;
|
||||
|
||||
/* Because the store_hash holds a reference to each store
|
||||
* used as a key in it, none of them will ever be gc'ed, meaning
|
||||
* any call to camel_session_get_{service,store} with the same
|
||||
* URL will always return the same object. So this works.
|
||||
*/
|
||||
|
||||
if (g_hash_table_lookup (priv->store_hash, store) == NULL)
|
||||
return;
|
||||
|
||||
camel_object_ref (store);
|
||||
g_hash_table_remove (priv->store_hash, store);
|
||||
|
||||
/* so i guess potentially we could have a race, add a store while one
|
||||
being removed. ?? */
|
||||
mail_note_store_remove (store);
|
||||
|
||||
em_folder_tree_model_remove_store (priv->model, store);
|
||||
|
||||
mail_async_event_emit (priv->async_event, MAIL_ASYNC_THREAD, (MailAsyncFunc) store_disconnect, store, NULL, NULL);
|
||||
}
|
||||
|
||||
void
|
||||
mail_component_remove_store_by_uri (MailComponent *component, const char *uri)
|
||||
{
|
||||
CamelProvider *prov;
|
||||
CamelStore *store;
|
||||
|
||||
MAIL_COMPONENT_DEFAULT(component);
|
||||
|
||||
if (!(prov = camel_provider_get(uri, NULL)))
|
||||
return;
|
||||
|
||||
if (!(prov->flags & CAMEL_PROVIDER_IS_STORAGE))
|
||||
return;
|
||||
|
||||
store = (CamelStore *) camel_session_get_service (session, uri, CAMEL_PROVIDER_STORE, NULL);
|
||||
if (store != NULL) {
|
||||
mail_component_remove_store (component, store);
|
||||
camel_object_unref (store);
|
||||
}
|
||||
}
|
||||
//void
|
||||
//mail_component_remove_store_by_uri (MailComponent *component, const char *uri)
|
||||
//{
|
||||
// CamelProvider *prov;
|
||||
// CamelStore *store;
|
||||
//
|
||||
// MAIL_COMPONENT_DEFAULT(component);
|
||||
//
|
||||
// if (!(prov = camel_provider_get(uri, NULL)))
|
||||
// return;
|
||||
//
|
||||
// if (!(prov->flags & CAMEL_PROVIDER_IS_STORAGE))
|
||||
// return;
|
||||
//
|
||||
// store = (CamelStore *) camel_session_get_service (session, uri, CAMEL_PROVIDER_STORE, NULL);
|
||||
// if (store != NULL) {
|
||||
// mail_component_remove_store (component, store);
|
||||
// camel_object_unref (store);
|
||||
// }
|
||||
//}
|
||||
|
||||
// [KILL-BONOBO] Unused.
|
||||
//int
|
||||
|
||||
@ -59,6 +59,7 @@ enum {
|
||||
PROP_PAGE_NUM,
|
||||
PROP_TITLE,
|
||||
PROP_SHELL_CONTENT,
|
||||
PROP_SHELL_MODULE,
|
||||
PROP_SHELL_SIDEBAR,
|
||||
PROP_SHELL_TASKBAR,
|
||||
PROP_SHELL_WINDOW,
|
||||
@ -231,6 +232,11 @@ shell_view_get_property (GObject *object,
|
||||
E_SHELL_VIEW (object)));
|
||||
return;
|
||||
|
||||
case PROP_SHELL_MODULE:
|
||||
g_value_set_object (
|
||||
value, e_shell_view_get_shell_module (
|
||||
E_SHELL_VIEW (object)));
|
||||
|
||||
case PROP_SHELL_SIDEBAR:
|
||||
g_value_set_object (
|
||||
value, e_shell_view_get_shell_sidebar (
|
||||
@ -445,6 +451,21 @@ shell_view_class_init (EShellViewClass *class)
|
||||
E_TYPE_SHELL_CONTENT,
|
||||
G_PARAM_READABLE));
|
||||
|
||||
/**
|
||||
* EShellView::shell-module
|
||||
*
|
||||
* The #EShellModule for this shell view.
|
||||
**/
|
||||
g_object_class_install_property (
|
||||
object_class,
|
||||
PROP_SHELL_MODULE,
|
||||
g_param_spec_object (
|
||||
"shell-module",
|
||||
_("Shell Module"),
|
||||
_("The EShellModule for this shell view"),
|
||||
E_TYPE_SHELL_MODULE,
|
||||
G_PARAM_READABLE));
|
||||
|
||||
/**
|
||||
* EShellView:shell-sidebar
|
||||
*
|
||||
|
||||
@ -32,7 +32,8 @@ enum {
|
||||
PROP_0,
|
||||
PROP_ACTIVE_VIEW,
|
||||
PROP_SAFE_MODE,
|
||||
PROP_SHELL
|
||||
PROP_SHELL,
|
||||
PROP_UI_MANAGER
|
||||
};
|
||||
|
||||
static gpointer parent_class;
|
||||
@ -195,6 +196,12 @@ shell_window_get_property (GObject *object,
|
||||
value, e_shell_window_get_shell (
|
||||
E_SHELL_WINDOW (object)));
|
||||
return;
|
||||
|
||||
case PROP_UI_MANAGER:
|
||||
g_value_set_object (
|
||||
value, e_shell_window_get_ui_manager (
|
||||
E_SHELL_WINDOW (object)));
|
||||
return;
|
||||
}
|
||||
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||
@ -285,6 +292,21 @@ shell_window_class_init (EShellWindowClass *class)
|
||||
E_TYPE_SHELL,
|
||||
G_PARAM_READWRITE |
|
||||
G_PARAM_CONSTRUCT_ONLY));
|
||||
|
||||
/**
|
||||
* EShellWindow:ui-manager
|
||||
*
|
||||
* The shell window's #GtkUIManager.
|
||||
**/
|
||||
g_object_class_install_property (
|
||||
object_class,
|
||||
PROP_UI_MANAGER,
|
||||
g_param_spec_object (
|
||||
"ui-manager",
|
||||
_("UI Manager"),
|
||||
_("The shell window's GtkUIManager"),
|
||||
GTK_TYPE_UI_MANAGER,
|
||||
G_PARAM_READABLE));
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
Reference in New Issue
Block a user