Exemplo n.º 1
0
static int
uni_image_view_button_press (GtkWidget * widget, GdkEventButton * ev)
{
    gtk_widget_grab_focus(widget);
    UniImageView *view = UNI_IMAGE_VIEW (widget);
    VnrWindow *vnr_win = VNR_WINDOW(gtk_widget_get_toplevel(widget));
    g_assert(gtk_widget_is_toplevel(GTK_WIDGET(vnr_win)));

    if(ev->type == GDK_2BUTTON_PRESS && ev->button == 1 && vnr_win->prefs->behavior_click == VNR_PREFS_CLICK_FULLSCREEN)
    {
        vnr_window_toggle_fullscreen(vnr_win);
        return 1;
    }
    else if(ev->type == GDK_2BUTTON_PRESS && ev->button == 1 && vnr_win->prefs->behavior_click == VNR_PREFS_CLICK_NEXT)
    {

        int width;
        gdk_drawable_get_size(GDK_DRAWABLE(widget->window), &width, NULL);

        if(ev->x/width < 0.5)
            vnr_window_prev(vnr_win);
        else
            vnr_window_next(vnr_win, TRUE);

        return 1;
    }
    else if (ev->type == GDK_BUTTON_PRESS && ev->button == 1)
    {
        return uni_dragger_button_press (UNI_DRAGGER(view->tool), ev);
    }
    else if (ev->type == GDK_2BUTTON_PRESS && ev->button == 1)
    {
        if (view->fitting == UNI_FITTING_FULL ||
            (view->fitting == UNI_FITTING_NORMAL && view->zoom != 1.0))
            uni_image_view_set_zoom_with_center (view, 1., ev->x, ev->y,
                                                 FALSE);
        else
            uni_image_view_set_fitting (view, UNI_FITTING_FULL);
        return 1;
    }
    else if(ev->type == GDK_BUTTON_PRESS && ev->button == 3)
    {
        gtk_menu_popup(GTK_MENU(VNR_WINDOW(gtk_widget_get_toplevel (widget))->popup_menu),
                NULL, NULL, NULL, NULL, ev->button,
                gtk_get_current_event_time());

    }
    else if(ev->type == GDK_BUTTON_PRESS && ev->button == 8)
    {
        vnr_window_prev(vnr_win);
    }
    else if(ev->type == GDK_BUTTON_PRESS && ev->button == 9)
    {
        vnr_window_next(vnr_win, TRUE);
    }
    return 0;
}
Exemplo n.º 2
0
static void
toggle_smooth_images_cb (GtkToggleButton *togglebutton, gpointer user_data)
{
    VNR_PREFS(user_data)->smooth_images = gtk_toggle_button_get_active(togglebutton);
    vnr_prefs_save(VNR_PREFS(user_data));
    vnr_window_apply_preferences(VNR_WINDOW(VNR_PREFS(user_data)->vnr_win));
}
Exemplo n.º 3
0
static void
change_spin_value_cb (GtkSpinButton *spinbutton, gpointer user_data)
{
    int new_value;

    new_value = gtk_spin_button_get_value_as_int (spinbutton);

    VNR_PREFS(user_data)->slideshow_timeout = new_value;
    vnr_prefs_save(VNR_PREFS(user_data));
    vnr_window_apply_preferences(VNR_WINDOW(VNR_PREFS(user_data)->vnr_win));
}
Exemplo n.º 4
0
static int
uni_image_view_scroll_event (GtkWidget * widget, GdkEventScroll * ev)
{
    gdouble zoom;
    UniImageView *view = UNI_IMAGE_VIEW (widget);
    VnrWindow *vnr_win = VNR_WINDOW(gtk_widget_get_toplevel(widget));
    g_assert(gtk_widget_is_toplevel(GTK_WIDGET(vnr_win)));

    /* Horizontal scroll left is equivalent to scroll up and right is
     * like scroll down. No idea if that is correct -- I have no input
     * device that can do horizontal scrolls. */

    if (vnr_win->prefs->behavior_wheel == VNR_PREFS_WHEEL_ZOOM || (ev->state & GDK_CONTROL_MASK) != 0)
    {
        if ( ev->direction == GDK_SCROLL_UP || ev->direction == GDK_SCROLL_LEFT )
            zoom = CLAMP (view->zoom * UNI_ZOOM_STEP, UNI_ZOOM_MIN, UNI_ZOOM_MAX);
        else
            zoom = CLAMP (view->zoom / UNI_ZOOM_STEP, UNI_ZOOM_MIN, UNI_ZOOM_MAX);

        uni_image_view_set_zoom_with_center (view, zoom, ev->x, ev->y, FALSE);
    }
    else if(vnr_win->prefs->behavior_wheel == VNR_PREFS_WHEEL_NAVIGATE)
    {
        if (ev->direction == GDK_SCROLL_UP || ev->direction == GDK_SCROLL_LEFT)
            vnr_window_prev(vnr_win);
        else
            vnr_window_next(vnr_win, TRUE);
    }
    else
    {
        switch (ev->direction)
        {
        case GDK_SCROLL_UP:
            uni_image_view_scroll (view, GTK_SCROLL_NONE, GTK_SCROLL_PAGE_UP);
            break;
        case GDK_SCROLL_LEFT:
            uni_image_view_scroll (view, GTK_SCROLL_PAGE_LEFT, GTK_SCROLL_NONE);
            break;
        case GDK_SCROLL_RIGHT:
            uni_image_view_scroll (view, GTK_SCROLL_PAGE_RIGHT, GTK_SCROLL_NONE);
            break;
        default:
            uni_image_view_scroll (view, GTK_SCROLL_NONE, GTK_SCROLL_PAGE_DOWN);
            break;
        }
    }

    return TRUE;
}
Exemplo n.º 5
0
int
main (int argc, char *argv[])
{
    GError *error = NULL;
    GOptionContext *opt_context;
    GtkWindow *window;

    GSList *uri_list = NULL;
    GList *file_list = NULL;


    bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
    bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
    textdomain (GETTEXT_PACKAGE);

    opt_context = g_option_context_new ("- Elegant Image Viewer");
    g_option_context_add_main_entries (opt_context, opt_entries, NULL);
    g_option_context_add_group (opt_context, gtk_get_option_group (TRUE));
    g_option_context_parse (opt_context, &argc, &argv, &error);

    if (error != NULL)
    {
        printf
            ("%s\nRun 'viewnior --help' to see a full list of available command line options.\n",
             error->message);
        return 1;
    }
    else if(version)
    {
        printf("%s\n", PACKAGE_STRING);
        return 0;
    }

    gtk_icon_theme_append_search_path(gtk_icon_theme_get_default(), PIXMAP_DIR);

    window = vnr_window_new ();
    gtk_window_set_default_size (window, 480, 300);
    gtk_window_set_position (window, GTK_WIN_POS_CENTER);

    uri_list = vnr_tools_get_list_from_array (files);

    if(uri_list != NULL)
    {
        if (g_slist_length(uri_list) == 1)
        {
            vnr_file_load_single_uri (uri_list->data, &file_list, VNR_WINDOW(window)->prefs->show_hidden, &error);
        }
        else
        {
            vnr_file_load_uri_list (uri_list, &file_list, VNR_WINDOW(window)->prefs->show_hidden, &error);
        }

        if(error != NULL && file_list != NULL)
        {
            deny_slideshow(VNR_WINDOW(window));
            vnr_message_area_show(VNR_MESSAGE_AREA (VNR_WINDOW(window)->msg_area),
                                  TRUE, error->message, TRUE);
            vnr_window_set_list(VNR_WINDOW(window), file_list, TRUE);
        }
        else if(error != NULL)
        {
            deny_slideshow(VNR_WINDOW(window));
            vnr_message_area_show(VNR_MESSAGE_AREA (VNR_WINDOW(window)->msg_area),
                                  TRUE, error->message, TRUE);
        }
        else if(file_list == NULL)
        {
            deny_slideshow(VNR_WINDOW(window));
            vnr_message_area_show(VNR_MESSAGE_AREA (VNR_WINDOW(window)->msg_area),
                                  TRUE, _("The given locations contain no images."),
                                  TRUE);
        }
        else
        {
            vnr_window_set_list(VNR_WINDOW(window), file_list, TRUE);
        }
    }
    
    VNR_WINDOW(window)->prefs->start_slideshow = slideshow;
    VNR_WINDOW(window)->prefs->start_fullscreen = fullscreen;
    if ( VNR_WINDOW(window)->prefs->start_maximized ) {
    	gtk_window_maximize(window);
    }
    gtk_widget_show (GTK_WIDGET (window));
    gtk_main ();

    return 0;
}