Commit Graph

101 Commits

Author SHA1 Message Date
8b7482892b made most variables which are only used in a single file and not defined in header static for blenlib, blenkernel and editors. 2011-02-14 17:55:27 +00:00
c7834e0e6e And here's a decent fix for correctly recognizing the the
.blend1 etc backups. 
Proves again that lazy coders only make bad code :) 

Implementation note:
The filewindow now recoginizes .blend version backups as
a special type, so filtering for .blend files themselves
ignores it. However, they're recognized correctly as valid
.blend files, and draw an icon as .blend file when filtering 
is off. Can become a distinct icon if we want...
2011-01-30 13:12:03 +00:00
f6d73fdfee == file browser ==
bring back nice shortening of filenames in thumbnail view, shortening at front and end is confusing.
- adds ... at the end to indicate that the filename has been shortened
- also cuts off at the end and not at both front and end now

Note: maybe this can be moved into button code or so in the future, but for now should work.
2011-01-17 20:10:18 +00:00
63018144ba remove redundant assignments & unused vars.
also minor functional changes
- OBJECT_OT_make_links_data() type property is now assigned to the operator property (so popup menu can find it)
- removing BG image now returns cancelled if no image is removed.
2011-01-12 03:41:12 +00:00
8f21a43535 split BKE_utildefines.h, now it only has blender specific defines like GS() MAKE_ID, FILE_MAXDIR, moved the generic defines to BLI_utildefines.h.
no functional changes.
2011-01-07 18:36:47 +00:00
9129750787 Bugfix #25231
File Window: text clipping was tiny bit too narrow. It was also
clipping text twice even ;)
2010-12-15 15:56:06 +00:00
b45c3363fd fix for some pedantic warnings. 2010-12-03 01:52:28 +00:00
25bd3feeb5 == filebrowser ==
* compile fix on non-Windows platforms.
2010-11-14 11:59:42 +00:00
2e84732228 == filebrowser ==
* drawing code cleanup.
* list drawing code now uses uiStyleFontDraw like buttons etc.
2010-11-14 10:48:36 +00:00
55923d1044 compiler warning fixes 2010-11-07 23:22:40 +00:00
6900d71ac6 Remove code duplication.
Will look into nicely using uiStyleFontDraw later.
2010-11-07 18:16:27 +00:00
4741dd26d3 Enabled kerning for the default UI font for the places that are using UI_DrawString still and for filebrowser.
Makes text more readable :)
2010-11-07 18:01:32 +00:00
5b0e1520cf == filebrowser ==
Center Text underneath the icons in thumbnail view. (Small request from Sergey)
2010-11-06 17:03:11 +00:00
dcda17b3b3 == filebrowser ==
Bringing back missing feature: Create new directory by typing a not existing name into the directory button.

Note: Small issue still with autocomplete -> if typing the new directory directly after autocomplete, it doesn't execute the operator yet.

Also fixed some minor compile/cleanup issues with warning about signed/unsigned comparison and missing header.
2010-11-06 16:09:12 +00:00
4d37cf90b9 remove G.sce, use G.main->name instead.
Both stored the filename of the blend file, but G.sce stored the last opened file.
This will make blender act differently in some cases since a relative path to the last opened file will no longer resolve (which is correct IMHO since that file isnt open and the path might not even be valid anymore).

Tested linking with durian files and rendering to relative paths when no files is loaded however we may need to have some operators give an error if they are used on the default startup.blend.
2010-10-18 06:41:16 +00:00
e5fbd93cec editors/space_* build without unused args warnings 2010-10-16 08:03:28 +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
df4dd70d7b various utf8 compatibility fixes
- OBJ import/export now work with non utf8 paths. (all exporters and importers need changes like this)
- strip non utf8 chars from new ID blocks (also applies to renaming)
- set the file rename button to allow non-utf8 chars.
2010-08-30 08:28:48 +00:00
f28b5e672e python/utf8 compatibility fixes. (as discussed on the mailing list)
- user input gets non utf8 chars stripped all text input other then file paths.

- python has the same limitations, it will raise an error on non utf8 strings except for paths use unicode escape literals so its possible to deal with saving to these file paths from python.

- new string functions
  BLI_utf8_invalid_byte(str, len) returns the first invalid utf8 byte or -1 on on success.
  BLI_utf8_invalid_strip(str, len) strips non utf-8 chars.
2010-08-28 12:34:22 +00:00
Nathan Letwory
0b40901bab Patch [#23437] Fix for buffer overflow in filebrowser
Contributed by Alexander Kuznetsov
2010-08-26 07:26:13 +00:00
ac133d5d26 bugfix [#23270] Long directory name segmentation fault in File brower
file->relname was being edited when its length allocated at the size of the original name, realloc'ing failed because the old string was still used by a button.
2010-08-12 00:14:32 +00:00
f2d77e4496 remove unused includes from editors/space_* 2010-08-08 08:14:07 +00:00
5be1fd3592 == filebrowser ==
- smooth scrolling to editable button after new directory is created
(for now scrolling starts as soon as the mouse moves back to the file list area, for Matt to check if immediate scrolling is possible)

- fix for autocomplete directory, show first matching part if directory doesn't exist, otherwise won't work for directories starting with the same prefix like textures_walls and textures_grass for example.
2010-05-08 21:02:22 +00:00
14b41f9078 bugfix [#22276] filemanager autocompleate based on current path
also added autocomp to filename in fileselector
2010-05-07 23:34:03 +00:00
a56b72fd82 BugFix:
[#20854] PROPERTIES STAMP: Rendering stamp flickers in output renders

Blenfont was not thread safe, that is why one thread can change
the font properties (size, dpi, color, etc) at the same time
that the stamp draw on the image, and then the problem.

To make blenfont thread safe I have to change two important things:

1) Every BLF_* function take one argument, the font id.
2) We have two new function to make font "thread safe":
	BLF_load_unique
	BLF_load_mem_unique

This two function are for case like stamp, that need and own font
that don't share the glyph cache, so can draw without problem
in a different thread.

Why the BLF_*_unique function ?

Because blenfont keep only one copy of a font and keep a list of
"glyph cache". Every glyph cache have size and dpi, so if two
different thread access the same font at the same time, they can
change value and finish with something like the stamp problem.

Why don't remove the glyph cache ?

Because if we do that, we finish with a font object for every size
and dpi, and the stamp is really a special case that happen in
the rendering process, so I really thing is better keep the
glyph cache and make this two new function to handle this
special case.

(When I say "font object" I mean have the same freetype font multiple
times just to have differents size and dpi)

As Matt point we still can have one case that two thread access
the BLF_*_unique function at the same time, but I am looking to
fix this with some class of thread lock.

For now I test and work fine, so if some one found problem, please
let me know.

Campbell I have to change the python api (python/generic/blf_api.c)
to the new syntax, so maybe you can take a look at this.
2010-04-22 10:56:45 +00:00
4a99303967 == file browser ==
Select from last selection. This new setting allows to select all files from the last selected to the current. (Works like SHIFT+SELECT in Windows file browser)
Keymap is LEFTMOUSE+ALT for now since LEFTMOUSE+CTRL is already used for renaming (like in outliner)
2010-04-19 19:29:40 +00:00
2f56d8d2e7 Fix [#22056] Minor UI problem in File Browser 2010-04-19 04:39:01 +00:00
19fb497d13 Fix a few warning in editors/ module. 2010-03-30 11:38:06 +00:00
9a99b7d193 Fix [#21083] Collada exporter defaults to ".blend" extension...
Also added a filter category for COLLADA files to the file selector.
2010-03-29 08:33:35 +00:00
f743b583bf more lint includes
Only source/blender/editors/ dir, should not give errors on different platforms
Only removing:  UI_*.h, ED_*.h, WM_*.h, DNA_*.h, IMB_*.h, RNA_*.h, PIL_*.h
2010-03-23 14:09:09 +00:00
1e9bf0cfdb spaces -> tabs, (4 spaces == 1 tab, only for white space preceding text) 2010-03-22 09:30:00 +00:00
42ac4a3e7d Fix syntax for ID keyword. 2010-03-21 01:14:04 +00:00
35a5be71e7 Fix [#20908] Box Select On File/Append Selects Too Many Files 2010-03-18 04:09:59 +00:00
8fdb4d4506 Fix [#21618] Wrong Icon For BLEND file on File/Append
While the folder icon was originally planned when in append/link mode, it's easier to distinguish with a blender icon, so the folder icon is now replaced.

Also fixed issue introduced in rev. 27491 where filter settings were incorrectly set when moving out of .blend file again.
2010-03-15 20:28:13 +00:00
c0b3ab6ceb filebrowser:
* move own thread handling for thumbnails to WM_jobs 
* cleanup of thumbnail creation code
* added function to kill the job, which actually allows thread to terminate gracefully

vc9 projectfiles:
* fixed some missing includes for release target!
2010-03-10 19:30:20 +00:00
74d58017e6 Fix tiny drawing offset in file selector 2010-03-09 07:03:58 +00:00
b02f78ed02 Using multiline descriptions like this:
"""                                                                                              
    Fixes the most common causes of gimbal lock in the fcurves of                                    
    the active bone.                                                                                 
    """
is causing bad glitches (boxy characters) on the tooltips..
2010-02-14 07:05:50 +00:00
081c1205a3 correct fsf address 2010-02-12 13:34:04 +00:00
f8455a8d40 filebrowser
* after renaming, the file name and highlight are drawn immediately.
2010-02-08 22:44:55 +00:00
4279e6d1fd Added a comment in the code about a timer that is not being freed and
is causing the smooth view operator to run all the time after closing
the file browser, since I can't think of a good way to fix it at the
moment.
2010-01-30 09:17:32 +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
973128dc66 Fix for crash in file selector using the 'Open' button - button was using old UI
code, changed it to operators
2010-01-20 12:28:33 +00:00
009ed7dc26 Fix [#20703] Minor UI bug in file browser 2010-01-18 03:36:19 +00:00
acadb8c39f Sculpt Branch:
Revised external multires file saving. Now it is more manual in that you
have to specify where to save it, like an image file, but still saved at
the same time as the .blend. It would ideally be automatic, but this is
difficult to implement, so for now this should at least be more reliable.
2009-12-10 14:26:06 +00:00
39d62a12d9 *Started to add theme editing in Preferences. Isn't visible in the UI yet.
*Moved some preferences around
*Changed the file browser '..' icon (Thanks Elubie!)
2009-10-26 11:03:12 +00:00
cb8f7fd385 Auto Save
Auto save is now working again in 2.5. It will also remember now what
the location of the original file was when recovering it, so that
library links still work and saving the restored file does not save to
the temp directory. There is also a new Recover Auto Save operator
which will open the filebrowser in the temp directory and show the
auto saved .blends.

Implemenation Notes:

* Timer storage was moved from window to windowmanager, so we can have
  windowmanager level timers too now, doesn't make sense to have
  autosave timer attached to a particular window.
* FileGlobal now has a filename field storing where the file was saved.
  Note that this is only used when loading a file through the recover
  operators, regular file read doesn't use it, so copying the quit.blend
  manually over the original file will still work as expected.
* Jobs timer no longer uses operator now, this seems more like an
  internal thing, changing keymaps should not make it possible to break
  the jobs manager.
* Autosave is postponed by 10 seconds when a modal operator is running,
  e.g. transform or file browsing.
* Moved setting G.sce in setup_app_data before depsgraph updates, these
  can use the filename for pointcaches.
2009-10-20 13:58:53 +00:00
15d07720e5 Sorry, three commits in one, became difficult to untangle..
Editors Modules

* render/ module added in editors, moved the preview render code there and
  also shading related operators.
* physics/ module made more consistent with other modules. renaming files,
  making a single physics_ops.c for operators and keymaps. Also move all
  particle related operators here now.
* space_buttons/ now should have only operators relevant to the buttons
  specificially.

Updates & Notifiers

* Material/Texture/World/Lamp can now be passed to DAG_id_flush_update,
  which will go back to a callback in editors. Eventually these should
  be in the depsgraph itself, but for now this gives a unified call for
  doing updates.
* GLSL materials are now refreshed on changes. There's still various
  cases missing, 
* Preview icons now hook into this system, solving various update cases
  that were missed before.
* Also fixes issue in my last commit, where some preview would not render,
  problem is avoided in the new system.

Icon Rendering

* On systems with support for non-power of two textures, an OpenGL texture
  is now used instead of glDrawPixels. This avoids problems with icons get
  clipped on region borders. On my Linux desktop, this gives an 1.1x speedup,
  and on my Mac laptop a 2.3x speedup overall in redrawing the full window,
  with the default setup. The glDrawPixels implementation on Mac seems to
  have a lot of overhread.
* Preview icons are now drawn using proper premul alpha, and never faded so
  you can see them clearly.
* Also tried to fix issue with texture node preview rendering, globals can't
  be used with threads reliably.
2009-09-29 19:12:12 +00:00
0356b92d46 File Browser fixes:
* The code to draw only visible items was not working, giving slow
  performance with many files (bug #19469).
* Fix detailed list display on non-windows, would give overlapping text.
* Fix folders with many files not displaying all items, changed short to
  int in various places, was overflowing.
* Recreate layout on area resizes, file view gets out of sync otherwise.
* Workaround for v2d height not being correct with image display due to
  scrollers.
* Fix view2d code to compute minimum scroller size, this would make the
  scroller go outside of its bounds.
2009-09-28 12:10:23 +00:00
6d4fb84c4e 2.5 filebrowser
* fix crash in autocomplete for very long paths
* allow longer paths in directory button
* added some TODO comments for G.lib
2009-09-20 19:10:12 +00:00
c1100361e2 2.5 filebrowser
* code cleanup: remove duplication in drawing, join list and preview drawing
2009-08-20 18:39:25 +00:00