diff options
Diffstat (limited to 'shell/e-shell-view.h')
-rw-r--r-- | shell/e-shell-view.h | 329 |
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 */ |