Revision: 37557
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37557
Author:   campbellbarton
Date:     2011-06-16 15:28:39 +0000 (Thu, 16 Jun 2011)
Log Message:
-----------
use directory selector for properties defined as PROP_DIRPATH, user preferences 
'File' buttons for eg.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/interface_layout.c
    trunk/blender/source/blender/editors/space_buttons/buttons_intern.h
    trunk/blender/source/blender/editors/space_buttons/buttons_ops.c
    trunk/blender/source/blender/editors/space_buttons/space_buttons.c

Modified: trunk/blender/source/blender/editors/interface/interface_layout.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_layout.c   
2011-06-16 15:20:05 UTC (rev 37556)
+++ trunk/blender/source/blender/editors/interface/interface_layout.c   
2011-06-16 15:28:39 UTC (rev 37557)
@@ -534,7 +534,10 @@
                uiDefAutoButR(block, ptr, prop, index, "", icon, x, y, 
w-UI_UNIT_X, h);
 
                /* BUTTONS_OT_file_browse calls uiFileBrowseContextProperty */
-               but= uiDefIconButO(block, BUT, "BUTTONS_OT_file_browse", 
WM_OP_INVOKE_DEFAULT, ICON_FILESEL, x, y, UI_UNIT_X, h, NULL);
+               but= uiDefIconButO(block, BUT, subtype==PROP_DIRPATH ?
+                                      "BUTTONS_OT_directory_browse" :
+                                      "BUTTONS_OT_file_browse",
+                                  WM_OP_INVOKE_DEFAULT, ICON_FILESEL, x, y, 
UI_UNIT_X, h, NULL);
        }
        else if(flag & UI_ITEM_R_EVENT) {
                uiDefButR(block, KEYEVT, 0, name, x, y, w, h, ptr, 
RNA_property_identifier(prop), index, 0, 0, -1, -1, NULL);

Modified: trunk/blender/source/blender/editors/space_buttons/buttons_intern.h
===================================================================
--- trunk/blender/source/blender/editors/space_buttons/buttons_intern.h 
2011-06-16 15:20:05 UTC (rev 37556)
+++ trunk/blender/source/blender/editors/space_buttons/buttons_intern.h 
2011-06-16 15:28:39 UTC (rev 37557)
@@ -71,6 +71,7 @@
 
 /* buttons_ops.c */
 void BUTTONS_OT_file_browse(struct wmOperatorType *ot);
+void BUTTONS_OT_directory_browse(struct wmOperatorType *ot);
 void BUTTONS_OT_toolbox(struct wmOperatorType *ot);
 
 #endif /* ED_BUTTONS_INTERN_H */

Modified: trunk/blender/source/blender/editors/space_buttons/buttons_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_buttons/buttons_ops.c    
2011-06-16 15:20:05 UTC (rev 37556)
+++ trunk/blender/source/blender/editors/space_buttons/buttons_ops.c    
2011-06-16 15:28:39 UTC (rev 37557)
@@ -191,12 +191,13 @@
                return OPERATOR_CANCELLED;
        }
        else {
+               const char *path_prop= RNA_struct_find_property(op->ptr, 
"directory") ? "directory" : "filepath";
                fbo= MEM_callocN(sizeof(FileBrowseOp), "FileBrowseOp");
                fbo->ptr= ptr;
                fbo->prop= prop;
                op->customdata= fbo;
 
-               RNA_string_set(op->ptr, "filepath", str);
+               RNA_string_set(op->ptr, path_prop, str);
                MEM_freeN(str);
 
                if(RNA_struct_find_property(op->ptr, "relative_path")) {
@@ -227,3 +228,19 @@
        WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE, 
WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH);
 }
 
+/* second operator, only difference from BUTTONS_OT_file_browse is 
WM_FILESEL_DIRECTORY */
+void BUTTONS_OT_directory_browse(wmOperatorType *ot)
+{
+       /* identifiers */
+       ot->name= "Accept";
+       ot->description="Open a directory browser, Hold Shift to open the file, 
Alt to browse containing directory";
+       ot->idname= "BUTTONS_OT_directory_browse";
+
+       /* api callbacks */
+       ot->invoke= file_browse_invoke;
+       ot->exec= file_browse_exec;
+       ot->cancel= file_browse_cancel;
+
+       /* properties */
+       WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE, 
WM_FILESEL_DIRECTORY|WM_FILESEL_RELPATH);
+}

Modified: trunk/blender/source/blender/editors/space_buttons/space_buttons.c
===================================================================
--- trunk/blender/source/blender/editors/space_buttons/space_buttons.c  
2011-06-16 15:20:05 UTC (rev 37556)
+++ trunk/blender/source/blender/editors/space_buttons/space_buttons.c  
2011-06-16 15:28:39 UTC (rev 37557)
@@ -187,6 +187,7 @@
 {
        WM_operatortype_append(BUTTONS_OT_toolbox);
        WM_operatortype_append(BUTTONS_OT_file_browse);
+       WM_operatortype_append(BUTTONS_OT_directory_browse);
 }
 
 static void buttons_keymap(struct wmKeyConfig *keyconf)

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to