Blame examples/paned/paned.c

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