/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/*
* Copyright © 2000-2004 Marco Pesenti Gritti
* Copyright © 2003, 2004, 2006 Christian Persch
* Copyright © 2011 Igalia S.L.
*
* This file is part of Epiphany.
*
* Epiphany 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 3 of the License, or
* (at your option) any later version.
*
* Epiphany 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 Epiphany. If not, see .
*/
#pragma once
#include "ephy-bookmarks-manager.h"
#include "ephy-embed-shell.h"
#include "ephy-embed.h"
#include "ephy-history-manager.h"
#include "ephy-open-tabs-manager.h"
#include "ephy-password-manager.h"
#include "ephy-session.h"
#include "ephy-sync-service.h"
#include "ephy-window.h"
#include
#include
#include
G_BEGIN_DECLS
#define EPHY_TYPE_SHELL (ephy_shell_get_type ())
G_DECLARE_FINAL_TYPE (EphyShell, ephy_shell, EPHY, SHELL, EphyEmbedShell)
/**
* EphyNewTabFlags:
* @EPHY_NEW_TAB_DONT_SHOW_WINDOW: do not show the window where the new
* tab is attached.
* @EPHY_NEW_TAB_APPEND_LAST: appends the new tab at the end of the
* notebook.
* @EPHY_NEW_TAB_APPEND_AFTER: appends the new tab right after the
* current one in the notebook.
* @EPHY_NEW_TAB_FROM_EXTERNAL: tries to open the new tab in the current
* active tab if it is currently not loading anything and is
* blank.
*
* Controls how new tabs/windows are created and handled.
*/
typedef enum {
/* Page mode */
EPHY_NEW_TAB_DONT_SHOW_WINDOW = 1 << 0,
/* Tabs */
EPHY_NEW_TAB_FIRST = 1 << 1,
EPHY_NEW_TAB_APPEND_LAST = 1 << 2,
EPHY_NEW_TAB_APPEND_AFTER = 1 << 3,
EPHY_NEW_TAB_JUMP = 1 << 4,
} EphyNewTabFlags;
typedef enum {
EPHY_STARTUP_NEW_TAB,
EPHY_STARTUP_NEW_WINDOW
} EphyStartupMode;
typedef struct {
EphyStartupMode startup_mode;
char *session_filename;
char **arguments;
guint32 user_time;
} EphyShellStartupContext;
EphyShell *ephy_shell_get_default (void);
EphyEmbed *ephy_shell_new_tab (EphyShell *shell,
EphyWindow *parent_window,
EphyEmbed *previous_embed,
EphyNewTabFlags flags);
EphyEmbed *ephy_shell_new_tab_full (EphyShell *shell,
const char *title,
WebKitWebView *related_view,
EphyWindow *parent_window,
EphyEmbed *previous_embed,
EphyNewTabFlags flags,
guint32 user_time);
EphySession *ephy_shell_get_session (EphyShell *shell);
GNetworkMonitor *ephy_shell_get_net_monitor (EphyShell *shell);
EphyBookmarksManager *ephy_shell_get_bookmarks_manager (EphyShell *shell);
EphyHistoryManager *ephy_shell_get_history_manager (EphyShell *shell);
EphyOpenTabsManager *ephy_shell_get_open_tabs_manager (EphyShell *shell);
EphySyncService *ephy_shell_get_sync_service (EphyShell *shell);
GtkWidget *ephy_shell_get_history_dialog (EphyShell *shell);
GObject *ephy_shell_get_prefs_dialog (EphyShell *shell);
guint ephy_shell_get_n_windows (EphyShell *shell);
gboolean ephy_shell_close_all_windows (EphyShell *shell);
void ephy_shell_try_quit (EphyShell *shell);
void ephy_shell_open_uris (EphyShell *shell,
const char **uris,
EphyStartupMode startup_mode,
guint32 user_time);
void ephy_shell_set_startup_context (EphyShell *shell,
EphyShellStartupContext *ctx);
EphyShellStartupContext *ephy_shell_startup_context_new (EphyStartupMode startup_mode,
char *session_filename,
char **arguments,
guint32 user_time);
void _ephy_shell_create_instance (EphyEmbedShellMode mode);
void ephy_shell_send_notification (EphyShell *shell,
gchar *id,
GNotification *notification);
gboolean ephy_shell_startup_finished (EphyShell *shell);
G_END_DECLS