[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29741] branches/soc-2010-jwilkins: == Large Icons for Brushes ==
Jason Wilkins
Jason.A.Wilkins at gmail.com
Sun Jun 27 20:05:30 CEST 2010
Revision: 29741
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29741
Author: jwilkins
Date: 2010-06-27 20:05:29 +0200 (Sun, 27 Jun 2010)
Log Message:
-----------
== Large Icons for Brushes ==
* brushes can now use images for icons
* if no image is selected but brush has a texture, the texture is used as its icon
* bug fix: overlay + on-surface brush was broken
Modified Paths:
--------------
branches/soc-2010-jwilkins/release/scripts/ui/space_view3d_toolbar.py
branches/soc-2010-jwilkins/source/blender/blenkernel/intern/brush.c
branches/soc-2010-jwilkins/source/blender/blenkernel/intern/icons.c
branches/soc-2010-jwilkins/source/blender/editors/gpencil/gpencil_buttons.c
branches/soc-2010-jwilkins/source/blender/editors/include/UI_interface.h
branches/soc-2010-jwilkins/source/blender/editors/interface/interface_icons.c
branches/soc-2010-jwilkins/source/blender/editors/interface/interface_templates.c
branches/soc-2010-jwilkins/source/blender/editors/render/render_preview.c
branches/soc-2010-jwilkins/source/blender/editors/sculpt_paint/paint_ops.c
branches/soc-2010-jwilkins/source/blender/editors/sculpt_paint/paint_stroke.c
branches/soc-2010-jwilkins/source/blender/editors/space_image/image_buttons.c
branches/soc-2010-jwilkins/source/blender/editors/space_logic/logic_window.c
branches/soc-2010-jwilkins/source/blender/editors/space_nla/nla_buttons.c
branches/soc-2010-jwilkins/source/blender/editors/space_node/drawnode.c
branches/soc-2010-jwilkins/source/blender/makesdna/DNA_brush_types.h
branches/soc-2010-jwilkins/source/blender/makesrna/intern/rna_brush.c
branches/soc-2010-jwilkins/source/blender/makesrna/intern/rna_ui_api.c
Modified: branches/soc-2010-jwilkins/release/scripts/ui/space_view3d_toolbar.py
===================================================================
--- branches/soc-2010-jwilkins/release/scripts/ui/space_view3d_toolbar.py 2010-06-27 16:36:42 UTC (rev 29740)
+++ branches/soc-2010-jwilkins/release/scripts/ui/space_view3d_toolbar.py 2010-06-27 18:05:29 UTC (rev 29741)
@@ -509,12 +509,11 @@
else:
defaultbrushes = 7
- #row.template_list(settings, "brushes", settings, "active_brush_index", rows=2, maxrows=defaultbrushes)
+ if not context.sculpt_object:
+ row.template_list(settings, "brushes", settings, "active_brush_index", rows=2, maxrows=defaultbrushes)
+ else:
+ col.template_ID_preview(settings, "brush", new="brush.add", filter="is_sculpt_brush", rows=3, cols=4)
- #col.template_ID(settings, "brush", new="brush.add")
- #col.template_ID_preview(brush, "texture", new="texture.new", rows=2, cols=4)
- col.template_ID_preview(settings, "brush", new="brush.add", rows=5, cols=5)
-
# Particle Mode #
# XXX This needs a check if psys is editable.
@@ -868,6 +867,7 @@
col.prop(sculpt, "fast_navigate")
col.prop(sculpt, "use_openmp")
+ col.separator()
if brush.sculpt_tool in ('DRAW', 'INFLATE', 'CLAY', 'WAX', 'PINCH', 'FLATTEN'):
sub = col.column()
sub.label(text="Color:")
@@ -877,7 +877,11 @@
sub = col.column()
sub.prop(brush, "add_col", text="Color")
+ col.separator()
+ col.label(text="Icon:")
+ col.template_ID_preview(brush, "image_icon", open="image.open", rows=3, cols=4)
+ col.separator()
split = self.layout.split()
col = split.column()
Modified: branches/soc-2010-jwilkins/source/blender/blenkernel/intern/brush.c
===================================================================
--- branches/soc-2010-jwilkins/source/blender/blenkernel/intern/brush.c 2010-06-27 16:36:42 UTC (rev 29740)
+++ branches/soc-2010-jwilkins/source/blender/blenkernel/intern/brush.c 2010-06-27 18:05:29 UTC (rev 29741)
@@ -53,6 +53,7 @@
#include "BKE_main.h"
#include "BKE_paint.h"
#include "BKE_texture.h"
+#include "BKE_icons.h"
@@ -155,7 +156,9 @@
void free_brush(Brush *brush)
{
if(brush->mtex.tex) brush->mtex.tex->id.us--;
-
+
+ BKE_previewimg_free(&brush->preview);
+
curvemapping_free(brush->curve);
}
Modified: branches/soc-2010-jwilkins/source/blender/blenkernel/intern/icons.c
===================================================================
--- branches/soc-2010-jwilkins/source/blender/blenkernel/intern/icons.c 2010-06-27 16:36:42 UTC (rev 29740)
+++ branches/soc-2010-jwilkins/source/blender/blenkernel/intern/icons.c 2010-06-27 18:05:29 UTC (rev 29741)
@@ -38,6 +38,7 @@
#include "DNA_material_types.h"
#include "DNA_texture_types.h"
#include "DNA_world_types.h"
+#include "DNA_brush_types.h"
#include "BLI_ghash.h"
@@ -175,6 +176,15 @@
} else if (GS(id->name) == ID_IM) {
Image *img = (Image*)id;
BKE_previewimg_free(&img->preview);
+ } else if (GS(id->name) == ID_BR) {
+ Brush *br = (Brush*)id;
+ if (br->image_icon) {
+ BKE_previewimg_free(&br->preview);
+ }
+ else {
+ if (br->mtex.tex)
+ BKE_previewimg_free(&br->mtex.tex->preview);
+ }
}
}
@@ -202,8 +212,22 @@
Image *img = (Image*)id;
if (!img->preview) img->preview = BKE_previewimg_create();
prv_img = img->preview;
- }
+ } else if (GS(id->name) == ID_BR) {
+ Brush *br = (Brush*)id;
+ if (br->image_icon) {
+ if (!br->preview)
+ br->preview = BKE_previewimg_create();
+ prv_img = br->preview;
+ }
+ else {
+ if (br->mtex.tex && !br->mtex.tex->preview)
+ br->mtex.tex->preview = BKE_previewimg_create();
+
+ prv_img = br->mtex.tex ? br->mtex.tex->preview : NULL;
+ }
+ }
+
return prv_img;
}
Modified: branches/soc-2010-jwilkins/source/blender/editors/gpencil/gpencil_buttons.c
===================================================================
--- branches/soc-2010-jwilkins/source/blender/editors/gpencil/gpencil_buttons.c 2010-06-27 16:36:42 UTC (rev 29740)
+++ branches/soc-2010-jwilkins/source/blender/editors/gpencil/gpencil_buttons.c 2010-06-27 18:05:29 UTC (rev 29741)
@@ -243,11 +243,11 @@
col= uiLayoutColumn(layout, 0);
/* current Grease Pencil block */
// TODO: show some info about who owns this?
- uiTemplateID(col, C, ctx_ptr, "grease_pencil", "GPENCIL_OT_data_add", NULL, "GPENCIL_OT_data_unlink");
-
+ uiTemplateID(col, C, ctx_ptr, "grease_pencil", "GPENCIL_OT_data_add", NULL, "GPENCIL_OT_data_unlink", NULL);
+
/* add new layer button - can be used even when no data, since it can add a new block too */
uiItemO(col, NULL, 0, "GPENCIL_OT_layer_add");
-
+
/* sanity checks... */
if (gpd == NULL)
return;
Modified: branches/soc-2010-jwilkins/source/blender/editors/include/UI_interface.h
===================================================================
--- branches/soc-2010-jwilkins/source/blender/editors/include/UI_interface.h 2010-06-27 16:36:42 UTC (rev 29740)
+++ branches/soc-2010-jwilkins/source/blender/editors/include/UI_interface.h 2010-06-27 18:05:29 UTC (rev 29741)
@@ -666,11 +666,11 @@
void uiTemplateHeader(uiLayout *layout, struct bContext *C, int menus);
void uiTemplateDopeSheetFilter(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr);
void uiTemplateID(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname,
- char *newop, char *openop, char *unlinkop);
+ char *newop, char *openop, char *unlinkop, char *filterop);
void uiTemplateIDBrowse(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname,
- char *newop, char *openop, char *unlinkop);
+ char *newop, char *openop, char *unlinkop, char *filterop);
void uiTemplateIDPreview(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname,
- char *newop, char *openop, char *unlinkop, int rows, int cols);
+ char *newop, char *openop, char *unlinkop, char *filterop, int rows, int cols);
void uiTemplateAnyID(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname,
char *proptypename, char *text);
void uiTemplatePathBuilder(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname,
Modified: branches/soc-2010-jwilkins/source/blender/editors/interface/interface_icons.c
===================================================================
--- branches/soc-2010-jwilkins/source/blender/editors/interface/interface_icons.c 2010-06-27 16:36:42 UTC (rev 29740)
+++ branches/soc-2010-jwilkins/source/blender/editors/interface/interface_icons.c 2010-06-27 18:05:29 UTC (rev 29741)
@@ -977,6 +977,7 @@
case ID_IM: /* fall through */
case ID_WO: /* fall through */
case ID_LA: /* fall through */
+ case ID_BR: /* fall through */
iconid= BKE_icon_getid(id);
/* checks if not exists, or changed */
ui_id_icon_render(C, id, preview);
Modified: branches/soc-2010-jwilkins/source/blender/editors/interface/interface_templates.c
===================================================================
--- branches/soc-2010-jwilkins/source/blender/editors/interface/interface_templates.c 2010-06-27 16:36:42 UTC (rev 29740)
+++ branches/soc-2010-jwilkins/source/blender/editors/interface/interface_templates.c 2010-06-27 18:05:29 UTC (rev 29741)
@@ -42,6 +42,7 @@
#include "BKE_main.h"
#include "BKE_texture.h"
#include "BKE_utildefines.h"
+#include "BKE_report.h"
#include "ED_screen.h"
#include "ED_render.h"
@@ -137,6 +138,8 @@
ListBase *idlb;
int prv_rows, prv_cols;
+
+ char filterop[64];
} TemplateID;
/* Search browse menu, assign */
@@ -172,9 +175,40 @@
if ((id->name[2]=='.') && (str[0] != '.'))
continue;
+ if (template->filterop[0] != 0) {
+ PointerRNA ptr;
+ ReportList reports;
+ FunctionRNA *func;
+ ParameterList parms;
+
+ RNA_id_pointer_create(id, &ptr);
+
+ BKE_reports_init(&reports, RPT_PRINT);
+
+ func= RNA_struct_find_function(&ptr, template->filterop);
+
+ if (func) {
+ RNA_parameter_list_create(&parms, &ptr, func);
+
+ RNA_parameter_set_lookup(&parms, "context", &C);
+
+ if (RNA_function_call(C, &reports, &ptr, func, &parms) == 0) {
+ int* ret;
+ RNA_parameter_get_lookup(&parms, "ret", &ret);
+
+ if (!(*ret)) {
+ RNA_parameter_list_free(&parms);
+ continue;
+ }
+ }
+
+ RNA_parameter_list_free(&parms);
+ }
+ }
+
if(BLI_strcasestr(id->name+2, str)) {
iconid= ui_id_icon_get((bContext*)C, id, 1);
-
+
if(!uiSearchItemAdd(items, id->name+2, id, iconid))
break;
}
@@ -336,7 +370,7 @@
}
}
-static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, StructRNA *type, int flag, char *newop, char *openop, char *unlinkop)
+static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, StructRNA *type, int flag, char *newop, char *openop, char *unlinkop, char *filterop)
{
uiBut *but;
uiBlock *block;
@@ -476,7 +510,7 @@
uiBlockEndAlign(block);
}
-static void ui_template_id(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop, int flag, int prv_rows, int prv_cols)
+static void ui_template_id(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop, char* filterop, int flag, int prv_rows, int prv_cols)
{
TemplateID *template;
PropertyRNA *prop;
@@ -494,7 +528,12 @@
template->prop= prop;
template->prv_rows = prv_rows;
template->prv_cols = prv_cols;
-
+
+ if (filterop)
+ BLI_strncpy(template->filterop, filterop, sizeof(template->filterop));
+ else
+ template->filterop[0] = 0;
+
if(newop)
flag |= UI_ID_ADD_NEW;
if(openop)
@@ -508,26 +547,25 @@
*/
if(template->idlb) {
uiLayoutRow(layout, 1);
- template_ID(C, layout, template, type, flag, newop, openop, unlinkop);
+ template_ID(C, layout, template, type, flag, newop, openop, unlinkop, filterop);
}
MEM_freeN(template);
-
}
-void uiTemplateID(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop)
+void uiTemplateID(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop, char *filterop)
{
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list