Page MenuHome

kbdslotnav.patch

kbdslotnav.patch

Index: source/blender/makesdna/DNA_image_types.h
===================================================================
--- source/blender/makesdna/DNA_image_types.h (revision 31274)
+++ source/blender/makesdna/DNA_image_types.h (working copy)
@@ -73,7 +73,7 @@
struct anim *anim;
struct RenderResult *rr;
- struct RenderResult *renders[8]; /* IMA_MAX_RENDER_SLOT */
+ struct RenderResult *renders[10]; /* IMA_MAX_RENDER_SLOT */
short render_slot, last_render_slot;
short ok, flag;
@@ -128,7 +128,7 @@
/* render */
#define IMA_MAX_RENDER_TEXT 512
-#define IMA_MAX_RENDER_SLOT 8
+#define IMA_MAX_RENDER_SLOT 10 /* shouldn't this be above the image struct and used in renders[]? */
#endif
Index: source/blender/editors/space_image/image_ops.c
===================================================================
--- source/blender/editors/space_image/image_ops.c (revision 31274)
+++ source/blender/editors/space_image/image_ops.c (working copy)
@@ -2070,6 +2070,54 @@
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
+/******************** goto specific render slot *********************/
+/* make available image slots 10 and use keyoard 1 through 0 to select
+ a specific slot similar to 3d layers */
+
+/* I used a mixture of cycle_render_slot and view_zoom_ratio to do this */
+
+/* select_render_slot_poll -
+ I don't think I need this to be any different from cycle_render_slot_poll
+ but have included a renamed version for completeness */
+static int select_render_slot_poll(bContext *C)
+{
+ Image *ima= CTX_data_edit_image(C);
+
+ return (ima && ima->type == IMA_TYPE_R_RESULT);
+}
+
+static int select_render_slot_exec(bContext *C, wmOperator *op)
+{
+ Image *ima= CTX_data_edit_image(C);
+
+ ima->render_slot = RNA_int_get(op->ptr, "render_slot");
+
+ if(ima->render_slot >= IMA_MAX_RENDER_SLOT )
+ ima->render_slot = 1;
+
+ WM_event_add_notifier(C, NC_IMAGE|ND_DRAW, NULL);
+
+ return OPERATOR_FINISHED;
+}
+
+void IMAGE_OT_select_render_slot(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Select Render Slot";
+ ot->idname= "IMAGE_OT_select_render_slot";
+
+ /* api callbacks */
+ ot->exec= select_render_slot_exec;
+ ot->poll= select_render_slot_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* properties */
+ RNA_def_int(ot->srna, "render_slot", 0, 0, 9,
+ "Render Slot", "Current render slot.", 0, 9);
+}
+
/******************** TODO ********************/
/* XXX notifier? */
Index: source/blender/editors/space_image/image_intern.h
===================================================================
--- source/blender/editors/space_image/image_intern.h (revision 31274)
+++ source/blender/editors/space_image/image_intern.h (working copy)
@@ -78,6 +78,7 @@
void IMAGE_OT_unpack(struct wmOperatorType *ot);
void IMAGE_OT_cycle_render_slot(struct wmOperatorType *ot);
+void IMAGE_OT_select_render_slot(struct wmOperatorType *ot);
void IMAGE_OT_sample(struct wmOperatorType *ot);
void IMAGE_OT_sample_line(struct wmOperatorType *ot);
Index: source/blender/editors/space_image/space_image.c
===================================================================
--- source/blender/editors/space_image/space_image.c (revision 31274)
+++ source/blender/editors/space_image/space_image.c (working copy)
@@ -472,6 +472,7 @@
WM_operatortype_append(IMAGE_OT_unpack);
WM_operatortype_append(IMAGE_OT_cycle_render_slot);
+ WM_operatortype_append(IMAGE_OT_select_render_slot);
WM_operatortype_append(IMAGE_OT_sample);
WM_operatortype_append(IMAGE_OT_sample_line);
@@ -497,6 +498,16 @@
WM_keymap_add_item(keymap, "IMAGE_OT_scopes", PKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "IMAGE_OT_cycle_render_slot", JKEY, KM_PRESS, 0, 0);
+ RNA_int_set(WM_keymap_add_item(keymap, "IMAGE_OT_select_render_slot", ONEKEY, KM_PRESS, 0, 0)->ptr, "render_slot", 0);
+ RNA_int_set(WM_keymap_add_item(keymap, "IMAGE_OT_select_render_slot", TWOKEY, KM_PRESS, 0, 0)->ptr, "render_slot", 1);
+ RNA_int_set(WM_keymap_add_item(keymap, "IMAGE_OT_select_render_slot", THREEKEY, KM_PRESS, 0, 0)->ptr, "render_slot", 2);
+ RNA_int_set(WM_keymap_add_item(keymap, "IMAGE_OT_select_render_slot", FOURKEY, KM_PRESS, 0, 0)->ptr, "render_slot", 3);
+ RNA_int_set(WM_keymap_add_item(keymap, "IMAGE_OT_select_render_slot", FIVEKEY, KM_PRESS, 0, 0)->ptr, "render_slot", 4);
+ RNA_int_set(WM_keymap_add_item(keymap, "IMAGE_OT_select_render_slot", SIXKEY, KM_PRESS, 0, 0)->ptr, "render_slot", 5);
+ RNA_int_set(WM_keymap_add_item(keymap, "IMAGE_OT_select_render_slot", SEVENKEY, KM_PRESS, 0, 0)->ptr, "render_slot", 6);
+ RNA_int_set(WM_keymap_add_item(keymap, "IMAGE_OT_select_render_slot", EIGHTKEY, KM_PRESS, 0, 0)->ptr, "render_slot", 7);
+ RNA_int_set(WM_keymap_add_item(keymap, "IMAGE_OT_select_render_slot", NINEKEY, KM_PRESS, 0, 0)->ptr, "render_slot", 8);
+ RNA_int_set(WM_keymap_add_item(keymap, "IMAGE_OT_select_render_slot", ZEROKEY, KM_PRESS, 0, 0)->ptr, "render_slot", 9);
keymap= WM_keymap_find(keyconf, "Image", SPACE_IMAGE, 0);

File Metadata

Mime Type
text/x-diff
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
cd/95/ec23ba378e807818701cfebac0a1

Event Timeline