summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorSøren Sandmann <sandmann@redhat.com>2008-06-04 02:14:44 -0400
committerSøren Sandmann <sandmann@redhat.com>2008-06-04 02:14:44 -0400
commit44ffeb68a9914aba719767ce4c318abceaa87b6a (patch)
tree38651dee74090d3dae6d38ec3de3d49f43ae6620 /main.c
Various scroll area fixes
Diffstat (limited to 'main.c')
-rw-r--r--main.c114
1 files changed, 114 insertions, 0 deletions
diff --git a/main.c b/main.c
new file mode 100644
index 0000000..88fd969
--- /dev/null
+++ b/main.c
@@ -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 ();
+}