Commit Graph

134 Commits

Author SHA1 Message Date
Ton Roosendaal
c9b60a7b64 2.5
So, editmode mesh is back! :)
At the moment only TABkey works and mouse select, 1 vertex at a
time. More will follow of course.

Note for the devs:
- G.editMesh has been removed, be careful with old code.
- EditMesh now is property of Mesh itself
  Although it means unlimited editmodes, for migration purposes we
  better stick to 1 "obedit" per scene, which is in Context too
- G.obedit will get removed soon, so use CTX_data_edit_object(C)
  Or if you can't, just scene->obedit for now
- Also removed the CTX_data_edit_mesh(), this has no meaning 
  anymore. EditMesh is not context senstitive anymore, only the
  edit-object for time being is.
- Martin: I've already tucked some EditMesh pointer in T and
  removed all G.editMesh there.
2008-12-31 17:11:42 +00:00
Brecht Van Lommel
ba91587183 RNA
* Store RNA collections different in ID properties, using a generic
  ID property array, using the patch provided by Joe.
* Fix bug accessing registered operator properties in the wm from the
  outliner.
* In the outliner, only use the RNA icon for RNA data, and use dot
  again for unknown icon.
* Also, show pointer properties data in the second column, and auto
  expand two levels when opening them.
* Added small RNA_struct_defined_properties function to get only the
  defined properties without builtin and undefined id properties
  (for py operators).
2008-12-31 13:16:37 +00:00
Campbell Barton
58c5fd7066 Added WITH_PYTHON as a cmake option 2008-12-31 05:20:35 +00:00
Nicholas Bishop
c6f15859ae Added some missing directory includes for CMake. Still some linker errors to resolve. 2008-12-31 00:53:01 +00:00
Brecht Van Lommel
22f05adc3a RNA
* The RNA viewer is now more integrated with the outliner, as
  a "Datablocks" view, with a tree structure.
* Still some issues to be solved with persistence, and also
  memory usage is problematic when expanding a million vertices
  in a mesh for example, though it will not build closed parts
  of the tree.
2008-12-30 21:28:27 +00:00
Ton Roosendaal
25fac7b001 2.5
Editmesh code cleaned and compiling/linking. A whopping
20k lines back! :)
Not that it does stuff... editmode in/out has to be done,
and loads of operators. Also linking/exporting editmesh
calls has to be reviewed.

Also: added a blender_test_break() mechanism in BKE.
2008-12-30 13:16:14 +00:00
Joshua Leung
15518e20c0 2.5 - Action Editor stuff
* Added old theme-set version patch for new Dopesheet channel colours
* Removed warnings in action_edit_keyframes.c. I need an example of how to add error reports for the code that this concerned.
2008-12-30 10:10:44 +00:00
Brecht Van Lommel
0a8a00cd10 2.5: Error reporting
* Added a report list to operator, to which they can report errors and
  warnings. When the operator ends, it will display them with a popup. For
  python these should become exceptions when calling operators.
* Added a function to make a popup menu from a report list.
* Also added a utility function to prepend a string before the reports to
  indicate what they relates to. Also made the report functions used
  BLI_dynstr to simplify the code.
* Made file reading and writing report errors to the user again using this
  system, also replacing the left over uncommented bad level error() calls.
2008-12-29 13:38:08 +00:00
Ton Roosendaal
1580b6bc17 2.5
More notifier cleanups: 

NC_SCENE|ND_OB_SELECT : scene level object selections changed
NC_SCENE|ND_OB_ACTIVE : scene level, new active object

NC_OBJECT|ND_BONE_SELECT : object level, bone selection changed
NC_OBJECT|ND_BONE_ACTIVE: object level, new active bone

I've made view3d listen to these, so operators that change
selections don't have to tag own region for redraw anymore.

Also enabled selecting/activating in outliner again.

BTW: Added it in space_action, but Joshua has to code the
proper refresh still :)
2008-12-29 12:15:42 +00:00
Joshua Leung
2c4c7004ae 2.5 - Action Editor: Copy/Paste
This can be activated using Ctrl-C/V and the buttons on the header.

It still uses an ugly global copy/paste buffer for now. In future, we could investigate alternative methods...
2008-12-29 11:04:55 +00:00
Andrea Weikert
7209837f2e 2.5
fix for win32 firing size event with undefined size.
2008-12-28 15:28:09 +00:00
Nathan Letwory
ad480556e5 2.5 / SCons
* make sure we can build WITH_BF_PYTHON=False
2008-12-27 20:22:22 +00:00
Ton Roosendaal
b97ee36f8d 2.5
Anim playback part 1 (needs more test, will do after commit)

- added the update_for_new_frame() back
- proper evaluation of time change notifier in WM level
- fixed redraw flushes for menus while animation plays.
2008-12-27 17:43:05 +00:00
Campbell Barton
b7c7057f3e * converting operator props to strings was using a float as in int.
* PyOperators were always calling the python functions with default args.
* Made operator prints only happen when G.f & G_DEBUG is enabled.
2008-12-27 16:35:15 +00:00
Ton Roosendaal
f0f451fc16 2.5
Notifier system upgrade, based on Brecht's doc.
Implementation notes:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers#Implementation

In short: let's try to strictly communicate in a notifier what happened.
The listeners then can act themselves. It also means that a frame-changed
notifier doesn't send out redraws, the editors themselves can decide.
2008-12-27 16:09:56 +00:00
Campbell Barton
0714d28236 python operators (in bpy_opwrapper.*)
This means you can define an operator in python that is called from C or Python - like any other operator.

Python functions for invoke and exec can be registered with an operator name.

keywords are read from the python exec() function, then used to create operator properties. The default python values are used to set the property type and defaults.

def exec(size=2.0, text="blah"): ...

is equivalent to...
prop = RNA_def_property(ot->srna, "size", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_default(prop, 2.0f);

prop = RNA_def_property(ot->srna, "size", PROP_STRING, PROP_NONE);
RNA_def_property_string_default(prop, "blah");


TODO -
* make use of events
* return OPERATOR_CANCELLED/OPERATOR_FINISHED.. etc
* add support for array args
* more testing
2008-12-27 14:52:49 +00:00
Campbell Barton
a2369a5e01 run python when starting blender like 2.4x does (was start/stopping python for each script before)
This way python can call the operator to run other scripts
eg...
 bpyoperator.SCRIPT_OT_run_pyfile(filename = "myop.py")
2008-12-27 04:55:45 +00:00
Ton Roosendaal
da078552d4 2.5
- Added 3d cursor operator (no exec, waiting for vector property!)
- Added default editor callbacks, for the poll() function.

Example:

   ot->poll= ED_operator_view3d_active;

I'll add later more, per module, such as OBJECT_active, which
can be called without WM active
2008-12-26 19:07:31 +00:00
Ton Roosendaal
6086c31fd3 2.5
Brought back 'smooth view'. Took some hours to untangle it all,
code was spread all over, instead of localized in 1 call. Tsk!
Still not perfect, but at least more in control. For the hackers;
check void smooth_view() in view3d_view.c, here all 3d view
stuff should be handled, so it can optionally use animating.

For the users: 'smooth view' now plays at a maximum of 30 hz,
and doesn't block anymore. So even slow animated views remain
responsive if you press many numpad keys.
2008-12-26 18:15:46 +00:00
Campbell Barton
63f84cf26d crash when running operators with no window 2008-12-26 13:50:32 +00:00
Ton Roosendaal
bf956bb475 2.5
Timers: added extra 'event type' argument to call to add a timer:
WM_event_add_window_timer(win, event_type, interval)

This way other timer systems don't generate overhead on the queues.
(button timers were creating unused animation-playback operators)
2008-12-26 13:29:47 +00:00
Ton Roosendaal
d6704568f8 2.5
Operator calls: extended WM_operator_name_call() with options whether to
call the exec() (operate immediate) or invoke() (check user input) entry.

This will allow python to use it more efficiently, but also solves the
dreaded pulldown case that showed another menu for confirmation.

New names to learn: :)
WM_OP_EXEC_DEFAULT
WM_OP_INVOKE_DEFAULT

on todo still: allow hotkey definitions to do same.
2008-12-26 12:21:06 +00:00
Brecht Van Lommel
c0475a7859 2.5: fix/workaround for crashes with open recent popup, due
to usage of free'd area/region.
2008-12-26 11:32:20 +00:00
Campbell Barton
0054e6d354 * added RNA_property_as_string to rna_access.c - can print most types except for pointers and collections.
* WM_operator_pystring to print the python func+args for an operator
* call WM_operator_print(op) in wm_operator_invoke(), simple echo mode should be moved later.
2008-12-26 03:56:52 +00:00
Ton Roosendaal
febb2c21e4 2.5
Further simplifying making operators with menus;
now you can add an 'invoke' callback:

    WM_menu_invoke

which will automatically generate a menu with choices and assign
it to the property 'type'.
What also helps typing is the new RNA_enum_is_equal() function.

Here's a paste of the now committed 'clear parent'. Note the
undo push will become a flag too.

http://pasteall.org/3660

(Brecht; fixed small bug in RNA_enum_is_equal!)

To evaluate: solving dependencies for multipe scenes... probably
will make a more generic flush call.
2008-12-24 18:06:51 +00:00
Ton Roosendaal
3c612bc0e2 2.5
Fix: popup menus were not freeing operators.
Made a new Popup menu call for this case:

uiPupmenuOperator(C, maxrow, op, propname, menustr);

It will set enum "propname" to the menu item and call operator,
register it optionally and free it. Use it in "invoke" calls.

Next: automatic menu generating for enum properties!
2008-12-24 14:52:17 +00:00
Nathan Letwory
eb186d18dc 2.5 / SCons
Blender builds and links on Linux. For now without BGE and its player, 
but that will come. Priorities are still a mess, so expect more commits 
soon.
2008-12-23 20:13:31 +00:00
Ton Roosendaal
3b0c42136b 2.5
Our precious outliner is back! :)
Currently no operations are active there, nor notifiers to refresh
other windows. Be patient!

You can switch to RNA with the 'view' menu. 
Later we'll sort out how much of both get integrated in 1 system, or
have both options, or make designated 'data view' for rna? ALso the
old Oops... bring back?
2008-12-22 19:31:23 +00:00
Ton Roosendaal
9e38e6aeb0 2.5
Better implementation of own window timers, not using ghost.
That makes blender's WM nice in control, and gives callers
of timers the opportunitie to evaluate time passed since
previous step. This system also only generates one timer 
event per main loop (events - handlers - notifiers - draw)

Small fix: allow keymap modifier to give KM_ANY to ignore
modifier keys, this to have TIMER keymap work.
2008-12-22 12:57:53 +00:00
Ton Roosendaal
f1e0cf36f8 2.5
Animated screen! (unfinished, now only draws, no animation code yet).
Fun though to see it all work. :)

NOTE: Mac ghost has timer bug, the GHOST_ProcessEvents() doesnt wake
up for timers.

NOTE2: Added while loop in wm_window_process_events() to force Ghost
giving all events to Blender. Timers otherwise don't accumulate...
might be needed to fix in ghost too.

I tend to think to code own timer, this ghost stuff is totally different
per platform.
2008-12-21 19:58:25 +00:00
Ton Roosendaal
eb8e220f26 2.5
- Added default Circle 'gesture' operator callbacks.
  As test, added in view3d window as Ckey, paint over object centers.
- Fixed notifier for gesture, to only cause redraws in own region.
2008-12-21 16:24:19 +00:00
Ton Roosendaal
c694c8f39e 2.5
- Bugfix: loading files should close running handlers and subwindows, gave
  memory leaks that way.
- Bugfix: space image copy function didn't do curvemap
- Cleanup: moved view operators from view3d_select to view3d_view
2008-12-21 12:43:34 +00:00
Ton Roosendaal
841f376a1c 2.5
- View3D: added ALT+B clipping operator. Note this needs a call to
  the new function view3d_operator_needs_opengl(C) to ensure you 
  can use opengl functions. Event handling by default doesn't set
  opengl per subwindow, it's also forbidden to draw then!

  We might consider to tag operators that need opengl...

- Forgot to include creator.c fix for loading builtin vector font
2008-12-21 11:05:43 +00:00
Ton Roosendaal
c288eab363 2.5
Brought back WIN32 hack to disable glScissor before swapbuffer.
Joshua was reporting swapbuffer glitches...
2008-12-21 09:58:32 +00:00
Campbell Barton
4a86a07f8a wip operator py-api
"operator.ED_VIEW3D_OT_viewhome(center=1)" calls the operator, converting keyword args to properties.
Need a way to run scripts in the UI for useful testing.

Still need to deal with operator exceptions and verifying args against operator options. 

Added temporary WM_operatortype_first() to allow python to return a list if available operators, can replace this with something better later (operator iterator?)
2008-12-21 08:53:36 +00:00
Ton Roosendaal
1550573360 2.5
- View3D: selecting added. Note it nicely respects user preset, by using
  the keymap define SELECTMOUSE.
- Added missing initialize of default vector font, so text draws.
2008-12-20 15:42:48 +00:00
Brecht Van Lommel
08db8198c4 2.5:
- fix crash opening submenus
- fix disappearing main menu when going into submenu
2008-12-20 14:15:58 +00:00
Ton Roosendaal
851f437361 2.5
- Ported over view3d header buttons.
  Most of the options don't work :) but some do!
- Fixed makefiles for new animation module
- added icon definitions in resources to match current trunk.
2008-12-20 12:36:14 +00:00
Ton Roosendaal
12ad72ba8f 2.5
Two bugfixes:
- new WM_error() needed 'struct' in definition 
- fixed crash rrors reading files with curves.
2008-12-19 18:48:41 +00:00
Ton Roosendaal
a3d3619898 2.5
- CTRL+O "open recent file" is back. Need it for testing :)
- Added a simple WM_error() to replace old error()
2008-12-19 18:28:37 +00:00
Nathan Letwory
ed259629c8 * little swap-eroo to get things compiled with msvc.
- first the declarations, then the code! :)
2008-12-19 17:59:54 +00:00
Ton Roosendaal
4db8d5a365 2.5
Moved GPU init to the right location, it has to be called per
window you open. Now rip and add-window gives good views. :)
2008-12-19 17:26:15 +00:00
Brecht Van Lommel
92b1d3f946 2.5: blenloader/ cleaning:
- removed context usage, should not be in this module
- remove G.main usage, now is passed along
- still some globals in use here, goal is to get rid of those too,
  so that it's possible to load/save blendfiles without having to
  think about some global state.
2008-12-19 16:36:15 +00:00
Ton Roosendaal
62a03ea1b6 2.5
All of the view3d drawing code is now 'Context' free.
The idea is:

- ED_region_do_draw() sets and freezes drawing context
- regiontype draw() callback then can pass on other relevant 
  context stuff as function args.

Also cleaned up the WM opengl wrappers, to mimic opengl state;
no reason to give window pointer anymore.
2008-12-19 14:14:43 +00:00
Ton Roosendaal
d92b45d558 2.5
Drawing code for space_view3d module.
It's still not cleaned, have to check on context usage still.
Also missing is editmodes, armatures, and probably more.

Known issue: splitting to 2nd window gives bad opengl lighting.
Picture for fun:
http://www.blender.org/bf/rt2.jpg

Current stat: brought back almost 10k lines! :)
2008-12-19 12:14:58 +00:00
Campbell Barton
04428d6750 added "description" and "readonly" properties to RNA Structs (also accessible via python)
Many descriptions are not written, grep for DOC_BROKEN if you have some spare time to write struct descriptions.
2008-12-19 04:06:24 +00:00
Brecht Van Lommel
d9de6fca6c 2.5: Change blenloader module to use the Report system for reporting errors. 2008-12-19 00:50:21 +00:00
Brecht Van Lommel
ea81c58429 2.5: fix small memory leak when closing window with X-button rather than Ctrl+Q. 2008-12-19 00:43:37 +00:00
Brecht Van Lommel
93cc4629e3 2.5: fix for crashes due to access to free'd memory in joining areas,
ripping areas and duplicating windows.
2008-12-18 19:41:36 +00:00
Ton Roosendaal
e8e903cd53 2.5
- WM subwindows now get freed on every ED_region_exit(). Was not
  a leak, but it's cleaner this way (and saves some kilobytes!).
- fixed debug print for operators (on blender -d) to print correct
  subwindow id.
2008-12-18 14:53:39 +00:00