2.5 filebrowser
authorAndrea Weikert <elubie@gmx.net>
Tue, 30 Jun 2009 20:34:00 +0000 (20:34 +0000)
committerAndrea Weikert <elubie@gmx.net>
Tue, 30 Jun 2009 20:34:00 +0000 (20:34 +0000)
* show only name of the last directory for the bookmark
* small fix of projectfile: header BLI_fileops.h was moved
Note: full path should appear in tool tip later, also for renaming bookmarks later on.

projectfiles_vc9/blender/blenlib/BLI_blenlib.vcproj
source/blender/blenlib/BLI_util.h
source/blender/blenlib/intern/util.c
source/blender/editors/space_file/file_panels.c

index e31436b92809d6658e77608ef3b8c018574a94f8..6b5359509ab64e9c6e2b5ac527a9243ab401e9a1 100644 (file)
                                >\r
                        </File>\r
                        <File\r
                                >\r
                        </File>\r
                        <File\r
-                               RelativePath="..\..\..\source\blender\blenlib\intern\BLI_fileops.h"\r
+                               RelativePath="..\..\..\source\blender\blenlib\BLI_fileops.h"\r
                                >\r
                        </File>\r
                        <File\r
                                >\r
                        </File>\r
                        <File\r
index 30c9fc353b3c47c4dedb287f946180385b280945..a138ea780ea446b002a8001957758bc5bc6e578a 100644 (file)
@@ -50,6 +50,7 @@ void BLI_make_existing_file(char *name);
 void BLI_split_dirfile(char *string, char *dir, char *file);
 void BLI_split_dirfile_basic(const char *string, char *dir, char *file);
 void BLI_join_dirfile(char *string, const char *dir, const char *file);
 void BLI_split_dirfile(char *string, char *dir, char *file);
 void BLI_split_dirfile_basic(const char *string, char *dir, char *file);
 void BLI_join_dirfile(char *string, const char *dir, const char *file);
+void BLI_getlastdir(const char* dir, char *last, int maxlen);
 int BLI_testextensie(const char *str, const char *ext);
 void BLI_uniquename(struct ListBase *list, void *vlink, char defname[], char delim, short name_offs, short len);
 void BLI_newname(char * name, int add);
 int BLI_testextensie(const char *str, const char *ext);
 void BLI_uniquename(struct ListBase *list, void *vlink, char defname[], char delim, short name_offs, short len);
 void BLI_newname(char * name, int add);
index 26f4c2dd415fdf5333bccf23b01de1c4415c393a..b9d4daaf5b20bc3021dedc3ccecd120eb2cd0979 100644 (file)
@@ -736,6 +736,25 @@ void BLI_splitdirstring(char *di, char *fi)
        }
 }
 
        }
 }
 
+void BLI_getlastdir(const char* dir, char *last, int maxlen)
+{
+       char *s = dir;
+       char *lslash = NULL;
+       char *prevslash = NULL;
+       while (*s) {
+               if ((*s == '\\') || (*s == '/')) {
+                       prevslash = lslash;
+                       lslash = s;
+               }
+               s++;
+       }
+       if (prevslash) {
+               BLI_strncpy(last, prevslash+1, maxlen);
+       } else {
+               BLI_strncpy(last, dir, maxlen);
+       }
+}
+
 char *BLI_gethome(void) {
        #if !defined(WIN32)
                return getenv("HOME");
 char *BLI_gethome(void) {
        #if !defined(WIN32)
                return getenv("HOME");
index a9a93d93de015d15fc735a872960ad347a867bae..29c759d43c0e2c6c3d64da323cc003ed0a4490bb 100644 (file)
@@ -69,9 +69,19 @@ static void file_panel_category(const bContext *C, Panel *pa, FSMenuCategory cat
        uiBlockSetEmboss(block, UI_EMBOSSP);
        uiBlockBeginAlign(block);
        for (i=0; i< nentries;++i) {
        uiBlockSetEmboss(block, UI_EMBOSSP);
        uiBlockBeginAlign(block);
        for (i=0; i< nentries;++i) {
+               char dir[FILE_MAX];
+               char temp[FILE_MAX];
                uiLayout* layout = uiLayoutRow(pa->layout, UI_LAYOUT_ALIGN_LEFT);
                uiLayout* layout = uiLayoutRow(pa->layout, UI_LAYOUT_ALIGN_LEFT);
-               char *fname = fsmenu_get_entry(fsmenu, category, i);
-               uiItemStringO(layout, fname, icon, "FILE_OT_select_bookmark", "dir", fname);
+               char *entry = fsmenu_get_entry(fsmenu, category, i);
+
+               /* create nice bookmark name, shows last directory in the full path currently */
+               BLI_strncpy(temp, entry, FILE_MAX);
+               BLI_add_slash(temp);
+               BLI_getlastdir(temp, dir, FILE_MAX);
+               BLI_del_slash(dir);
+
+               /* operator shows the short bookmark name, should eventually have tooltip */
+               uiItemStringO(layout, dir, icon, "FILE_OT_select_bookmark", "dir", entry);
                if (allow_delete && fsmenu_can_save(fsmenu, category, i) )
                        uiItemIntO(layout, "", ICON_X, "FILE_OT_delete_bookmark", "index", i);
        }
                if (allow_delete && fsmenu_can_save(fsmenu, category, i) )
                        uiItemIntO(layout, "", ICON_X, "FILE_OT_delete_bookmark", "index", i);
        }