Revision: 19073
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19073
Author:   ton
Date:     2009-02-21 16:31:01 +0100 (Sat, 21 Feb 2009)

Log Message:
-----------
2.5

Support for listview/buttons region in ImageWindow.
Now all code is in this commit :) 

Modified Paths:
--------------
    
branches/blender2.5/blender/source/blender/editors/space_image/image_intern.h
    
branches/blender2.5/blender/source/blender/editors/space_image/image_panels.c
    branches/blender2.5/blender/source/blender/editors/space_image/space_image.c

Modified: 
branches/blender2.5/blender/source/blender/editors/space_image/image_intern.h
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/space_image/image_intern.h   
    2009-02-21 12:43:24 UTC (rev 19072)
+++ 
branches/blender2.5/blender/source/blender/editors/space_image/image_intern.h   
    2009-02-21 15:31:01 UTC (rev 19073)
@@ -32,6 +32,7 @@
 /* internal exports only */
 struct bContext;
 struct ARegion;
+struct ScrArea;
 struct SpaceImage;
 struct Object;
 struct Image;
@@ -39,6 +40,9 @@
 struct wmOperatorType;
 struct Scene;
 
+/* space_image.c */
+struct ARegion *image_has_buttons_region(struct ScrArea *sa);
+
 /* image_header.c */
 void image_header_buttons(const struct bContext *C, struct ARegion *ar);
 
@@ -77,5 +81,9 @@
 /* uvedit_draw.c */
 void draw_uvedit_main(struct SpaceImage *sima, struct ARegion *ar, struct 
Scene *scene, struct Object *obedit);
 
+/* image_panels.c */
+void image_buttons_area_defbuts(const struct bContext *C, struct ARegion *ar);
+void IMAGE_OT_properties(struct wmOperatorType *ot);
+
 #endif /* ED_IMAGE_INTERN_H */
 

Modified: 
branches/blender2.5/blender/source/blender/editors/space_image/image_panels.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/space_image/image_panels.c   
    2009-02-21 12:43:24 UTC (rev 19072)
+++ 
branches/blender2.5/blender/source/blender/editors/space_image/image_panels.c   
    2009-02-21 15:31:01 UTC (rev 19073)
@@ -25,6 +25,55 @@
  * ***** END GPL LICENSE BLOCK *****
  */
 
+
+#include <string.h>
+#include <stdio.h>
+
+#include "DNA_image_types.h"
+#include "DNA_mesh_types.h"
+#include "DNA_meshdata_types.h"
+#include "DNA_object_types.h"
+#include "DNA_space_types.h"
+#include "DNA_scene_types.h"
+#include "DNA_screen_types.h"
+
+#include "MEM_guardedalloc.h"
+
+#include "BLI_blenlib.h"
+#include "BLI_arithb.h"
+#include "BLI_editVert.h"
+#include "BLI_rand.h"
+
+#include "BKE_colortools.h"
+#include "BKE_context.h"
+#include "BKE_image.h"
+#include "BKE_screen.h"
+#include "BKE_utildefines.h"
+
+#include "IMB_imbuf.h"
+#include "IMB_imbuf_types.h"
+
+#include "ED_image.h"
+#include "ED_mesh.h"
+#include "ED_space_api.h"
+#include "ED_screen.h"
+#include "ED_uvedit.h"
+
+#include "BIF_gl.h"
+#include "BIF_glutil.h"
+
+#include "RNA_access.h"
+
+#include "WM_api.h"
+#include "WM_types.h"
+
+#include "UI_interface.h"
+#include "UI_resources.h"
+#include "UI_view2d.h"
+
+#include "image_intern.h"
+
+
 #if 0
 
 /* ************ panel stuff ************* */
@@ -237,21 +286,6 @@
        
 }
 
-static void image_panel_properties(short cntrl)        // 
IMAGE_HANDLER_PROPERTIES
-{
-       uiBlock *block;
-       
-       block= uiNewBlock(&curarea->uiblocks, "image_panel_properties", 
UI_EMBOSS, UI_HELV, curarea->win);
-       uiPanelControl(UI_PNL_SOLID | UI_PNL_CLOSE | cntrl);
-       uiSetPanelHandler(IMAGE_HANDLER_PROPERTIES);  // for close and esc
-       if(uiNewPanel(curarea, block, "Image Properties", "Image", 10, 10, 318, 
204)==0)
-               return;
-       
-       /* note, it draws no bottom half in facemode, for vertex buttons */
-       uiblock_image_panel(block, &G.sima->image, &G.sima->iuser, B_REDR, 
B_REDR);
-       image_editvertex_buts(block);
-}      
-
 static void image_panel_game_properties(short cntrl)   // 
IMAGE_HANDLER_GAME_PROPERTIES
 {
        ImBuf *ibuf= BKE_image_get_ibuf(G.sima->image, &G.sima->iuser);
@@ -629,3 +663,60 @@
 }
 #endif
 
+static void image_panel_properties(const bContext *C, ARegion *ar)     
+{
+       uiBlock *block;
+       
+       block= uiBeginBlock(C, ar, "image_panel_properties", UI_EMBOSS, 
UI_HELV);
+       if(uiNewPanel(C, ar, block, "Image Properties", "Image", 10, 10, 318, 
204)==0)
+               return;
+       
+       /* note, it draws no bottom half in facemode, for vertex buttons */
+//     uiblock_image_panel(block, &G.sima->image, &G.sima->iuser, B_REDR, 
B_REDR);
+//     image_editvertex_buts(block);
+       
+       uiEndBlock(C, block);
+}      
+
+
+
+void image_buttons_area_defbuts(const bContext *C, ARegion *ar)
+{
+       
+       image_panel_properties(C, ar);
+       
+       uiDrawPanels(C, 1);             /* 1 = align */
+       uiMatchPanelsView2d(ar); /* sets v2d->totrct */
+       
+}
+
+
+static int image_properties(bContext *C, wmOperator *op)
+{
+       ScrArea *sa= CTX_wm_area(C);
+       ARegion *ar= image_has_buttons_region(sa);
+       
+       if(ar) {
+               ar->flag ^= RGN_FLAG_HIDDEN;
+               ar->v2d.flag &= ~V2D_IS_INITIALISED; /* XXX should become 
hide/unhide api? */
+               
+               ED_area_initialize(CTX_wm_manager(C), CTX_wm_window(C), sa);
+               ED_area_tag_redraw(sa);
+       }
+       return OPERATOR_FINISHED;
+}
+
+void IMAGE_OT_properties(wmOperatorType *ot)
+{
+       ot->name= "Properties";
+       ot->idname= "IMAGE_OT_properties";
+       
+       ot->exec= image_properties;
+       ot->poll= ED_operator_image_active;
+       
+       /* flags */
+       ot->flag= 0;
+}
+
+
+

Modified: 
branches/blender2.5/blender/source/blender/editors/space_image/space_image.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/space_image/space_image.c    
    2009-02-21 12:43:24 UTC (rev 19072)
+++ 
branches/blender2.5/blender/source/blender/editors/space_image/space_image.c    
    2009-02-21 15:31:01 UTC (rev 19073)
@@ -73,6 +73,35 @@
 
 #include "image_intern.h"
 
+/* ******************** manage regions ********************* */
+
+ARegion *image_has_buttons_region(ScrArea *sa)
+{
+       ARegion *ar, *arnew;
+       
+       for(ar= sa->regionbase.first; ar; ar= ar->next)
+               if(ar->regiontype==RGN_TYPE_UI)
+                       return ar;
+       
+       /* add subdiv level; after header */
+       for(ar= sa->regionbase.first; ar; ar= ar->next)
+               if(ar->regiontype==RGN_TYPE_HEADER)
+                       break;
+       
+       /* is error! */
+       if(ar==NULL) return NULL;
+       
+       arnew= MEM_callocN(sizeof(ARegion), "buttons for image");
+       
+       BLI_insertlinkafter(&sa->regionbase, ar, arnew);
+       arnew->regiontype= RGN_TYPE_UI;
+       arnew->alignment= RGN_ALIGN_LEFT;
+       
+       arnew->flag = RGN_FLAG_HIDDEN;
+       
+       return arnew;
+}
+
 /* ******************** default callbacks for image space ***************** */
 
 static SpaceLink *image_new(const bContext *C)
@@ -95,6 +124,14 @@
        ar->regiontype= RGN_TYPE_HEADER;
        ar->alignment= RGN_ALIGN_BOTTOM;
        
+       /* buttons/list view */
+       ar= MEM_callocN(sizeof(ARegion), "buttons for image");
+       
+       BLI_addtail(&simage->regionbase, ar);
+       ar->regiontype= RGN_TYPE_UI;
+       ar->alignment= RGN_ALIGN_LEFT;
+       ar->flag = RGN_FLAG_HIDDEN;
+       
        /* main area */
        ar= MEM_callocN(sizeof(ARegion), "main area for image");
        
@@ -160,12 +197,21 @@
        WM_operatortype_append(IMAGE_OT_record_composite);
 
        WM_operatortype_append(IMAGE_OT_toolbox);
+       WM_operatortype_append(IMAGE_OT_properties);
 }
 
 void image_keymap(struct wmWindowManager *wm)
 {
-       ListBase *keymap= WM_keymap_listbase(wm, "Image", SPACE_IMAGE, 0);
+       ListBase *keymap= WM_keymap_listbase(wm, "Image Generic", SPACE_IMAGE, 
0);
        
+       WM_keymap_add_item(keymap, "IMAGE_OT_new", NKEY, KM_PRESS, KM_ALT, 0);
+       WM_keymap_add_item(keymap, "IMAGE_OT_open", OKEY, KM_PRESS, KM_ALT, 0);
+       WM_keymap_add_item(keymap, "IMAGE_OT_reload", RKEY, KM_PRESS, KM_ALT, 
0);
+       WM_keymap_add_item(keymap, "IMAGE_OT_save", SKEY, KM_PRESS, KM_ALT, 0);
+       WM_keymap_add_item(keymap, "IMAGE_OT_properties", NKEY, KM_PRESS, 0, 0);
+       
+       keymap= WM_keymap_listbase(wm, "Image", SPACE_IMAGE, 0);
+       
        WM_keymap_add_item(keymap, "IMAGE_OT_view_all", HOMEKEY, KM_PRESS, 0, 
0);
        WM_keymap_add_item(keymap, "IMAGE_OT_view_selected", PADPERIOD, 
KM_PRESS, 0, 0);
        WM_keymap_add_item(keymap, "IMAGE_OT_view_pan", MIDDLEMOUSE, KM_PRESS, 
0, 0);
@@ -184,11 +230,6 @@
        RNA_float_set(WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_ratio", 
PAD4, KM_PRESS, 0, 0)->ptr, "ratio", 0.25f);
        RNA_float_set(WM_keymap_add_item(keymap, "IMAGE_OT_view_zoom_ratio", 
PAD8, KM_PRESS, 0, 0)->ptr, "ratio", 0.125f);
 
-       WM_keymap_add_item(keymap, "IMAGE_OT_new", NKEY, KM_PRESS, KM_ALT, 0);
-       WM_keymap_add_item(keymap, "IMAGE_OT_open", OKEY, KM_PRESS, KM_ALT, 0);
-       WM_keymap_add_item(keymap, "IMAGE_OT_reload", RKEY, KM_PRESS, KM_ALT, 
0);
-       WM_keymap_add_item(keymap, "IMAGE_OT_save", SKEY, KM_PRESS, KM_ALT, 0);
-
        WM_keymap_add_item(keymap, "PAINT_OT_image_paint", ACTIONMOUSE, 
KM_PRESS, 0, 0);
        WM_keymap_add_item(keymap, "PAINT_OT_grab_clone", SELECTMOUSE, 
KM_PRESS, 0, 0);
        WM_keymap_add_item(keymap, "PAINT_OT_sample_color", SELECTMOUSE, 
KM_PRESS, 0, 0);
@@ -362,7 +403,9 @@
        keymap= WM_keymap_listbase(wm, "ImagePaint", SPACE_IMAGE, 0);
        WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, 
&ar->winrct);
        
-       /* own keymap */
+       /* own keymaps */
+       keymap= WM_keymap_listbase(wm, "Image Generic", SPACE_IMAGE, 0);
+       WM_event_add_keymap_handler(&ar->handlers, keymap);
        keymap= WM_keymap_listbase(wm, "Image", SPACE_IMAGE, 0);
        WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, 
&ar->winrct);
 }
@@ -433,6 +476,46 @@
        }
 }
 
+/* *********************** buttons region ************************ */
+
+/* add handlers, stuff you only do once or on area/region changes */
+static void image_buttons_area_init(wmWindowManager *wm, ARegion *ar)
+{
+       ListBase *keymap;
+       
+       keymap= WM_keymap_listbase(wm, "Image Generic", SPACE_IMAGE, 0);
+       WM_event_add_keymap_handler(&ar->handlers, keymap);
+       
+       UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_LIST_UI, ar->winx, 
ar->winy);
+}
+
+static void image_buttons_area_draw(const bContext *C, ARegion *ar)
+{
+       float col[3];
+       
+       /* clear */
+       UI_GetThemeColor3fv(TH_BACK, col);
+       
+       glClearColor(col[0], col[1], col[2], 0.0);
+       glClear(GL_COLOR_BUFFER_BIT);
+       
+       /* set view2d view matrix for scrolling (without scrollers) */
+       UI_view2d_view_ortho(C, &ar->v2d);
+       
+       image_buttons_area_defbuts(C, ar);
+       
+       /* restore view matrix? */
+       UI_view2d_view_restore(C);
+}
+
+static void image_buttons_area_listener(ARegion *ar, wmNotifier *wmn)
+{
+       /* context changes */
+       switch(wmn->category) {
+               
+       }
+}
+
 /************************* header region **************************/
 
 /* add handlers, stuff you only do once or on area/region changes */
@@ -494,12 +577,21 @@
 
        BLI_addhead(&st->regiontypes, art);
        
+       /* regions: listview/buttons */
+       art= MEM_callocN(sizeof(ARegionType), "spacetype image region");
+       art->regionid = RGN_TYPE_UI;
+       art->minsizex= 220; // XXX
+       art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_FRAMES;
+       art->listener= image_buttons_area_listener;
+       art->init= image_buttons_area_init;
+       art->draw= image_buttons_area_draw;
+       BLI_addhead(&st->regiontypes, art);
+
        /* regions: header */
        art= MEM_callocN(sizeof(ARegionType), "spacetype image region");
        art->regionid = RGN_TYPE_HEADER;
        art->minsizey= HEADERY;
        art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
-       

@@ Diff output truncated at 10240 characters. @@

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

Reply via email to