Commit Graph

2077 Commits

Author SHA1 Message Date
2e79e4e975 2.5
Smaller jobs, all in one commit!

- Moved object_do_update out of view3d drawing, into
  the event system (currently after notifiers).
  Depsgraph calls for setting update flags will have to
  keep track of each Screen's needs, so a UI showing only
  a Sequencer doesn't do objects.

- Added button in "Properties region" in 3D window to set
  or disable 4-split, including the 3 options it has.
  (lock, box, clip)

- Restored legacy code for UI, to make things work like
  bone rename, autocomplete. 

- Node editor now shows Curves widgets again

- Bugfix: composite job increased Viewer user id count

- Bugfix: Node editor, not "Enable nodes" still called
  a Job, which didn't do anything

- Various code cleaning, unused vars and prototypes.
2009-02-11 16:54:55 +00:00
25440893dd 2.5
*** Proof of concept! ****

3D window Panels back, in own designated region for now.
Activate or hide it with Nkey.

Note that Background Image doesn't work yet,  Transform
Orientations probably need tests by Martin, Sculpt options
have to be recoded there by Nicholas.

The UI design sessions will of course review all of this!
We'll have to solve a lot of related topics;
- navigation (where) and context (what)
- non-overlapping layouts vs floating panels/bars
- properties vs tools (toolbars)
- drop panels and make nice (semi-automated) list views?

I've also done experiments with making the main 3d view
stay 'behind' the buttons region. That makes popping buttons
in and out less distracting, but also makes it obscuring
the view... it's not in this commit, it didn't work proper :)
To get that work it has to be handled by the internal
compositor, then it even can have fancy transparency in back.

Anyhoo, time enough to play with this a while. Especially for
Image window (paint) it can work well too.
2009-02-10 15:38:00 +00:00
8f712f86b9 2.5
- Render: scene buttons RENDER and ANIM now work
- Nodes: text drawing for socket names back
2009-02-09 16:52:33 +00:00
875a08884b 2.5
- Node editor: link cut back, now under ALT+LMB, to prevent
  accidents. Note it now nicely intersects the real curved
  noodles with a line you draw!
- To make above work, replaced ogl curve draw with own bezier
  code.
- Added new WM standard operator callback for lines-gesture,
  the Lasso gesture now draws a closed line.
- Both callbacks have optional property 'cursor' to make it
  give modal info. For future also linestyle or color can be
  defined.
- Changed 'pin' icon in Image header to something that looks
  less scary... but there's no pin icon yet?
2009-02-07 14:03:34 +00:00
02d594aba0 2.5
- Corner node 'size' widget works again
- Proper preview events added on linking nodes
2009-02-06 18:38:10 +00:00
14f180fa04 2.5
Node editor: 

- Linking sockets back.
- Removed obsolete code 
- Add node gives correct pointers for Render stuff
2009-02-06 16:34:05 +00:00
1646f053a5 2.5
Compo node fixes:
- adding new composite in scene crashed, wrong pointers passed on to
  addnode function
- scene render-layer node now gets default scene ID pointer, which
  can be viewed/edited with menu in node
- on using headerbuttons in node window, display refreshes now
2009-02-06 13:07:02 +00:00
e1b92bc166 2.5
Safe method to move render results to the displayed image.

It now allocates a single image for display, and on each
refresh callback from render, it copies the refreshed 
section over to this image, in 32 bits. While rendering
that image then only shows progress updates, as usual.
This also now works for scenes in composte and results
for composite.

This should solve reported crashes for MBlur or SSS.
2009-02-05 19:28:28 +00:00
1b27cd70e5 2.5
Render back! And not only back, even full threaded now. :)
Current state is unfinished, but too much fun to not to
commit for review and test!

WARNING: because render is in a threaded job, it will
use data as can be edited in the UI. That'll crash in many
cases of course... the idea is to limit UI usage to viewing
stuff, especially for the Image Window to inspect layers
or zoom in/out.

What works now;
- F12 render (no anim)
- ESC from render
- ESC pushes back temporary Image Window
- Render to ImageWindow or full-screen.
- Executing composites, and edit composites after render.

Note that the UI is 100% responsive in a render, you can 
switch screens, slide area dividers around, or even load
a new file during render. :) It's quite stable even.

I'll collect all crash reports especially to get a good 
picture of where the protection is required at least.

Also added: XKey "Delete Objects", to get things crash...
unfortunately it didn't for me.
2009-02-04 17:40:50 +00:00
8fd6f6433f 2.5
Sanitized the 'tweak' event.

Original idea was to have WM event system generating it 
automatically. However, I first tested it via a handler
and operator, to check what kind of configurations would
be useful. It appeared to not work nice, also because
that inserting a tweak operator in a keymap is confusing.

Now 'tweaks' are generated automatically, and can be
catched by keymaps as any event. The current definition
of tweak is:

- if Left/Middle/Rightmouse pressed
    if event wasn't handled by window queue (modal handlers)
       start checking mousepositions

- while mousepositions are checked
   - escape on any event other than mouse
   - on mouse events:
     - add tweak event if mousemove > 10 pixels
     - stop checking for tweak if mousebutton released

- Tweak events have a define indicating mousebutton used
  EVT_TWEAK_L, EVT_TWEAK_M, EVT_TWEAK_R  

- In keymap definitions you can use _S or _A to map to
  action or select mouse userdef.

- Event value in keymap should be KM_ANY for all tweaks,
  or use one of the eight directions:
  EVT_GESTURE_E, _SE, _S, _SW, _W, _NW, _N, _NE 

- And of course you can add modifier checks in keymaps for it.

- Because tweaks are a result of mouse events, the handlers get
  both to evaluate. That means that RMB-select + tweak will work
  correctly.
  In case you don't want both to be handled, for example the 
  CTRL+LMB 'extrude' and CTRL+LMB-tweak 'lasso select', you will
  need to set the first acting on a EVT_RELEASE, this event only
  gets passed on when tweak fails.

The current system allows all options, configurable, we had in 2.48,
and many more! A diagram of what's possible is on the todo. :)

Also in this commit: lasso select editmesh failed with 'zbuffer 
occluded select'. Also circle-select failed.
2009-02-02 14:13:14 +00:00
51ded6696a 2.5
Big commit, but mainly adminstration.

- Enabled ot->flag OPTYPE_UNDO to work.
- Removed all redundant ED_undo_pushes, but I'd
  recommend everyone to check it while testing. :)
- Added view manipulations as OPTYPE_REGISTER,
  although this will flood the redo stack a bit...
  Nevertheless; for a "redo last action" panel we
  can simply check if both flags are set for redo.

- Bugfix in editmode undo: selectmode was cleared,
  so you couldn't select after undo
- Bugfix in mixing tweaks and keymaps... solution
  works but is weak, need to think over a while.
2009-01-31 19:40:40 +00:00
480be71514 2.5
- Edit mesh: Add ctrl+click add vertex or extrude.
  I've made it not move the 3d cursor in that case.

Also found out tweak events conflicted with existing
keymap definitions; on tweak failure (= no mousemove) 
it now passes on the mouse event as 'mouse down' for 
the remaining keymaps to check.
These then actually respond to mouse-up instead of down...

The location in the keymaps where tweaks get generated
remains important. Examples:

1 - 'select' mouse-handler, operator return pass-through
2 - tweak handler checks, and makes tweak event
3 - grabber responds to tweak event

1 - ctrl+mouse tweak handler checks, makes tweak event,
    or passes event on
2 - if tweak event, it runs lasso
3 - else when passed on, ctrl+click extrude happens

In the first case, select works on mouse-down, immediate.
In the second case, extrude happens on mouse-release, even
though the keymap defined mouse-press.

This will make designing nice balanced keymaps still not
simple; especially because you can't tell operators to
pass on the key... although we can add the convention that
select-mouse operators always pass on to enable tweaks.

Still a good reason to wait with custom keymaps
when this is fully settled!
2009-01-30 18:18:41 +00:00
128c8167af 2.5: Fix for windows editmode tab crashes. This was due to
use of function pointers in the context callbacks. Apparently
MSVC decides that some of these functions are the same and
makes them into a single function with the same address. I
couldn't figure out if this was a compiler bug or according
to the C spec. Regardless, that means this method can't be
used, so now it uses separate CTX_DATA_DEFINES.
2009-01-30 16:45:25 +00:00
8036342ea8 2.5: UI & Menus
* Cleaned up UI_interface.h a bit, and added some comments to
  organize things a bit and indicate what should be used when.

* uiMenu* functions can now be used to create menus for headers
  too, this is done with a uiDefMenuBut, which takes a pointer
  to a uiMenuCreateFunc, that will then call uiMenu* functions.

* Renamed uiMenuBegin/End to uiPupMenuBegin/End, as these are
  specific to making popup menus. Will convert the other
  conformation popup menu functions to use this too so we can
  remove some code.

* Extended uiMenu functions, now there is is also:
  BooleanO, FloatO, BooleanR, EnumR, LevelEnumR, Separator.

* Converted image window headers to use uiMenu functions, simplifies
  menu code further here. Did not remove the uiDefMenu functions as
  they are used in sequencer/view3d in some places now (will fix).

* Also tried to simplify and fix bounds computation a bit better
  for popup menus. It tried to find out in advance what the size
  of the menu was but this is difficult with keymap strings in
  there, now uiPopupBoundsBlock can figure this out afterwards and
  ensure the popup is within the window bounds. Will convert some
  other functions to use this too.
2009-01-30 12:18:08 +00:00
7114486e8b 2.5:
* UV Editor Transform, translate, rotate, scale, live unwrap, snap, gesture,
  etc work.
* Also for selection operators, used OPERATOR_FINISHED|OPERATOR_PASS_THROUGH
  instead of just OPERATOR_PASS_THROUGH to make gestures work, seems more
  correct to me.
2009-01-28 21:43:43 +00:00
8006134a9c 2.5
Made 'select-tweak-grab' work in 3d window, fcurve and nodes.
For nodes it works with both left/right, the others follow
user preset for select.

Tweak is a WM event, which also follows user preset for 
tablet-style tweaks (release = apply).

You enable tweak events with an operator WM_OT_tweak_gesture.
Keymap entries can assign to left/middle/right button or to
action/select button tweaks.
2009-01-28 15:39:39 +00:00
6a31e2d26c 2.5
Crash in node editor, when you start a new composite.
Was missing check for scene pointer
2009-01-27 17:54:49 +00:00
c0ee40ab10 2.5
Compositor now uses threaded jobs.

- updates happen per preview node! Check this file for
  fun: http://www.blender.org/bf/composite_image.blend
  (any compo node could get preview!)
- had to ensure the composite data gets fully copied before
  it executes thread, so editing is not frustrated.
- put back node buttons (missing init)
- added WM_jobs api call to check for running job,
  illustrated with red light icon in 'use nodes' button.
- added another callback to WM_jobs, to initialize.
  use this init to ensure you only do it when job really
  starts.
- added an extra notifier option for WM_jobs, to signal
  finished job (like redraw image view)
- fixed file read error, it copied the screen it read,
  instead of using it.
- commented out annoying prints for missing ops in imagewin
2009-01-27 17:12:40 +00:00
8b793524ff make operator names more consistent
ANIM_OT_toggle_time -> ANIM_OT_time_toggle
SCULPT_OT_toggle_mode -> SCULPT_OT_sculptmode_toggle
UV_OT_select_inverse -> UV_OT_select_invert
NODE_OT_toggle_visibility -> NODE_OT_visibility_toggle
OBJECT_OT_toggle_editmode -> OBJECT_OT_editmode_toggle

toggle was used last in other operators eg- VIEW3D_OT_vpaint_toggle and VIEW3D_OT_wpaint_toggle.

'invert' was used everywhere else.
2009-01-25 15:41:17 +00:00
66437a62a7 2.5
Font object + editing back.

Was quite some work due to a myriad of globals all over!
Works nicely 100% local now.

To enable a single textedit operator, I've added a new
keymap entry KM_TEXTEDIT, which gives all keyboard events
to the handler. Also had to add a new keymap-add function
to force a keymap handler in beginning of region handlers.
In future this can be used to prioritize handlers.

Also: split off the arrow keys (frame change) to a separate
region level handler. Can be set with default flag in
regiontype->keymapflag ED_KEYMAP_FRAMES
2009-01-23 14:43:25 +00:00
d5f69e8552 2.5
- warning cleanup (wrong casts, unused vars, missing protos)
- removed old cruft from node_edit.c
- cleaned wm_jobs.c a bit
2009-01-22 15:46:35 +00:00
9cc59fb0c3 2.5
Added WM Jobs manager
- WM can manage threaded jobs for you; just provide a couple
  of components to get it work:
  - customdata, free callback for it
  - timer step, notifier code
  - start callback, update callback
- Once started, each job runs an own timer, and will for
  every time step check necessary updates, or close the
  job when ready. 
- No drawing happens in jobs, that's for notifiers!
- Every job stores an owner pointer, and based on this owner
  it will prevent multiple jobs to enter the stack. 
  Instead it will re-use a running job, signal it to stop
  and allow caller to re-initialize it even.
- Check new wm_jobs.c for more explanation. Jobs API is still
  under construction. 
  Fun: BLI_addtail(&wm->jobs, steve); :)

Put Node shader previews back using wmJobs
- Preview calculating is now fully threaded (1 thread still)
- Thanks to new event system + notifiers, you can see 
  previews update even while dragging sliders!
- Currently it only starts when you change a node setting.

Warning: the thread render shares Node data, so don't delete
nodes while it renders! This topic is on the todo to make safe.

Also:
- bug in region initialize (do_versions) showed channel list in
  node editor wrong.
- flagged the channel list 'hidden' now, it was really in the
  way! This is for later to work on anyway. 
- recoded Render API callbacks so it gets handlers passed on, 
  no globals to use anymore, remember?
- previewrender code gets now so much nicer! Will remove a lot
  of stuff from code soon.
2009-01-22 14:59:49 +00:00
999d9d146e Added back some functionality to the sequencer
- removed static vars _last_seq, last_imagename and last_sounddir, replacing them with with vars in the "Editing" struct. didnt manage to get the active sequence to load so currently thats lost when loading.
- removed flag SEQ_ACTIVE
- Added operators cut, mute, unmute, deselect_all, select_invert, select, select_more, select_less, select_pick_linked, select_linked and borderselect.
2009-01-19 21:42:18 +00:00
97692a3bf5 Changes to functions from blender/windowmanager/intern/wm_event_system.c
Python operator api was using WM_operator_name_call() which was confusing things too much.
Added WM_operator_call_py() which ended up being a very small function and split out operator creation into wm_operator_create()

Python operator now runs the poll() function and raises an error if it fails.

Eventually there should be error messages for poll that python can use to give the exact reason for failing (eg - library linked data, no active object...)
2009-01-18 10:46:26 +00:00
c1cf33c8aa RNA
* Added more compact property definitions, with a single function.
  Only used by operators at the moment, would need to tweak regular
  expressions a bit more to use it also for other RNA definitions.

* The operator properties defined now were completed a bit more but
  still have many issues that need to be adressed, specifically;

  * Some properties that should be booleans or enums are defined as
    ints, note that ints are only for numeric values, not bitflags
	or multiple choice.
  * Soft/hard limits and default values of many properties are not
    well defined still,
  * Inconsistent naming, especially for example mouse locations or
    bounds are named differently in different places. Also mouse
	locations and other vector like properties should become a single
	vector property instead of multiple X/Y properties.
  * Almost no properties have descriptions, these would be good to
    have for docs and tooltips.

So, please verify that the properties of the operators you wrote are
well defined.
2009-01-16 23:53:11 +00:00
30e851b8a5 2.5
A small round of warning cleanups; unused variables, missing
headers and some const types.
2009-01-14 16:37:52 +00:00
Nathan Letwory
fecac53522 2.5 / Nodes
* add a list area for material/texture/scene selection.
2009-01-13 19:28:18 +00:00
Nathan Letwory
99d10b7f76 2.5 / Nodes
* [Use nodes] added. For future improvements: a panel which enumerates
  materials, textures and scenes for selection and editing in the opened
  node-editor without having to set it in Buttons (or 'global' scene).
2009-01-12 01:02:52 +00:00
Nathan Letwory
6dc63e054f 2.5 / Nodes
* XKey for deleting selected nodes.
2009-01-12 00:14:37 +00:00
Nathan Letwory
85c4e8fd2a 2.5 / Nodes
* add nodes through header menu (no way to link them yet, though ;)
  Note: the adding needs to be properly operatorfied still.
2009-01-12 00:00:59 +00:00
Nathan Letwory
ab33f8f0c0 2.5
* when reading an old .blend 2.5 crashed on creating input node menu. type->name is for some reason NULL, so add simple check to prevent from happening again.
2009-01-11 23:48:53 +00:00
78e2c81153 2.5
Add missing notifiers to node select, for proper redraw with multiple node windows.
2009-01-07 16:49:11 +00:00
e01b5a0252 2.5
Bugfix: WM gesture manager was not assigning gesture to the 
context-defined region, making border select calls from a
header not work.
This fixes Node header option "Border select".
2009-01-06 10:09:39 +00:00
aa95fc1768 2.5 MSVC9 projectfiles
updates:
* stubs.c was moved from editors/screen to python
* RNA: rna_action.c
* Armature: all in editors/armature added.
2009-01-06 09:08:43 +00:00
Nathan Letwory
8a8585cda9 2.5 / Nodes / Border select
* bring border select (BKey), works in editor, but draws
  badly only in header when initiated from menu, so that's
  commented out for now.
2009-01-05 23:53:04 +00:00
f7cb86df3a 2.5
Think global, act local!

The old favorite G.scene gone! Man... that took almost 2 days.
Also removed G.curscreen and G.edbo.

Not everything could get solved; here's some notes.
- modifiers now store current scene in ModifierData. This is not
  meant for permanent, but it can probably stick there until we
  cleaned the anim system and depsgraph to cope better with
  timing issues.
- Game engine G.scene should become an argument for staring it.
  Didn't solve this yet.
- Texture nodes should get scene cfra, but the current implementation
  is too tightly wrapped to do it easily.
2009-01-04 14:14:06 +00:00
Nathan Letwory
bdf6a002aa 2.5 / Nodes
* add Context accessor for selected nodes
* node translation uses transform code
* put transform defines in an enum (mode and numinput flags)
2009-01-02 23:58:03 +00:00
5d23eaa8f4 python support for reporting with operators.
* errors in python called operators are raised as errors
* Python defined operators errors are reported as errors (not full traceback yet)
* added BKE_reports_string, same as BKE_reports_print but it returns a string rather then printing it.
* WM_operator_name_call optionally takes an initialized report struct
2009-01-02 07:54:38 +00:00
Nathan Letwory
ddabed9c96 2.5 / Nodes - menu header items aligned 2009-01-01 20:31:13 +00:00
Nathan Letwory
0f666dc53e 2.5 / Nodes
* zoom in/out added also as menu entry
* view all operator is now only executed, not invoked.
2009-01-01 20:08:57 +00:00
Nathan Letwory
d130a1ec28 2.5 / Nodes
* invoke View all through header menu :)
2009-01-01 19:03:40 +00:00
Nathan Letwory
029b0c3ecf 2.5 / Nodes
* HOMEKEY enabled (view all), made into operator.
2009-01-01 16:27:02 +00:00
d6e8cd4232 2.5: fix compile error on mac, and a few warnings. 2008-12-30 07:32:14 +00:00
Nathan Letwory
87cae4caed 2.5 / Nodes
* enable more code (button callbacks, will probably undergo revision)
2008-12-29 00:55:23 +00:00
Nathan Letwory
4b3a37db14 2.5 / Nodes
* header: better positioning of buttons, new drawing style was mixing up for old positions.
2008-12-28 23:49:51 +00:00
Nathan Letwory
2529d90985 2.5 / Nodes
* Operator to toggle node visibility (hide/unhide)
2008-12-28 21:41:33 +00:00
Nathan Letwory
2eaf79a53d 2.5 / Nodes
* shift-select operator, inheriting from normal select operator.
2008-12-28 20:49:37 +00:00
Nathan Letwory
f7307c13e3 2.5 / Nodes
* tag region for redraw after select.
2008-12-28 13:24:44 +00:00
f3fe2d0559 2.5
- New icons code crashed when using old (smaller) files, added a check
  and warning print for this case.
2008-12-28 11:28:44 +00:00
Nathan Letwory
e3ddc08e5f * hrmpfs :] 2008-12-28 00:42:01 +00:00