Commit Graph

701 Commits

Author SHA1 Message Date
904665f15b [#20728] "Export UV Layout" overwrites existing files (without feedback)
The 'save over' popup was only appearing based on a string comparison of the operator name ("Save"). Changed this to use a hidden operator property: "check_existing". Python operators must 
have this property for the file selector confirmation too.

This property can also be set to false, to prevent checking for existing files, useful in the File->Save menu item to prevent the dangerously missable confirmation popup.
2010-01-27 02:20:24 +00:00
b119ce5fcc Drag and drop 2.5 integration! Finally, slashdot regulars can use
Blender too now! :)

** Drag works as follows:

- drag-able items are defined by the standard interface ui toolkit
- each button can get this feature, via uiButSetDragXXX(but, ...).
  There are calls to define drag-able images, ID blocks, RNA paths, 
  file paths, and so on. By default you drag an icon, exceptionally 
  an ImBuf
- Drag items are registered centrally in the WM, it allows more drag 
  items simultaneous too, but not implemented

** Drop works as follows:

- On mouse release, and if drag items exist in the WM, it converts 
  the mouse event to an EVT_DROP type. This event then gets the full 
  drag info as customdata

- drop regions are defined with WM_dropbox_add(), similar to keymaps 
  you can make a "drop map" this way, which become 'drop map handlers' 
  in the queues.
- next to that the UI kit handles some common button types (like 
  accepting ID or names) to be catching a drop event too.

- Every "drop box" has two callbacks:
  - poll() = check if the event drag data is relevant for this box
  - copy() = fill in custom properties in the dropbox to initialize 
    an operator
- The dropbox handler then calls its standard Operator with its 
  dropbox properties.

** Currently implemented

Drag items:
- ID icons in browse buttons
- ID icons in context menu of properties region
- ID icons in outliner and rna viewer
- FileBrowser icons
- FileBrowser preview images

Drag-able icons are subtly visualized by making them brighter a bit 
on mouse-over. In case the icon is a button or UI element too (most 
cases), the drag-able feature will make the item react to 
mouse-release instead of mouse-press. 

Drop options:

- UI buttons: ID and text buttons (paste name)
- View3d: Object ID drop copies object
- View3d: Material ID drop assigns to object under cursor
- View3d: Image ID drop assigns to object UV texture under cursor
- Sequencer: Path drop will add either Image or Movie strip
- Image window: Path drop will open image


** Drag and drop Notes:

- Dropping into another Blender window (from same application) works 
too. I've added code that passes on mousemoves and clicks to other 
windows, without activating them though. This does make using multi-window
Blender a bit friendler.

- Dropping a file path to an image, is not the same as dropping an 
Image ID... keep this in mind. Sequencer for example wants paths to 
be dropped,  textures in 3d window wants an Image ID.

- Although drop boxes could be defined via Python, I suggest they're 
part of the UI and editor design (= how we want an editor to work), and 
not default offered configurable like keymaps. 

- At the moment only one item can be dragged at a time. This is for 
several reasons.... For one, Blender doesn't have a well defined 
uniform way to define "what is selected" (files, outliner items, etc). 
Secondly there's potential conflicts on what todo when you drop mixed 
drag sets on spots. All undefined stuff... nice for later.

- Example to bypass the above: a collection of images that form a strip, 
should be represented in filewindow as a single sequence anyway. 
This then will fit well and gets handled neatly by design.

- Another option to check is to allow multiple options per drop... it 
could show the operator as a sort of menu, allowing arrow or scrollwheel 
to choose. For time being I'd prefer to try to design a singular drop 
though, just offer only one drop action per data type on given spots.

- What does work already, but a tad slow, is to use a function that 
detects an object (type) under cursor, so a drag item's option can be 
further refined (like drop object on object = parent). (disabled)


** More notes

- Added saving for Region layouts (like split points for toolbar)

- Label buttons now handle mouse over

- File list: added full path entry for drop feature.

- Filesel bugfix: wm_operator_exec() got called there and fully handled, 
while WM event code tried same. Added new OPERATOR_HANDLED flag for this. 
Maybe python needs it too?

- Cocoa: added window move event, so multi-win setups work OK (didnt save).

- Interface_handlers.c: removed win->active

- Severe area copy bug: area handlers were not set to NULL

- Filesel bugfix: next/prev folder list was not copied on area copies

** Leftover todos

- Cocoa windows seem to hang on cases still... needs check
- Cocoa 'draw overlap' swap doesn't work
- Cocoa window loses focus permanently on using Spotlight
  (for these reasons, makefile building has Carbon as default atm)

- ListView templates in UI cannot become dragged yet, needs review... 
it consists of two overlapping UI elements, preventing handling icon clicks.

- There's already Ghost library code to handle dropping from OS 
into Blender window. I've noticed this code is unfinished for Macs, but 
seems to be complete for Windows. Needs test... currently, an external 
drop event will print in console when succesfully delivered to Blender's WM.
2010-01-26 18:18:21 +00:00
4efed23517 Use #include "BLI_math.h" instead of _USE_MATH_DEFINES to get M_PI defined. 2010-01-26 11:25:39 +00:00
e03bbf12c3 Assorted Bugfixes:
* Adding new Keying Set paths didn't initialise the id-type setting. Make this default to Object
* Fixed bad poll callbacks for Graph Editor operators working on keyframes, which were expecting F-Curves to be selected too to be eligible for editing. This was often too restrictive, resulting in nothing happening.
* Fixed error with default property for Debug Redraw-Timer Operator not being set. However, this operator is currently still no use, since the info popups are now disabled.
2010-01-26 10:29:10 +00:00
4e92b69411 set the keymap to NULL if its not found so as not to use it un-initializes. 2010-01-26 10:14:39 +00:00
ba2257b57e Fix [#20798] - Add/change/remove shortcut options dissapearing from buttons @ Tool Shelf
Made the RMB menus for manipulating shortcuts a bit more robust (only dealing with mouse 
clicks/key events, rather than all tweaks/timers/etc) and added ability to add key shortcuts for 
transform tools from the RMB menu.
2010-01-26 01:02:10 +00:00
4907e8df20 Remove unneeded notifier data added in revision 26219.
Fix a lot of notifier calls to stop abusing ND_TRANSFORM and use more appropriate data flags.
2010-01-25 19:42:33 +00:00
351d239ac7 View3d transform was sending a too-general notifier to redraw, causing several animation editors and the property editor to redraw too, which can really slow things down. added a more specific ND_VIEW3D_TRANSFORM notifier to solve this. 2010-01-24 04:26:01 +00:00
22f7c8b1cd support for compiling blender without python working again (with cmake at least) 2010-01-23 20:43:55 +00:00
b400703403 Macro operator properties using property groups in groups (initial code by brecht).
Works correctly with menu, keymap definitions and keymap export/import.

Properties set in the macro definition overwrite those set by the user (there's no way to see that in the UI at this point).

MISSING: Python operator calling code to fill in the properties hierarchy.

Also contains some keymap export changes by Imran Syed (freakabcd on irc): the exported configuration will use the name of the file and the exported script will select the added configuration when ran.
2010-01-21 21:58:40 +00:00
7ad7820f7f Added a new notifyer, NC_SPACE_CHANGED, to signal an editor that
replaces another so it can do updates (e.g. dopesheet editor can
sync channel selection).

Also coded a simple optimization for allocating small objects,
based on mempools.  It's #ifdef'd out, you can enabled it by 
defining OPTIMIZE_SMALL_BLOCKS (e.g. adding -DDOPTIMIZE_SMALL_BLOCKS to
your compiler flags).

We suffer from a great deal of performance loss from the system allocator
(vgroups, ghash, edgehash, the singly-linked list implementation in blenlib,
editmesh, and likely a great many areas I'm forgetting), and this is the 
common solution for handling the many-small-objects problem.  It's not
really production-ready yet (it's long-term memory consequencers need to
be profiled first, and the implementation tweaked as necassary), but for
people on systems with slow system allocators it's worth trying.

Note that since this creates a guardedalloc<->blenlib link, the build systems
need to be updated accordingly (I've already done this for scons, though I'm
not sure if the player builds).
2010-01-21 03:08:57 +00:00
59bcf6cf4f [#20722] Ignore non-existent files from .Blog
from Sergey Sharybin (nazgul) 
- added own minor changes.
2010-01-19 11:11:56 +00:00
5b78e80fef Fix [#20067] Blender 2.5.0 Alpha0 - Duplicating Window 2010-01-19 06:49:50 +00:00
161ae41c6d load the user prefs before python so the python userdir is read. 2010-01-18 18:52:03 +00:00
969aa8fe6f Fix for window not redrawing properly on resize (on osx at least), add a
NC_WINDOW notifier as well as NC_SCREEN, since both have changed.
2010-01-18 01:59:16 +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
a4732eefa5 a new generic invoke function - WM_enum_search_invoke()
This can search operators enum property.

Make proxy menu could easily get too big. use the new search popup.
2010-01-15 17:23:16 +00:00
2aaee044e5 fix for compiler error, probably unlikely but if 'v' is NULL it could crash. 2010-01-15 17:19:01 +00:00
bd6ce45ef4 Fix [#20129] emulate numpad
Converted Command+LMB to send a RMB click event on Mac OS X, if Emulate 3 Button Mouse is switched on.


Also fixes for previous commit, didn't all go through.
2010-01-15 06:17:28 +00:00
e9e89ecfc3 [#20672] TimeLine (arrows will not proceed animation)
RNA notifiers don't have a window and didn't get picked up correctly by the animation redraw system. If there's no window defined in a scene notifier, handle it anyway if the scene matches (or if there aren't any).
2010-01-14 19:53:26 +00:00
9e79f2d92a [#19978] Can not switch view with keymaps while emulate numpad is activated; in modes other than object and edit
Was caused by event emulation (numpad and mmb) happening separately at each level of the keymap, so brush selection was latching on the event before it had time to test emulated values with view navigation entries (at a lower level in the hierarchy).

After discussion with Matt, decided that event emulation should be done at the root of the event loop, replacing the event with the emulated values. This is much more predictable and more logical as far as event emulation goes.
2010-01-14 18:15:12 +00:00
b886f7ada0 Fix for previous properties editor crash, only remove ui handlers
on new screens. Was preventing openGL render and possibly other 
things from working
2010-01-14 05:21:20 +00:00
f3c89524c3 Fix [#20663] Mouse cursor icon changes back to default in edit mode
Seemed simple but actually turned out to be quite complex.

ND_MODE notifier was being misused, changed to ND_TOOLSETTINGS

Note: Although the fix itself doesn't involve this much, debugging uncovered 
that listeners can't rely on notifier->swinid to be correct, since notifiers can 
now be added from RNA without a region context.
2010-01-14 01:47:25 +00:00
9bcfcfb873 [#20112] User Preferences window causes a crash
Opened preference window caused a crash (context pointing to freed screen) when Load UI was turned off.
2010-01-13 21:37:13 +00:00
76d736edae Makefiles: add -DNAN_BUILDINFO to CPPFLAGS in windowmanager/intern when building with NAN_BUILDINFO
enabled
2010-01-13 19:48:34 +00:00
728359a6a5 Don't loop forever. 2010-01-13 04:27:10 +00:00
6f0acf3cf3 Fix for Martin's fix, caused file selector to stop working.
Fileselect handlers are added to window's modalhandlers, and contain references to 
other areas/regions/etc... Still seems a little bit dodgy, but fixes file selectors for now.
2010-01-13 02:59:42 +00:00
17108481a9 [#20093] Consistent Crash in properties window
Fun bug, took me the better part of the day to track down.

Happens because maximizing swaps spacedata lists between the old area and the newly created maximized area (this one being empty) while ui handlers are still hanging with references to the first area (then trying to access spacedata when handled). And then only if a maximizing operator was run before the UI realign timer event from the previous maximize was handled (fun, I told you).

After discussion with Matt on irc, we decided the best way to deal with that was to remove ui handlers that reference areas of a screen that is no longer used. That solution reflects the fact that the bug is more general that the reproducing steps would lead to believe. There's also absolutely no reason to run UI handlers on invisible areas.
2010-01-12 23:30:19 +00:00
1adab34515 Compile Fix for recent multi touch commit. 2010-01-11 14:23:16 +00:00
d5f5e0cd75 report errors with library linking errors.
uses a hack to set the window for the popup for the menu, which is nasty but artists need to know when their files should not be resaved :(
2010-01-11 11:59:14 +00:00
4a011a99cb Multitouch trackpad 2 fingers gestures implementation
- 2 fingers scroll (MOUSEPAN / GHOST_kTrackpadEventScroll event) pans/scrolls the view
- 2 fingers pinch (MOUSEZOOM / GHOST_kTrackpadEventMagnify event) zooms the view
And in 3D view:
- alt + 2 fingers scroll rotates the view
- 2 fingers rotation (MOUSEROTATE / GHOST_kTrackpadEventRotate) orbits the view.

The implementation uses a new GHOST event type: GHOST_kEventTrackpad, that is then dispatched as Blender MOUSEPAN, MOUSEZOOM
or MOUSEROTATE events.

This is currently fully implemented for OSX (GHOST Cocoa fires the new events), with auto-detection of the source peripheral, so that a regular mouse still sends MOUSEWHEEL events.
2010-01-11 11:14:36 +00:00
a3e461ce1b - player building again
- fix for compiler warnigns
- bpath reporting was incorrect
2010-01-11 10:48:41 +00:00
9d67c720d5 * Tweak for splash screen rev. info - dalai, does this look ok on your machine?
* Added very feint separator lines in menus
2010-01-11 01:26:16 +00:00
6a15ac70b6 [#20581] Lasso tool ends unexpectedly
Don't limit lasso to 1024 points, just realloc array with increased size when current limit is reached.

Also silence two stupid warnings.
2010-01-10 20:16:56 +00:00
b36a05bb7e - fix for crash if drivers were used in the .B.blend
- fix for problem where proxy objects could enter editmode but not exit
2010-01-10 20:01:13 +00:00
Nathan Letwory
c8966e5373 * make sure build info is enabled for BF_BUILDINFO (this is enabled by default, and can be set in your user-config.py or other custom config). 2010-01-10 16:29:53 +00:00
9da2c0c6c2 add OpenCOLLADA support to Makefiles
add "export WITH_OPENCOLLADA=true" to user-def.mk to enable it
2010-01-10 09:11:48 +00:00
d2b27d00ff Fix for clipped text in splash svn version string - I must have been working around an
extra space at the end of local revision version string.. weird!
2010-01-09 00:49:29 +00:00
1f1245a92a Remap Relative paths save option.
If you have a blend file and want to save in a new directory enabling this will save with the paths corrected relative to the new directory.
2010-01-08 17:50:55 +00:00
05af8dfe53 Disable anti-aliasing initialization, was causing GL_SELECT issues
NVidia (at least) GL drivers don't provide correct picking through GL_SELECT when the GL context is initialized with sample buffers.

So we can't have FSAA on for now as it breaks border,lasso,.. select.
2010-01-08 14:40:47 +00:00
ceab17ee17 Fix for problems in previous commit when buildinfo wasn't enabled. 2010-01-08 06:05:42 +00:00
ce538a0694 Added the svn revision number to the splash screen (when buildinfo is
enabled). Also fixed cmake so buildinfo works.


Note to all:
** Please mention the revision number when making a bug report **
2010-01-08 05:51:51 +00:00
bce42d6b5e group instance still didnt work in some cases, now tag ID flag when linking as well as appending so its easy to know if an ID is newly added or not. 2010-01-07 16:19:38 +00:00
ba645ad67e option to instance groups when linking or appending. 2010-01-07 14:28:00 +00:00
f0a22ac2f9 OpenGL anti-aliasing for 3D view, user selectable
Enables AA only for 3D view, and gives the user the option to turn it on/off (in system panel of user prefs)
2010-01-07 10:32:48 +00:00
23764238e5 Replaced lasso gesture filling code with scanfill, not 100% as nice, but simpler and more compatible. 2010-01-07 01:27:10 +00:00
a994a52497 Disable OpenGL anti-aliasing by default for now. 2010-01-06 15:34:49 +00:00
75f190bde8 OpenGL Anti-aliasing implementation for blender windows
Added GHOST_TUns16 numOfAASamples parameter to GHOST_CreateWindow to specify the number of AA samples (null if no AA wanted)
Implemented it in the cascade of GHOST classes.

Full implementation currently done for OSX/Cocoa, stubs for other OSes.
Moguri : it's ready for your win32 implementation !

Note that fallback to a non AA window (if gfx card doesn't support AA) is done inside GHOST OS specific layer, so that blender windowmanager still gets its window created properly.
2010-01-06 11:42:52 +00:00
c37df98806 *Disabled filled lasso drawing on Windows for now, was causing some strange problems,
perhaps GLU incompatibilities? If any Windows GL guru can help here, it would be 
most appreciated!
2010-01-06 06:51:04 +00:00
0c64d6d71e Small tweaks to gesture drawing to show the filled selectable area.
Gives nice feedback for what will be selected, especially with lasso.
2010-01-06 04:52:13 +00:00