Nodes Editor + other warning fixes:
authorJoshua Leung <aligorith@gmail.com>
Wed, 11 Nov 2009 10:51:40 +0000 (10:51 +0000)
committerJoshua Leung <aligorith@gmail.com>
Wed, 11 Nov 2009 10:51:40 +0000 (10:51 +0000)
* Added 'active node' panel for the Nodes Editor. This panel, in the NKEY region, shows the settings for the active node. Included in this panel is a field used for editing the unique-name of the node too.

* Fixed a number of uninitialised vars warnings that I missed in previous commit...

source/blender/editors/space_node/node_buttons.c
source/blender/nodes/intern/CMP_nodes/CMP_levels.c
source/blender/python/intern/bpy_operator.c
source/blender/python/intern/bpy_rna.c
source/blender/windowmanager/intern/wm_window.c

index 63361f2..2065081 100644 (file)
@@ -49,6 +49,7 @@
 #include "BKE_depsgraph.h"
 #include "BKE_idprop.h"
 #include "BKE_object.h"
+#include "BKE_node.h"
 #include "BKE_global.h"
 #include "BKE_scene.h"
 #include "BKE_screen.h"
@@ -78,7 +79,6 @@
 #define B_NOP          1
 #define B_REDR         2
 
-#if 0 // XXX not used...
 static void do_node_region_buttons(bContext *C, void *arg, int event)
 {
        //SpaceNode *snode= CTX_wm_space_node(C);
@@ -89,7 +89,44 @@ static void do_node_region_buttons(bContext *C, void *arg, int event)
                return; /* no notifier! */
        }
 }
-#endif
+
+/* poll callback for active node */
+static int active_node_poll(const bContext *C, PanelType *pt)
+{
+       SpaceNode *snode= CTX_wm_space_node(C);
+       
+       // TODO: include check for whether there is an active node...
+       return (snode && snode->nodetree);
+}
+
+/* active node */
+static void active_node_panel(const bContext *C, Panel *pa)
+{
+       SpaceNode *snode= CTX_wm_space_node(C);
+       bNodeTree *ntree= (snode) ? snode->nodetree : NULL; // XXX what's up with edittree then?
+       bNode *node = (ntree) ? nodeGetActive(ntree) : NULL;
+       uiLayout *layout= pa->layout;
+       uiBlock *block;
+       PointerRNA ptr;
+       
+       /* verify pointers, and create RNA pointer for the node */
+       if ELEM(NULL, ntree, node)
+               return;
+       RNA_pointer_create(&ntree->id, &RNA_Node, node, &ptr);
+       
+       /* set update callback */
+       // xxx is this really needed
+       block= uiLayoutGetBlock(layout);
+       uiBlockSetHandleFunc(block, do_node_region_buttons, NULL);
+       
+       /* draw this node's name, etc. */
+       uiItemR(layout, NULL, ICON_NODE, &ptr, "name", 0);
+       // TODO: a separator would be nice...
+       
+       /* draw this node's settings */
+       if (node->typeinfo && node->typeinfo->uifunc)
+               node->typeinfo->uifunc(layout, (bContext *)C, &ptr);
+}
 
 /* ******************* node buttons registration ************** */
 
@@ -97,7 +134,12 @@ void node_buttons_register(ARegionType *art)
 {
        PanelType *pt;
        
-       // XXX active node
+       pt= MEM_callocN(sizeof(PanelType), "spacetype node panel active node");
+       strcpy(pt->idname, "NODE_PT_item");
+       strcpy(pt->label, "Active Node");
+       pt->draw= active_node_panel;
+       pt->poll= active_node_poll;
+       BLI_addtail(&art->paneltypes, pt);
        
        pt= MEM_callocN(sizeof(PanelType), "spacetype node panel gpencil");
        strcpy(pt->idname, "NODE_PT_gpencil");
index f0e3147..9f84572 100644 (file)
@@ -50,7 +50,7 @@ static void rgb_tobw(float r, float g, float b, float* out)
 static void fill_bins(bNode* node, CompBuf* in, int* bins)
 {
        float value[4];
-    int ivalue;
+       int ivalue=0;
        int x,y;
 
        /*fill bins */
index 1ae0a40..b157796 100644 (file)
@@ -153,7 +153,7 @@ static PyObject *pyop_as_string( PyObject * self, PyObject * args)
        int all_args = 1;
        int error_val= 0;
 
-       char *buf;
+       char *buf = NULL;
        PyObject *pybuf;
 
        bContext *C = BPy_GetContext();
index 76a1b86..d490deb 100644 (file)
@@ -1757,7 +1757,7 @@ static int foreach_compat_buffer(RawPropertyType raw_type, int attr_signed, cons
 static PyObject *foreach_getset(BPy_PropertyRNA *self, PyObject *args, int set)
 {
        PyObject *item = NULL;
-       int i=0, ok, buffer_is_compat;
+       int i=0, ok=0, buffer_is_compat;
        void *array= NULL;
 
        /* get/set both take the same args currently */
index a4a22f3..dbc3d27 100644 (file)
@@ -985,4 +985,5 @@ void WM_cursor_warp(wmWindow *win, int x, int y)
                win->eventstate->prevx= oldx;
                win->eventstate->prevy= oldy;
        }
-}
\ No newline at end of file
+}
+