Hi,

   first message in this list and first micro patch for add the new type
   SF-DIRNAME to the list of types that are possible to use in the
   script-fu dialog box.

Regards, MOP.

-- 
  Matteo Nastasi  -  Milano - Italy  | HomePage: mop.netdyna.com
  Sostenere e supportare GNU/Linux ! | ICQ-Numb:38095675  IRCnet:#c-it
  Milano Linux                       | E-Mail:   [EMAIL PROTECTED]
         Users Group  www.milug.org  |  (togli N e SPAM per l'indir. vero)
Index: plug-ins/script-fu/script-fu-scripts.c
===================================================================
RCS file: /cvs/gnome/gimp/plug-ins/script-fu/script-fu-scripts.c,v
retrieving revision 1.74
diff -u -r1.74 script-fu-scripts.c
--- plug-ins/script-fu/script-fu-scripts.c      2001/10/29 12:51:21     1.74
+++ plug-ins/script-fu/script-fu-scripts.c      2001/11/20 19:53:25
@@ -649,6 +649,34 @@
                  args[i + 1].description = script->arg_labels[i];
                 break;
 
+               case SF_DIRNAME:
+                 if (!TYPEP (car (a), tc_string))
+                   return my_err ("script-fu-register: dirname defaults must be 
+string values", NIL);
+                 script->arg_defaults[i].sfa_file.filename = 
+                   g_strdup (get_c_string (car (a)));
+
+#ifdef G_OS_WIN32
+                 /* Replace POSIX slashes with Win32 backslashes. This
+                  * is just so script-fus can be written with only
+                  * POSIX directory separators.
+                  */
+                 val = script->arg_defaults[i].sfa_file.filename;
+                 while (*val)
+                   {
+                     if (*val == '/')
+                       *val = '\\';
+                     val++;
+                   }
+#endif
+                 script->arg_values[i].sfa_file.filename =  
+                   g_strdup (script->arg_defaults[i].sfa_file.filename);
+                 script->arg_values[i].sfa_file.fileselection = NULL;
+
+                 args[i + 1].type = GIMP_PDB_STRING;
+                 args[i + 1].name = "dirname";
+                 args[i + 1].description = script->arg_labels[i];
+                break;
+
                case SF_FONT:
                  if (!TYPEP (car (a), tc_string))
                    return my_err ("script-fu-register: font defaults must be string 
values", NIL);
@@ -921,6 +949,7 @@
 
                  case SF_STRING:
                  case SF_FILENAME:
+                 case SF_DIRNAME:
                    escaped = ESCAPE (params[i + 1].data.d_string);
                    length += strlen (escaped) + 3;
                    g_free (escaped);
@@ -986,6 +1015,7 @@
 
                         case SF_STRING:
                         case SF_FILENAME:
+                        case SF_DIRNAME:
                           escaped = ESCAPE (params[i + 1].data.d_string);
                           g_snprintf (buffer, sizeof (buffer), "\"%s\"",
                                      escaped);
@@ -1119,6 +1149,7 @@
              break;
 
            case SF_FILENAME:
+           case SF_DIRNAME:
              g_free (script->arg_defaults[i].sfa_file.filename);
              g_free (script->arg_values[i].sfa_file.filename);
              break;
@@ -1381,12 +1412,12 @@
          break;
 
        case SF_FILENAME:
-         widget_leftalign = FALSE
-;
-         sf_interface->args_widgets[i] =
+       case SF_DIRNAME:
+         widget_leftalign = FALSE;
+         sf_interface->args_widgets[i] =  
            gimp_file_selection_new (_("Script-Fu File Selection"),
                                     script->arg_values[i].sfa_file.filename,
-                                    FALSE, TRUE);
+                                    (script->arg_types[i] == SF_DIRNAME ? TRUE : 
+FALSE), TRUE);
          script->arg_values[i].sfa_file.fileselection = 
            sf_interface->args_widgets[i];
 
@@ -1770,6 +1801,7 @@
        break;
 
       case SF_FILENAME:
+      case SF_DIRNAME:
        escaped = ESCAPE (script->arg_values[i].sfa_file.filename);
        length += strlen (escaped) + 3;
        g_free (escaped);
@@ -1872,6 +1904,7 @@
          break;
 
        case SF_FILENAME:
+       case SF_DIRNAME:
          escaped = ESCAPE (script->arg_values[i].sfa_file.filename);
          g_snprintf (buffer, sizeof (buffer), "\"%s\"", escaped);
          g_free (escaped);
@@ -2099,6 +2132,7 @@
        break;
 
       case SF_FILENAME:
+      case SF_DIRNAME:
        g_free (script->arg_values[i].sfa_file.filename);
        script->arg_values[i].sfa_file.filename =
          g_strdup (script->arg_defaults[i].sfa_file.filename);
Index: plug-ins/script-fu/script-fu-enums.h
===================================================================
RCS file: /cvs/gnome/gimp/plug-ins/script-fu/script-fu-enums.h,v
retrieving revision 1.10
diff -u -r1.10 script-fu-enums.h
--- plug-ins/script-fu/script-fu-enums.h        2000/04/28 00:02:10     1.10
+++ plug-ins/script-fu/script-fu-enums.h        2001/11/20 19:15:32
@@ -37,6 +37,7 @@
   SF_BRUSH,
   SF_GRADIENT,
   SF_FILENAME,
+  SF_DIRNAME,
   SF_OPTION
 } SFArgType;
 
Index: plug-ins/script-fu/siod-wrapper.c
===================================================================
RCS file: /cvs/gnome/gimp/plug-ins/script-fu/siod-wrapper.c,v
retrieving revision 1.2
diff -u -r1.2 siod-wrapper.c
--- plug-ins/script-fu/siod-wrapper.c   2001/07/22 22:18:00     1.2
+++ plug-ins/script-fu/siod-wrapper.c   2001/11/20 19:54:37
@@ -288,6 +288,7 @@
   setvar (cintern ("SF-VALUE"),       flocons (SF_VALUE),      NIL);
   setvar (cintern ("SF-STRING"),      flocons (SF_STRING),     NIL);
   setvar (cintern ("SF-FILENAME"),    flocons (SF_FILENAME),   NIL);
+  setvar (cintern ("SF-DIRNAME"),     flocons (SF_DIRNAME),    NIL);
   setvar (cintern ("SF-ADJUSTMENT"),  flocons (SF_ADJUSTMENT), NIL);
   setvar (cintern ("SF-FONT"),        flocons (SF_FONT),       NIL);
   setvar (cintern ("SF-PATTERN"),     flocons (SF_PATTERN),    NIL);

Reply via email to