Commit Graph

3471 Commits

Author SHA1 Message Date
306b3de751 selectrandom mesh , temp using space key 2009-01-31 23:57:04 +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
59534ac589 2.5
Edit Mesh
Added the two other 'select similar' ops, for edge and face.

For testing fun I've put these ones as first keys using the
modifier order feature. So it's now:

SHIFT+G :     similar vertex
CTRL+SHIFT+G: similar edge
SHIFT+CTRL+G: similar face

Not very useful here; but I think this can work well to map
a double amount of options under mouseclicks. Power user 
config stuff!
2009-01-31 16:54:37 +00:00
db2bb765f9 2.5
Edit Mesh

- "Select Similar" for vertices back.
  (Put under Jkey for now)
- renamed operator righthand_faces to consistant_normals
  gave it boolean property for 'inside'.
2009-01-31 15:21:26 +00:00
86a2a0f694 2.5
Edit Mesh:

- Added back "Edge Shortest Path select"
  It now also does regular selection, more fun! 
  It's mapped to CTRL+click now, and makes or clears selections 
  between current and previously activated edge.
  Seam/Sharp/etc marking is a toolsetting mode still. These
  options cannot become properties easily, because the tool
  uses the properties of selected edge to clear...

- Removed a whole bunch of G.f flags, related to mesh drawing.
  It's all now local in me->drawflags. Here's the list of
  removed old globals:

G_DRAWEDGES
G_DRAWFACES
G_DRAWNORMALS
G_DRAW_VNORMALS

G_ALLEDGES
G_HIDDENEDGES

G_DRAWCREASES
G_DRAWSEAMS
G_DRAWSHARP
G_DRAWBWEIGHTS

G_DRAW_EDGELEN
G_DRAW_FACEAREA
G_DRAW_EDGEANG
2009-01-31 13:30:56 +00:00
a60413abd1 2.5
Edit mesh:
- fixed compile, shul only committed the function declaration, not 
  the code for 'make fgon'. 

- Put the Fgon option under:
  ALT+F: make fgon
  SHIFT+ALT+F: clear fgon
  (note, SHIFT+F = fill :) 

- Fixed loop select to use two booleans, as Martin pointed me
  correctly at! Using 1 variable was lazy coding.
2009-01-31 09:23:17 +00:00
5ed79ee9d9 make and clear fgon MKEY and shift+MKEY. ton: please check, it doesn't do what it should right now 2009-01-31 03:23:41 +00:00
babb973964 delete menu is back with XKEY. 2009-01-31 02:37:50 +00:00
05e04c5e45 delete menu is back DKEY. seperating may be needed to delete_mesh 2009-01-31 02:31:58 +00:00
a7b0df894e 2.5
Edit Mesh: Fkey back, add edge-face or fill 'edge net'
Make fgon will be different operator.
2009-01-30 19:14:50 +00:00
30ee0806fb 2.5
Edit Mesh Loop select back; 
the versions with ALT+Select (edgeloop) or with
ALT+CTRL+Select ('ring'). Hold shift for extend.
2009-01-30 18:53:54 +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
a64260263e merge with 2.5 at r18751 2009-01-30 15:48:38 +00:00
b50ef7af14 2.5
Edit mesh: Separate options back. Use SHIFT+P for it, PKEY has been
stolen! :)
2009-01-30 15:01:14 +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
5f9ee2cbfe 2.5
- Made WM_cursor_wait() work without context or pointers,
  like old waitcursor(). Only use when operations entirely
  block UI. It will set waitcursor for all open windows.

- Cleanup in mesh tools, removing old cruft, and prepare
  for more goodies for shul to work on!
2009-01-29 18:54:22 +00:00
78ffacad41 merge with 2.5 at r18679 2009-01-26 13:19:52 +00:00
3c088f3434 2.5
Simple toolbox-style menu system. Brecht will review it
though, and/or check on way to use it for menus.
I tried to avoid uiBlock and rna stuff all over. :)

Quick image test:
http://www.blender.org/bf/rt.jpg

Examples you can read in:
- editors/screen/screen_ops.c:testing123() (press F5)
- editors/object/object_edit.c:object_add_primitive_invoke()
  (press SHIFT+A)

Concept is simple:

uiMenuBegin(): returns a handle.
uiMenuEnd(): puts it all to work.

In between you can add items like:

uiMenuItemVal(): a name, icon, retval (use uiMenuFunc()) 
uiMenuItemO(): an operator + icon
uiMenuItemEnumO(): an operator, property name, value

Sublevels go easy too:

uiMenuLevel(): creates item for sublevel, with function pointer.
     Inside that function you can use all menu calls again.
     Levels can go as deep you want.

uiMenuLevelEnumO(): creates operator sublevel for an enum
2009-01-25 20:22:05 +00:00
3e6b5804fd editmesh face menu back, ctrl-pkey 2009-01-24 22:21:12 +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
b7f0add801 remove doubles op, ton: is this working properly? 2009-01-23 03:07:07 +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
c1847eac84 tesselator/triangulator improvements, it now works a lot better, though still not perfectly 2009-01-22 07:06:25 +00:00
e43fa0eb82 conversion code now uses triangulator for fgonafication of ngons. also implemented a collapse vert operator (execute it with jkey). note to Briggs: BM_Collapse_Disk wasn't quite finished. . .I got it to mostly work, but it still needs work (and the way I had it handle 2- and 3-valence verts may be wrong). Also it can make 2-edged faces in certain situations. Need to work through the code some more. 2009-01-21 10:11:01 +00:00
d1f90443bb got triangulator to work, and made it a bmesh operator. also added dissolve faces operator, with no implementation (need to discuss with Geoffry how best to do this). the bmesh test operator, jkey, now maps to the triangulator. 2009-01-21 07:03:39 +00:00
8e996b4a6e merge with 2.5 at r18598, also made the test 2.5 operator use the (naive) edge subdivide bmop 2009-01-21 05:23:39 +00:00
bd9e896e96 2.5
View3D four-split: added box-clip for the three ortho
windows. Is all on by default, waiting for headers and
buttons to come back.

Also: hotkey for foursplit now also removes it (toggle)

Also: window_to_3d() function only did delta's, 
renamed it to window_to_3d_delta  and coded a 
real window_to_3d()
2009-01-20 18:31:11 +00:00
33ab2636df subdivides are now grouped in a menu - WKEY 2009-01-19 18:36:54 +00:00
bc63213844 2.5
View3D has been split now in a local part (RegionView3D) and a
per-area part (old View3D). Currently local is:

- view transform
- camera zoom/offset
- gpencil (todo)
- custom clipping planes

Rest is in Area still, like active camera, draw type, layers,
localview, custom centers, around-settings, transform widget,
gridlines, and so on (mostly stuff as available in header).

To see it work; also added new feature for region split, 
press SHIFT+ALT+CTRL+S for four-split. 
The idea is to make a preset 4-split, configured to stick
to top/right/front views for three views.
Another cool idea to explore is to then box-clip all drawing
based on these 3 views.

Note about the code:
- currently view3d still stores some depricated settings, to
  convert from older files. Not all settings are copied over
  though, like custom clip planes or the 'lock view to object'.
- since some view3d ops are now on area level, the operators
  for it should keep track of that.

Bugfix in transform: quat initialize in operator-invoke missed
one zero.

Als brought back GE to compile for missing Ipos and channels.
2009-01-19 16:54:41 +00:00
9b049d89a1 set min/max for added prims according to 2.48 2009-01-19 16:46:41 +00:00
b0cfd5aa57 merge with 2.5 at r18570 2009-01-19 06:04:57 +00:00
5679fbc8ec added bmesh test op and made the dupeop.c stuff work, hopefully correctly. 2009-01-19 02:35:26 +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
a6edbba8ec 2.5
- Added shift+d duplicate for object and editmode mesh.
  Note it uses WM_operator_name_call(), which is fine now,
  but in future might put again 2 undo's and operators on
  the stack. 
  Will have to spend some time on how Macros will work!

- added itterator CTX_selected_editable_objects()
  (named it first "edible" but that was too funny!)
  Also cleaned object_edit.c to use this correctly.

- added CTX_wm_view3d(), especially for hybrid tools
  that *can* use view3d, but don't have to.
  
- moved debug -d print for operators to the real invoke call
2009-01-17 18:35:33 +00:00
5caec606de 2.5
Made 'select linked' in mesh editmode work (LKEY).
Also added counterpart work with boolean (SHIFT+L).

Brecht: thanks for easier rna property defs :)
2009-01-17 16:11:12 +00:00
8777182952 RNA: forgot to rename some values in the keymaps in last commit. 2009-01-16 23:58:10 +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
e6b8687237 added ops for subdivide, subdiv multi, subdiv smooth, subdiv fractal 2009-01-16 04:48:33 +00:00
2784d5b995 2.5
- Finished adding primitives in Mesh editmode. 
  For test pleasure: hotkeys CTRL 0-9 add them.

More fun for testers: 
 
- F3: gives menu of all registered ops. You can use
  it too, it then execs it again, and makes it the
  last executed operator.
  
- F4: executes last registered operator without menu.
2009-01-15 18:28:40 +00:00
237cd7a7a7 2.5
- Depricated another bunch of globals; all the totobj,
  totmesh, totvert, and so on.
- All code that needs such totals now count it themselves,
  these stats were not supposed to be reliable
- Editmesh now stores and manages own totals.
- Todo: make a scene->stats that tracks notifiers.

Bugfix: selecting failed in editmesh, backbuffer stuff was
too late, already using index ranges before it was set.
2009-01-15 15:01:39 +00:00
ac91b159ae disallow identifiers with spaces 'cap end' wasn't working with the python api and made doc generation fail 2009-01-15 05:41:25 +00:00
52135dd4fa 2.5: Space Image ported back
Organized as follows:

uvedit/
	uv editing related code
	uvedit_draw.c: drawing code
	uvedit_ops.c: operators, just a few done
	uvedit_unwrap_ops.c: will be operators for unwrapping
	uvedit_paramatrizer.c: lscm/abf/stretch/pack

space_image/
	space_image.c: registration and common getter/setters
	image_draw.c: drawing code, mostly functional
	image_panels.c: panels, all commented out
	image_render.c: render callbacks, non functional
	image_ops.c: operators, only view navigation done
	image_header.c: header, menus mostly done but missing buttons

Notes:
* Header menus consist only of Operator and RNA buttons, if they
  are not implemented they're displayed grayed out. Ideally the full
  header could work like this, but std_libbuttons looks problematic.

* Started using view2d code more than the old code, but for now it
  still does own view2d management due to some very specific
  requirements that the image window has. The drawing code however
  is more clear hopefully, it only uses view2d, and there is no
  switching between 'p' and 'f' view2d's anymore, it is always 'f'.

* In order to make uvedit operators more independent I move some
  image space settings to scene toolsettings, and the current image
  and its buffer is in the context. Especially sync selection and
  select mode belonged there anyway as this cannot work correct with
  different spaces having different settings anyway.

* Image paint is not back yet, did not want to put that together with
  uvedit because there's really no code sharing.. perhaps vertex paint,
  image paint and sculpt would be good to have in one module to share
  brush code, partial redraw, etc better.
2009-01-15 04:38:18 +00:00
18b1bc88f7 edit mesh primitives: ctrl+1 to ctrl+6. monkey does not show and tube,cone and cylinder show with problems 2009-01-15 03:05:19 +00:00
029bbb3489 2.5
Editmesh: add primitive basics back. Had to clean up a load of
crap there... but it's sorta in control, so I think Shul can
pick it up again.

Test: ctrl+0 adds plane, or ctrl+9 adds grid.

Notes for Shul:
- i've added a transform function, which gets correctly passed
  on to the add_prim function, should work for all object 
  transforms. Only the code inside add_prim might be needed
  to check (it uses 4x4 mat now, not a 3x3)

- The old code with buttons has been ifdeffed out, check for
  user input and make it rna properties, which get read
  in the exec(), and handed over to the add_prim. Set them
  default now to the values from old buttons.

- Operator naming is preferred lower case, I gave this
  a new name.

- check a bit on formatting code, but don't use the old code
  as example! Look also at ED_keymap_mesh() for example.
2009-01-14 19:26:11 +00:00
b8dac71bda 2.5
- restored three more C files: editlattice, editkey
  and editgroup
- editmode lattice working, (mouse select works)
- accidentally removed yesterday 3d cursor drawing
- removed global editLatt entirely now.
2009-01-13 15:18:41 +00:00
d8a269541f edit mesh operators for edit mesh view 2009-01-13 02:09:58 +00:00
1beef956ca 2.5
Instead of many commits, here 1!

- Constraint edit code back
- Removed XXX stubs for constraints
  (make parent follow path works)
- Removed XXX stubs for armature
  (make parent deform, do center, etc works)
- Found a bad uninitialized global Scene * in code, especially
  in kernel it wreaked havoc.
- added missing include in blenkernel/brush.c
- fixed Nicholas' fix for editmode subsurf crash
  (It needed to check for editmode)
2009-01-10 19:34:23 +00:00
619e5423fb 2.5
Removed another bad global "editbutvweight", a value from buttons
used to paint weights with, or to set weights. Is now part of
weightpaint struct in scene.
2009-01-10 17:20:34 +00:00
dd97c08006 2.5
- Weightpaint back (CTRL+TAB or menu)
  Also weightpaint is sortof non-modal, allowing to use all existing
  hotkeys while in paint mode. Only leftmouse is overridden.
- Made vpaint and wpaint entirely local, stored in scene (and saved!)
- Small bugfix (also in 2.48): on weightpaint mode, all armature objects
  in 3d window were drawing as active poses. Now only the armature 
  deformer is.

Nice point for the UI agenda: are paint modes on ACTION mouse? Only then
you can combine it with SELECT mouse...
2009-01-10 14:19:14 +00:00