#include "eggfindbar.h"
#include "egg-recent-view-uimanager.h"
#include "egg-recent-view.h"
-#include "egg-recent-model.h"
#include "egg-toolbar-editor.h"
-#include "egg-toolbars-model.h"
#include "egg-editable-toolbar.h"
+#include "egg-recent-model.h"
+#include "egg-toolbars-model.h"
#include "ephy-zoom.h"
#include "ephy-zoom-action.h"
#include "ev-application.h"
#include "ev-stock-icons.h"
-#include "ev-file-helpers.h"
#include "ev-metadata-manager.h"
#include <poppler.h>
GtkActionGroup *action_group;
GtkUIManager *ui_manager;
- gchar *toolbar_file;
- EggToolbarsModel *toolbar_model;
-
/* Fullscreen mode */
GtkWidget *fullscreen_toolbar;
GtkWidget *fullscreen_popup;
- GSource *fullscreen_timeout_source;
+ GSource *fullscreen_timeout_source;
/* Document */
char *uri;
EvJob *xfer_job;
EvJob *load_job;
- /* recent file stuff */
- EggRecentModel *recent_model;
EggRecentViewUIManager *recent_view;
};
set_widget_visibility (priv->sidebar, sidebar);
set_widget_visibility (priv->find_bar, findbar);
set_widget_visibility (priv->statusbar, statusbar);
- set_widget_visibility (priv->fullscreen_toolbar, fullscreen_toolbar);
if (priv->fullscreen_popup != NULL) {
if (fullscreen)
show_fullscreen_popup (window);
else
set_widget_visibility (priv->fullscreen_popup, FALSE);
+
+ set_widget_visibility (priv->fullscreen_toolbar, fullscreen_toolbar);
}
}
{
update_action_sensitivity (ev_window);
-#ifdef ENABLE_METADATA
ev_metadata_manager_set_int (ev_window->priv->uri, "page", page);
-#endif
}
static void
}
}
-#ifdef ENABLE_METADATA
static void
setup_document_from_metadata (EvWindow *window)
{
}
}
-#endif
static void
ev_window_setup_document (EvWindow *ev_window)
ev_window->priv->document);
}
-#ifdef ENABLE_METADATA
setup_document_from_metadata (ev_window);
-#endif
}
static void
}
}
-#ifdef ENABLE_METADATA
static void
setup_view_from_metadata (EvWindow *window)
{
}
}
}
-#endif
void
ev_window_open_uri (EvWindow *ev_window, const char *uri)
g_free (ev_window->priv->uri);
ev_window->priv->uri = g_strdup (uri);
-#ifdef ENABLE_METADATA
setup_view_from_metadata (ev_window);
-#endif
ev_window_clear_jobs (ev_window);
ev_window_clear_local_uri (ev_window);
item = egg_recent_item_new_from_uri (filename);
egg_recent_item_add_group (item, "Evince");
- egg_recent_model_add_full (window->priv->recent_model, item);
+ egg_recent_model_add_full (ev_application_get_recent_model (EV_APP), item);
}
static void
ev_window_setup_recent (EvWindow *ev_window)
{
-
-
- /* it would be better if we just filtered by mime-type, but there
- * doesn't seem to be an easy way to figure out which mime-types we
- * can handle */
- ev_window->priv->recent_model = egg_recent_model_new (EGG_RECENT_MODEL_SORT_MRU);
-
ev_window->priv->recent_view = egg_recent_view_uimanager_new (ev_window->priv->ui_manager,
"/MainMenu/FileMenu/RecentFilesMenu",
G_CALLBACK (ev_window_cmd_recent_file_activate),
ev_window);
egg_recent_view_uimanager_show_icons (EGG_RECENT_VIEW_UIMANAGER (ev_window->priv->recent_view), FALSE);
- egg_recent_model_set_limit (ev_window->priv->recent_model, 5);
egg_recent_view_set_model (EGG_RECENT_VIEW (ev_window->priv->recent_view),
- ev_window->priv->recent_model);
-
- egg_recent_model_set_filter_groups (ev_window->priv->recent_model,
- "Evince", NULL);
+ ev_application_get_recent_model (EV_APP));
egg_recent_view_uimanager_set_trailing_sep (ev_window->priv->recent_view, TRUE);
GtkWidget *hbox;
GtkWidget *button;
+ window->priv->fullscreen_toolbar = egg_editable_toolbar_new_with_model
+ (window->priv->ui_manager, ev_application_get_toolbars_model (EV_APP));
+
popup = gtk_window_new (GTK_WINDOW_POPUP);
hbox = gtk_hbox_new (FALSE, 0);
button = ev_window_get_exit_fullscreen_button (window);
gtk_window_fullscreen (GTK_WINDOW (window));
ev_window_update_fullscreen_popup (window);
-#ifdef ENABLE_METADATA
ev_metadata_manager_set_boolean (window->priv->uri, "fullscreen", TRUE);
-#endif
}
static void
gtk_window_unfullscreen (GTK_WINDOW (window));
update_chrome_visibility (window);
-#ifdef ENABLE_METADATA
ev_metadata_manager_set_boolean (window->priv->uri, "fullscreen", FALSE);
-#endif
}
static void
ev_window_update_presentation_action (window);
update_chrome_visibility (window);
-#ifdef ENABLE_METADATA
ev_metadata_manager_set_boolean (window->priv->uri, "presentation", TRUE);
-#endif
}
static void
ev_window_update_presentation_action (window);
update_chrome_visibility (window);
-#ifdef ENABLE_METADATA
ev_metadata_manager_set_boolean (window->priv->uri, "presentation", FALSE);
-#endif
}
static void
EvWindow *ev_window = EV_WINDOW (data);
egg_editable_toolbar_set_edit_mode
(EGG_EDITABLE_TOOLBAR (ev_window->priv->toolbar), FALSE);
- egg_toolbars_model_save (ev_window->priv->toolbar_model,
- ev_window->priv->toolbar_file, "1.0");
+ ev_application_save_toolbars_model (EV_APP);
gtk_widget_destroy (GTK_WIDGET (dialog));
}
{
GtkWidget *dialog;
GtkWidget *editor;
- g_return_if_fail (EV_IS_WINDOW (ev_window));
- dialog = gtk_dialog_new_with_buttons (_("Toolbar editor"), GTK_WINDOW (ev_window),
+ dialog = gtk_dialog_new_with_buttons (_("Toolbar editor"),
+ GTK_WINDOW (ev_window),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_STOCK_CLOSE,
- GTK_RESPONSE_CANCEL,
+ GTK_RESPONSE_CLOSE,
NULL);
+ gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)), 5);
+ gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 18);
gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
gtk_window_set_default_size (GTK_WINDOW (dialog), 500, 400);
editor = egg_toolbar_editor_new (ev_window->priv->ui_manager,
- ev_window->priv->toolbar_model);
+ ev_application_get_toolbars_model (EV_APP));
gtk_container_set_border_width (GTK_CONTAINER (editor), 5);
gtk_box_set_spacing (GTK_BOX (EGG_TOOLBAR_EDITOR (editor)), 5);
-
+
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), editor);
egg_toolbar_editor_load_actions (EGG_TOOLBAR_EDITOR (editor),
- DATADIR"/evince-toolbar.xml");
+ DATADIR "/evince-toolbar.xml");
egg_editable_toolbar_set_edit_mode
(EGG_EDITABLE_TOOLBAR (ev_window->priv->toolbar), TRUE);
- gtk_widget_show_all (dialog);
-
- g_signal_connect (G_OBJECT (dialog), "response",
+ g_signal_connect (dialog, "response",
G_CALLBACK (ev_window_cmd_edit_toolbar_cb),
ev_window);
+ gtk_widget_show_all (dialog);
}
static void
static void
save_sizing_mode (EvWindow *window)
{
-#ifdef ENABLE_METADATA
EvSizingMode mode;
GEnumValue *enum_value;
ev_metadata_manager_set_string (window->priv->uri, "sizing_mode",
enum_value->value_nick);
}
-#endif
}
static void
{
update_action_sensitivity (ev_window);
-#ifdef ENABLE_METADATA
- ev_metadata_manager_set_double (ev_window->priv->uri, "zoom",
- ev_view_get_zoom (EV_VIEW (ev_window->priv->view)));
-#endif
+ if (ev_view_get_sizing_mode (view) == EV_SIZING_FREE) {
+ ev_metadata_manager_set_double (ev_window->priv->uri, "zoom",
+ ev_view_get_zoom (view));
+ }
}
static void
{
ev_window_update_continuous_action (ev_window);
-#ifdef ENABLE_METADATA
ev_metadata_manager_set_boolean (ev_window->priv->uri, "continuous",
ev_view_get_continuous (EV_VIEW (ev_window->priv->view)));
-#endif
}
static void
{
ev_window_update_dual_page_action (ev_window);
-#ifdef ENABLE_METADATA
ev_metadata_manager_set_boolean (ev_window->priv->uri, "dual-page",
ev_view_get_dual_page (EV_VIEW (ev_window->priv->view)));
-#endif
}
static char *
EvWindow *window = EV_WINDOW (object);
EvWindowPrivate *priv = window->priv;
- if (priv->toolbar_model) {
- g_object_unref (priv->toolbar_model);
- g_free (priv->toolbar_file);
- priv->toolbar_model = NULL;
- priv->toolbar_file = NULL;
- }
-
- if (priv->recent_model) {
- g_object_unref (priv->recent_model);
- priv->recent_model = NULL;
- }
-
if (priv->recent_view) {
g_object_unref (priv->recent_view);
priv->recent_view = NULL;
{ "ViewFullscreen", NULL, N_("_Fullscreen"), "F11",
N_("Expand the window to fill the screen"),
G_CALLBACK (ev_window_cmd_view_fullscreen) },
- { "ViewPresentation", NULL, N_("_Presentation"), "F12",
+ { "ViewPresentation", NULL, N_("_Presentation"), "F5",
N_("Run document as a presentation"),
G_CALLBACK (ev_window_cmd_view_presentation) },
{ "ViewBestFit", EV_STOCK_ZOOM_PAGE, N_("_Best Fit"), NULL,
}
}
-static void
+static gboolean
view_actions_focus_in_cb (GtkWidget *widget, GdkEventFocus *event, EvWindow *window)
{
update_chrome_flag (window, EV_CHROME_RAISE_TOOLBAR, NULL, FALSE);
set_action_sensitive (window, "ViewToolbar", TRUE);
set_view_actions_sensitivity (window, TRUE);
+
+ return FALSE;
}
-static void
+static gboolean
view_actions_focus_out_cb (GtkWidget *widget, GdkEventFocus *event, EvWindow *window)
{
set_view_actions_sensitivity (window, FALSE);
+
+ return FALSE;
}
static void
static gboolean
window_state_event_cb (EvWindow *window, GdkEventWindowState *event, gpointer dummy)
{
-#ifdef ENABLE_METADATA
char *uri = window->priv->uri;
if (uri && !(event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN)) {
maximized = event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED;
ev_metadata_manager_set_boolean (uri, "window_maximized", maximized);
}
-#endif
return FALSE;
}
static gboolean
window_configure_event_cb (EvWindow *window, GdkEventConfigure *event, gpointer dummy)
{
-#ifdef ENABLE_METADATA
char *uri = window->priv->uri;
GdkWindowState state;
int x, y, width, height;
ev_metadata_manager_set_int (uri, "window_width", width);
ev_metadata_manager_set_int (uri, "window_height", height);
}
-#endif
return FALSE;
}
ev_window->priv->menubar,
FALSE, FALSE, 0);
- /* Toolbar editor */
- ev_window->priv->toolbar_model = egg_toolbars_model_new ();
-
- ev_window->priv->toolbar_file = g_build_filename
- (ev_dot_dir (), "evince_toolbar.xml", NULL);
-
- if (!g_file_test (ev_window->priv->toolbar_file, G_FILE_TEST_EXISTS)) {
- egg_toolbars_model_load (ev_window->priv->toolbar_model,
- DATADIR"/evince-toolbar.xml");
- } else {
- egg_toolbars_model_load (ev_window->priv->toolbar_model,
- ev_window->priv->toolbar_file);
- }
-
- egg_toolbars_model_set_flags (ev_window->priv->toolbar_model, 0,
- EGG_TB_MODEL_NOT_REMOVABLE);
-
/* This sucks, but there is no way to have a draw=no, expand=true separator
* in a GtkUIManager-built toolbar. So, just add another toolbar.
* See gtk+ bug 166489.
gtk_widget_show (toolbar_dock);
ev_window->priv->toolbar = egg_editable_toolbar_new_with_model
- (ev_window->priv->ui_manager, ev_window->priv->toolbar_model);
+ (ev_window->priv->ui_manager, ev_application_get_toolbars_model (EV_APP));
egg_editable_toolbar_show (EGG_EDITABLE_TOOLBAR (ev_window->priv->toolbar),
"DefaultToolBar");
gtk_box_pack_start (GTK_BOX (toolbar_dock), ev_window->priv->toolbar,
TRUE, TRUE, 0);
gtk_widget_show (ev_window->priv->toolbar);
- ev_window->priv->fullscreen_toolbar =
- gtk_ui_manager_get_widget (ev_window->priv->ui_manager, "/LeaveFullscreenToolbar");
- gtk_toolbar_set_show_arrow (GTK_TOOLBAR (ev_window->priv->fullscreen_toolbar), TRUE);
-
-
/* Add the main area */
ev_window->priv->hpaned = gtk_hpaned_new ();
g_signal_connect (ev_window->priv->hpaned,