]> Pileus Git - ~andy/gtk/blobdiff - tests/testtext.c
Use gtk_box_new() instead gtk_[v|h]box_new()
[~andy/gtk] / tests / testtext.c
index 27765e165f2a0984805a77e18e5db5e8cf8171e5..84159822ca1a92c7c131b936df7584836e32ad51 100644 (file)
  * Boston, MA 02111-1307, USA.
  */
 
-#include <config.h>
+#include "config.h"
 #include <stdio.h>
 #include <sys/stat.h>
 #include <errno.h>
 #include <stdlib.h>
 #include <string.h>
 
-#undef GTK_DISABLE_DEPRECATED
-
 #include <gtk/gtk.h>
 #include <gdk/gdkkeysyms.h>
 
@@ -195,14 +193,14 @@ static void
 msgbox_yes_cb (GtkWidget *widget, gboolean *result)
 {
   *result = 0;
-  gtk_object_destroy (GTK_OBJECT (gtk_widget_get_toplevel (widget)));
+  gtk_widget_destroy (gtk_widget_get_toplevel (widget));
 }
 
 static void
 msgbox_no_cb (GtkWidget *widget, gboolean *result)
 {
   *result = 1;
-  gtk_object_destroy (GTK_OBJECT (gtk_widget_get_toplevel (widget)));
+  gtk_widget_destroy (gtk_widget_get_toplevel (widget));
 }
 
 static gboolean
@@ -211,7 +209,7 @@ msgbox_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer data)
   if (event->keyval == GDK_Escape)
     {
       g_signal_stop_emission_by_name (widget, "key_press_event");
-      gtk_object_destroy (GTK_OBJECT (widget));
+      gtk_widget_destroy (widget);
       return TRUE;
     }
 
@@ -263,7 +261,7 @@ msgbox_run (GtkWindow  *parent,
 
   /* Fill in the contents of the widget
    */
-  vbox = gtk_vbox_new (FALSE, 0);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 0);
   gtk_container_add (GTK_CONTAINER (dialog), vbox);
   
   label = gtk_label_new (message);
@@ -271,10 +269,10 @@ msgbox_run (GtkWindow  *parent,
   gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
   gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 0);
 
-  separator = gtk_hseparator_new ();
+  separator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
   gtk_box_pack_start (GTK_BOX (vbox), separator, FALSE, FALSE, 0);
 
-  button_box = gtk_hbutton_box_new ();
+  button_box = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
   gtk_box_pack_start (GTK_BOX (vbox), button_box, FALSE, FALSE, 0);
   gtk_container_set_border_width (GTK_CONTAINER (button_box), 8);
   
@@ -285,7 +283,7 @@ msgbox_run (GtkWindow  *parent,
   if (yes_button)
     {
       button = gtk_button_new_with_label (yes_button);
-      GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
+      gtk_widget_set_can_default (button, TRUE);
       gtk_container_add (GTK_CONTAINER (button_box), button);
 
       if (default_index == 0)
@@ -301,7 +299,7 @@ msgbox_run (GtkWindow  *parent,
   if (no_button)
     {
       button = gtk_button_new_with_label (no_button);
-      GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
+      gtk_widget_set_can_default (button, TRUE);
       gtk_container_add (GTK_CONTAINER (button_box), button);
 
       if (default_index == 0)
@@ -316,7 +314,7 @@ msgbox_run (GtkWindow  *parent,
   if (cancel_button)
     {
       button = gtk_button_new_with_label (cancel_button);
-      GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
+      gtk_widget_set_can_default (button, TRUE);
       gtk_container_add (GTK_CONTAINER (button_box), button);
       
       if (default_index == 1)
@@ -472,7 +470,7 @@ fill_example_buffer (GtkTextBuffer *buffer)
   tag = gtk_text_buffer_create_tag (buffer, "fg_blue", NULL);
 
 #ifdef DO_BLINK
-  gtk_timeout_add (1000, blink_timeout, tag);
+  g_timeout_add (1000, (GSourceFunc)blink_timeout, tag);
 #endif     
  
   setup_tag (tag);
@@ -983,6 +981,19 @@ do_editable_changed (gpointer callback_data,
   gtk_text_view_set_editable (GTK_TEXT_VIEW (view->text_view), callback_action);
 }
 
+static void
+change_cursor_color (GtkWidget *widget,
+                    gboolean   set)
+{
+  if (set)
+    {
+      GdkColor red = {0, 65535, 0, 0};
+      gtk_widget_modify_cursor (widget, &red, &red);
+    }
+  else
+    gtk_widget_modify_cursor (widget, NULL, NULL);
+}
+
 static void
 do_cursor_visible_changed (gpointer callback_data,
                            guint callback_action,
@@ -990,7 +1001,20 @@ do_cursor_visible_changed (gpointer callback_data,
 {
   View *view = view_from_widget (widget);
 
-  gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view->text_view), callback_action);
+  switch (callback_action)
+    {
+    case 0:
+      gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view->text_view), FALSE);
+      break;
+    case 1:
+      gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view->text_view), TRUE);
+      change_cursor_color (view->text_view, FALSE);
+      break;
+    case 2:
+      gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view->text_view), TRUE);
+      change_cursor_color (view->text_view, TRUE);
+      break;
+    }
 }
 
 static void
@@ -1510,7 +1534,7 @@ do_rich_text (gpointer callback_data,
 
   gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw), tv);
 
-  hbox = gtk_hbox_new (FALSE, 6);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE, 6);
   gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox,
                       FALSE, FALSE, 0);
 
@@ -1582,6 +1606,20 @@ dialog_response_callback (GtkWidget *dialog, gint response_id, gpointer data)
   gtk_widget_destroy (dialog);
 }
 
+static void
+do_copy  (gpointer callback_data,
+          guint callback_action,
+          GtkWidget *widget)
+{
+  View *view = view_from_widget (widget);
+  GtkTextBuffer *buffer;
+
+  buffer = view->buffer->buffer;
+
+  gtk_text_buffer_copy_clipboard (buffer,
+                                  gtk_clipboard_get (GDK_NONE));
+}
+
 static void
 do_search (gpointer callback_data,
            guint callback_action,
@@ -1918,6 +1956,8 @@ static GtkItemFactoryEntry menu_items[] =
   { "/File/E_xit",      "<control>Q" , do_exit,     0, NULL },
 
   { "/_Edit", NULL, 0, 0, "<Branch>" },
+  { "/Edit/Copy", NULL, do_copy, 0, NULL },
+  { "/Edit/sep1", NULL, NULL, 0, "<Separator>" },
   { "/Edit/Find...", NULL, do_search, 0, NULL },
   { "/Edit/Select All", "<control>A", do_select_all, 0, NULL }, 
 
@@ -1930,8 +1970,9 @@ static GtkItemFactoryEntry menu_items[] =
   { "/Settings/Not editable",    NULL,      do_editable_changed,  FALSE, "/Settings/Editable" },
   { "/Settings/sep1",        NULL,      NULL,             0, "<Separator>" },
 
-  { "/Settings/Cursor visible",    NULL,      do_cursor_visible_changed,  TRUE, "<RadioItem>" },
-  { "/Settings/Cursor not visible", NULL,      do_cursor_visible_changed,  FALSE, "/Settings/Cursor visible" },
+  { "/Settings/Cursor normal",    NULL,      do_cursor_visible_changed,  1, "<RadioItem>" },
+  { "/Settings/Cursor not visible", NULL,      do_cursor_visible_changed,  0, "/Settings/Cursor normal" },
+  { "/Settings/Cursor colored", NULL,      do_cursor_visible_changed,  2, "/Settings/Cursor normal" },
   { "/Settings/sep1",        NULL,      NULL,          0, "<Separator>" },
   
   { "/Settings/Left-to-Right", NULL,    do_direction_changed,  GTK_TEXT_DIR_LTR, "<RadioItem>" },
@@ -2444,7 +2485,7 @@ buffer_set_colors (Buffer  *buffer,
   gdouble hue = 0.0;
 
   if (enabled && buffer->color_cycle_timeout == 0)
-    buffer->color_cycle_timeout = g_timeout_add (200, color_cycle_timeout, buffer);
+    buffer->color_cycle_timeout = gdk_threads_add_timeout (200, color_cycle_timeout, buffer);
   else if (!enabled && buffer->color_cycle_timeout != 0)
     {
       g_source_remove (buffer->color_cycle_timeout);
@@ -2552,7 +2593,7 @@ cursor_set_callback (GtkTextBuffer     *buffer,
   
   text_view = GTK_TEXT_VIEW (user_data);
   
-  if (GTK_WIDGET_MAPPED (text_view) &&
+  if (gtk_widget_get_mapped (GTK_WIDGET (text_view)) &&
       mark == gtk_text_buffer_get_insert (buffer))
     {
       GdkWindow *tab_window;
@@ -2821,7 +2862,7 @@ line_numbers_expose (GtkWidget      *widget,
 
       gtk_paint_layout (widget->style,
                         target,
-                        GTK_WIDGET_STATE (widget),
+                        gtk_widget_get_state (widget),
                         FALSE,
                         NULL,
                         widget,
@@ -2843,11 +2884,19 @@ line_numbers_expose (GtkWidget      *widget,
   return FALSE;
 }
 
+static void
+selection_changed (GtkTextBuffer *buffer,
+                  GParamSpec    *pspec,
+                  GtkWidget     *copy_menu)
+{
+  gtk_widget_set_sensitive (copy_menu, gtk_text_buffer_get_has_selection (buffer));
+}
+
 static View *
 create_view (Buffer *buffer)
 {
   View *view;
-  
+  GtkWidget *copy_menu;
   GtkWidget *sw;
   GtkWidget *vbox;
   
@@ -2869,9 +2918,17 @@ create_view (Buffer *buffer)
   
   gtk_item_factory_create_items (view->item_factory, G_N_ELEMENTS (menu_items), menu_items, view);
 
+  /* make the Copy menu item sensitivity update according to the selection */
+  copy_menu = gtk_item_factory_get_item (view->item_factory, "<main>/Edit/Copy");
+  gtk_widget_set_sensitive (copy_menu, gtk_text_buffer_get_has_selection (view->buffer->buffer));
+  g_signal_connect (view->buffer->buffer,
+                   "notify::has-selection",
+                   G_CALLBACK (selection_changed),
+                   copy_menu);
+
   gtk_window_add_accel_group (GTK_WINDOW (view->window), view->accel_group);
 
-  vbox = gtk_vbox_new (FALSE, 0);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 0);
   gtk_container_add (GTK_CONTAINER (view->window), vbox);
 
   gtk_box_pack_start (GTK_BOX (vbox),
@@ -2974,8 +3031,8 @@ test_init (void)
   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);
     }
 }