gimp r25269 - in trunk: app/dialogs data/tips



Author: neo
Date: Fri Mar 28 07:34:38 2008
New Revision: 25269
URL: http://svn.gnome.org/viewvc/gimp?rev=25269&view=rev

Log:
2008-03-28  Sven Neumann  <sven gimp org>

	* data/tips/gimp-tips.dtd
	* data/tips/gimp-tips.xml.in
	* app/dialogs/tips-parser.[ch]: reverted some of the changes 
from
	yesterday. The simplification went too far and we inadvertently
	lost an important feature.



Modified:
   trunk/app/dialogs/tips-parser.c
   trunk/app/dialogs/tips-parser.h
   trunk/data/tips/gimp-tips.dtd
   trunk/data/tips/gimp-tips.xml.in

Modified: trunk/app/dialogs/tips-parser.c
==============================================================================
--- trunk/app/dialogs/tips-parser.c	(original)
+++ trunk/app/dialogs/tips-parser.c	Fri Mar 28 07:34:38 2008
@@ -1,7 +1,7 @@
 /* GIMP - The GNU Image Manipulation Program
  * Copyright (C) 1995 Spencer Kimball and Peter Mattis
  *
- * tips-parser.c -- Parse the gimp-tips.xml file.
+ * tips-parser.c - Parse the gimp-tips.xml file.
  * Copyright (C) 2002, 2008  Sven Neumann <sven gimp org>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -38,50 +38,58 @@
   TIPS_START,
   TIPS_IN_TIPS,
   TIPS_IN_TIP,
+  TIPS_IN_THETIP,
   TIPS_IN_UNKNOWN
 } TipsParserState;
 
+typedef enum
+{
+  TIPS_LOCALE_NONE,
+  TIPS_LOCALE_MATCH,
+  TIPS_LOCALE_MISMATCH
+} TipsParserLocaleState;
+
 typedef struct
 {
-  TipsParserState  state;
-  TipsParserState  last_known_state;
-  const gchar     *locale;
-  gboolean         locale_match;
-  gint             markup_depth;
-  gint             unknown_depth;
-  GString         *value;
-  GimpTip         *current_tip;
-  GList           *tips;
+  TipsParserState        state;
+  TipsParserState        last_known_state;
+  const gchar           *locale;
+  TipsParserLocaleState  locale_state;
+  gint                   markup_depth;
+  gint                   unknown_depth;
+  GString               *value;
+  GimpTip               *current_tip;
+  GList                 *tips;
 } TipsParser;
 
 
-static void      tips_parser_start_element (GMarkupParseContext  *context,
-                                            const gchar          *element_name,
-                                            const gchar         **attribute_names,
-                                            const gchar         **attribute_values,
-                                            gpointer              user_data,
-                                            GError              **error);
-static void      tips_parser_end_element   (GMarkupParseContext  *context,
-                                            const gchar          *element_name,
-                                            gpointer              user_data,
-                                            GError              **error);
-static void      tips_parser_characters    (GMarkupParseContext  *context,
-                                            const gchar          *text,
-                                            gsize                 text_len,
-                                            gpointer              user_data,
-                                            GError              **error);
-
-static void      tips_parser_start_markup  (TipsParser   *parser,
-                                            const gchar  *markup_name);
-static void      tips_parser_end_markup    (TipsParser   *parser,
-                                            const gchar  *markup_name);
-static void      tips_parser_start_unknown (TipsParser   *parser);
-static void      tips_parser_end_unknown   (TipsParser   *parser);
-static void      tips_parser_parse_locale  (TipsParser   *parser,
-                                            const gchar **names,
-                                            const gchar **values);
-static gboolean  tips_parser_set_by_locale (TipsParser   *parser,
-                                            gchar       **dest);
+static void  tips_parser_start_element (GMarkupParseContext  *context,
+                                        const gchar          *element_name,
+                                        const gchar         **attribute_names,
+                                        const gchar         **attribute_values,
+                                        gpointer              user_data,
+                                        GError              **error);
+static void  tips_parser_end_element   (GMarkupParseContext  *context,
+                                        const gchar          *element_name,
+                                        gpointer              user_data,
+                                        GError              **error);
+static void  tips_parser_characters    (GMarkupParseContext  *context,
+                                        const gchar          *text,
+                                        gsize                 text_len,
+                                        gpointer              user_data,
+                                        GError              **error);
+
+static void tips_parser_start_markup   (TipsParser   *parser,
+                                        const gchar  *markup_name);
+static void tips_parser_end_markup     (TipsParser   *parser,
+                                        const gchar  *markup_name);
+static void tips_parser_start_unknown  (TipsParser   *parser);
+static void tips_parser_end_unknown    (TipsParser   *parser);
+static void tips_parser_parse_locale   (TipsParser   *parser,
+                                        const gchar **names,
+                                        const gchar **values);
+static void  tips_parser_set_by_locale (TipsParser   *parser,
+                                        gchar       **dest);
 
 
 static const GMarkupParser markup_parser =
@@ -208,13 +216,9 @@
     {
     case TIPS_START:
       if (strcmp (element_name, "gimp-tips") == 0)
-        {
-          parser->state = TIPS_IN_TIPS;
-        }
+        parser->state = TIPS_IN_TIPS;
       else
-        {
-          tips_parser_start_unknown (parser);
-        }
+        tips_parser_start_unknown (parser);
       break;
 
     case TIPS_IN_TIPS:
@@ -222,26 +226,29 @@
         {
           parser->state = TIPS_IN_TIP;
           parser->current_tip = g_slice_new0 (GimpTip);
-
-          tips_parser_parse_locale (parser, attribute_names, attribute_values);
         }
       else
+        tips_parser_start_unknown (parser);
+      break;
+
+    case TIPS_IN_TIP:
+      if (strcmp (element_name, "thetip") == 0)
         {
-          tips_parser_start_unknown (parser);
+          parser->state = TIPS_IN_THETIP;
+          tips_parser_parse_locale (parser, attribute_names, attribute_values);
         }
+      else
+        tips_parser_start_unknown (parser);
       break;
 
-    case TIPS_IN_TIP:
+    case TIPS_IN_THETIP:
       if (strcmp (element_name, "b"  ) == 0 ||
           strcmp (element_name, "big") == 0 ||
           strcmp (element_name, "tt" ) == 0)
-        {
-          tips_parser_start_markup (parser, element_name);
-        }
+        tips_parser_start_markup (parser, element_name);
       else
-        {
-           tips_parser_start_unknown (parser);
-        }
+        tips_parser_start_unknown (parser);
+      break;
 
     case TIPS_IN_UNKNOWN:
       tips_parser_start_unknown (parser);
@@ -268,21 +275,20 @@
       break;
 
     case TIPS_IN_TIP:
+      parser->tips = g_list_prepend (parser->tips, parser->current_tip);
+      parser->current_tip = NULL;
+      parser->state = TIPS_IN_TIPS;
+      break;
+
+    case TIPS_IN_THETIP:
       if (parser->markup_depth == 0)
         {
-          if (tips_parser_set_by_locale (parser, &parser->current_tip->thetip))
-            {
-              parser->tips = g_list_prepend (parser->tips, parser->current_tip);
-              parser->current_tip = NULL;
-            }
+          tips_parser_set_by_locale (parser, &parser->current_tip->thetip);
           g_string_truncate (parser->value, 0);
-
-          parser->state = TIPS_IN_TIPS;
+          parser->state = TIPS_IN_TIP;
         }
       else
-        {
-          tips_parser_end_markup (parser, element_name);
-        }
+        tips_parser_end_markup (parser, element_name);
       break;
 
     case TIPS_IN_UNKNOWN:
@@ -302,8 +308,8 @@
 
   switch (parser->state)
     {
-    case TIPS_IN_TIP:
-      if (parser->locale_match)
+    case TIPS_IN_THETIP:
+      if (parser->locale_state != TIPS_LOCALE_MISMATCH)
         {
           gint i;
 
@@ -323,7 +329,6 @@
             }
         }
       break;
-
     default:
       break;
     }
@@ -373,16 +378,15 @@
                           const gchar **names,
                           const gchar **values)
 {
-  parser->locale_match = (parser->locale == NULL);
+  parser->locale_state = TIPS_LOCALE_NONE;
 
   while (*names && *values)
     {
       if (strcmp (*names, "xml:lang") == 0 && **values)
         {
-          if (parser->locale)
-            parser->locale_match = (strcmp (*values, parser->locale) == 0);
-          else
-            parser->locale_match = FALSE;
+          parser->locale_state = (parser->locale &&
+                                  strcmp (*values, parser->locale) == 0 ?
+                                  TIPS_LOCALE_MATCH : TIPS_LOCALE_MISMATCH);
         }
 
       names++;
@@ -390,16 +394,30 @@
     }
 }
 
-static gboolean
+static void
 tips_parser_set_by_locale (TipsParser  *parser,
                            gchar      **dest)
 {
-  if (parser->locale_match)
+  switch (parser->locale_state)
     {
+    case TIPS_LOCALE_NONE:
+      if (!parser->locale)
+        {
+          g_free (*dest);
+          *dest = g_strdup (parser->value->str);
+        }
+      else if (*dest == NULL)
+        {
+          *dest = g_strdup (parser->value->str);
+        }
+      break;
+
+    case TIPS_LOCALE_MATCH:
       g_free (*dest);
       *dest = g_strdup (parser->value->str);
-      return TRUE;
-    }
+      break;
 
-  return FALSE;
+    case TIPS_LOCALE_MISMATCH:
+      break;
+    }
 }

Modified: trunk/app/dialogs/tips-parser.h
==============================================================================
--- trunk/app/dialogs/tips-parser.h	(original)
+++ trunk/app/dialogs/tips-parser.h	Fri Mar 28 07:34:38 2008
@@ -1,7 +1,7 @@
 /* GIMP - The GNU Image Manipulation Program
  * Copyright (C) 1995 Spencer Kimball and Peter Mattis
  *
- * tips-parser.h -- Parse the gimp-tips.xml file.
+ * tips-parser.h - Parse the gimp-tips.xml file.
  * Copyright (C) 2002, 2008  Sven Neumann <sven gimp org>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -33,9 +33,6 @@
 
 GimpTip * gimp_tip_new        (const gchar  *format,
                                ...) G_GNUC_PRINTF(1, 2);
-void      gimp_tip_set        (GimpTip      *tip,
-                               const gchar  *format,
-                               ...) G_GNUC_PRINTF(2, 3);
 void      gimp_tip_free       (GimpTip      *tip);
 
 GList   * gimp_tips_from_file (const gchar  *filename,

Modified: trunk/data/tips/gimp-tips.dtd
==============================================================================
--- trunk/data/tips/gimp-tips.dtd	(original)
+++ trunk/data/tips/gimp-tips.dtd	Fri Mar 28 07:34:38 2008
@@ -1,13 +1,15 @@
 <!-- Simple DTD for GIMP tips -->
 
-<!ENTITY % markup "(#PCDATA|b|big|tt)*" >
+<!ELEMENT gimp-tips (tip+)>
 
-<!ELEMENT gimp-tips (tip+) >
+<!ELEMENT tip (thetip+)>
+<!ATTLIST tip level (start|beginner|intermediate|advanced) #REQUIRED>
 
-<!ELEMENT tip %markup; >
-<!ATTLIST tip level (start|beginner|intermediate|advanced) #REQUIRED
-	      xml:lang CDATA #IMPLIED >
+<!ENTITY % markup "(#PCDATA|b|big|tt)*">
 
-<!ELEMENT b %markup; >
-<!ELEMENT big %markup; >
-<!ELEMENT tt %markup; >
+<!ELEMENT b %markup;>
+<!ELEMENT big %markup;>
+<!ELEMENT tt %markup;>
+
+<!ELEMENT thetip %markup;>
+<!ATTLIST thetip xml:lang CDATA #IMPLIED>

Modified: trunk/data/tips/gimp-tips.xml.in
==============================================================================
--- trunk/data/tips/gimp-tips.xml.in	(original)
+++ trunk/data/tips/gimp-tips.xml.in	Fri Mar 28 07:34:38 2008
@@ -1,191 +1,244 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE gimp-tips SYSTEM "gimp-tips.dtd">
 
-<gimp-tips>
-
 <!-- This is a list of tips for GIMP.                                      -->
 <!--                                                                       -->
 <!-- The tips parser supports a very basic markup language. You may use    -->
 <!-- the tag b to specify bold text, big to increase the font size and     -->
 <!-- tt to switch to a monospace font.                                     -->
 
+<gimp-tips>
 
 <!--                                                                       -->
 <!-- Tips for beginners start here                                         -->
 <!-- (for people who are not familiar yet with layers and image formats)   -->
 <!--                                                                       -->
 
-  <_tip level="beginner">
-    You can get context-sensitive help for most of GIMP's features by
-    pressing the F1 key at any time.  This also works inside the menus.
-  </_tip>
-  <_tip level="beginner">
-    GIMP uses layers to let you organize your image.  Think of them
-    as a stack of slides or filters, such that looking through them you
-    see a composite of their contents.
-  </_tip>
-  <_tip level="beginner">
-    You can perform many layer operations by right-clicking on the text
-    label of a layer in the Layers dialog.
-  </_tip>
-  <_tip level="beginner">
-    When you save an image to work on it again later, try using XCF,
-    GIMP's native file format (use the file extension <tt>.xcf</tt>).
-    This preserves the layers and every aspect of your work-in-progress.
-    Once a project is completed, you can save it as JPEG, PNG, GIF, ...
-  </_tip>
-  <_tip level="beginner">
-    Most plug-ins work on the current layer of the current image.  In
-    some cases, you will have to merge all layers (ImageâFlatten Image)
-    if you want the plug-in to work on the whole image.
-  </_tip>
-  <_tip level="beginner">
-    If a layer's name in the Layers dialog is displayed in <b>bold</b>,
-    this layer doesn't have an alpha-channel. You can add an alpha-channel
-    using LayerâTransparencyâAdd Alpha Channel.
-  </_tip>
-  <_tip level="beginner">
-    Not all effects can be applied to all kinds of images.  This is
-    indicated by a grayed-out menu-entry.  You may need to change
-    the image mode to RGB (ImageâModeâRGB), add an alpha-channel
-    (LayerâTransparencyâAdd Alpha Channel) or flatten it
-    (ImageâFlatten Image).
-  </_tip>
-  <_tip level="beginner">
-    You can adjust or move a selection by using <tt>Alt</tt>-drag.
-    If this makes the window move, your window manager uses the
-    <tt>Alt</tt> key already.  Most window managers can be
-    configured to ignore the <tt>Alt</tt> key or to use
-    the <tt>Super</tt> key (or "Windows logo") instead.
-  </_tip>
+  <tip level="beginner">
+    <_thetip>
+      You can get context-sensitive help for most of GIMP's features by
+      pressing the F1 key at any time.  This also works inside the menus.
+    </_thetip>
+  </tip>
+  <tip level="beginner">
+    <_thetip>
+      GIMP uses layers to let you organize your image.  Think of them
+      as a stack of slides or filters, such that looking through them you
+      see a composite of their contents.
+    </_thetip>
+  </tip>
+  <tip level="beginner">
+    <_thetip>
+      You can perform many layer operations by right-clicking on the text
+      label of a layer in the Layers dialog.
+    </_thetip>
+  </tip>
+  <tip level="beginner">
+    <_thetip>
+      When you save an image to work on it again later, try using XCF,
+      GIMP's native file format (use the file extension <tt>.xcf</tt>).
+      This preserves the layers and every aspect of your work-in-progress.
+      Once a project is completed, you can save it as JPEG, PNG, GIF, ...
+    </_thetip>
+  </tip>
+  <tip level="beginner">
+    <_thetip>
+      Most plug-ins work on the current layer of the current image.  In
+      some cases, you will have to merge all layers (ImageâFlatten Image)
+      if you want the plug-in to work on the whole image.
+    </_thetip>
+  </tip>
+  <tip level="beginner">
+    <_thetip>
+      If a layer's name in the Layers dialog is displayed in <b>bold</b>,
+      this layer doesn't have an alpha-channel. You can add an alpha-channel
+      using LayerâTransparencyâAdd Alpha Channel.
+    </_thetip>
+  </tip>
+  <tip level="beginner">
+    <_thetip>
+      Not all effects can be applied to all kinds of images.  This is
+      indicated by a grayed-out menu-entry.  You may need to change
+      the image mode to RGB (ImageâModeâRGB), add an alpha-channel
+      (LayerâTransparencyâAdd Alpha Channel) or flatten it
+      (ImageâFlatten Image).
+    </_thetip>
+  </tip>
+  <tip level="beginner">
+    <_thetip>
+      You can adjust or move a selection by using <tt>Alt</tt>-drag.
+      If this makes the window move, your window manager uses the
+      <tt>Alt</tt> key already.  Most window managers can be
+      configured to ignore the <tt>Alt</tt> key or to use
+      the <tt>Super</tt> key (or "Windows logo") instead.
+    </_thetip>
+  </tip>
 
 <!--                                                                       -->
 <!-- Tips for intermediate users start here                                -->
 <!--                                                                       -->
 
-  <_tip level="intermediate">
-    You can drag and drop many things in GIMP.  For example, dragging
-    a color from the toolbox or from a color palette and dropping it into
-    an image will fill the current selection with that color.
-  </_tip>
-  <_tip level="intermediate">
-    You can use the middle mouse button to pan around the image 
-    (or optionally hold <tt>Spacebar</tt> while you move the mouse).
-  </_tip>
-  <_tip level="intermediate">
-    Click and drag on a ruler to place a guide on an image.  All
-    dragged selections will snap to the guides.  You can remove
-    guides by dragging them off the image with the Move tool.
-  </_tip>
-  <_tip level="intermediate">
-    You can drag a layer from the Layers dialog and drop it onto the
-    toolbox.  This will create a new image containing only that layer.
-  </_tip>
-  <_tip level="intermediate">
-    A floating selection must be anchored to a new layer or to the last
-    active layer before doing other operations on the image.  Click on the
-    &quot;New Layer&quot; or the &quot;Anchor Layer&quot; button in the
-    Layers dialog, or use the menus to do the same.
-  </_tip>
-  <_tip level="intermediate">
-    GIMP supports gzip compression on the fly.  Just add <tt>.gz</tt>
-    (or <tt>.bz2</tt>, if you have bzip2 installed) to the filename and
-    your image will be saved compressed.  Of course loading compressed
-    images works too.
-  </_tip>
-  <_tip level="intermediate">
-    Pressing and holding the <tt>Shift</tt> key before making a selection
-    allows you to add to the current selection instead of replacing it.
-    Using <tt>Ctrl</tt> before making a selection subtracts from the
-    current one.
-  </_tip>
-  <_tip level="intermediate">
-    You can draw simple squares or circles using EditâStroke Selection.
-    It strokes the edge of your current selection. More complex shapes
-    can be drawn using the Path tool or with FiltersâRenderâGfig.
-  </_tip>
-  <_tip level="intermediate">
-    If you stroke a path (EditâStroke Path), the paint tools can
-    be used with their current settings.  You can use the Paintbrush in
-    gradient mode or even the Eraser or the Smudge tool.
-  </_tip>
-  <_tip level="intermediate">
-    You can create and edit complex selections using the Path tool.
-    The Paths dialog allows you to work on multiple paths and to convert
-    them to selections.
-  </_tip>
-  <_tip level="intermediate">
-    You can use the paint tools to change the selection.  Click on the
-    &quot;Quick Mask&quot; button at the bottom left of an image window.
-    Change your selection by painting in the image and click on the button
-    again to convert it back to a normal selection.
-  </_tip>
-  <_tip level="intermediate">
-    You can save a selection to a channel (SelectâSave to Channel) and
-    then modify this channel with any paint tools.  Using the buttons in
-    the Channels dialog, you can toggle the visibility of this new channel
-    or convert it to a selection.
-  </_tip>
+  <tip level="intermediate">
+    <_thetip>
+      You can drag and drop many things in GIMP.  For example, dragging
+      a color from the toolbox or from a color palette and dropping it into
+      an image will fill the current selection with that color.
+    </_thetip>
+  </tip>
+  <tip level="intermediate">
+    <_thetip>
+      You can use the middle mouse button to pan around the image 
+      (or optionally hold <tt>Spacebar</tt> while you move the mouse).
+    </_thetip>
+  </tip>
+  <tip level="intermediate">
+    <_thetip>
+      Click and drag on a ruler to place a guide on an image.  All
+      dragged selections will snap to the guides.  You can remove
+      guides by dragging them off the image with the Move tool.
+    </_thetip>
+  </tip>
+  <tip level="intermediate">
+    <_thetip>
+      You can drag a layer from the Layers dialog and drop it onto the
+      toolbox.  This will create a new image containing only that layer.
+    </_thetip>
+  </tip>
+  <tip level="intermediate">
+    <_thetip>
+      A floating selection must be anchored to a new layer or to the last
+      active layer before doing other operations on the image.  Click on the
+      &quot;New Layer&quot; or the &quot;Anchor Layer&quot; button in the
+      Layers dialog, or use the menus to do the same.
+    </_thetip>
+  </tip>
+  <tip level="intermediate">
+    <_thetip>
+      GIMP supports gzip compression on the fly.  Just add <tt>.gz</tt>
+      (or <tt>.bz2</tt>, if you have bzip2 installed) to the filename and
+      your image will be saved compressed.  Of course loading compressed
+      images works too.
+    </_thetip>
+  </tip>
+  <tip level="intermediate">
+    <_thetip>
+      Pressing and holding the <tt>Shift</tt> key before making a selection
+      allows you to add to the current selection instead of replacing it.
+      Using <tt>Ctrl</tt> before making a selection subtracts from the
+      current one.
+    </_thetip>
+  </tip>
+  <tip level="intermediate">
+    <_thetip>
+      You can draw simple squares or circles using EditâStroke Selection.
+      It strokes the edge of your current selection. More complex shapes
+      can be drawn using the Path tool or with FiltersâRenderâGfig.
+    </_thetip>
+  </tip>
+  <tip level="intermediate">
+    <_thetip>
+      If you stroke a path (EditâStroke Path), the paint tools can
+      be used with their current settings.  You can use the Paintbrush in
+      gradient mode or even the Eraser or the Smudge tool.
+    </_thetip>
+  </tip>
+  <tip level="intermediate">
+    <_thetip>
+      You can create and edit complex selections using the Path tool.
+      The Paths dialog allows you to work on multiple paths and to convert
+      them to selections.
+    </_thetip>
+  </tip>
+  <tip level="intermediate">
+    <_thetip>
+      You can use the paint tools to change the selection.  Click on the
+      &quot;Quick Mask&quot; button at the bottom left of an image window.
+      Change your selection by painting in the image and click on the button
+      again to convert it back to a normal selection.
+    </_thetip>
+  </tip>
+  <tip level="intermediate">
+    <_thetip>
+      You can save a selection to a channel (SelectâSave to Channel) and
+      then modify this channel with any paint tools.  Using the buttons in
+      the Channels dialog, you can toggle the visibility of this new channel
+      or convert it to a selection.
+    </_thetip>
+  </tip>
 
 <!--                                                                       -->
 <!-- Tips for advanced users start here                                    -->
 <!-- (this is mostly for learning shortcut keys)                           -->
 <!--                                                                       -->
 
-  <_tip level="advanced">
-    After you enabled &quot;Dynamic Keyboard Shortcuts&quot; in the
-    Preferences dialog, you can reassign shortcut keys. Do so by bringing
-    up the menu, selecting a menu item, and pressing the desired key
-    combination. If &quot;Save Keyboard Shortcuts&quot; is enabled, the
-    key bindings are saved when you exit GIMP.
-    You should probably disable &quot;Dynamic Keyboard Shortcuts&quot; 
-    afterwards, to prevent accidentally assigning/reassigning shortcuts.
-  </_tip>
-  <_tip level="advanced">
-    If your screen is too cluttered, you can press <tt>Tab</tt> 
-    in an image window to toggle the visibility of the toolbox 
-    and other dialogs.
-  </_tip>
-  <_tip level="advanced">
-    <tt>Shift</tt>-click on the eye icon in the Layers dialog to hide all
-    layers but that one.  <tt>Shift</tt>-click again to show all layers.
-  </_tip>
-  <_tip level="advanced">
-    <tt>Ctrl</tt>-clicking on the layer mask's preview in the Layers dialog
-    toggles the effect of the layer mask. <tt>Alt</tt>-clicking on the layer 
-    mask's preview in the Layers dialog toggles viewing the mask directly.
-  </_tip>
-  <_tip level="advanced">
-    You can use <tt>Ctrl</tt>-<tt>Tab</tt> to cycle through all layers in
-    an image (if your window manager doesn't trap those keys...).
-  </_tip>
-  <_tip level="advanced">
-    <tt>Ctrl</tt>-click with the Bucket Fill tool to have it use
-    the background color instead of the foreground color.
-    Similarly, <tt>Ctrl</tt>-clicking with the eyedropper tool 
-    sets the background color instead of the foreground color.
-  </_tip>
-  <_tip level="advanced">
-    <tt>Ctrl</tt>-drag with the Rotate tool will constrain the
-    rotation to 15 degree angles.
-  </_tip>
-  <_tip level="advanced">
-    To create a circle-shaped selection, hold <tt>Shift</tt> while
-    doing an ellipse select. To place a circle precisely, drag
-    horizontal and vertical guides tangent to the circle you want to
-    select, place your cursor at the intersection of the guides, and
-    the resulting selection will just touch the guides.
-  </_tip>
-  <_tip level="advanced">
-    If some of your scanned photos do not look colorful enough, you
-    can easily improve their tonal range with the &quot;Auto&quot;
-    button in the Levels tool (ColorsâLevels).  If there are any
-    color casts, you can correct them with the Curves tool
-    (ColorsâCurves).
-  </_tip>
-
-<!--                                                                       -->
-<!-- (end of tips)                                                         -->
-<!--                                                                       -->
+  <tip level="advanced">
+    <_thetip>
+      After you enabled &quot;Dynamic Keyboard Shortcuts&quot; in the
+      Preferences dialog, you can reassign shortcut keys. Do so by bringing
+      up the menu, selecting a menu item, and pressing the desired key
+      combination. If &quot;Save Keyboard Shortcuts&quot; is enabled, the
+      key bindings are saved when you exit GIMP.
+      You should probably disable &quot;Dynamic Keyboard Shortcuts&quot; 
+      afterwards, to prevent accidentally assigning/reassigning shortcuts.
+    </_thetip>
+  </tip>
+  <tip level="advanced">
+    <_thetip>
+      If your screen is too cluttered, you can press <tt>Tab</tt> 
+      in an image window to toggle the visibility of the toolbox 
+      and other dialogs.
+    </_thetip>
+  </tip>
+  <tip level="advanced">
+    <_thetip>
+      <tt>Shift</tt>-click on the eye icon in the Layers dialog to hide all
+      layers but that one.  <tt>Shift</tt>-click again to show all layers.
+    </_thetip>
+  </tip>
+  <tip level="advanced">
+    <_thetip>
+      <tt>Ctrl</tt>-clicking on the layer mask's preview in the Layers dialog
+      toggles the effect of the layer mask. <tt>Alt</tt>-clicking on the layer 
+      mask's preview in the Layers dialog toggles viewing the mask directly.
+    </_thetip>
+  </tip>
+  <tip level="advanced">
+    <_thetip>
+      You can use <tt>Ctrl</tt>-<tt>Tab</tt> to cycle through all layers in
+      an image (if your window manager doesn't trap those keys...).
+    </_thetip>
+  </tip>
+  <tip level="advanced">
+    <_thetip>
+      <tt>Ctrl</tt>-click with the Bucket Fill tool to have it use
+      the background color instead of the foreground color.
+      Similarly, <tt>Ctrl</tt>-clicking with the eyedropper tool 
+      sets the background color instead of the foreground color.
+    </_thetip>
+  </tip>
+  <tip level="advanced">
+    <_thetip>
+      <tt>Ctrl</tt>-drag with the Rotate tool will constrain the
+      rotation to 15 degree angles.
+    </_thetip>
+  </tip>
+  <tip level="advanced">
+    <_thetip>
+      To create a circle-shaped selection, hold <tt>Shift</tt> while
+      doing an ellipse select. To place a circle precisely, drag
+      horizontal and vertical guides tangent to the circle you want to
+      select, place your cursor at the intersection of the guides, and
+      the resulting selection will just touch the guides.
+    </_thetip>
+  </tip>
+  <tip level="advanced">
+    <_thetip>
+      If some of your scanned photos do not look colorful enough, you
+      can easily improve their tonal range with the &quot;Auto&quot;
+      button in the Levels tool (ColorsâLevels).  If there are any
+      color casts, you can correct them with the Curves tool
+      (ColorsâCurves).
+    </_thetip>
+  </tip>
 
 </gimp-tips>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]