#include "ev-message-area.h"
#include "ev-mount-operation.h"
#include "ev-file-monitor.h"
+#ifdef ENABLE_DBUS
+#include "ev-media-player-keys.h"
+#endif /* ENABLE_DBUS */
#include <gtk/gtkprintunixdialog.h>
}
static void
-ev_window_error_message_response_cb (EvMessageArea *area,
- gint response_id,
- EvWindow *window)
+ev_window_message_area_response_cb (EvMessageArea *area,
+ gint response_id,
+ EvWindow *window)
{
ev_window_set_message_area (window, NULL);
}
if (error)
ev_message_area_set_secondary_text (EV_MESSAGE_AREA (area), error->message);
g_signal_connect (area, "response",
- G_CALLBACK (ev_window_error_message_response_cb),
+ G_CALLBACK (ev_window_message_area_response_cb),
+ window);
+ gtk_widget_show (area);
+ ev_window_set_message_area (EV_WINDOW (window), area);
+}
+
+static void
+ev_window_warning_message (GtkWindow *window, const gchar *msg)
+{
+ GtkWidget *area;
+
+ if (EV_WINDOW (window)->priv->message_area)
+ return;
+
+ area = ev_message_area_new (GTK_MESSAGE_WARNING,
+ msg,
+ GTK_STOCK_CLOSE,
+ GTK_RESPONSE_CANCEL,
+ NULL);
+
+ g_signal_connect (area, "response",
+ G_CALLBACK (ev_window_message_area_response_cb),
window);
gtk_widget_show (area);
ev_window_set_message_area (EV_WINDOW (window), area);
gdouble scale;
EvDocument *document = ev_window->priv->document;
- if (!EV_IS_DOCUMENT_THUMBNAILS (document)) {
+ if (!EV_IS_DOCUMENT_THUMBNAILS (document) ||
+ ev_page_cache_get_n_pages (ev_window->priv->page_cache) <= 0) {
return;
}
if (ev_page_cache_get_n_pages (ev_window->priv->page_cache) > 0) {
ev_view_set_document (view, document);
+ } else {
+ ev_window_warning_message (GTK_WINDOW (ev_window),
+ _("The document contains no pages"));
}
g_idle_add ((GSourceFunc)ev_window_setup_document, ev_window);
ev_view_previous_page (EV_VIEW (ev_window->priv->view));
}
+void
+ev_window_go_previous_page (EvWindow *ev_window)
+{
+ ev_window_cmd_go_previous_page (NULL, ev_window);
+}
+
static void
ev_window_cmd_go_next_page (GtkAction *action, EvWindow *ev_window)
{
ev_view_next_page (EV_VIEW (ev_window->priv->view));
}
+void
+ev_window_go_next_page (EvWindow *ev_window)
+{
+ ev_window_cmd_go_next_page (NULL, ev_window);
+}
+
static void
ev_window_cmd_go_first_page (GtkAction *action, EvWindow *ev_window)
{
ev_page_cache_set_current_page (ev_window->priv->page_cache, 0);
}
+void
+ev_window_go_first_page (EvWindow *ev_window)
+{
+ ev_window_cmd_go_first_page (NULL, ev_window);
+}
+
static void
ev_window_cmd_go_last_page (GtkAction *action, EvWindow *ev_window)
{
ev_page_cache_set_current_page (ev_window->priv->page_cache, n_pages - 1);
}
+void
+ev_window_go_last_page (EvWindow *ev_window)
+{
+ ev_window_cmd_go_last_page (NULL, ev_window);
+}
+
static void
ev_window_cmd_go_forward (GtkAction *action, EvWindow *ev_window)
{
ev_window_run_presentation (window);
}
+void
+ev_window_start_presentation (EvWindow *ev_window)
+{
+ ev_window_run_presentation (ev_window);
+}
+
static gboolean
ev_window_enumerate_printer_cb (GtkPrinter *printer,
EvWindow *window)
{
EvWindow *window = EV_WINDOW (object);
EvWindowPrivate *priv = window->priv;
+#ifdef ENABLE_DBUS
+ GObject *keys;
+
+ keys = ev_application_get_media_keys (EV_APP);
+ if (keys) {
+ ev_media_player_keys_focused (EV_MEDIA_PLAYER_KEYS (keys), NULL);
+ g_object_unref (keys);
+ }
+#endif /* ENABLE_DBUS */
if (priv->monitor) {
g_object_unref (priv->monitor);
G_CALLBACK (ev_window_cmd_edit_find_previous) },
{ "EditToolbar", NULL, N_("T_oolbar"), NULL, NULL,
G_CALLBACK (ev_window_cmd_edit_toolbar) },
- { "EditRotateLeft", EV_STOCK_ROTATE_LEFT, N_("Rotate _Left"), NULL, NULL,
+ { "EditRotateLeft", EV_STOCK_ROTATE_LEFT, N_("Rotate _Left"), "<alt>Left", NULL,
G_CALLBACK (ev_window_cmd_edit_rotate_left) },
- { "EditRotateRight", EV_STOCK_ROTATE_RIGHT, N_("Rotate _Right"), NULL, NULL,
+ { "EditRotateRight", EV_STOCK_ROTATE_RIGHT, N_("Rotate _Right"), "<alt>Right", NULL,
G_CALLBACK (ev_window_cmd_edit_rotate_right) },
/* View menu */
static gboolean
view_actions_focus_in_cb (GtkWidget *widget, GdkEventFocus *event, EvWindow *window)
{
+#ifdef ENABLE_DBUS
+ GObject *keys;
+
+ keys = ev_application_get_media_keys (EV_APP);
+ if (keys) {
+ ev_media_player_keys_focused (EV_MEDIA_PLAYER_KEYS (keys), window);
+ g_object_unref (keys);
+ }
+#endif /* ENABLE_DBUS */
+
update_chrome_flag (window, EV_CHROME_RAISE_TOOLBAR, FALSE);
ev_window_set_action_sensitive (window, "ViewToolbar", TRUE);