- made grid drawing using the main theme color
- was annoyed with the primitive grid... so coded something that allows
zooming in and out a 100fold without losing gridlines
- brought back 'NKEY' for mesh editmode
- added to this a 'median' option; when more vertices selected you see
the average coordinate. works nice when inputting values as well
(todo: make this for other editmodes)
- renamed the 'NKEY' panel to 'Transform Properties', also fixed in
pulldown menu.
I am off for the rest of the day. More committing fun tomorrow!
-Ton-
- panels work
- ipo window done
- buttonswindow done
Please be warned that saving Themes now wont work... it will also save
BLACK for all uninitalized colors... so dont panic when you see weird
things, just go back the default theme and copy a new one.
some small things to fix:
- cutting on 1 face doesn't work
- options now under shift/ctrl R, they will be under a K menu that will contain DetectiveThorn's Knife tool too.
Roel
input
- was needed for usage of this windowtype (headerless) as 'timeline'
dragger, which was supposed to be...
- as extra I fixed 'home', it sets start/end frame for sound window
- at mouselocation the current frame or time is printed
- rightmouse menu switches seconds/frames (should be in header as option...)
- displaybutton 'frs/sec/' updates soundwindow too
So, its not perfect... but try opening a tiny high headerless audio
window on top of buttonswin or somewhere full width. not bad...
- currently only implemented for 3d window
- create as many themes you like, and name them
- default theme is not editable, and always will be defined at startup
(initTheme)
- saves in .B.blend
- themes for spaces can become local too, so you can set individual
3d windows at theme 'Maya' or so. (to be implemented)
- it uses alpha as well...!
API:
This doesnt use the old method with BFCOLORID blahblah. The API is copied
from OpenGL conventions (naming) as much as possible:
- void BIF_ThemeColor(ScrArea *sa, int colorid)
sets a color... id's are in BIF_resources.h (TH_GRID, TH_WIRE, etc)
- void BIF_ThemeColorShade(ScrArea *sa, int colorid, int offset)
sets a color with offset, no more weird COLORSHADE_LGREY stuff
- void BIF_GetThemeColor3fv(ScrArea *sa, int colorid, float *col)
like opengl, this gives you in *col the three rgb values
- void BIF_GetThemeColor4ubv(ScrArea *sa, int colorid, char *col)
or the one to get 4 bytes
ThemeColor calls for globals (UI etc) can also call NULL for *sa... this
is to be implemented still.
Next step: cleaning up interface.c for all weird colorcalls.
I had to clean up very old calls to switch matrices for 3d windows.
To make it more clear, I've introduced defines for the infamous persp()
function:
persp(PERSP_WIN); sets matrices at pixel level window
persp(PERSP_VIEW); restores matrices back to 3d drawing
persp(PERSP_STORE); only called once, to store correct matrices
I will now check on frontbuffer drawing of vertices... it's very doubtful
if it's used still correctly, was only meant for visual speed in the
early nineties you know. :)
- you can close them (x icon) or press ESC
- option to open panel at mouse location (try Nkey)
- using 'collapse' (triangle icon) stows header in bottom
- opening again restores at old location
- dragging panels or zooming clips nicely with window
evaluate: an 'auto close' when mouse goes outside panel
Warning: vertex selecting still broken! :) It's 2 am now, bedtime...
include only (use BIF_interface.h instead)
- split up interface.c in two files: NEW: interface_panel.c
- removed the temporal text files
WARN: FIX AUTOMAKE AND MSVC!
- join 3d window could crash... unchecked pointer in interface.c
- setting align in buttonswin caused stripes to draw in view3d-panels
- fixed events for new 'background and view settings menu'
more consistent and logical. (ICONROWs haven't
scrolled left/right in years!
More detailed tweaking of headerbuttons positions can come when
more menus are finished
- added text labels to the drawtype menu in 3d view header
- with mouse in Panel, padplus/minus defines scaling of Panel... dunno if
this is the correct key. thats for later to worry!
Forgot to mention in previous commit:
- Panels now have a uiSetPanelStyle() API call. Is under construction...
now for test purposes mostly.
window (type)
- each SpaceData struct (not the window!) can get 'block handlers'
assigned, basically event codes that invoke drawing button panels.
- this is saved in files, and Panels behave in any window like it does now
in buttonswindow
- it also means that a 'space window' should leave with a matrix set for
buttons level
- try it in view3d header menu, 'view'->'backdrop'. this opens the old
viewbuttons
- it all works non blocking! instant updates of viewbuttons visible in
3d window now.
Not done yet:
- checking and fixing frontbuffer drawing (select a wireframe draws over)
- temporally vertices cannot be selected, is my next project
- closing or hiding Panels...
- styling stuff... i committed for others to review as well.
Have fun. this is certainly a huge improvement over the old viewbuttons!
- in 'Horizontal Align' mode, Panels now close as a vertical bar
- switching align modes, also switches how closed Panels are drawn
- opengl nor ftgl support vertical string drawing... so for now it only
draws the capitals of the Panel title in a horizontal collapsed header
- converted sound buttons, part of Scene
- special request Matt: headers of windows 2 pixels higher! (test)
- special request Stefano: icons instead of menu for buttons-header
- 'data browse' buttons now almost all in buttonswindow.
- almost all buttons have been panelized now.
next stage: cleaning up usage of color in Blender, to allow presests!
performance, gave display errors in some occasions.
now its moved to the main drawing loop, which is not for each event
luckily.
tested at windows by ztonzy
i tried to find place for it in the other menus, like material, object,
camera, etc. But thats hard... now it's just one nice Panel, without
the idiot headerbuttons icons!
- changed drawing of 'tabbed' Panels. The old method takes too much space.
hint from xype! Dragging tabbed Panels can be done with the right hand
circle. designers are welcom to tweak this.
main reason: dragging is not meant to be happening a lot... pressing tabs
is more important.