Commit Graph

158 Commits

Author SHA1 Message Date
34114b3b75 code cleanup: remove/comment unused defines 2012-09-22 13:40:31 +00:00
7e2ec90db9 Bugfix [#32437] Cannot define Alt-E keybinding in Text Editor window
WM_keymap_add_item(keymap, "TEXT_OT_insert", KM_TEXTINPUT, KM_ANY, KM_ANY, 0);
<---  this catch-all key map item at the end of the Text Editor keymap was
gobbling all the key events for user-defined hotkeys added after it in the
keymap. This includes all hotkeys for new operators defined by addons (via
keymap.keymap_items.new()).

As a slightly hacky workaround for this, I've added an extra parameter to
keymap_items.new() which will force the newly added item to get added to the
start of the key map items list (i.e. with top priority). To enable, simply add,
head=True    to keymap_items.new() calls. For example:
    keymap.keymap_items.new("MY_OP_my_operator_id", type='E', value='PRESS',
alt=True, head=True)

This should be useful for cases where there are similar catch-alls, where it is
necessary to insert our item before the offending catch-all (without knowing
which one it is). However, in general, it's recommended not to use this, unless
all other methods (inlcuding choosing another key combination if your first
choice doesn't work) fails.
2012-08-30 14:08:43 +00:00
a9f6e54384 style cleanup: mostly whitespace in rna 2012-05-12 11:01:29 +00:00
8ae502ae99 Fix #30977: error loading modal keymaps from keyconfiguration presets. 2012-04-17 15:40:04 +00:00
5a90ea77bc style cleanup: follow style guide for formatting of if/for/while loops, and else if's 2012-03-24 06:24:53 +00:00
ed43b652ee Code style edits (mostly spliting long lines, and removing trailing spaces).
Note about long lines: I did not touch to two pieces of code (because I don’t see any way to keep a nicely formated, compact code, with shorter lines):
* The node types definitions into rna_nodetree_types.h
* The vgroup name functions into rna_particle.c
2012-03-18 09:27:36 +00:00
4f19c1a995 spelling cleanup 2012-03-18 07:38:51 +00:00
79d97ca509 style cleanup - spelling. 2012-03-08 04:12:11 +00:00
0114d78c33 Code cleanup in rna files (huge, higly automated with py script).
Addresses:
* C++ comments.
* Spaces after if/for/while/switch statements.
* Spaces around assignment operators.
2012-03-05 23:30:41 +00:00
aae52ef635 Documentation: add missing info about the fileselectior using hard coded property names. 2012-02-07 06:07:02 +00:00
4a04f72069 remove $Id: tags after discussion on the mailign list: http://markmail.org/message/fp7ozcywxum3ar7n 2011-10-23 17:52:20 +00:00
1794767171 /blender/makesrna: Removed final points in UI strings and messages.
Plus a few splits of very long lines…
2011-09-19 13:23:58 +00:00
e6e4c7ef8b KEYMAP REFACTORING
Diff Keymaps

User edited keymaps now no longer override the builtin keymaps entirely, but
rather save only the difference and reapply those changes. This means they can
stay better in sync when the builtin keymaps change. The diff/patch algorithm
is not perfect, but better for the common case where only a few items are changed
rather than entire keymaps The main weakness is that if a builtin keymap item
changes, user modification of that item may need to be redone in some cases.

Keymap Editor

The most noticeable change here is that there is no longer an "Edit" button for
keymaps, all are editable immediately, but a "Restore" buttons shows for keymaps
and items that have been edited. Shortcuts for addons can also be edited in the
keymap editor. 

Addons

Addons now should only modify the new addon keyconfiguration, the keymap items
there will be added to the builtin ones for handling events, and not get lost
when starting new files. Example code of register/unregister:

km = wm.keyconfigs.addon.keymaps.new("3D View", space_type="VIEW_3D")
km.keymap_items.new('my.operator', 'ESC', 'PRESS')

km = wm.keyconfigs.addon.keymaps["3D View"]
km.keymap_items.remove(km.keymap_items["my.operator"])

Compatibility

The changes made are not forward compatible, i.e. if you save user preferences
with newer versions, older versions will not have key configuration changes that
were made.
2011-08-05 20:45:26 +00:00
d163ce5595 bpy fix for crash/assert on running dir() on a non collection property + some other minor corrections. 2011-07-30 13:18:04 +00:00
d4e540dff3 comment some unused code. 2011-05-08 10:29:40 +00:00
0298d223cc quiet various warnings, also disable -Wdouble-promotion with cmake since it gives warnings with variable length args. 2011-04-03 10:04:16 +00:00
9c01b94148 py/rna Operator.cancel method didnt have return defined. 2011-03-30 16:44:18 +00:00
412eed6a27 RNA functions for adding timer (needed for demo mode, also useful for python modal operators).
- timer = WindowManager.event_timer_add(time_step, window=None)
 - WindowManager.event_timer_remove(timer)

Still TODO, is a way for python to check the timer identity.
2011-03-28 04:55:24 +00:00
33047585ea add cancel() method for python defined operators. 2011-03-17 07:02:02 +00:00
Nathan Letwory
a47ca06502 doxygen: blender/makesrna tagged. 2011-02-27 20:20:01 +00:00
Nathan Letwory
5b607701a7 doxygen: prevent GPL license block from being parsed as doxygen comment. 2011-02-23 10:52:22 +00:00
430bb75749 enum-flag arguments were incorrectly documented. 2011-02-16 10:19:14 +00:00
e2054b291c bugfix [#25588] Not work fcurve.keyframe_points.add
The problem was flag-enums were being treated as regular enums, a default value of 0 was using the first enum item, whereas with flag enums we want to be able to use 0 as a default value to specify all flags are off.
2011-01-13 14:29:57 +00:00
ede0d85522 comment/remove various unused vars,
also make rna function for new images require width and hight args.
2011-01-10 03:58:07 +00:00
1622385445 pedantic word ordering change.
- wm.add_modal_handler -> modal_handler_add
- wm.add_fileselect -> fileselect_add
- ob.add_shape_key -> shape_key_add
- VIEW3D_OT_add_background_image -> VIEW3D_OT_background_image_add (same for remove)

Also made 2 internal cmake vars hidden.
2010-12-08 11:42:11 +00:00
69246d9080 rna invoke function wm.invoke_confirm() for python access. 2010-11-22 13:43:51 +00:00
7b16d7496d - report python script errors to blender report system, or through operators reports (when using operator callbacks).
- when python operators fail to execute they were returning RUNNING_MODAL, now return CANCELLED

now when an operator fails it gives an error popup as well as a message in the terminal.
2010-11-20 16:39:15 +00:00
51dcbdde03 use 'const char *' by default with RNA functions except when the value is flagged as PROP_THICK_WRAP.
Also use const char in many other parts of blenders code.

Currently this gives warnings for setting operator id, label and description since these are an exception and allocated beforehand.
2010-11-17 09:45:45 +00:00
5452f335d7 New optional operator function, check(), it takes the same arguments as execute().
This runs after changing a property and allows correcting incompatible options.
 Returning True will redraw the UI.

Currently this is used for setting the write extension when saving files, so changing the image format also corrects the extension.
The same is accessible from python where its used when saving SVG/EPS/PNG files.

This fixes: [#23828] obj export problems, [#23760] Exporting OBJ and filetype ending
also fixed document submission operator.


Now the filename in the file selector is the one used for writing this means we remove the "Save Over" popup which could be overlooked too easily.
Instead display the filename field with red tint, and a note in the tooltip.
2010-09-17 09:27:31 +00:00
d59304e8e4 another function moved, should be last of the simple cases.
km.item_from_id() --> km.items.from_id()
2010-08-30 14:48:12 +00:00
eab50148e2 - keymap import/export works again (broke with own api changes)
- function renames, move WM functions into collections wm.add_keymap() --> wm.keymaps.new()
  note: new is used for named items in a collection, which return the result.
- Action.get_frame_range() is now a readonly property 'frame_range', floats rather then ints.
2010-08-30 13:50:59 +00:00
163f6055d2 bugfix [#23182] Using self.report() inside poll() gives crash
poll() function is now a static method in python, this is more correct, matching C where the operator is not created to run poll.


    def poll(self, context): ...

is now...

    @staticmethod
    def poll(context): ...

Pythons way of doing static methods is a bit odd but cant be helped :|

This does make subclassing poll functions with COMPAT_ENGINES break, so had to modify quite a few scripts for this.
2010-08-05 16:05:30 +00:00
069e955a1d keymap.add_item, add_modal_items --> keymap.items.add()/add_modal() 2010-04-03 22:09:44 +00:00
93c7b8a2d0 remove unused includes UI_*.h, WM_*.h, ED_*.h 2010-03-24 10:56:37 +00:00
26736ac0f0 remove unused rna includes 2010-03-24 09:51:32 +00:00
1e9bf0cfdb spaces -> tabs, (4 spaces == 1 tab, only for white space preceding text) 2010-03-22 09:30:00 +00:00
66ccd94e3f patch #21680 from Richard Olsson
wm.invoke_props_dialog()

This is so python scripts can have popups which do not redo all the time.
2010-03-20 18:03:59 +00:00
4cd088c19e modal python operator support. 2010-02-21 11:56:00 +00:00
081c1205a3 correct fsf address 2010-02-12 13:34:04 +00:00
148435b70a batch remove .'s used with RNA_def_struct_ui_text 2010-02-10 21:15:44 +00:00
ffc1bdca3b bugfix [#20909] (2.5) crash when clicking the arrow-restore button in keymap editor 2010-02-03 10:00:43 +00:00
70109d0dc1 Speed up keymap editor a bit (less context changes) 2010-01-29 02:01:02 +00:00
b81cb0200b Keyconfig import and remove
- Keyconfig are now marked as user_defined when it is the case
- Import keyconfig operator: select an exported keyconfig .py file, copies it to the scripts folder (keep the original copy if wanted, default True), imports and select as active config. The active keyconfig is stored in the user default file, so that still has to be saved after import.
- Remove keyconfig operator and button next to the keyconfig name (poll False if not user_defined). Removes the keyconfig from the list and deletes the file from the folder.

Remaining bug: The file is copied in the user defined script folder (if present) or the /scripts/ui folder. The problem is that it might be imported before operators defined in python are imported themselves. One solution would be to use a separate folder for keyconfigs that is imported after all others.
2010-01-28 19:54:06 +00:00
03e924cdee mirror modifier vgroup option was doing string name conversion to find the flipped name for every vertex for every weight.
the vertex flip mapping only needs to be made once.

warning fixes too.
2010-01-16 01:15:47 +00:00
5272991e8b generic operator menu was searching for "type" and using the first enum property if it wasnt found.
this is too arbitrary and could break if roperty order is changed.
store the property in the operator type that is to be used for menu and enum search func's.

python function for searching operator enums on invoke. (just need dynamic python enums now)
 wm.invoke_search_popup(self)
2010-01-15 22:40:33 +00:00
b00cddeb66 Macro registration using the normal rna registration methods (like operators).
bpy.types.register(MacroClass)

instead of

bpy.ops.add_macro(MacroClass)

The rest is unchanged.

Also remove some now unused code for the old registration methods (there's still some remaining).
2009-12-30 22:14:32 +00:00
5f4e24d599 operator draw function working again. needed to add layout to the operator to give access to "self.layout" - like panels, headers and manu's have 2009-12-24 21:17:14 +00:00
4dd3e6c360 support for registering operators using the same internal rna api as panels, menus, headers & render engines since there was a fair bit of duplicate functionality.
will remove the old system and update scripts next.
2009-12-24 16:10:26 +00:00
62639a55d9 Keymap conflict detection operator.
Takes into account the hierarchical structures of keymaps as well as wildcards (KM_ANY) in event definitions, user remaps (emulate numpad, action/select mouse buttons, ...) and event values that overlap (click, press and release)

For now, doesn't do anything other than print conflicts in the console.

As a result, I cleaned up a lot of keymaps that had double definitions, moved some keymap items in more appropriate places, fixed wrong definitions and removed kmi that were added for testing a long long time ago.

Out of all the remaining conflicts, after removing obvious non-issues, here's what remains: http://www.pasteall.org/9898
2009-12-17 22:14:43 +00:00
fd18f55510 keymap editor
New unique ID per keymap item (unique inside their keymap) for default and configuration keymaps.
This allows restoring a single user defined kmi to its previous (default or config) values instead of having to restore the whole keymap.
The restore item button is disabled for kmi added by the users (they don't have an ID).

Also fixes a bug in the rna function for add keymap item (parameter order was incorrect, messing adding back saved configurations).
2009-12-17 03:32:33 +00:00