]> Pileus Git - ~andy/gtk/blobdiff - demos/gtk-demo/main.c
gtk: remove "gboolean homogeneous" from gtk_box_new()
[~andy/gtk] / demos / gtk-demo / main.c
index 2142e72583e9b60d43e2d0a03b453e655ece697e..e0c9fb896a0187abf800f883d34b1de712d1596c 100644 (file)
@@ -1,12 +1,13 @@
-#include <config.h>
+#include "config.h"
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
 #include <gtk/gtk.h>
+#include <glib/gstdio.h>
 
-#include <demos.h>
+#include "demos.h"
 
 static GtkTextBuffer *info_buffer;
 static GtkTextBuffer *source_buffer;
@@ -18,7 +19,7 @@ enum {
   TITLE_COLUMN,
   FILENAME_COLUMN,
   FUNC_COLUMN,
-  ITALIC_COLUMN,
+  STYLE_COLUMN,
   NUM_COLUMNS
 };
 
@@ -40,7 +41,7 @@ get_democodedir (void)
 
   if (result == NULL)
     {
-      result = g_win32_get_package_installation_directory (NULL, NULL);
+      result = g_win32_get_package_installation_directory_of_module (NULL);
       if (result == NULL)
        result = "unknown-location";
 
@@ -93,15 +94,15 @@ window_closed_cb (GtkWidget *window, gpointer data)
 {
   CallbackData *cbdata = data;
   GtkTreeIter iter;
-  gboolean italic;
+  PangoStyle style;
 
   gtk_tree_model_get_iter (cbdata->model, &iter, cbdata->path);
   gtk_tree_model_get (GTK_TREE_MODEL (cbdata->model), &iter,
-                     ITALIC_COLUMN, &italic,
+                     STYLE_COLUMN, &style,
                      -1);
-  if (italic)
+  if (style == PANGO_STYLE_ITALIC)
     gtk_tree_store_set (GTK_TREE_STORE (cbdata->model), &iter,
-                       ITALIC_COLUMN, !italic,
+                       STYLE_COLUMN, PANGO_STYLE_NORMAL,
                        -1);
 
   gtk_tree_path_free (cbdata->path);
@@ -194,11 +195,12 @@ static gchar *types[] =
   "const ",
   "void",
   "gint",
-  "int ",
-  "char ",
+  " int ",
+  " char ",
   "gchar ",
   "gfloat",
   "float",
+  "double",
   "gint8",
   "gint16",
   "gint32",
@@ -221,7 +223,6 @@ static gchar *types[] =
   "FALSE",
   "TRUE",
   "FILE ",
-  "GtkObject ",
   "GtkColorSelection ",
   "GtkWidget ",
   "GtkButton ",
@@ -233,6 +234,87 @@ static gchar *types[] =
   "GdkPixbuf ",
   "GError",
   "size_t",
+  "GtkAboutDialog ",
+  "GtkAction ",
+  "GtkActionEntry ",
+  "GtkRadioActionEntry ",
+  "GtkIconFactory ",
+  "GtkStockItem ",
+  "GtkIconSet ",
+  "GtkTextBuffer ",
+  "GtkStatusbar ",
+  "GtkTextIter ",
+  "GtkTextMark ",
+  "GdkEventWindowState ",
+  "GtkActionGroup ",
+  "GtkUIManager ",
+  "GtkRadioAction ",
+  "GtkActionClass ",
+  "GtkToggleActionEntry ",
+  "GtkAssistant ",
+  "GtkBuilder ",
+  "GtkSizeGroup ",
+  "GtkTreeModel ",
+  "GtkTreeSelection ",
+  "GdkDisplay ",
+  "GdkScreen ",
+  "GdkWindow ",
+  "GdkEventButton ",
+  "GdkCursor ",
+  "GtkTreeIter ",
+  "GtkTreeViewColumn ",
+  "GdkDisplayManager ",
+  "GtkClipboard ",
+  "GtkIconSize ",
+  "GtkImage ",
+  "GdkDragContext ",
+  "GtkSelectionData ",
+  "GtkDialog ",
+  "GtkMenuItem ",
+  "GtkListStore ",
+  "GtkCellLayout ",
+  "GtkCellRenderer ",
+  "GtkTreePath ",
+  "GtkTreeStore ",
+  "GtkEntry ",
+  "GtkEditable ",
+  "GtkEditableInterface ",
+  "GdkPixmap ",
+  "GdkEventConfigure ",
+  "GdkEventMotion ",
+  "GdkModifierType ",
+  "GtkEntryCompletion ",
+  "GtkToolItem ",
+  "GDir ",
+  "GtkIconView ",
+  "GtkCellRendererText ",
+  "GtkContainer ",
+  "GtkAccelGroup ",
+  "GtkPaned ",
+  "GtkPrintOperation ",
+  "GtkPrintContext ",
+  "cairo_t ",
+  "PangoLayout "
+  "PangoFontDescription ",
+  "PangoRenderer ",
+  "PangoMatrix ",
+  "PangoContext ",
+  "PangoLayout ",
+  "GtkTable ",
+  "GtkToggleButton ",
+  "GString ",
+  "GtkIconSize ",
+  "GtkTreeView ",
+  "GtkTextTag ",
+  "GdkEvent ",
+  "GdkEventKey ",
+  "GtkTextView ",
+  "GdkEventVisibility ",
+  "GdkBitmap ",
+  "GtkTextChildAnchor ",
+  "GArray ",
+  "GtkCellEditable ",
+  "GtkCellRendererToggle ",
   NULL
 };
 
@@ -307,7 +389,8 @@ parse_chars (gchar     *text,
     }
   /* check for types */
   for (i = 0; types[i] != NULL; i++)
-    if (!strncmp (text, types[i], strlen (types[i])))
+    if (!strncmp (text, types[i], strlen (types[i])) ||
+        (start && types[i][0] == ' ' && !strncmp (text, types[i] + 1, strlen (types[i]) - 1)))
       {
        *end_ptr = text + strlen (types[i]);
        *tag = "type";
@@ -386,7 +469,7 @@ parse_chars (gchar     *text,
 
 /* While not as cool as c-mode, this will do as a quick attempt at highlighting */
 static void
-fontify ()
+fontify (void)
 {
   GtkTextIter start_iter, next_iter, tmp_iter;
   gint state;
@@ -465,7 +548,7 @@ load_file (const gchar *filename)
       return;
     }
 
-  file = fopen (full_filename, "r");
+  file = g_fopen (full_filename, "r");
 
   if (!file)
     g_warning ("Cannot open %s: %s\n", full_filename, g_strerror (errno));
@@ -574,6 +657,8 @@ load_file (const gchar *filename)
        }
     }
 
+  fclose (file);
+  
   fontify ();
 
   g_string_free (buffer, TRUE);
@@ -585,7 +670,7 @@ row_activated_cb (GtkTreeView       *tree_view,
                  GtkTreeViewColumn *column)
 {
   GtkTreeIter iter;
-  gboolean italic;
+  PangoStyle style;
   GDoDemoFunc func;
   GtkWidget *window;
   GtkTreeModel *model;
@@ -596,14 +681,14 @@ row_activated_cb (GtkTreeView       *tree_view,
   gtk_tree_model_get (GTK_TREE_MODEL (model),
                      &iter,
                      FUNC_COLUMN, &func,
-                     ITALIC_COLUMN, &italic,
+                     STYLE_COLUMN, &style,
                      -1);
 
   if (func)
     {
       gtk_tree_store_set (GTK_TREE_STORE (model),
                          &iter,
-                         ITALIC_COLUMN, !italic,
+                         STYLE_COLUMN, (style == PANGO_STYLE_ITALIC ? PANGO_STYLE_NORMAL : PANGO_STYLE_ITALIC),
                          -1);
       window = (func) (gtk_widget_get_toplevel (GTK_WIDGET (tree_view)));
       
@@ -665,7 +750,7 @@ create_text (GtkTextBuffer **buffer,
   
   if (is_source)
     {
-      font_desc = pango_font_description_from_string ("Courier 12");
+      font_desc = pango_font_description_from_string ("monospace");
       gtk_widget_modify_font (text_view, font_desc);
       pango_font_description_free (font_desc);
 
@@ -695,10 +780,11 @@ create_tree (void)
   GtkTreeViewColumn *column;
   GtkTreeStore *model;
   GtkTreeIter iter;
+  GtkWidget *box, *label, *scrolled_window;
 
   Demo *d = testgtk_demos;
 
-  model = gtk_tree_store_new (NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_BOOLEAN);
+  model = gtk_tree_store_new (NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_INT);
   tree_view = gtk_tree_view_new ();
   gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), GTK_TREE_MODEL (model));
   selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
@@ -721,7 +807,7 @@ create_tree (void)
                          TITLE_COLUMN, d->title,
                          FILENAME_COLUMN, d->filename,
                          FUNC_COLUMN, d->func,
-                         ITALIC_COLUMN, FALSE,
+                         STYLE_COLUMN, PANGO_STYLE_NORMAL,
                          -1);
 
       d++;
@@ -740,7 +826,7 @@ create_tree (void)
                              TITLE_COLUMN, children->title,
                              FILENAME_COLUMN, children->filename,
                              FUNC_COLUMN, children->func,
-                             ITALIC_COLUMN, FALSE,
+                             STYLE_COLUMN, PANGO_STYLE_NORMAL,
                              -1);
          
          children++;
@@ -749,24 +835,40 @@ create_tree (void)
 
   cell = gtk_cell_renderer_text_new ();
 
-  g_object_set (cell,
-                "style", PANGO_STYLE_ITALIC,
-                NULL);
-  
   column = gtk_tree_view_column_new_with_attributes ("Widget (double click for demo)",
                                                     cell,
                                                     "text", TITLE_COLUMN,
-                                                    "style_set", ITALIC_COLUMN,
+                                                    "style", STYLE_COLUMN,
                                                     NULL);
   
   gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view),
                               GTK_TREE_VIEW_COLUMN (column));
 
+  gtk_tree_model_get_iter_first (GTK_TREE_MODEL (model), &iter);
+  gtk_tree_selection_select_iter (GTK_TREE_SELECTION (selection), &iter);
+
   g_signal_connect (selection, "changed", G_CALLBACK (selection_cb), model);
   g_signal_connect (tree_view, "row_activated", G_CALLBACK (row_activated_cb), model);
 
-  gtk_tree_view_expand_all (GTK_TREE_VIEW (tree_view));
-  return tree_view;
+  gtk_tree_view_collapse_all (GTK_TREE_VIEW (tree_view));
+  gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tree_view), FALSE);
+                                   
+  scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
+                                 GTK_POLICY_NEVER,
+                                 GTK_POLICY_AUTOMATIC);
+  gtk_container_add (GTK_CONTAINER (scrolled_window), tree_view);
+
+  label = gtk_label_new ("Widget (double click for demo)");
+
+  box = gtk_notebook_new ();
+  gtk_notebook_append_page (GTK_NOTEBOOK (box), scrolled_window, label);
+
+  gtk_widget_grab_focus (tree_view);
+
+   g_object_unref (model);
+
+  return box;
 }
 
 static void
@@ -838,8 +940,8 @@ main (int argc, char **argv)
   if (g_file_test ("../../gdk-pixbuf/libpixbufloader-pnm.la",
                    G_FILE_TEST_EXISTS))
     {
-      g_setenv ("GDK_PIXBUF_MODULE_FILE", "../../gdk-pixbuf/gdk-pixbuf.loaders", TRUE);
-      g_setenv ("GTK_IM_MODULE_FILE", "../../modules/input/gtk.immodules", TRUE);
+      g_setenv ("GDK_PIXBUF_MODULE_FILE", "../../gdk-pixbuf/loaders.cache", TRUE);
+      g_setenv ("GTK_IM_MODULE_FILE", "../../modules/input/immodules.cache", TRUE);
     }
   /* -- End of hack -- */
   
@@ -849,10 +951,10 @@ main (int argc, char **argv)
   
   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
   gtk_window_set_title (GTK_WINDOW (window), "GTK+ Code Demos");
-  g_signal_connect (window, "destroy",
+  g_signal_connect_after (window, "destroy",
                    G_CALLBACK (gtk_main_quit), NULL);
 
-  hbox = gtk_hbox_new (FALSE, 0);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
   gtk_container_add (GTK_CONTAINER (window), hbox);
 
   tree = create_tree ();
@@ -865,16 +967,18 @@ main (int argc, char **argv)
                            create_text (&info_buffer, FALSE),
                            gtk_label_new_with_mnemonic ("_Info"));
 
+  tag = gtk_text_buffer_create_tag (info_buffer, "title",
+                                    "font", "Sans 18",
+                                    NULL);
+   g_object_unref (info_buffer);
+
   gtk_notebook_append_page (GTK_NOTEBOOK (notebook),
                            create_text (&source_buffer, TRUE),
                            gtk_label_new_with_mnemonic ("_Source"));
 
-  tag = gtk_text_buffer_create_tag (info_buffer, "title",
-                                    "font", "Sans 18",
-                                    NULL);
 
   tag = gtk_text_buffer_create_tag (source_buffer, "comment",
-                                   "foreground", "red",
+                                   "foreground", "DodgerBlue",
                                     NULL);
   tag = gtk_text_buffer_create_tag (source_buffer, "type",
                                    "foreground", "ForestGreen",
@@ -894,6 +998,7 @@ main (int argc, char **argv)
                                    "weight", PANGO_WEIGHT_BOLD,
                                    "foreground", "DarkGoldenrod4",
                                     NULL);
+   g_object_unref (source_buffer);
   
   gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
   gtk_widget_show_all (window);