From f5347f59ff008ebc53f456cfcd4b8c58dead29c5 Mon Sep 17 00:00:00 2001 From: Chris Lahey Date: Thu, 13 Jan 2000 22:01:23 +0000 Subject: e_canvas_item_move_absolute is just a helper function not supplied by the * widgets/e-canvas-utils.c, widgets/e-canvas-utils.h: e_canvas_item_move_absolute is just a helper function not supplied by the gnome_canvas.[ch] I put it here so that multiple items can use it. * widgets/e-reflow.c, widgets/e-reflow.h: This item contains a number of other items and places them into multiple columns. The items contained must support a number of arguments and signals to allow the reflow to interact with them. * widgets/test-reflow.c: This is a test program for e-reflow. * widgets/e-text.c, widgets/e-text.h: Added properly drawn selected text. Added some preliminary code for X selection handling and cut & paste. * widgets/e-minicard.c, widgets/e-minicard.h: Added ARG_HAS_FOCUS handling. Made label display random for more interesting tests of multiple cards. Tweaked sizing information for better display. * widgets/e-minicard-label.c, widgets/e-minicard-label.h: Added ARG_HAS_FOCUS handling. * widgets/Makefile.am: Added the reflow test and reflow files. svn path=/trunk/; revision=1566 --- widgets/test-reflow.c | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 widgets/test-reflow.c (limited to 'widgets/test-reflow.c') diff --git a/widgets/test-reflow.c b/widgets/test-reflow.c new file mode 100644 index 0000000000..f03232c72d --- /dev/null +++ b/widgets/test-reflow.c @@ -0,0 +1,136 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* test-reflow.c + * + * Copyright (C) 2000 Helix Code, Inc. + * Author: Chris Lahey + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + + + +#include "config.h" + +#include +#include "e-reflow.h" +#include "e-minicard.h" + +/* This is a horrible thing to do, but it is just a test. */ +GnomeCanvasItem *reflow; +GnomeCanvasItem *rect; + +static void destroy_callback(GtkWidget *app, gpointer data) +{ + exit(0); +} + +static void allocate_callback(GtkWidget *canvas, GtkAllocation *allocation, gpointer data) +{ + double width; + gnome_canvas_item_set( reflow, + "height", (double) allocation->height, + NULL ); + gtk_object_get(GTK_OBJECT(reflow), + "width", &width, + NULL); + width = MAX(width, allocation->width); + gnome_canvas_set_scroll_region(GNOME_CANVAS( canvas ), 0, 0, width, allocation->height ); + gnome_canvas_item_set( rect, + "x2", (double) width, + "y2", (double) allocation->height, + NULL ); +} + +static void about_callback( GtkWidget *widget, gpointer data ) +{ + + const gchar *authors[] = + { + "Christopher James Lahey ", + NULL + }; + + GtkWidget *about = + gnome_about_new ( _( "Reflow Test" ), VERSION, + _( "Copyright (C) 2000, Helix Code, Inc." ), + authors, + _( "This should test the reflow canvas item" ), + NULL); + gtk_widget_show (about); +} + +int main( int argc, char *argv[] ) +{ + GtkWidget *app; + GtkWidget *canvas; + GtkWidget *vbox; + GtkWidget *scrollbar; + int i; + + /* bindtextdomain (PACKAGE, GNOMELOCALEDIR); + textdomain (PACKAGE);*/ + + gnome_init( "Reflow Test", VERSION, argc, argv); + app = gnome_app_new("Reflow Test", NULL); + + vbox = gtk_vbox_new(FALSE, 0); + + canvas = gnome_canvas_new(); + rect = gnome_canvas_item_new( gnome_canvas_root( GNOME_CANVAS( canvas ) ), + gnome_canvas_rect_get_type(), + "x1", (double) 0, + "y1", (double) 0, + "x2", (double) 100, + "y2", (double) 100, + "fill_color", "white", + NULL ); + reflow = gnome_canvas_item_new( gnome_canvas_root( GNOME_CANVAS( canvas ) ), + e_reflow_get_type(), + "x", (double) 0, + "y", (double) 0, + "height", (double) 100, + NULL ); + for ( i = 0; i < 200; i++ ) + { + GnomeCanvasItem *item; + item = gnome_canvas_item_new( GNOME_CANVAS_GROUP(reflow), + e_minicard_get_type(), + NULL); + e_reflow_add_item(E_REFLOW(reflow), item); + } + gnome_canvas_set_scroll_region ( GNOME_CANVAS( canvas ), + 0, 0, + 100, 100 ); + + gtk_box_pack_start(GTK_BOX(vbox), canvas, TRUE, TRUE, 0); + + scrollbar = gtk_hscrollbar_new(gtk_layout_get_hadjustment(GTK_LAYOUT(canvas))); + + gtk_box_pack_start(GTK_BOX(vbox), scrollbar, FALSE, FALSE, 0); + + gnome_app_set_contents( GNOME_APP( app ), vbox ); + + /* Connect the signals */ + gtk_signal_connect( GTK_OBJECT( app ), "destroy", + GTK_SIGNAL_FUNC( destroy_callback ), + ( gpointer ) app ); + + gtk_signal_connect( GTK_OBJECT( canvas ), "size_allocate", + GTK_SIGNAL_FUNC( allocate_callback ), + ( gpointer ) app ); + + gtk_widget_show_all( app ); + + gtk_main(); + + /* Not reached. */ + return 0; +} -- cgit v1.2.3