Revision: 21268
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21268
Author:   blendix
Date:     2009-06-30 21:10:14 +0200 (Tue, 30 Jun 2009)

Log Message:
-----------
RNA

* Add Image.dirty boolean.
* Added Window struct, with editable Window.screen.
* Make Screen.scene editable.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/makesdna/DNA_screen_types.h
    
branches/blender2.5/blender/source/blender/makesdna/DNA_windowmanager_types.h
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_context.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_image.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_screen.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_wm.c

Modified: branches/blender2.5/blender/source/blender/makesdna/DNA_screen_types.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesdna/DNA_screen_types.h      
2009-06-30 18:29:30 UTC (rev 21267)
+++ branches/blender2.5/blender/source/blender/makesdna/DNA_screen_types.h      
2009-06-30 19:10:14 UTC (rev 21268)
@@ -53,6 +53,7 @@
        ListBase regionbase;                            /* screen level regions 
(menus), runtime only */
        
        struct Scene *scene;
+       struct Scene *newscene;                         /* temporary when 
switching */
        
        short full;                                                     /* fade 
out? */
        short winid;                                            /* winid from 
WM, starts with 1 */

Modified: 
branches/blender2.5/blender/source/blender/makesdna/DNA_windowmanager_types.h
===================================================================
--- 
branches/blender2.5/blender/source/blender/makesdna/DNA_windowmanager_types.h   
    2009-06-30 18:29:30 UTC (rev 21267)
+++ 
branches/blender2.5/blender/source/blender/makesdna/DNA_windowmanager_types.h   
    2009-06-30 19:10:14 UTC (rev 21268)
@@ -88,7 +88,8 @@
        
        int winid, pad;         /* winid also in screens, is for retrieving 
this window after read */
        
-       struct bScreen *screen; /* active screen */
+       struct bScreen *screen;         /* active screen */
+       struct bScreen *newscreen;      /* temporary when switching */
        char screenname[32];    /* MAX_ID_NAME for matching window with active 
screen after file read */
        
        short posx, posy, sizex, sizey; /* window coords */

Modified: 
branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c     
2009-06-30 18:29:30 UTC (rev 21267)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c     
2009-06-30 19:10:14 UTC (rev 21268)
@@ -1588,6 +1588,7 @@
                case PROP_RAW_INT: return sizeof(int);
                case PROP_RAW_FLOAT: return sizeof(float);
                case PROP_RAW_DOUBLE: return sizeof(double);
+               default: return 0;
        }
 }
 

Modified: 
branches/blender2.5/blender/source/blender/makesrna/intern/rna_context.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_context.c    
2009-06-30 18:29:30 UTC (rev 21267)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_context.c    
2009-06-30 19:10:14 UTC (rev 21268)
@@ -40,11 +40,11 @@
        return rna_pointer_inherit_refine(ptr, &RNA_WindowManager, 
CTX_wm_manager(C));
 }
 
-/*static PointerRNA rna_Context_window_get(PointerRNA *ptr)
+static PointerRNA rna_Context_window_get(PointerRNA *ptr)
 {
        bContext *C= (bContext*)ptr->data;
        return rna_pointer_inherit_refine(ptr, &RNA_Window, CTX_wm_window(C));
-}*/
+}
 
 static PointerRNA rna_Context_screen_get(PointerRNA *ptr)
 {
@@ -113,10 +113,10 @@
        RNA_def_property_struct_type(prop, "WindowManager");
        RNA_def_property_pointer_funcs(prop, "rna_Context_manager_get", NULL, 
NULL);
 
-       /* prop= RNA_def_property(srna, "window", PROP_POINTER, PROP_NONE);
+       prop= RNA_def_property(srna, "window", PROP_POINTER, PROP_NONE);
        RNA_def_property_clear_flag(prop, PROP_EDITABLE);
        RNA_def_property_struct_type(prop, "Window");
-       RNA_def_property_pointer_funcs(prop, "rna_Context_window_get", NULL, 
NULL); */
+       RNA_def_property_pointer_funcs(prop, "rna_Context_window_get", NULL, 
NULL);
 
        prop= RNA_def_property(srna, "screen", PROP_POINTER, PROP_NONE);
        RNA_def_property_clear_flag(prop, PROP_EDITABLE);

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_image.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_image.c      
2009-06-30 18:29:30 UTC (rev 21267)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_image.c      
2009-06-30 19:10:14 UTC (rev 21268)
@@ -39,6 +39,8 @@
 
 #ifdef RNA_RUNTIME
 
+#include "IMB_imbuf_types.h"
+
 static void rna_Image_animated_update(bContext *C, PointerRNA *ptr)
 {
        Image *ima= (Image*)ptr->data;
@@ -52,6 +54,18 @@
        }
 }
 
+static int rna_Image_dirty_get(PointerRNA *ptr)
+{
+       Image *ima= (Image*)ptr->data;
+       ImBuf *ibuf;
+
+       for(ibuf=ima->ibufs.first; ibuf; ibuf=ibuf->next)
+               if(ibuf->userflags & IB_BITMAPDIRTY)
+                       return 1;
+       
+       return 0;
+}
+
 #else
 
 static void rna_def_imageuser(BlenderRNA *brna)
@@ -174,6 +188,11 @@
        RNA_def_property_ui_text(prop, "Premultiply", "Convert RGB from key 
alpha to premultiplied alpha.");
        RNA_def_property_update(prop, NC_IMAGE|ND_DISPLAY, NULL);
 
+       prop= RNA_def_property(srna, "dirty", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_funcs(prop, "rna_Image_dirty_get", NULL);
+       RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+       RNA_def_property_ui_text(prop, "Dirty", "Image has changed and is not 
saved.");
+
        /* generated image (image_generated_change_cb) */
        prop= RNA_def_property(srna, "generated_type", PROP_ENUM, PROP_NONE);
        RNA_def_property_enum_sdna(prop, NULL, "gen_type");

Modified: 
branches/blender2.5/blender/source/blender/makesrna/intern/rna_screen.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_screen.c     
2009-06-30 18:29:30 UTC (rev 21267)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_screen.c     
2009-06-30 19:10:14 UTC (rev 21268)
@@ -42,6 +42,31 @@
 
 #ifdef RNA_RUNTIME
 
+#include "WM_api.h"
+#include "WM_types.h"
+
+static void rna_Screen_scene_set(PointerRNA *ptr, PointerRNA value)
+{
+       bScreen *sc= (bScreen*)ptr->data;
+
+       if(value.data == NULL)
+               return;
+
+       /* exception: can't set screens inside of area/region handers */
+       sc->newscene= value.data;
+}
+
+static void rna_Screen_scene_update(bContext *C, PointerRNA *ptr)
+{
+       bScreen *sc= (bScreen*)ptr->data;
+
+       /* exception: can't set screens inside of area/region handers */
+       if(sc->newscene) {
+               WM_event_add_notifier(C, NC_SCENE|ND_SCENEBROWSE, sc->newscene);
+               sc->newscene= NULL;
+       }
+}
+
 #else
 
 static void rna_def_scrarea(BlenderRNA *brna)
@@ -94,6 +119,9 @@
        
        prop= RNA_def_property(srna, "scene", PROP_POINTER, PROP_NEVER_NULL);
        RNA_def_property_ui_text(prop, "Scene", "Active scene to be edited in 
the screen.");
+       RNA_def_property_flag(prop, PROP_EDITABLE);
+       RNA_def_property_pointer_funcs(prop, NULL, "rna_Screen_scene_set", 
NULL);
+       RNA_def_property_update(prop, 0, "rna_Screen_scene_update");
        
        prop= RNA_def_property(srna, "areas", PROP_COLLECTION, PROP_NONE);
        RNA_def_property_collection_sdna(prop, NULL, "areabase", NULL);

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_wm.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_wm.c 
2009-06-30 18:29:30 UTC (rev 21267)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_wm.c 
2009-06-30 19:10:14 UTC (rev 21268)
@@ -147,6 +147,8 @@
 
 #ifdef RNA_RUNTIME
 
+#include "WM_api.h"
+
 #include "BKE_idprop.h"
 
 static wmOperator *rna_OperatorProperties_find_operator(PointerRNA *ptr)
@@ -215,6 +217,28 @@
        return (event->ascii)? 1 : 0;
 }
 
+static void rna_Window_screen_set(PointerRNA *ptr, PointerRNA value)
+{
+       wmWindow *win= (wmWindow*)ptr->data;
+
+       if(value.data == NULL)
+               return;
+
+       /* exception: can't set screens inside of area/region handers */
+       win->newscreen= value.data;
+}
+
+static void rna_Window_screen_update(bContext *C, PointerRNA *ptr)
+{
+       wmWindow *win= (wmWindow*)ptr->data;
+
+       /* exception: can't set screens inside of area/region handers */
+       if(win->newscreen) {
+               WM_event_add_notifier(C, NC_SCREEN|ND_SCREENBROWSE, 
win->newscreen);
+               win->newscreen= NULL;
+       }
+}
+
 #else
 
 static void rna_def_operator(BlenderRNA *brna)
@@ -349,6 +373,23 @@
        RNA_def_property_ui_text(prop, "OS Key", "True when the shift key is 
held.");
 }
 
+static void rna_def_window(BlenderRNA *brna)
+{
+       StructRNA *srna;
+       PropertyRNA *prop;
+
+       srna= RNA_def_struct(brna, "Window", NULL);
+       RNA_def_struct_ui_text(srna, "Window", "Open window.");
+       RNA_def_struct_sdna(srna, "wmWindow");
+
+       prop= RNA_def_property(srna, "screen", PROP_POINTER, PROP_NEVER_NULL);
+       RNA_def_property_struct_type(prop, "Screen");
+       RNA_def_property_ui_text(prop, "Screen", "Active screen showing in the 
window.");
+       RNA_def_property_flag(prop, PROP_EDITABLE);
+       RNA_def_property_pointer_funcs(prop, NULL, "rna_Window_screen_set", 
NULL);
+       RNA_def_property_update(prop, 0, "rna_Window_screen_update");
+}
+
 static void rna_def_windowmanager(BlenderRNA *brna)
 {
        StructRNA *srna;
@@ -362,6 +403,10 @@
        RNA_def_property_struct_type(prop, "Operator");
        RNA_def_property_ui_text(prop, "Operators", "Operator registry.");
 
+       prop= RNA_def_property(srna, "windows", PROP_COLLECTION, PROP_NONE);
+       RNA_def_property_struct_type(prop, "Window");
+       RNA_def_property_ui_text(prop, "Windows", "Open windows.");
+
        RNA_api_wm(srna);
 }
 
@@ -371,6 +416,7 @@
        rna_def_operator_utils(brna);
        rna_def_operator_filelist_element(brna);
        rna_def_event(brna);
+       rna_def_window(brna);
        rna_def_windowmanager(brna);
 }
 


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to