Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWillian Padovani Germano <wpgermano@gmail.com>2008-10-10 02:28:44 +0400
committerWillian Padovani Germano <wpgermano@gmail.com>2008-10-10 02:28:44 +0400
commite5d1c5a176607f8e4b2ee8a918734e8588d6a4b4 (patch)
treec9eaae298bbb3d54c133ff86309b8d8121e1caae /source/blender/python
parent0d23e3436250e5b410e6077e99ddaeee8d2fb8b4 (diff)
== Python ==
Bug: [#17734] Loading a python script's help dosn't work reported by Rian Tut (thanks). Actual problem: scripts with spaces in their filenames were not supported by the code that registers scripts in menus and runs them. Added support w/o breaking eventual, rare scripts that parse the Bpymenus file. They will still need an update to support filenames with spaces, like done here for these scripts: Scripts Help Browser and Scripts Config Editor. PS: tested on Linux. Please test on other platforms: just make sure scripts still appear in menus (the File->Export, for example), even after re-registering them (Scripts window -> Scripts Menu -> Update Menus) and that the Scripts Help Browser still works.
Diffstat (limited to 'source/blender/python')
-rw-r--r--source/blender/python/BPY_menus.c33
1 files changed, 21 insertions, 12 deletions
diff --git a/source/blender/python/BPY_menus.c b/source/blender/python/BPY_menus.c
index 69b50e5c47a..9e7abc44657 100644
--- a/source/blender/python/BPY_menus.c
+++ b/source/blender/python/BPY_menus.c
@@ -479,7 +479,7 @@ static int bpymenu_CreateFromFile( void )
char line[255], w1[255], w2[255], tooltip[255], *tip;
char upythondir[FILE_MAX];
char *homedir = NULL;
- int parsing, version, is_userdir;
+ int parsing, version, w2_len, is_userdir;
short group;
BPyMenu *pymenu = NULL;
@@ -554,17 +554,32 @@ will use 'Misc'.\n", w1 );
else if( line[0] == '\n' )
continue;
else if( line[0] == '\'' ) { /* menu entry */
- parsing =
+/* parsing =
sscanf( line,
"'%[^']' %d %s %d '%[^']'\n",
w1, &version, w2, &is_userdir,
tooltip );
-
- if( parsing <= 0 ) { /* invalid line, get rid of it */
+*/
+ /* previously filenames with spaces were not supported;
+ * this adds support for that w/o breaking the existing
+ * few, exotic scripts that parse the Bpymenus file */
+ parsing = sscanf( line,
+ "'%[^']' %d %[^'\n] '%[^']'\n",
+ w1, &version, w2, tooltip );
+ if( parsing <= 0 ) { /* invalid line, get rid of it */
fgets( line, 255, fp );
- } else if( parsing == 5 )
+ } else if( parsing == 4 )
tip = tooltip; /* has tooltip */
+ w2_len = strlen(w2);
+ if( w2[w2_len-1] == ' ') {
+ w2[w2_len-1] = '\0';
+ w2_len -= 1;
+ }
+ if( w2[w2_len-1] == '1') is_userdir = 1;
+ else is_userdir = 0;
+ w2[w2_len-2] = '\0';
+
pymenu = bpymenu_AddEntry( group,
( short ) version,
w1, w2, is_userdir,
@@ -693,13 +708,7 @@ void BPyMenu_PrintAllEntries( void )
}
/* bpymenu_ParseFile:
- * recursively scans folders looking for scripts to register.
- *
- * This function scans the scripts directory looking for .py files with the
- * right header and menu info, using that to fill the bpymenu structs.
- * is_userdir defines if the script is in the default scripts dir or the
- * user defined one (U.pythondir: is_userdir == 1).
- * Speed is important.
+ * parse a given .py file looking for a proper header.
*
* The first line of the script must be '#!BPY'.
* The header registration lines must appear between the first pair of