aboutsummaryrefslogtreecommitdiffstats
path: root/shell/e-shell-view.h
diff options
context:
space:
mode:
Diffstat (limited to 'shell/e-shell-view.h')
-rw-r--r--shell/e-shell-view.h329
1 files changed, 225 insertions, 104 deletions
diff --git a/shell/e-shell-view.h b/shell/e-shell-view.h
index 1b6697d558..db51c31ca8 100644
--- a/shell/e-shell-view.h
+++ b/shell/e-shell-view.h
@@ -1,129 +1,250 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-shell-view.h
- *
- * Copyright (C) 2000 Ximian, Inc.
+/*
+ * e-shell-view.h
*
* This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
+ * 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
- * General Public License for more details.
+ * 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/>
*
- * 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 Place - Suite 330,
- * Boston, MA 02111-1307, USA.
*
- * Author: Ettore Perazzoli
+ * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
+ *
*/
-#ifndef _E_SHELL_VIEW_H_
-#define _E_SHELL_VIEW_H_
+#ifndef E_SHELL_VIEW_H
+#define E_SHELL_VIEW_H
+
+#include <libedataserver/libedataserver.h>
+
+#include <e-util/e-util.h>
+
+#include <shell/e-shell-common.h>
+#include <shell/e-shell-backend.h>
+#include <shell/e-shell-content.h>
+#include <shell/e-shell-sidebar.h>
+#include <shell/e-shell-taskbar.h>
+#include <shell/e-shell-window.h>
+
+/* Standard GObject macros */
+#define E_TYPE_SHELL_VIEW \
+ (e_shell_view_get_type ())
+#define E_SHELL_VIEW(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), E_TYPE_SHELL_VIEW, EShellView))
+#define E_SHELL_VIEW_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), E_TYPE_SHELL_VIEW, EShellViewClass))
+#define E_IS_SHELL_VIEW(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), E_TYPE_SHELL_VIEW))
+#define E_IS_SHELL_VIEW_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), E_TYPE_SHELL_VIEW))
+#define E_SHELL_VIEW_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), E_TYPE_SHELL_VIEW, EShellViewClass))
+
+G_BEGIN_DECLS
+
+typedef struct _EShellView EShellView;
+typedef struct _EShellViewClass EShellViewClass;
+typedef struct _EShellViewPrivate EShellViewPrivate;
-#include "e-task-bar.h"
+/**
+ * EShellView:
+ *
+ * Contains only private data that should be read and manipulated using the
+ * functions below.
+ **/
+struct _EShellView {
+ GObject parent;
+ EShellViewPrivate *priv;
+};
-#include <bonobo/bonobo-win.h>
-#include <bonobo/bonobo-ui-component.h>
-#include <bonobo/bonobo-ui-container.h>
+/**
+ * EShellViewClass:
+ * @parent_class: The parent class structure.
+ * @label: The initial value for the switcher action's
+ * #GtkAction:label property. See
+ * e_shell_view_get_action().
+ * @icon_name: The initial value for the switcher action's
+ * #GtkAction:icon-name property. See
+ * e_shell_view_get_action().
+ * @ui_definition: Base name of the UI definintion file to add
+ * when the shell view is activated.
+ * @ui_manager_id: The #GtkUIManager ID for #EPluginUI. Plugins
+ * should use to this ID in their "eplug" files to
+ * add menu and toolbar items to the shell view.
+ * @search_context_type:GType of the search context, which should be an
+ * instance of ERuleContextClass or a custom subclass.
+ * @search_context: A unique @search_context_type instance is created
+ * automatically for each subclass and shared across
+ * all instances of that subclass.
+ * @search_options: Widget path in the UI definition to the search
+ * options popup menu. The menu gets shown when the
+ * user clicks the "find" icon in the search entry.
+ * @search_rules: Base name of the XML file containing predefined
+ * search rules for this shell view. The XML files
+ * are usually named something like <filename>
+ * <emphasis>view</emphasis>types.xml</filename>.
+ * @view_collection: A unique #GalViewCollection instance is created
+ * for each subclass and shared across all instances
+ * of that subclass. That much is done automatically
+ * for subclasses, but subclasses are still responsible
+ * for adding the appropriate #GalView factories to the
+ * view collection.
+ * @shell_backend: The corresponding #EShellBackend for the shell view.
+ * @new_shell_content: Factory method for the shell view's #EShellContent.
+ * See e_shell_view_get_shell_content().
+ * @new_shell_sidebar: Factory method for the shell view's #EShellSidebar.
+ * See e_shell_view_get_shell_sidebar().
+ * @new_shell_taskbar: Factory method for the shell view's #EShellTaskbar.
+ * See e_shell_view_get_shell_taskbar().
+ * @new_shell_searchbar:
+ * Factory method for the shell view's #EShellSearchbar.
+ * See e_shell_view_get_searchbar().
+ * @construct_searchbar:
+ * Class method to create, configure and pack a search
+ * bar widget. The search bar differs in normal shell
+ * mode versus "express" mode.
+ * @get_search_name: Class method to obtain a suitable name for the
+ * current search criteria. Subclasses should rarely
+ * need to override the default behavior.
+ * @toggled: Class method for the #EShellView::toggled signal.
+ * Subclasses should rarely need to override the
+ * default behavior.
+ * @clear_search: Class method for the #EShellView::clear-search
+ * signal. The default method sets the
+ * #EShellView:search-rule to %NULL and then emits
+ * the #EShellView::execute-search signal.
+ * @custom_search: Class method for the #EShellView::custom-search
+ * signal. This is emitted prior to executing an
+ * advanced or saved search. The default method sets
+ * the #EShellView:search-rule property and then emits
+ * the #EShellView::execute-search signal.
+ * @execute_search: Class method for the #EShellView::execute-search
+ * signal. There is no default behavior; subclasses
+ * should override this.
+ * @update_actions: Class method for the #EShellView::update-actions
+ * signal. There is no default behavior; subclasses
+ * should override this.
+ *
+ * #EShellViewClass contains a number of important settings for subclasses.
+ **/
+struct _EShellViewClass {
+ GObjectClass parent_class;
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
+ /* Initial switcher action values. */
+ const gchar *label;
+ const gchar *icon_name;
-
-#define E_TYPE_SHELL_VIEW (e_shell_view_get_type ())
-#define E_SHELL_VIEW(obj) (GTK_CHECK_CAST ((obj), E_TYPE_SHELL_VIEW, EShellView))
-#define E_SHELL_VIEW_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_TYPE_SHELL_VIEW, EShellViewClass))
-#define E_IS_SHELL_VIEW(obj) (GTK_CHECK_TYPE ((obj), E_TYPE_SHELL_VIEW))
-#define E_IS_SHELL_VIEW_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), E_TYPE_SHELL_VIEW))
+ /* Base name of the UI definition file. */
+ const gchar *ui_definition;
-typedef struct _EShellView EShellView;
-typedef struct _EShellViewPrivate EShellViewPrivate;
-typedef struct _EShellViewClass EShellViewClass;
+ /* GtkUIManager identifier for use with EPluginUI.
+ * Usually "org.gnome.evolution.$(VIEW_NAME)". */
+ const gchar *ui_manager_id;
-#include "e-shell.h"
+ /* Search context. Subclasses may override the type.
+ * A unique instance is created for each subclass. */
+ GType search_context_type;
+ ERuleContext *search_context;
-#define E_SHELL_VIEW_DEFAULT_URI "evolution:/summary"
+ /* Widget path to the search options popup menu. */
+ const gchar *search_options;
-struct _EShellView {
- BonoboWindow parent;
+ /* Base name of the search rule definition file. */
+ const gchar *search_rules;
- EShellViewPrivate *priv;
-};
+ /* A unique instance is created for each subclass. */
+ GalViewCollection *view_collection;
-struct _EShellViewClass {
- BonoboWindowClass parent_class;
+ /* This is set by the corresponding EShellBackend. */
+ EShellBackend *shell_backend;
- /* Signals. */
+ /* Factory Methods */
+ GtkWidget * (*new_shell_content) (EShellView *shell_view);
+ GtkWidget * (*new_shell_sidebar) (EShellView *shell_view);
+ GtkWidget * (*new_shell_taskbar) (EShellView *shell_view);
+ GtkWidget * (*new_shell_searchbar) (EShellView *shell_view);
- void (* shortcut_bar_visibility_changed) (EShellView *shell_view,
- gboolean visible);
- void (* folder_bar_visibility_changed) (EShellView *shell_view,
- gboolean visible);
+ /* Create, configure and pack a search bar widget. */
+ GtkWidget * (*construct_searchbar) (EShellView *shell_view);
+ gchar * (*get_search_name) (EShellView *shell_view);
- void (* view_changed) (EShellView *shell_view,
- const char *evolution_path,
- const char *physical_uri,
- const char *folder_type,
- const char *component_id);
+ /* Signals */
+ void (*toggled) (EShellView *shell_view);
+ void (*clear_search) (EShellView *shell_view);
+ void (*custom_search) (EShellView *shell_view,
+ EFilterRule *custom_rule);
+ void (*execute_search) (EShellView *shell_view);
+ void (*update_actions) (EShellView *shell_view);
};
-
-/* WARNING: Don't use `e_shell_view_new()' to create new views for the shell
- unless you know what you are doing; this is just the standard GTK+
- constructor thing and it won't allow the shell to do the required
- bookkeeping for the created views. Instead, the right way to create a new
- view is calling `e_shell_new_view()'. */
-
-GtkType e_shell_view_get_type (void);
-EShellView *e_shell_view_construct (EShellView *shell_view,
- EShell *shell);
-EShellView *e_shell_view_new (EShell *shell);
-
-const GNOME_Evolution_ShellView e_shell_view_get_corba_interface (EShellView *view);
-
-gboolean e_shell_view_display_uri (EShellView *shell_view,
- const char *uri,
- gboolean queue);
-
-void e_shell_view_show_shortcut_bar (EShellView *shell_view,
- gboolean show);
-gboolean e_shell_view_shortcut_bar_shown (EShellView *shell_view);
-void e_shell_view_show_folder_bar (EShellView *shell_view,
- gboolean show);
-gboolean e_shell_view_folder_bar_shown (EShellView *shell_view);
-
-void e_shell_view_show_settings (EShellView *shell_view);
-
-ETaskBar *e_shell_view_get_task_bar (EShellView *shell_view);
-EShell *e_shell_view_get_shell (EShellView *shell_view);
-BonoboUIComponent *e_shell_view_get_bonobo_ui_component (EShellView *shell_view);
-BonoboUIContainer *e_shell_view_get_bonobo_ui_container (EShellView *shell_view);
-GtkWidget *e_shell_view_get_appbar (EShellView *shell_view);
-const char *e_shell_view_get_current_uri (EShellView *shell_view);
-const char *e_shell_view_get_current_physical_uri (EShellView *shell_view);
-const char *e_shell_view_get_current_folder_type (EShellView *shell_view);
-const char *e_shell_view_get_current_component_id (EShellView *shell_view);
-const char *e_shell_view_get_current_path (EShellView *shell_view);
-
-gboolean e_shell_view_save_settings (EShellView *shell_view,
- int view_num);
-gboolean e_shell_view_load_settings (EShellView *shell_view,
- int view_num);
-
-int e_shell_view_get_current_shortcuts_group_num (EShellView *shell_view);
-void e_shell_view_set_current_shortcuts_group_num (EShellView *shell_view,
- int group_num);
-
-/* Private -- */
-const char *e_shell_view_get_folder_bar_right_click_path (EShellView *shell_view);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_SHELL_VIEW_H_ */
+GType e_shell_view_get_type (void);
+const gchar * e_shell_view_get_name (EShellView *shell_view);
+GtkAction * e_shell_view_get_action (EShellView *shell_view);
+const gchar * e_shell_view_get_title (EShellView *shell_view);
+void e_shell_view_set_title (EShellView *shell_view,
+ const gchar *title);
+const gchar * e_shell_view_get_view_id (EShellView *shell_view);
+void e_shell_view_set_view_id (EShellView *shell_view,
+ const gchar *view_id);
+GalViewInstance *
+ e_shell_view_new_view_instance (EShellView *shell_view,
+ const gchar *instance_id);
+GalViewInstance *
+ e_shell_view_get_view_instance (EShellView *shell_view);
+void e_shell_view_set_view_instance (EShellView *shell_view,
+ GalViewInstance *view_instance);
+gboolean e_shell_view_is_active (EShellView *shell_view);
+gint e_shell_view_get_page_num (EShellView *shell_view);
+void e_shell_view_set_page_num (EShellView *shell_view,
+ gint page_num);
+GtkWidget * e_shell_view_get_searchbar (EShellView *shell_view);
+gchar * e_shell_view_get_search_name (EShellView *shell_view);
+EFilterRule * e_shell_view_get_search_rule (EShellView *shell_view);
+void e_shell_view_set_search_rule (EShellView *shell_view,
+ EFilterRule *search_rule);
+gchar * e_shell_view_get_search_query (EShellView *shell_view);
+GtkSizeGroup * e_shell_view_get_size_group (EShellView *shell_view);
+EShellBackend * e_shell_view_get_shell_backend (EShellView *shell_view);
+EShellContent * e_shell_view_get_shell_content (EShellView *shell_view);
+EShellSidebar * e_shell_view_get_shell_sidebar (EShellView *shell_view);
+EShellTaskbar * e_shell_view_get_shell_taskbar (EShellView *shell_view);
+EShellWindow * e_shell_view_get_shell_window (EShellView *shell_view);
+GKeyFile * e_shell_view_get_state_key_file (EShellView *shell_view);
+void e_shell_view_set_state_dirty (EShellView *shell_view);
+void e_shell_view_clear_search (EShellView *shell_view);
+void e_shell_view_custom_search (EShellView *shell_view,
+ EFilterRule *custom_rule);
+void e_shell_view_execute_search (EShellView *shell_view);
+void e_shell_view_block_execute_search
+ (EShellView *shell_view);
+void e_shell_view_unblock_execute_search
+ (EShellView *shell_view);
+gboolean e_shell_view_is_execute_search_blocked
+ (EShellView *shell_view);
+void e_shell_view_update_actions (EShellView *shell_view);
+GtkWidget * e_shell_view_show_popup_menu (EShellView *shell_view,
+ const gchar *widget_path,
+ GdkEvent *button_event);
+void e_shell_view_write_source (EShellView *shell_view,
+ ESource *source);
+void e_shell_view_remove_source (EShellView *shell_view,
+ ESource *source);
+void e_shell_view_remote_delete_source
+ (EShellView *shell_view,
+ ESource *source);
+
+G_END_DECLS
+
+#endif /* E_SHELL_VIEW_H */