diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-12-27 08:36:08 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-12-27 09:21:00 +0300 |
commit | b254905c384d87764cd92ed631f86f3f97caa4de (patch) | |
tree | acfe833b5524cbc83b9e9af29f2b5f372150df00 /source/blender | |
parent | 0cc98f9023d9d1d030959df5d7b67b01bbbbe618 (diff) |
Move generic operator props into own file
This is unrelated to core operator internals, so move into own file.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/windowmanager/CMakeLists.txt | 1 | ||||
-rw-r--r-- | source/blender/windowmanager/WM_api.h | 26 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_operator_props.c | 250 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_operators.c | 209 |
4 files changed, 266 insertions, 220 deletions
diff --git a/source/blender/windowmanager/CMakeLists.txt b/source/blender/windowmanager/CMakeLists.txt index eaea70adc83..af8a7cca8dd 100644 --- a/source/blender/windowmanager/CMakeLists.txt +++ b/source/blender/windowmanager/CMakeLists.txt @@ -62,6 +62,7 @@ set(SRC intern/wm_init_exit.c intern/wm_jobs.c intern/wm_keymap.c + intern/wm_operator_props.c intern/wm_operators.c intern/wm_subwindow.c intern/wm_window.c diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index ca658632bbb..9d1f4457013 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -281,17 +281,6 @@ void WM_operator_properties_create(struct PointerRNA *ptr, const char *opstring void WM_operator_properties_create_ptr(struct PointerRNA *ptr, struct wmOperatorType *ot); void WM_operator_properties_clear(struct PointerRNA *ptr); void WM_operator_properties_free(struct PointerRNA *ptr); -void WM_operator_properties_filesel(struct wmOperatorType *ot, int filter, short type, short action, short flag, short display, short sort); -void WM_operator_properties_border(struct wmOperatorType *ot); -void WM_operator_properties_border_to_rcti(struct wmOperator *op, struct rcti *rect); -void WM_operator_properties_border_to_rctf(struct wmOperator *op, rctf *rect); -void WM_operator_properties_gesture_border(struct wmOperatorType *ot, bool extend); -void WM_operator_properties_mouse_select(struct wmOperatorType *ot); -void WM_operator_properties_gesture_straightline(struct wmOperatorType *ot, int cursor); -void WM_operator_properties_select_all(struct wmOperatorType *ot); -void WM_operator_properties_select_action(struct wmOperatorType *ot, int default_action); -void WM_operator_properties_select_action_simple(struct wmOperatorType *ot, int default_action); -void WM_operator_properties_select_random(struct wmOperatorType *ot); bool WM_operator_check_ui_enabled(const struct bContext *C, const char *idname); wmOperator *WM_operator_last_redo(const struct bContext *C); @@ -300,6 +289,21 @@ ID *WM_operator_drop_load_path(struct bContext *C, struct wmOperator *op bool WM_operator_last_properties_init(struct wmOperator *op); bool WM_operator_last_properties_store(struct wmOperator *op); + +/* wm_operator_props.c */ +void WM_operator_properties_filesel(struct wmOperatorType *ot, int filter, short type, short action, short flag, short display, short sort); +void WM_operator_properties_border(struct wmOperatorType *ot); +void WM_operator_properties_border_to_rcti(struct wmOperator *op, struct rcti *rect); +void WM_operator_properties_border_to_rctf(struct wmOperator *op, rctf *rect); +void WM_operator_properties_gesture_border(struct wmOperatorType *ot, bool extend); +void WM_operator_properties_mouse_select(struct wmOperatorType *ot); +void WM_operator_properties_gesture_straightline(struct wmOperatorType *ot, int cursor); +void WM_operator_properties_select_all(struct wmOperatorType *ot); +void WM_operator_properties_select_action(struct wmOperatorType *ot, int default_action); +void WM_operator_properties_select_action_simple(struct wmOperatorType *ot, int default_action); +void WM_operator_properties_select_random(struct wmOperatorType *ot); + + /* MOVE THIS SOMEWHERE ELSE */ #define SEL_TOGGLE 0 #define SEL_SELECT 1 diff --git a/source/blender/windowmanager/intern/wm_operator_props.c b/source/blender/windowmanager/intern/wm_operator_props.c new file mode 100644 index 00000000000..a59fbf9d528 --- /dev/null +++ b/source/blender/windowmanager/intern/wm_operator_props.c @@ -0,0 +1,250 @@ +/* + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2007 Blender Foundation. + * All rights reserved. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +/** \file blender/windowmanager/intern/wm_operator_props.c + * \ingroup wm + * + * Generic re-usable property definitions and accessors for operators to share. + * (`WM_operator_properties_*` functions). + */ + +#include "DNA_space_types.h" + +#include "BLI_rect.h" + +#include "UI_resources.h" + +#include "RNA_access.h" +#include "RNA_define.h" +#include "RNA_enum_types.h" + +#include "WM_api.h" +#include "WM_types.h" + +/* default properties for fileselect */ +void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type, short action, short flag, short display, short sort) +{ + PropertyRNA *prop; + + static EnumPropertyItem file_display_items[] = { + {FILE_DEFAULTDISPLAY, "DEFAULT", 0, "Default", "Automatically determine display type for files"}, + {FILE_SHORTDISPLAY, "LIST_SHORT", ICON_SHORTDISPLAY, "Short List", "Display files as short list"}, + {FILE_LONGDISPLAY, "LIST_LONG", ICON_LONGDISPLAY, "Long List", "Display files as a detailed list"}, + {FILE_IMGDISPLAY, "THUMBNAIL", ICON_IMGDISPLAY, "Thumbnails", "Display files as thumbnails"}, + {0, NULL, 0, NULL, NULL} + }; + + if (flag & WM_FILESEL_FILEPATH) + RNA_def_string_file_path(ot->srna, "filepath", NULL, FILE_MAX, "File Path", "Path to file"); + + if (flag & WM_FILESEL_DIRECTORY) + RNA_def_string_dir_path(ot->srna, "directory", NULL, FILE_MAX, "Directory", "Directory of the file"); + + if (flag & WM_FILESEL_FILENAME) + RNA_def_string_file_name(ot->srna, "filename", NULL, FILE_MAX, "File Name", "Name of the file"); + + if (flag & WM_FILESEL_FILES) + RNA_def_collection_runtime(ot->srna, "files", &RNA_OperatorFileListElement, "Files", ""); + + if (action == FILE_SAVE) { + /* note, this is only used to check if we should highlight the filename area red when the + * filepath is an existing file. */ + prop = RNA_def_boolean(ot->srna, "check_existing", true, "Check Existing", + "Check and warn on overwriting existing files"); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + } + + prop = RNA_def_boolean(ot->srna, "filter_blender", (filter & FILE_TYPE_BLENDER) != 0, "Filter .blend files", ""); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + prop = RNA_def_boolean(ot->srna, "filter_backup", (filter & FILE_TYPE_BLENDER_BACKUP) != 0, "Filter .blend files", ""); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + prop = RNA_def_boolean(ot->srna, "filter_image", (filter & FILE_TYPE_IMAGE) != 0, "Filter image files", ""); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + prop = RNA_def_boolean(ot->srna, "filter_movie", (filter & FILE_TYPE_MOVIE) != 0, "Filter movie files", ""); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + prop = RNA_def_boolean(ot->srna, "filter_python", (filter & FILE_TYPE_PYSCRIPT) != 0, "Filter python files", ""); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + prop = RNA_def_boolean(ot->srna, "filter_font", (filter & FILE_TYPE_FTFONT) != 0, "Filter font files", ""); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + prop = RNA_def_boolean(ot->srna, "filter_sound", (filter & FILE_TYPE_SOUND) != 0, "Filter sound files", ""); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + prop = RNA_def_boolean(ot->srna, "filter_text", (filter & FILE_TYPE_TEXT) != 0, "Filter text files", ""); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + prop = RNA_def_boolean(ot->srna, "filter_btx", (filter & FILE_TYPE_BTX) != 0, "Filter btx files", ""); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + prop = RNA_def_boolean(ot->srna, "filter_collada", (filter & FILE_TYPE_COLLADA) != 0, "Filter COLLADA files", ""); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + prop = RNA_def_boolean(ot->srna, "filter_folder", (filter & FILE_TYPE_FOLDER) != 0, "Filter folders", ""); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + prop = RNA_def_boolean(ot->srna, "filter_blenlib", (filter & FILE_TYPE_BLENDERLIB) != 0, "Filter Blender IDs", ""); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + + prop = RNA_def_int(ot->srna, "filemode", type, FILE_LOADLIB, FILE_SPECIAL, + "File Browser Mode", "The setting for the file browser mode to load a .blend file, a library or a special file", + FILE_LOADLIB, FILE_SPECIAL); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + + if (flag & WM_FILESEL_RELPATH) + RNA_def_boolean(ot->srna, "relative_path", true, "Relative Path", "Select the file relative to the blend file"); + + if ((filter & FILE_TYPE_IMAGE) || (filter & FILE_TYPE_MOVIE)) { + prop = RNA_def_boolean(ot->srna, "show_multiview", 0, "Enable Multi-View", ""); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + prop = RNA_def_boolean(ot->srna, "use_multiview", 0, "Use Multi-View", ""); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + } + + prop = RNA_def_enum(ot->srna, "display_type", file_display_items, display, "Display Type", ""); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + + prop = RNA_def_enum(ot->srna, "sort_method", rna_enum_file_sort_items, sort, "File sorting mode", ""); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + +} + +static void wm_operator_properties_select_action_ex(wmOperatorType *ot, int default_action, + const EnumPropertyItem *select_actions) +{ + RNA_def_enum(ot->srna, "action", select_actions, default_action, "Action", "Selection action to execute"); +} + +void WM_operator_properties_select_action(wmOperatorType *ot, int default_action) +{ + static EnumPropertyItem select_actions[] = { + {SEL_TOGGLE, "TOGGLE", 0, "Toggle", "Toggle selection for all elements"}, + {SEL_SELECT, "SELECT", 0, "Select", "Select all elements"}, + {SEL_DESELECT, "DESELECT", 0, "Deselect", "Deselect all elements"}, + {SEL_INVERT, "INVERT", 0, "Invert", "Invert selection of all elements"}, + {0, NULL, 0, NULL, NULL} + }; + + wm_operator_properties_select_action_ex(ot, default_action, select_actions); +} + +/** + * only SELECT/DESELECT + */ +void WM_operator_properties_select_action_simple(wmOperatorType *ot, int default_action) +{ + static EnumPropertyItem select_actions[] = { + {SEL_SELECT, "SELECT", 0, "Select", "Select all elements"}, + {SEL_DESELECT, "DESELECT", 0, "Deselect", "Deselect all elements"}, + {0, NULL, 0, NULL, NULL} + }; + + wm_operator_properties_select_action_ex(ot, default_action, select_actions); +} + +/** + * Use for all select random operators. + * Adds properties: percent, seed, action. + */ +void WM_operator_properties_select_random(wmOperatorType *ot) +{ + RNA_def_float_percentage( + ot->srna, "percent", 50.f, 0.0f, 100.0f, + "Percent", "Percentage of objects to select randomly", 0.f, 100.0f); + RNA_def_int( + ot->srna, "seed", 0, 0, INT_MAX, + "Random Seed", "Seed for the random number generator", 0, 255); + + WM_operator_properties_select_action_simple(ot, SEL_SELECT); +} + +void WM_operator_properties_select_all(wmOperatorType *ot) +{ + WM_operator_properties_select_action(ot, SEL_TOGGLE); +} + +void WM_operator_properties_border(wmOperatorType *ot) +{ + PropertyRNA *prop; + + prop = RNA_def_int(ot->srna, "xmin", 0, INT_MIN, INT_MAX, "X Min", "", INT_MIN, INT_MAX); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + prop = RNA_def_int(ot->srna, "xmax", 0, INT_MIN, INT_MAX, "X Max", "", INT_MIN, INT_MAX); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + prop = RNA_def_int(ot->srna, "ymin", 0, INT_MIN, INT_MAX, "Y Min", "", INT_MIN, INT_MAX); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + prop = RNA_def_int(ot->srna, "ymax", 0, INT_MIN, INT_MAX, "Y Max", "", INT_MIN, INT_MAX); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); +} + +void WM_operator_properties_border_to_rcti(struct wmOperator *op, rcti *rect) +{ + rect->xmin = RNA_int_get(op->ptr, "xmin"); + rect->ymin = RNA_int_get(op->ptr, "ymin"); + rect->xmax = RNA_int_get(op->ptr, "xmax"); + rect->ymax = RNA_int_get(op->ptr, "ymax"); +} + +void WM_operator_properties_border_to_rctf(struct wmOperator *op, rctf *rect) +{ + rcti rect_i; + WM_operator_properties_border_to_rcti(op, &rect_i); + BLI_rctf_rcti_copy(rect, &rect_i); +} + +void WM_operator_properties_gesture_border(wmOperatorType *ot, bool extend) +{ + RNA_def_int(ot->srna, "gesture_mode", 0, INT_MIN, INT_MAX, "Gesture Mode", "", INT_MIN, INT_MAX); + + WM_operator_properties_border(ot); + + if (extend) { + RNA_def_boolean(ot->srna, "extend", true, "Extend", "Extend selection instead of deselecting everything first"); + } +} + +void WM_operator_properties_mouse_select(wmOperatorType *ot) +{ + PropertyRNA *prop; + + prop = RNA_def_boolean(ot->srna, "extend", false, "Extend", + "Extend selection instead of deselecting everything first"); + RNA_def_property_flag(prop, PROP_SKIP_SAVE); + prop = RNA_def_boolean(ot->srna, "deselect", false, "Deselect", "Remove from selection"); + RNA_def_property_flag(prop, PROP_SKIP_SAVE); + prop = RNA_def_boolean(ot->srna, "toggle", false, "Toggle Selection", "Toggle the selection"); + RNA_def_property_flag(prop, PROP_SKIP_SAVE); +} + +void WM_operator_properties_gesture_straightline(wmOperatorType *ot, int cursor) +{ + PropertyRNA *prop; + + prop = RNA_def_int(ot->srna, "xstart", 0, INT_MIN, INT_MAX, "X Start", "", INT_MIN, INT_MAX); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + prop = RNA_def_int(ot->srna, "xend", 0, INT_MIN, INT_MAX, "X End", "", INT_MIN, INT_MAX); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + prop = RNA_def_int(ot->srna, "ystart", 0, INT_MIN, INT_MAX, "Y Start", "", INT_MIN, INT_MAX); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + prop = RNA_def_int(ot->srna, "yend", 0, INT_MIN, INT_MAX, "Y End", "", INT_MIN, INT_MAX); + RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); + + if (cursor) { + prop = RNA_def_int(ot->srna, "cursor", cursor, 0, INT_MAX, + "Cursor", "Mouse cursor style to use during the modal operator", 0, INT_MAX); + RNA_def_property_flag(prop, PROP_HIDDEN); + } +} diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index a4a56345798..5daa622a029 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -1210,215 +1210,6 @@ bool WM_operator_filesel_ensure_ext_imtype(wmOperator *op, const struct ImageFor return false; } -/* default properties for fileselect */ -void WM_operator_properties_filesel(wmOperatorType *ot, int filter, short type, short action, short flag, short display, short sort) -{ - PropertyRNA *prop; - - static EnumPropertyItem file_display_items[] = { - {FILE_DEFAULTDISPLAY, "DEFAULT", 0, "Default", "Automatically determine display type for files"}, - {FILE_SHORTDISPLAY, "LIST_SHORT", ICON_SHORTDISPLAY, "Short List", "Display files as short list"}, - {FILE_LONGDISPLAY, "LIST_LONG", ICON_LONGDISPLAY, "Long List", "Display files as a detailed list"}, - {FILE_IMGDISPLAY, "THUMBNAIL", ICON_IMGDISPLAY, "Thumbnails", "Display files as thumbnails"}, - {0, NULL, 0, NULL, NULL} - }; - - if (flag & WM_FILESEL_FILEPATH) - RNA_def_string_file_path(ot->srna, "filepath", NULL, FILE_MAX, "File Path", "Path to file"); - - if (flag & WM_FILESEL_DIRECTORY) - RNA_def_string_dir_path(ot->srna, "directory", NULL, FILE_MAX, "Directory", "Directory of the file"); - - if (flag & WM_FILESEL_FILENAME) - RNA_def_string_file_name(ot->srna, "filename", NULL, FILE_MAX, "File Name", "Name of the file"); - - if (flag & WM_FILESEL_FILES) - RNA_def_collection_runtime(ot->srna, "files", &RNA_OperatorFileListElement, "Files", ""); - - if (action == FILE_SAVE) { - /* note, this is only used to check if we should highlight the filename area red when the - * filepath is an existing file. */ - prop = RNA_def_boolean(ot->srna, "check_existing", true, "Check Existing", - "Check and warn on overwriting existing files"); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - } - - prop = RNA_def_boolean(ot->srna, "filter_blender", (filter & FILE_TYPE_BLENDER) != 0, "Filter .blend files", ""); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - prop = RNA_def_boolean(ot->srna, "filter_backup", (filter & FILE_TYPE_BLENDER_BACKUP) != 0, "Filter .blend files", ""); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - prop = RNA_def_boolean(ot->srna, "filter_image", (filter & FILE_TYPE_IMAGE) != 0, "Filter image files", ""); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - prop = RNA_def_boolean(ot->srna, "filter_movie", (filter & FILE_TYPE_MOVIE) != 0, "Filter movie files", ""); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - prop = RNA_def_boolean(ot->srna, "filter_python", (filter & FILE_TYPE_PYSCRIPT) != 0, "Filter python files", ""); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - prop = RNA_def_boolean(ot->srna, "filter_font", (filter & FILE_TYPE_FTFONT) != 0, "Filter font files", ""); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - prop = RNA_def_boolean(ot->srna, "filter_sound", (filter & FILE_TYPE_SOUND) != 0, "Filter sound files", ""); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - prop = RNA_def_boolean(ot->srna, "filter_text", (filter & FILE_TYPE_TEXT) != 0, "Filter text files", ""); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - prop = RNA_def_boolean(ot->srna, "filter_btx", (filter & FILE_TYPE_BTX) != 0, "Filter btx files", ""); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - prop = RNA_def_boolean(ot->srna, "filter_collada", (filter & FILE_TYPE_COLLADA) != 0, "Filter COLLADA files", ""); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - prop = RNA_def_boolean(ot->srna, "filter_folder", (filter & FILE_TYPE_FOLDER) != 0, "Filter folders", ""); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - prop = RNA_def_boolean(ot->srna, "filter_blenlib", (filter & FILE_TYPE_BLENDERLIB) != 0, "Filter Blender IDs", ""); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - - prop = RNA_def_int(ot->srna, "filemode", type, FILE_LOADLIB, FILE_SPECIAL, - "File Browser Mode", "The setting for the file browser mode to load a .blend file, a library or a special file", - FILE_LOADLIB, FILE_SPECIAL); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - - if (flag & WM_FILESEL_RELPATH) - RNA_def_boolean(ot->srna, "relative_path", true, "Relative Path", "Select the file relative to the blend file"); - - if ((filter & FILE_TYPE_IMAGE) || (filter & FILE_TYPE_MOVIE)) { - prop = RNA_def_boolean(ot->srna, "show_multiview", 0, "Enable Multi-View", ""); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - prop = RNA_def_boolean(ot->srna, "use_multiview", 0, "Use Multi-View", ""); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - } - - prop = RNA_def_enum(ot->srna, "display_type", file_display_items, display, "Display Type", ""); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - - prop = RNA_def_enum(ot->srna, "sort_method", rna_enum_file_sort_items, sort, "File sorting mode", ""); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - -} - -static void wm_operator_properties_select_action_ex(wmOperatorType *ot, int default_action, - const EnumPropertyItem *select_actions) -{ - RNA_def_enum(ot->srna, "action", select_actions, default_action, "Action", "Selection action to execute"); -} - -void WM_operator_properties_select_action(wmOperatorType *ot, int default_action) -{ - static EnumPropertyItem select_actions[] = { - {SEL_TOGGLE, "TOGGLE", 0, "Toggle", "Toggle selection for all elements"}, - {SEL_SELECT, "SELECT", 0, "Select", "Select all elements"}, - {SEL_DESELECT, "DESELECT", 0, "Deselect", "Deselect all elements"}, - {SEL_INVERT, "INVERT", 0, "Invert", "Invert selection of all elements"}, - {0, NULL, 0, NULL, NULL} - }; - - wm_operator_properties_select_action_ex(ot, default_action, select_actions); -} - -/** - * only SELECT/DESELECT - */ -void WM_operator_properties_select_action_simple(wmOperatorType *ot, int default_action) -{ - static EnumPropertyItem select_actions[] = { - {SEL_SELECT, "SELECT", 0, "Select", "Select all elements"}, - {SEL_DESELECT, "DESELECT", 0, "Deselect", "Deselect all elements"}, - {0, NULL, 0, NULL, NULL} - }; - - wm_operator_properties_select_action_ex(ot, default_action, select_actions); -} - -/** - * Use for all select random operators. - * Adds properties: percent, seed, action. - */ -void WM_operator_properties_select_random(wmOperatorType *ot) -{ - RNA_def_float_percentage( - ot->srna, "percent", 50.f, 0.0f, 100.0f, - "Percent", "Percentage of objects to select randomly", 0.f, 100.0f); - RNA_def_int( - ot->srna, "seed", 0, 0, INT_MAX, - "Random Seed", "Seed for the random number generator", 0, 255); - - WM_operator_properties_select_action_simple(ot, SEL_SELECT); -} - -void WM_operator_properties_select_all(wmOperatorType *ot) -{ - WM_operator_properties_select_action(ot, SEL_TOGGLE); -} - -void WM_operator_properties_border(wmOperatorType *ot) -{ - PropertyRNA *prop; - - prop = RNA_def_int(ot->srna, "xmin", 0, INT_MIN, INT_MAX, "X Min", "", INT_MIN, INT_MAX); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - prop = RNA_def_int(ot->srna, "xmax", 0, INT_MIN, INT_MAX, "X Max", "", INT_MIN, INT_MAX); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - prop = RNA_def_int(ot->srna, "ymin", 0, INT_MIN, INT_MAX, "Y Min", "", INT_MIN, INT_MAX); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - prop = RNA_def_int(ot->srna, "ymax", 0, INT_MIN, INT_MAX, "Y Max", "", INT_MIN, INT_MAX); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); -} - -void WM_operator_properties_border_to_rcti(struct wmOperator *op, rcti *rect) -{ - rect->xmin = RNA_int_get(op->ptr, "xmin"); - rect->ymin = RNA_int_get(op->ptr, "ymin"); - rect->xmax = RNA_int_get(op->ptr, "xmax"); - rect->ymax = RNA_int_get(op->ptr, "ymax"); -} - -void WM_operator_properties_border_to_rctf(struct wmOperator *op, rctf *rect) -{ - rcti rect_i; - WM_operator_properties_border_to_rcti(op, &rect_i); - BLI_rctf_rcti_copy(rect, &rect_i); -} - -void WM_operator_properties_gesture_border(wmOperatorType *ot, bool extend) -{ - RNA_def_int(ot->srna, "gesture_mode", 0, INT_MIN, INT_MAX, "Gesture Mode", "", INT_MIN, INT_MAX); - - WM_operator_properties_border(ot); - - if (extend) { - RNA_def_boolean(ot->srna, "extend", true, "Extend", "Extend selection instead of deselecting everything first"); - } -} - -void WM_operator_properties_mouse_select(wmOperatorType *ot) -{ - PropertyRNA *prop; - - prop = RNA_def_boolean(ot->srna, "extend", false, "Extend", - "Extend selection instead of deselecting everything first"); - RNA_def_property_flag(prop, PROP_SKIP_SAVE); - prop = RNA_def_boolean(ot->srna, "deselect", false, "Deselect", "Remove from selection"); - RNA_def_property_flag(prop, PROP_SKIP_SAVE); - prop = RNA_def_boolean(ot->srna, "toggle", false, "Toggle Selection", "Toggle the selection"); - RNA_def_property_flag(prop, PROP_SKIP_SAVE); -} - -void WM_operator_properties_gesture_straightline(wmOperatorType *ot, int cursor) -{ - PropertyRNA *prop; - - prop = RNA_def_int(ot->srna, "xstart", 0, INT_MIN, INT_MAX, "X Start", "", INT_MIN, INT_MAX); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - prop = RNA_def_int(ot->srna, "xend", 0, INT_MIN, INT_MAX, "X End", "", INT_MIN, INT_MAX); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - prop = RNA_def_int(ot->srna, "ystart", 0, INT_MIN, INT_MAX, "Y Start", "", INT_MIN, INT_MAX); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - prop = RNA_def_int(ot->srna, "yend", 0, INT_MIN, INT_MAX, "Y End", "", INT_MIN, INT_MAX); - RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE); - - if (cursor) { - prop = RNA_def_int(ot->srna, "cursor", cursor, 0, INT_MAX, - "Cursor", "Mouse cursor style to use during the modal operator", 0, INT_MAX); - RNA_def_property_flag(prop, PROP_HIDDEN); - } -} - - /* op->poll */ int WM_operator_winactive(bContext *C) { |