Blame examples/paned/paned.c

Packit 98cdb6
Packit 98cdb6
#include <stdio.h>
Packit 98cdb6
#include <gtk/gtk.h>
Packit 98cdb6
   
Packit 98cdb6
/* Create the list of "messages" */
Packit 98cdb6
static GtkWidget *create_list( void )
Packit 98cdb6
{
Packit 98cdb6
Packit 98cdb6
    GtkWidget *scrolled_window;
Packit 98cdb6
    GtkWidget *tree_view;
Packit 98cdb6
    GtkListStore *model;
Packit 98cdb6
    GtkTreeIter iter;
Packit 98cdb6
    GtkCellRenderer *cell;
Packit 98cdb6
    GtkTreeViewColumn *column;
Packit 98cdb6
Packit 98cdb6
    int i;
Packit 98cdb6
   
Packit 98cdb6
    /* Create a new scrolled window, with scrollbars only if needed */
Packit 98cdb6
    scrolled_window = gtk_scrolled_window_new (NULL, NULL);
Packit 98cdb6
    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
Packit 98cdb6
				    GTK_POLICY_AUTOMATIC, 
Packit 98cdb6
				    GTK_POLICY_AUTOMATIC);
Packit 98cdb6
   
Packit 98cdb6
    model = gtk_list_store_new (1, G_TYPE_STRING);
Packit 98cdb6
    tree_view = gtk_tree_view_new ();
Packit 98cdb6
    gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), 
Packit 98cdb6
                                           tree_view);
Packit 98cdb6
    gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), GTK_TREE_MODEL (model));
Packit 98cdb6
    gtk_widget_show (tree_view);
Packit 98cdb6
   
Packit 98cdb6
    /* Add some messages to the window */
Packit 98cdb6
    for (i = 0; i < 10; i++) {
Packit 98cdb6
        gchar *msg = g_strdup_printf ("Message #%d", i);
Packit 98cdb6
        gtk_list_store_append (GTK_LIST_STORE (model), &iter);
Packit 98cdb6
        gtk_list_store_set (GTK_LIST_STORE (model), 
Packit 98cdb6
	                    &iter,
Packit 98cdb6
                            0, msg,
Packit 98cdb6
	                    -1);
Packit 98cdb6
	g_free (msg);
Packit 98cdb6
    }
Packit 98cdb6
   
Packit 98cdb6
    cell = gtk_cell_renderer_text_new ();
Packit 98cdb6
Packit 98cdb6
    column = gtk_tree_view_column_new_with_attributes ("Messages",
Packit 98cdb6
                                                       cell,
Packit 98cdb6
                                                       "text", 0,
Packit 98cdb6
                                                       NULL);
Packit 98cdb6
  
Packit 98cdb6
    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view),
Packit 98cdb6
	  		         GTK_TREE_VIEW_COLUMN (column));
Packit 98cdb6
Packit 98cdb6
    return scrolled_window;
Packit 98cdb6
}
Packit 98cdb6
   
Packit 98cdb6
/* Add some text to our text widget - this is a callback that is invoked
Packit 98cdb6
when our window is realized. We could also force our window to be
Packit 98cdb6
realized with gtk_widget_realize, but it would have to be part of
Packit 98cdb6
a hierarchy first */
Packit 98cdb6
Packit 98cdb6
static void insert_text( GtkTextBuffer *buffer )
Packit 98cdb6
{
Packit 98cdb6
   GtkTextIter iter;
Packit 98cdb6
 
Packit 98cdb6
   gtk_text_buffer_get_iter_at_offset (buffer, &iter, 0);
Packit 98cdb6
Packit 98cdb6
   gtk_text_buffer_insert (buffer, &iter,   
Packit 98cdb6
    "From: pathfinder@nasa.gov\n"
Packit 98cdb6
    "To: mom@nasa.gov\n"
Packit 98cdb6
    "Subject: Made it!\n"
Packit 98cdb6
    "\n"
Packit 98cdb6
    "We just got in this morning. The weather has been\n"
Packit 98cdb6
    "great - clear but cold, and there are lots of fun sights.\n"
Packit 98cdb6
    "Sojourner says hi. See you soon.\n"
Packit 98cdb6
    " -Path\n", -1);
Packit 98cdb6
}
Packit 98cdb6
   
Packit 98cdb6
/* Create a scrolled text area that displays a "message" */
Packit 98cdb6
static GtkWidget *create_text( void )
Packit 98cdb6
{
Packit 98cdb6
   GtkWidget *scrolled_window;
Packit 98cdb6
   GtkWidget *view;
Packit 98cdb6
   GtkTextBuffer *buffer;
Packit 98cdb6
Packit 98cdb6
   view = gtk_text_view_new ();
Packit 98cdb6
   buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
Packit 98cdb6
Packit 98cdb6
   scrolled_window = gtk_scrolled_window_new (NULL, NULL);
Packit 98cdb6
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
Packit 98cdb6
		   	           GTK_POLICY_AUTOMATIC,
Packit 98cdb6
				   GTK_POLICY_AUTOMATIC);
Packit 98cdb6
Packit 98cdb6
   gtk_container_add (GTK_CONTAINER (scrolled_window), view);
Packit 98cdb6
   insert_text (buffer);
Packit 98cdb6
Packit 98cdb6
   gtk_widget_show_all (scrolled_window);
Packit 98cdb6
Packit 98cdb6
   return scrolled_window;
Packit 98cdb6
}
Packit 98cdb6
   
Packit 98cdb6
int main( int   argc,
Packit 98cdb6
          char *argv[] )
Packit 98cdb6
{
Packit 98cdb6
    GtkWidget *window;
Packit 98cdb6
    GtkWidget *vpaned;
Packit 98cdb6
    GtkWidget *list;
Packit 98cdb6
    GtkWidget *text;
Packit 98cdb6
Packit 98cdb6
    gtk_init (&argc, &argv);
Packit 98cdb6
   
Packit 98cdb6
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
Packit 98cdb6
    gtk_window_set_title (GTK_WINDOW (window), "Paned Windows");
Packit 98cdb6
    g_signal_connect (G_OBJECT (window), "destroy",
Packit 98cdb6
	              G_CALLBACK (gtk_main_quit), NULL);
Packit 98cdb6
    gtk_container_set_border_width (GTK_CONTAINER (window), 10);
Packit 98cdb6
    gtk_widget_set_size_request (GTK_WIDGET (window), 450, 400);
Packit 98cdb6
Packit 98cdb6
    /* create a vpaned widget and add it to our toplevel window */
Packit 98cdb6
   
Packit 98cdb6
    vpaned = gtk_vpaned_new ();
Packit 98cdb6
    gtk_container_add (GTK_CONTAINER (window), vpaned);
Packit 98cdb6
    gtk_widget_show (vpaned);
Packit 98cdb6
   
Packit 98cdb6
    /* Now create the contents of the two halves of the window */
Packit 98cdb6
   
Packit 98cdb6
    list = create_list ();
Packit 98cdb6
    gtk_paned_add1 (GTK_PANED (vpaned), list);
Packit 98cdb6
    gtk_widget_show (list);
Packit 98cdb6
   
Packit 98cdb6
    text = create_text ();
Packit 98cdb6
    gtk_paned_add2 (GTK_PANED (vpaned), text);
Packit 98cdb6
    gtk_widget_show (text);
Packit 98cdb6
    gtk_widget_show (window);
Packit 98cdb6
Packit 98cdb6
    gtk_main ();
Packit 98cdb6
Packit 98cdb6
    return 0;
Packit 98cdb6
}