diff options
author | Søren Sandmann <sandmann@redhat.com> | 2008-06-04 02:14:44 -0400 |
---|---|---|
committer | Søren Sandmann <sandmann@redhat.com> | 2008-06-04 02:14:44 -0400 |
commit | 44ffeb68a9914aba719767ce4c318abceaa87b6a (patch) | |
tree | 38651dee74090d3dae6d38ec3de3d49f43ae6620 /main.c |
Various scroll area fixes
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 114 |
1 files changed, 114 insertions, 0 deletions
@@ -0,0 +1,114 @@ +#include <gtk/gtk.h> +#include <glade/glade.h> +#include <glib/gprintf.h> +#include <stdlib.h> +#include <string.h> +#include <math.h> +#include "scrollarea.h" + +typedef struct +{ + GladeXML * xml; + GtkWidget * main_area; + GtkWidget * thumbnails; +} App; + +static void * +get_widget (App *app, const char *name) +{ + void *result = glade_xml_get_widget (app->xml, name); + + if (!result) + g_error ("Could not find widget %s\n", name); + + return result; +} + +static void +on_thumbs_paint (FooScrollArea *scroll_area, + cairo_t *cr, + GdkRectangle *extents, + GdkRegion *region, + gpointer data) +{ + g_print ("paint thumbs\n"); +} + + +static void +on_main_paint (FooScrollArea *scroll_area, + cairo_t *cr, + GdkRectangle *extents, + GdkRegion *region, + gpointer data) +{ + g_print ("paint %d %d %d %d\n", extents->x, extents->y, extents->width, extents->height); +} + +static void +set_size (GtkWindow *window) +{ + GdkScreen *screen; + int monitor_num; + GdkRectangle monitor; + int width, height; + GtkWidget *widget = GTK_WIDGET (window); + + screen = gtk_widget_get_screen (widget); + monitor_num = gdk_screen_get_monitor_at_window (screen, widget->window); + + gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor); + + width = monitor.width * 3 / 4; + height = monitor.height * 3 / 4; + + gtk_window_resize (window, width, height); +} + +static void +on_viewport_changed (FooScrollArea *scroll_area, + GdkRectangle *viewport, + GdkRectangle *old_viewport) +{ + foo_scroll_area_set_size (scroll_area, 800, 30); +} + +int +main (int argc, char **argv) +{ + App *app; + + gtk_init (&argc, &argv); + + app = g_new0 (App, 1); + app->xml = glade_xml_new (GLADE_FILE, NULL, NULL); + + app->main_area = foo_scroll_area_new(); + app->thumbnails = foo_scroll_area_new(); + + gtk_container_add ( + GTK_CONTAINER (get_widget (app, "main_area_scrolled_window")), + app->main_area); + + gtk_container_add ( + GTK_CONTAINER (get_widget (app, "thumbnails_scrolled_window")), + app->thumbnails); + + foo_scroll_area_set_size (app->main_area, 80, 30); + foo_scroll_area_set_min_size (app->thumbnails, 200, -1); + + g_signal_connect (app->main_area, "paint", + G_CALLBACK (on_main_paint), app); +#if 0 + g_signal_connect (app->main_area, "viewport_changed", + G_CALLBACK (on_viewport_changed), app); +#endif + + g_signal_connect (app->thumbnails, "paint", + G_CALLBACK (on_thumbs_paint), app); + + set_size (get_widget (app, "main_window")); + gtk_widget_show_all (get_widget (app, "main_window")); + + gtk_main (); +} |