svn merge ^/trunk/blender -r40405:40431

This commit is contained in:
Campbell Barton 2011-09-23 11:30:55 +00:00
commit 5bd83eede0
92 changed files with 644 additions and 677 deletions

@ -130,6 +130,10 @@ help:
@echo " * package_pacman - build an arch linux pacmanpackage" @echo " * package_pacman - build an arch linux pacmanpackage"
@echo " * package_archive - build an archive package" @echo " * package_archive - build an archive package"
@echo "" @echo ""
@echo "Other Targets"
@echo " * translations - update blenders translation files in po/"
# TODO, doxygen and sphinx docs
@echo ""
@echo "Testing Targets (not assosiated with building blender)" @echo "Testing Targets (not assosiated with building blender)"
@echo " * test - run ctest, currently tests import/export, operator execution and that python modules load" @echo " * test - run ctest, currently tests import/export, operator execution and that python modules load"
@echo " * test_cmake - runs our own cmake file checker which detects errors in the cmake file list definitions" @echo " * test_cmake - runs our own cmake file checker which detects errors in the cmake file list definitions"
@ -156,6 +160,16 @@ package_archive:
@echo archive in "$(BUILD_DIR)/release" @echo archive in "$(BUILD_DIR)/release"
# -----------------------------------------------------------------------------
# Other Targets
#
translations:
$(BUILD_DIR)/bin/blender --background --python po/update_msg.py
python3 po/update_pot.py
python3 po/update_po.py
python3 po/update_mo.py
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Tests # Tests
# #

@ -48,11 +48,11 @@ def get_platform(filename):
tokens = filename.split("-") tokens = filename.split("-")
platforms = ('osx', 'mac', 'bsd', platforms = ('osx', 'mac', 'bsd',
'win', 'linux', 'source', 'win', 'linux', 'source',
'irix', 'solaris') 'solaris')
platform_tokens = [] platform_tokens = []
found = False found = False
for i, token in enumerate(tokens): for token in tokens:
if not found: if not found:
for platform in platforms: for platform in platforms:
if platform in token.lower(): if platform in token.lower():

@ -43,6 +43,7 @@ CHECKER_ARGS = [
# "--enable=all", # if you want sixty hundred pedantic suggestions # "--enable=all", # if you want sixty hundred pedantic suggestions
] ]
def main(): def main():
source_info = project_source_info.build_info(ignore_prefix_list=CHECKER_IGNORE_PREFIX) source_info = project_source_info.build_info(ignore_prefix_list=CHECKER_IGNORE_PREFIX)
@ -58,7 +59,7 @@ def main():
check_commands.append((c, cmd)) check_commands.append((c, cmd))
for i, (c, cmd) in enumerate(check_commands): for i, (c, cmd) in enumerate(check_commands):
percent = 100.0 * (i / (len(check_commands)-1)) percent = 100.0 * (i / (len(check_commands) - 1))
percent_str = "[" + ("%.2f]" % percent).rjust(7) + " %:" percent_str = "[" + ("%.2f]" % percent).rjust(7) + " %:"
# if percent < 27.9: # if percent < 27.9:

@ -27,7 +27,6 @@ __all__ = (
) )
import os import os
import sys
from os.path import join, dirname, normpath, abspath from os.path import join, dirname, normpath, abspath
SOURCE_DIR = join(dirname(__file__), "..", "..") SOURCE_DIR = join(dirname(__file__), "..", "..")
@ -35,11 +34,6 @@ SOURCE_DIR = normpath(SOURCE_DIR)
SOURCE_DIR = abspath(SOURCE_DIR) SOURCE_DIR = abspath(SOURCE_DIR)
def is_c_header(filename):
ext = os.path.splitext(filename)[1]
return (ext in (".h", ".hpp", ".hxx"))
def is_c_header(filename): def is_c_header(filename):
ext = os.path.splitext(filename)[1] ext = os.path.splitext(filename)[1]
return (ext in (".h", ".hpp", ".hxx")) return (ext in (".h", ".hpp", ".hxx"))
@ -79,6 +73,7 @@ def do_ignore(filepath, ignore_prefix_list):
def makefile_log(): def makefile_log():
import subprocess import subprocess
import time
# Check blender is not 2.5x until it supports playback again # Check blender is not 2.5x until it supports playback again
print("running make with --dry-run ...") print("running make with --dry-run ...")
process = subprocess.Popen(["make", "--always-make", "--dry-run", "--keep-going", "VERBOSE=1"], process = subprocess.Popen(["make", "--always-make", "--dry-run", "--keep-going", "VERBOSE=1"],

@ -1,208 +0,0 @@
import os
LCGDIR = os.getcwd()+"/../lib/irix-6.5-mips"
LIBDIR = LCGDIR
BF_PYTHON = LCGDIR+'/python'
BF_PYTHON_VERSION = '3.2'
WITH_BF_STATICPYTHON = 'true'
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
BF_PYTHON_BINARY = '${BF_PYTHON}/bin/python${BF_PYTHON_VERSION}'
BF_PYTHON_LIB = 'python${BF_PYTHON_VERSION}' #BF_PYTHON+'/lib/python'+BF_PYTHON_VERSION+'/config/libpython'+BF_PYTHON_VERSION+'.a'
BF_PYTHON_LINKFLAGS = ['-Xlinker', '-export-dynamic']
BF_PYTHON_LIB_STATIC = '${BF_PYTHON}/lib/python${BF_PYTHON_VERSION}/config/libpython${BF_PYTHON_VERSION}.a'
WITH_BF_OPENAL = 'true'
WITH_BF_STATICOPENAL = 'true'
BF_OPENAL = LCGDIR+'/openal'
BF_OPENAL_INC = '${BF_OPENAL}/include'
BF_OPENAL_LIB = 'openal'
BF_OPENAL_LIB_STATIC = '${BF_OPENAL}/lib/libopenal.a'
BF_OPENAL_LIBPATH = LIBDIR + '/lib'
BF_CXX = '/usr'
WITH_BF_STATICCXX = 'false'
BF_CXX_LIB_STATIC = '${BF_CXX}/lib/libstdc++.a'
BF_LIBSAMPLERATE = LCGDIR+'/samplerate'
BF_LIBSAMPLERATE_INC = '${BF_LIBSAMPLERATE}/include'
BF_LIBSAMPLERATE_LIB = 'samplerate'
BF_LIBSAMPLERATE_LIBPATH = '${BF_LIBSAMPLERATE}/lib'
WITH_BF_SDL = 'true'
BF_SDL = LCGDIR+'/sdl' #$(shell sdl-config --prefix)
BF_SDL_INC = '${BF_SDL}/include/SDL' #$(shell $(BF_SDL)/bin/sdl-config --cflags)
BF_SDL_LIB = 'SDL audio iconv charset' #BF_SDL #$(shell $(BF_SDL)/bin/sdl-config --libs) -lSDL_mixer
BF_SDL_LIBPATH = '${BF_SDL}/lib'
WITH_BF_OPENEXR = 'false'
WITH_BF_STATICOPENEXR = 'false'
BF_OPENEXR = '/usr'
# when compiling with your own openexr lib you might need to set...
# BF_OPENEXR_INC = '${BF_OPENEXR}/include/OpenEXR ${BF_OPENEXR}/include'
BF_OPENEXR_INC = '${BF_OPENEXR}/include/OpenEXR'
BF_OPENEXR_LIB = 'Half IlmImf Iex Imath '
BF_OPENEXR_LIB_STATIC = '${BF_OPENEXR}/lib/libHalf.a ${BF_OPENEXR}/lib/libIlmImf.a ${BF_OPENEXR}/lib/libIex.a ${BF_OPENEXR}/lib/libImath.a ${BF_OPENEXR}/lib/libIlmThread.a'
# BF_OPENEXR_LIBPATH = '${BF_OPENEXR}/lib'
WITH_BF_DDS = 'false'
WITH_BF_JPEG = 'false'
BF_JPEG = LCGDIR+'/jpeg'
BF_JPEG_INC = '${BF_JPEG}/include'
BF_JPEG_LIB = 'jpeg'
BF_JPEG_LIBPATH = '${BF_JPEG}/lib'
WITH_BF_PNG = 'false'
BF_PNG = LCGDIR+"/png"
BF_PNG_INC = '${BF_PNG}/include'
BF_PNG_LIB = 'png'
BF_PNG_LIBPATH = '${BF_PNG}/lib'
BF_TIFF = '/usr/nekoware'
BF_TIFF_INC = '${BF_TIFF}/include'
WITH_BF_ZLIB = 'true'
BF_ZLIB = LCGDIR+"/zlib"
BF_ZLIB_INC = '${BF_ZLIB}/include'
BF_ZLIB_LIB = 'z'
BF_ZLIB_LIBPATH = '${BF_ZLIB}/lib'
WITH_BF_INTERNATIONAL = 'true'
BF_GETTEXT = LCGDIR+'/gettext'
BF_GETTEXT_INC = '${BF_GETTEXT}/include'
BF_GETTEXT_LIB = 'gettextpo intl'
BF_GETTEXT_LIBPATH = '${BF_GETTEXT}/lib'
WITH_BF_GAMEENGINE='false'
WITH_BF_PLAYER = 'false'
WITH_BF_BULLET = 'true'
BF_BULLET = '#extern/bullet2/src'
BF_BULLET_INC = '${BF_BULLET}'
BF_BULLET_LIB = 'extern_bullet'
#WITH_BF_NSPR = 'true'
#BF_NSPR = $(LIBDIR)/nspr
#BF_NSPR_INC = -I$(BF_NSPR)/include -I$(BF_NSPR)/include/nspr
#BF_NSPR_LIB =
# Uncomment the following line to use Mozilla inplace of netscape
#CPPFLAGS += -DMOZ_NOT_NET
# Location of MOZILLA/Netscape header files...
#BF_MOZILLA = $(LIBDIR)/mozilla
#BF_MOZILLA_INC = -I$(BF_MOZILLA)/include/mozilla/nspr -I$(BF_MOZILLA)/include/mozilla -I$(BF_MOZILLA)/include/mozilla/xpcom -I$(BF_MOZILLA)/include/mozilla/idl
#BF_MOZILLA_LIB =
# Will fall back to look in BF_MOZILLA_INC/nspr and BF_MOZILLA_LIB
# if this is not set.
#
# Be paranoid regarding library creation (do not update archives)
#BF_PARANOID = 'true'
# enable freetype2 support for text objects
BF_FREETYPE = LCGDIR+'/freetype'
BF_FREETYPE_INC = '${BF_FREETYPE}/include ${BF_FREETYPE}/include/freetype2'
BF_FREETYPE_LIB = 'freetype'
BF_FREETYPE_LIBPATH = '${BF_FREETYPE}/lib'
WITH_BF_QUICKTIME = 'false' # -DWITH_QUICKTIME
BF_QUICKTIME = '/usr/local'
BF_QUICKTIME_INC = '${BF_QUICKTIME}/include'
WITH_BF_ICONV = 'true'
BF_ICONV = LIBDIR + "/iconv"
BF_ICONV_INC = '${BF_ICONV}/include'
BF_ICONV_LIB = 'iconv charset'
BF_ICONV_LIBPATH = '${BF_ICONV}/lib'
WITH_BF_BINRELOC = 'false'
# enable ffmpeg support
WITH_BF_FFMPEG = 'true' # -DWITH_FFMPEG
# Uncomment the following two lines to use system's ffmpeg
BF_FFMPEG = LCGDIR+'/ffmpeg'
BF_FFMPEG_LIB = 'avformat avcodec swscale avutil avdevice faad faac vorbis x264 ogg mp3lame z'
BF_FFMPEG_INC = '${BF_FFMPEG}/include'
BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
# enable ogg, vorbis and theora in ffmpeg
WITH_BF_OGG = 'false' # -DWITH_OGG
BF_OGG = '/usr'
BF_OGG_INC = '${BF_OGG}/include'
BF_OGG_LIB = 'ogg vorbis theoraenc theoradec'
WITH_BF_OPENJPEG = 'false'
BF_OPENJPEG = '#extern/libopenjpeg'
BF_OPENJPEG_LIB = ''
BF_OPENJPEG_INC = '${BF_OPENJPEG}'
BF_OPENJPEG_LIBPATH='${BF_OPENJPEG}/lib'
WITH_BF_REDCODE = 'false'
BF_REDCODE = '#extern/libredcode'
BF_REDCODE_LIB = ''
BF_REDCODE_INC = '${BF_REDCODE}/include'
BF_REDCODE_LIBPATH='${BF_REDCODE}/lib'
# Mesa Libs should go here if your using them as well....
WITH_BF_STATICOPENGL = 'false'
BF_OPENGL = '/usr'
BF_OPENGL_INC = '${BF_OPENGL}/include'
BF_OPENGL_LIB = 'GL GLU X11 Xi Xext'
BF_OPENGL_LIBPATH = '/usr/X11R6/lib'
BF_OPENGL_LIB_STATIC = '${BF_OPENGL}/libGL.a ${BF_OPENGL}/libGLU.a ${BF_OPENGL}/libXxf86vm.a ${BF_OPENGL}/libX11.a ${BF_OPENGL}/libXi.a ${BF_OPENGL}/libXext.a ${BF_OPENGL}/libXxf86vm.a'
CC = 'c99'
CXX = 'CC'
CCFLAGS = ['-pipe','-fPIC', '-n32']
CPPFLAGS = []
CXXFLAGS = ['-pipe','-fPIC', '-n32']
REL_CFLAGS = ['-DNDEBUG', '-O2']
REL_CCFLAGS = ['-DNDEBUG', '-O2']
##BF_DEPEND = 'true'
##
##AR = ar
##ARFLAGS = ruv
##ARFLAGSQUIET = ru
##
C_WARN = ['-no_prelink', '-ptused']
CC_WARN = ['-no_prelink', '-ptused']
##FIX_STUBS_WARNINGS = -Wno-unused
LLIBS = 'c m dl pthread dmedia movie'
##LOPTS = --dynamic
##DYNLDFLAGS = -shared $(LDFLAGS)
BF_PROFILE_FLAGS = ['-pg','-g']
BF_PROFILE = 'false'
BF_DEBUG = 'false'
BF_DEBUG_CCFLAGS = ['-g']
BF_BUILDDIR = '../build/irix6'
BF_INSTALLDIR='../install/irix6'
#Link against pthread
LDIRS = []
LDIRS.append(BF_FREETYPE_LIBPATH)
LDIRS.append(BF_PNG_LIBPATH)
LDIRS.append(BF_ZLIB_LIBPATH)
LDIRS.append(BF_SDL_LIBPATH)
LDIRS.append(BF_OPENAL_LIBPATH)
LDIRS.append(BF_ICONV_LIBPATH)
PLATFORM_LINKFLAGS = []
for x in LDIRS:
PLATFORM_LINKFLAGS.append("-L"+x)
PLATFORM_LINKFLAGS += ['-L${LCGDIR}/jpeg/lib' , '-L/usr/lib32', '-n32', '-v', '-no_prelink']
print PLATFORM_LINKFLAGS
LINKFLAGS= PLATFORM_LINKFLAGS

@ -67,6 +67,7 @@ set(SRC
FX/AUD_SuperposeFactory.cpp FX/AUD_SuperposeFactory.cpp
FX/AUD_SuperposeReader.cpp FX/AUD_SuperposeReader.cpp
FX/AUD_VolumeFactory.cpp FX/AUD_VolumeFactory.cpp
intern/AUD_3DMath.h intern/AUD_3DMath.h
intern/AUD_AnimateableProperty.cpp intern/AUD_AnimateableProperty.cpp
intern/AUD_AnimateableProperty.h intern/AUD_AnimateableProperty.h
@ -99,6 +100,7 @@ set(SRC
intern/AUD_IWriter.h intern/AUD_IWriter.h
intern/AUD_JOSResampleFactory.cpp intern/AUD_JOSResampleFactory.cpp
intern/AUD_JOSResampleFactory.h intern/AUD_JOSResampleFactory.h
intern/AUD_JOSResampleReaderCoeff.cpp
intern/AUD_JOSResampleReader.cpp intern/AUD_JOSResampleReader.cpp
intern/AUD_JOSResampleReader.h intern/AUD_JOSResampleReader.h
intern/AUD_LinearResampleFactory.cpp intern/AUD_LinearResampleFactory.cpp

@ -26,7 +26,7 @@ if env['WITH_GHOST_SDL']:
pass pass
incs += ' ' + env['BF_SDL_INC'] incs += ' ' + env['BF_SDL_INC']
defs += ['WITH_GHOST_SDL'] defs += ['WITH_GHOST_SDL']
elif window_system in ('linux', 'openbsd3', 'sunos5', 'freebsd7', 'freebsd8', 'freebsd9', 'irix6', 'aix4', 'aix5'): elif window_system in ('linux', 'openbsd3', 'sunos5', 'freebsd7', 'freebsd8', 'freebsd9', 'aix4', 'aix5'):
for f in pf: for f in pf:
try: try:
sources.remove('intern' + os.sep + f + 'Win32.cpp') sources.remove('intern' + os.sep + f + 'Win32.cpp')

@ -57,16 +57,6 @@
#include <X11/XF86keysym.h> #include <X11/XF86keysym.h>
#endif #endif
#ifdef __sgi
#if defined(_SGI_EXTRA_PREDEFINES) && !defined(NO_FAST_ATOMS)
#include <X11/SGIFastAtom.h>
#else
#define XSGIFastInternAtom(dpy,string,fast_name,how) XInternAtom(dpy,string,how)
#endif
#endif
// For timing // For timing
#include <sys/time.h> #include <sys/time.h>
@ -99,15 +89,8 @@ GHOST_SystemX11(
abort(); //was return before, but this would just mean it will crash later abort(); //was return before, but this would just mean it will crash later
} }
#ifdef __sgi
m_delete_window_atom
= XSGIFastInternAtom(m_display,
"WM_DELETE_WINDOW",
SGI_XA_WM_DELETE_WINDOW, False);
#else
m_delete_window_atom m_delete_window_atom
= XInternAtom(m_display, "WM_DELETE_WINDOW", True); = XInternAtom(m_display, "WM_DELETE_WINDOW", True);
#endif
m_wm_protocols= XInternAtom(m_display, "WM_PROTOCOLS", False); m_wm_protocols= XInternAtom(m_display, "WM_PROTOCOLS", False);
m_wm_take_focus= XInternAtom(m_display, "WM_TAKE_FOCUS", False); m_wm_take_focus= XInternAtom(m_display, "WM_TAKE_FOCUS", False);
@ -630,7 +613,6 @@ GHOST_SystemX11::processEvent(XEvent *xe)
{ {
XClientMessageEvent & xcme = xe->xclient; XClientMessageEvent & xcme = xe->xclient;
#ifndef __sgi
if (((Atom)xcme.data.l[0]) == m_delete_window_atom) { if (((Atom)xcme.data.l[0]) == m_delete_window_atom) {
g_event = new g_event = new
GHOST_Event( GHOST_Event(
@ -638,10 +620,8 @@ GHOST_SystemX11::processEvent(XEvent *xe)
GHOST_kEventWindowClose, GHOST_kEventWindowClose,
window window
); );
} else }
#endif else if (((Atom)xcme.data.l[0]) == m_wm_take_focus) {
if (((Atom)xcme.data.l[0]) == m_wm_take_focus) {
XWindowAttributes attr; XWindowAttributes attr;
Window fwin; Window fwin;
int revert_to; int revert_to;

@ -25,6 +25,11 @@
* Contributor(s): none yet. * Contributor(s): none yet.
* *
* ***** END GPL LICENSE BLOCK ***** * ***** END GPL LICENSE BLOCK *****
*/
/** \file MEM_sys_types.h
* \ingroup MEM
*
* A platform-independent definition of [u]intXX_t * A platform-independent definition of [u]intXX_t
* Plus the accompanying header include for htonl/ntohl * Plus the accompanying header include for htonl/ntohl
* *
@ -44,10 +49,6 @@
// doxygen would get a conflict // doxygen would get a conflict
*/ */
/** \file MEM_sys_types.h
* \ingroup MEM
*/
#ifndef MEM_SYS_TYPES_H #ifndef MEM_SYS_TYPES_H
#define MEM_SYS_TYPES_H #define MEM_SYS_TYPES_H
@ -60,6 +61,7 @@ extern "C" {
/* The __intXX are built-in types of the visual complier! So we don't /* The __intXX are built-in types of the visual complier! So we don't
* need to include anything else here. */ * need to include anything else here. */
typedef signed __int8 int8_t; typedef signed __int8 int8_t;
typedef signed __int16 int16_t; typedef signed __int16 int16_t;
typedef signed __int32 int32_t; typedef signed __int32 int32_t;
@ -104,11 +106,12 @@ unsigned long __attribute__((__stdcall__)) htonl(unsigned long);
#else #else
/* FreeBSD, Irix, Solaris */ /* FreeBSD, Solaris */
#include <sys/types.h> #include <sys/types.h>
#endif /* ifdef platform for types */ #endif /* ifdef platform for types */
#ifdef _WIN32 #ifdef _WIN32
#ifndef FREE_WINDOWS #ifndef FREE_WINDOWS
#ifndef htonl #ifndef htonl
@ -122,7 +125,7 @@ unsigned long __attribute__((__stdcall__)) htonl(unsigned long);
#include <sys/param.h> #include <sys/param.h>
#elif defined (__APPLE__) #elif defined (__APPLE__)
#include <sys/types.h> #include <sys/types.h>
#else /* irix sun linux */ #else /* sun linux */
#include <netinet/in.h> #include <netinet/in.h>
#endif /* ifdef platform for htonl/ntohl */ #endif /* ifdef platform for htonl/ntohl */

@ -365,21 +365,8 @@ void *MEM_mapallocN(size_t len, const char *str)
len = (len + 3 ) & ~3; /* allocate in units of 4 */ len = (len + 3 ) & ~3; /* allocate in units of 4 */
#ifdef __sgi
{
#include <fcntl.h>
int fd;
fd = open("/dev/zero", O_RDWR);
memh= mmap(0, len+sizeof(MemHead)+sizeof(MemTail),
PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
close(fd);
}
#else
memh= mmap(NULL, len+sizeof(MemHead)+sizeof(MemTail), memh= mmap(NULL, len+sizeof(MemHead)+sizeof(MemTail),
PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANON, -1, 0); PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANON, -1, 0);
#endif
if(memh!=(MemHead *)-1) { if(memh!=(MemHead *)-1) {
make_memhead_header(memh, len, str); make_memhead_header(memh, len, str);

@ -25,6 +25,11 @@
* Contributor(s): none yet. * Contributor(s): none yet.
* *
* ***** END GPL LICENSE BLOCK ***** * ***** END GPL LICENSE BLOCK *****
*/
/** \file superlu_sys_types.h
* \ingroup opennl
*
* A platform-independent definition of [u]intXX_t * A platform-independent definition of [u]intXX_t
* Plus the accompanying header include for htonl/ntohl * Plus the accompanying header include for htonl/ntohl
* *
@ -37,10 +42,6 @@
* *
*/ */
/** \file superlu_sys_types.h
* \ingroup opennl
*/
/* /*
// DG: original BLO_sys_types.h is in source/blender/blenkernel // DG: original BLO_sys_types.h is in source/blender/blenkernel
@ -99,29 +100,32 @@ typedef unsigned long uintptr_t;
#include <inttypes.h> #include <inttypes.h>
#elif defined(FREE_WINDOWS) #elif defined(FREE_WINDOWS)
/* define htoln here, there must be a syntax error in winsock2.h in MinGW */
unsigned long __attribute__((__stdcall__)) htonl(unsigned long);
#include <stdint.h> #include <stdint.h>
#else #else
/* FreeBSD, Irix, Solaris */ /* FreeBSD, Solaris */
#include <sys/types.h> #include <sys/types.h>
#endif /* ifdef platform for types */ #endif /* ifdef platform for types */
#ifdef _WIN32 #ifdef _WIN32
#ifndef FREE_WINDOWS
#ifndef htonl #ifndef htonl
#define htonl(x) correctByteOrder(x) #define htonl(x) correctByteOrder(x)
#endif #endif
#ifndef ntohl #ifndef ntohl
#define ntohl(x) correctByteOrder(x) #define ntohl(x) correctByteOrder(x)
#endif #endif
#endif
#elif defined (__FreeBSD__) || defined (__OpenBSD__) #elif defined (__FreeBSD__) || defined (__OpenBSD__)
#include <sys/param.h> #include <sys/param.h>
#elif defined (__APPLE__) #elif defined (__APPLE__)
#include <sys/types.h> #include <sys/types.h>
#else /* irix sun linux */ #else /* sun linux */
#include <netinet/in.h> #include <netinet/in.h>
#endif /* ifdef platform for htonl/ntohl */ #endif /* ifdef platform for htonl/ntohl */

@ -1,17 +1,54 @@
#!/usr/bin/python #!/usr/bin/env python
# $Id$
# ***** BEGIN GPL LICENSE BLOCK *****
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ***** END GPL LICENSE BLOCK *****
# <pep8 compliant>
# update all mo files in the LANGS # update all mo files in the LANGS
import subprocess
import os import os
LOCALE_DIR="../release/bin/.blender/locale" CURRENT_DIR = os.path.dirname(__file__)
PO_DIR = "." SOURCE_DIR = os.path.normpath(os.path.abspath(os.path.join(CURRENT_DIR, "..")))
LOCALE_DIR = os.path.join(SOURCE_DIR, "release", "bin", ".blender", "locale")
DOMAIN = "blender" DOMAIN = "blender"
for po in os.listdir( PO_DIR ):
def main():
for po in os.listdir(CURRENT_DIR):
if po.endswith(".po"): if po.endswith(".po"):
lang = po[:-3] lang = po[:-3]
# show stats # show stats
cmd = "msgfmt --statistics %s.po -o %s/%s/LC_MESSAGES/%s.mo" % ( lang, LOCALE_DIR, lang, DOMAIN ) cmd = ("msgfmt",
print cmd "--statistics",
os.system( cmd ) os.path.join(CURRENT_DIR, "%s.po" % lang),
"-o",
os.path.join(LOCALE_DIR, lang, "LC_MESSAGES", "%s.mo" % DOMAIN),
)
print(" ".join(cmd))
process = subprocess.Popen(cmd)
process.wait()
if __name__ == "__main__":
print("\n\n *** Running %r *** \n" % __file__)
main()

210
po/update_msg.py Normal file

@ -0,0 +1,210 @@
# $Id$
# ***** BEGIN GPL LICENSE BLOCK *****
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ***** END GPL LICENSE BLOCK *****
# <pep8 compliant>
# Write out messages.txt from blender
# Execite:
# blender --background --python po/update_msg.py
import os
CURRENT_DIR = os.path.dirname(__file__)
SOURCE_DIR = os.path.normpath(os.path.abspath(os.path.join(CURRENT_DIR, "..")))
FILE_NAME_MESSAGES = os.path.join(CURRENT_DIR, "messages.txt")
def dump_messages_rna(messages):
import bpy
# -------------------------------------------------------------------------
# Function definitions
def walkProperties(properties):
import bpy
for prop in properties:
messages.add(prop.name)
messages.add(prop.description)
if isinstance(prop, bpy.types.EnumProperty):
for item in prop.enum_items:
messages.add(item.name)
messages.add(item.description)
def walkRNA(bl_rna):
if bl_rna.name and bl_rna.name != bl_rna.identifier:
messages.add(bl_rna.name)
if bl_rna.description:
messages.add(bl_rna.description)
walkProperties(bl_rna.properties)
def walkClass(cls):
walkRNA(cls.bl_rna)
def walk_keymap_hierarchy(hier):
for lvl in hier:
messages.add(lvl[0])
if lvl[3]:
walk_keymap_hierarchy(lvl[3])
# -------------------------------------------------------------------------
# Dump Messages
for cls in type(bpy.context).__base__.__subclasses__():
walkClass(cls)
for cls in bpy.types.Space.__subclasses__():
walkClass(cls)
for cls in bpy.types.Operator.__subclasses__():
walkClass(cls)
from bl_ui.space_userpref_keymap import KM_HIERARCHY
walk_keymap_hierarchy(KM_HIERARCHY)
## XXX. what is this supposed to do, we wrote the file already???
#_walkClass(bpy.types.SpaceDopeSheetEditor)
def dump_messages_pytext(messages):
""" dumps text inlined in the python user interface: eg.
layout.prop("someprop", text="My Name")
"""
import ast
# -------------------------------------------------------------------------
# Gather function names
import bpy
# key: func_id
# val: [(arg_kw, arg_pos), (arg_kw, arg_pos), ...]
func_translate_args = {}
# so far only 'text' keywords, but we may want others translated later
translate_kw = ("text", )
for func_id, func in bpy.types.UILayout.bl_rna.functions.items():
# check it has a 'text' argument
for (arg_pos, (arg_kw, arg)) in enumerate(func.parameters.items()):
if ((arg_kw in translate_kw) and
(arg.is_output == False) and
(arg.type == 'STRING')):
func_translate_args.setdefault(func_id, []).append((arg_kw,
arg_pos))
# print(func_translate_args)
# -------------------------------------------------------------------------
# Function definitions
def extract_strings(fp, node_container):
""" Recursively get strings, needed incase we have "Blah" + "Blah",
passed as an argument in that case it wont evaluate to a string.
"""
for node in ast.walk(node_container):
if type(node) == ast.Str:
eval_str = ast.literal_eval(node)
if eval_str:
# print("%s:%d: %s" % (fp, node.lineno, eval_str)) # testing
messages.add(eval_str)
def extract_strings_from_file(fn):
filedata = open(fn, 'r', encoding="utf8")
root_node = ast.parse(filedata.read(), fn, 'exec')
filedata.close()
for node in ast.walk(root_node):
if type(node) == ast.Call:
# print("found function at")
# print("%s:%d" % (fn, node.lineno))
# lambda's
if type(node.func) == ast.Name:
continue
# getattr(self, con.type)(context, box, con)
if not hasattr(node.func, "attr"):
continue
translate_args = func_translate_args.get(node.func.attr, ())
# do nothing if not found
for arg_kw, arg_pos in translate_args:
if arg_pos < len(node.args):
extract_strings(fn, node.args[arg_pos])
else:
for kw in node.keywords:
if kw.arg == arg_kw:
extract_strings(fn, kw.value)
# -------------------------------------------------------------------------
# Dump Messages
mod_dir = os.path.join(SOURCE_DIR, "release", "scripts", "startup", "bl_ui")
files = [os.path.join(mod_dir, f)
for f in os.listdir(mod_dir)
if not f.startswith("_")
if f.endswith("py")
]
for fn in files:
extract_strings_from_file(fn)
def dump_messages():
messages = {""}
# get strings from RNA
dump_messages_rna(messages)
# get strings from UI layout definitions text="..." args
dump_messages_pytext(messages)
messages.remove("")
message_file = open(FILE_NAME_MESSAGES, 'w', encoding="utf8")
message_file.writelines("\n".join(sorted(messages)))
message_file.close()
print("Written %d messages to: %r" % (len(messages), FILE_NAME_MESSAGES))
def main():
try:
import bpy
except ImportError:
print("This script must run from inside blender")
return
dump_messages()
if __name__ == "__main__":
print("\n\n *** Running %r *** \n" % __file__)
main()

@ -1,17 +1,53 @@
#!/usr/bin/python #!/usr/bin/env python
# $Id$
# ***** BEGIN GPL LICENSE BLOCK *****
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ***** END GPL LICENSE BLOCK *****
# <pep8 compliant>
# update all po files in the LANGS # update all po files in the LANGS
import subprocess
import os import os
PO_DIR = "." CURRENT_DIR = os.path.dirname(__file__)
DOMAIN = "blender" DOMAIN = "blender"
for po in os.listdir( PO_DIR ):
def main():
for po in os.listdir(CURRENT_DIR):
if po.endswith(".po"): if po.endswith(".po"):
lang = po[:-3] lang = po[:-3]
# update po file
cmd = "msgmerge --update --lang=%s %s.po %s.pot" % (lang, lang, DOMAIN)
print(cmd)
os.system( cmd )
# update po file
cmd = ("msgmerge",
"--update",
"--lang=%s" % lang,
os.path.join(CURRENT_DIR, "%s.po" % lang),
os.path.join(CURRENT_DIR, "%s.pot" % DOMAIN),
)
print(" ".join(cmd))
process = subprocess.Popen(cmd)
process.wait()
if __name__ == "__main__":
print("\n\n *** Running %r *** \n" % __file__)
main()

@ -1,31 +1,61 @@
#!/usr/bin/python #!/usr/bin/env python
# $Id$
# ***** BEGIN GPL LICENSE BLOCK *****
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ***** END GPL LICENSE BLOCK *****
# <pep8 compliant>
# update the pot file according the POTFILES.in # update the pot file according the POTFILES.in
import subprocess
import os import os
GETTEXT_XGETTEXT_EXECUTABLE="xgettext" GETTEXT_XGETTEXT_EXECUTABLE = "xgettext"
SOURCE_DIR=".." CURRENT_DIR = os.path.dirname(__file__)
DOMAIN="blender" SOURCE_DIR = os.path.normpath(os.path.abspath(os.path.join(CURRENT_DIR, "..")))
DOMAIN = "blender"
cmd = "%s --files-from=%s/po/POTFILES.in --keyword=_ --keyword=N_ --directory=%s --output=%s/po/%s.pot --from-code=utf-8" % ( FILE_NAME_POT = os.path.join(CURRENT_DIR, "blender.pot")
GETTEXT_XGETTEXT_EXECUTABLE, SOURCE_DIR, SOURCE_DIR, SOURCE_DIR, DOMAIN) FILE_NAME_MESSAGES = os.path.join(CURRENT_DIR, "messages.txt")
os.system( cmd )
def stripeol(s): def main():
if line.endswith("\n"): cmd = (GETTEXT_XGETTEXT_EXECUTABLE,
s = s[:-1] "--files-from=%s" % os.path.join(SOURCE_DIR, "po", "POTFILES.in"),
"--keyword=_",
"--keyword=N_",
"--directory=%s" % SOURCE_DIR,
"--output=%s" % os.path.join(SOURCE_DIR, "po", "%s.pot" % DOMAIN),
"--from-code=utf-8",
)
if line.endswith("\r"): print(" ".join(cmd))
s = s[:-1] process = subprocess.Popen(cmd)
process.wait()
return s def stripeol(s):
return s.rstrip("\n\r")
pot_messages = {} pot_messages = {}
reading_message = False reading_message = False
message = "" message = ""
with open("blender.pot", 'r') as handle: with open(FILE_NAME_POT, 'r') as handle:
while True: while True:
line = handle.readline() line = handle.readline()
@ -42,9 +72,9 @@ with open("blender.pot", 'r') as handle:
elif reading_message: elif reading_message:
message += line[1:-1] message += line[1:-1]
# add messages collected automatically from RNA # add messages collected automatically from RNA
with open("blender.pot", "a") as pot_handle: with open(FILE_NAME_POT, "a") as pot_handle:
with open("messages.txt", 'r') as handle: with open(FILE_NAME_MESSAGES, 'r') as handle:
while True: while True:
line = handle.readline() line = handle.readline()
@ -59,3 +89,8 @@ with open("blender.pot", "a") as pot_handle:
pot_handle.write("\n#: Automatically collected from RNA\n") pot_handle.write("\n#: Automatically collected from RNA\n")
pot_handle.write("msgid \"%s\"\n" % (line)) pot_handle.write("msgid \"%s\"\n" % (line))
pot_handle.write("msgstr \"\"\n") pot_handle.write("msgstr \"\"\n")
if __name__ == "__main__":
print("\n\n *** Running %r *** \n" % __file__)
main()

@ -1,34 +0,0 @@
#!/bin/sh
#
# $Id$
#
# ***** BEGIN GPL LICENSE BLOCK *****
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
# All rights reserved.
#
# The Original Code is: all of this file.
#
# Contributor(s): none yet.
#
# ***** END GPL LICENSE BLOCK *****
#
# OS specific stuff for the package, only to be executed by ../Makefile
#
# Add icon to package
cp -f extra/blender.icon $DISTDIR/

@ -1144,67 +1144,6 @@ class WM_OT_sysinfo(Operator):
return {'FINISHED'} return {'FINISHED'}
class WM_OT_get_messages(Operator):
bl_idname = "wm.get_messages"
bl_label = "Get Messages"
def _putMessage(self, messages, msg):
if len(msg):
messages[msg] = True
def _walkProperties(self, properties, messages):
for prop in properties:
self._putMessage(messages, prop.name)
self._putMessage(messages, prop.description)
if isinstance(prop, bpy.types.EnumProperty):
for item in prop.enum_items:
self._putMessage(messages, item.name)
self._putMessage(messages, item.description)
def _walkRNA(self, bl_rna, messages):
if bl_rna.name and bl_rna.name != bl_rna.identifier:
self._putMessage(messages, bl_rna.name)
if bl_rna.description:
self._putMessage(messages, bl_rna.description)
self._walkProperties(bl_rna.properties, messages)
def _walkClass(self, cls, messages):
self._walkRNA(cls.bl_rna, messages)
def _walk_keymap_hierarchy(self, hier, messages):
for lvl in hier:
self._putMessage(messages, lvl[0])
if lvl[3]:
self._walk_keymap_hierarchy(lvl[3], messages)
def execute(self, context):
messages = {}
for cls in type(bpy.context).__base__.__subclasses__():
self._walkClass(cls, messages)
for cls in bpy.types.Space.__subclasses__():
self._walkClass(cls, messages)
for cls in bpy.types.Operator.__subclasses__():
self._walkClass(cls, messages)
from bl_ui.space_userpref_keymap import KM_HIERARCHY
self._walk_keymap_hierarchy(KM_HIERARCHY, messages)
text = bpy.data.texts.new(name="messages.txt")
for message in messages:
text.write(message + "\n")
self._walkClass(bpy.types.SpaceDopeSheetEditor, messages)
return {'FINISHED'}
class WM_OT_copy_prev_settings(Operator): class WM_OT_copy_prev_settings(Operator):
'''Copy settings from previous version''' '''Copy settings from previous version'''
bl_idname = "wm.copy_prev_settings" bl_idname = "wm.copy_prev_settings"

@ -25,6 +25,7 @@
# dont register these classes since they are only helpers. # dont register these classes since they are only helpers.
from blf import gettext as _ from blf import gettext as _
class MotionPathButtonsPanel(): class MotionPathButtonsPanel():
bl_space_type = 'PROPERTIES' bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW' bl_region_type = 'WINDOW'

@ -22,6 +22,7 @@ from bpy.types import Panel, Menu
from rna_prop_ui import PropertyPanel from rna_prop_ui import PropertyPanel
from blf import gettext as _ from blf import gettext as _
class ArmatureButtonsPanel(): class ArmatureButtonsPanel():
bl_space_type = 'PROPERTIES' bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW' bl_region_type = 'WINDOW'

@ -23,6 +23,7 @@ from bpy.types import Panel
from rna_prop_ui import PropertyPanel from rna_prop_ui import PropertyPanel
from blf import gettext as _ from blf import gettext as _
class BoneButtonsPanel(): class BoneButtonsPanel():
bl_space_type = 'PROPERTIES' bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW' bl_region_type = 'WINDOW'

@ -22,6 +22,7 @@ from bpy.types import Panel
from rna_prop_ui import PropertyPanel from rna_prop_ui import PropertyPanel
from blf import gettext as _ from blf import gettext as _
class CameraButtonsPanel(): class CameraButtonsPanel():
bl_space_type = 'PROPERTIES' bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW' bl_region_type = 'WINDOW'

@ -22,6 +22,7 @@ from bpy.types import Panel
from rna_prop_ui import PropertyPanel from rna_prop_ui import PropertyPanel
from blf import gettext as _ from blf import gettext as _
class CurveButtonsPanel(): class CurveButtonsPanel():
bl_space_type = 'PROPERTIES' bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW' bl_region_type = 'WINDOW'

@ -21,6 +21,7 @@ import bpy
from bpy.types import Panel from bpy.types import Panel
from blf import gettext as _ from blf import gettext as _
class DataButtonsPanel(): class DataButtonsPanel():
bl_space_type = 'PROPERTIES' bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW' bl_region_type = 'WINDOW'

@ -22,6 +22,7 @@ from bpy.types import Menu, Panel
from rna_prop_ui import PropertyPanel from rna_prop_ui import PropertyPanel
from blf import gettext as _ from blf import gettext as _
class LAMP_MT_sunsky_presets(Menu): class LAMP_MT_sunsky_presets(Menu):
bl_label = _("Sun & Sky Presets") bl_label = _("Sun & Sky Presets")
preset_subdir = "sunsky" preset_subdir = "sunsky"

@ -22,6 +22,7 @@ from bpy.types import Menu, Panel
from rna_prop_ui import PropertyPanel from rna_prop_ui import PropertyPanel
from blf import gettext as _ from blf import gettext as _
class MESH_MT_vertex_group_specials(Menu): class MESH_MT_vertex_group_specials(Menu):
bl_label = _("Vertex Group Specials") bl_label = _("Vertex Group Specials")
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}

@ -22,6 +22,7 @@ from bpy.types import Panel
from rna_prop_ui import PropertyPanel from rna_prop_ui import PropertyPanel
from blf import gettext as _ from blf import gettext as _
class DataButtonsPanel(): class DataButtonsPanel():
bl_space_type = 'PROPERTIES' bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW' bl_region_type = 'WINDOW'

@ -21,6 +21,7 @@ import bpy
from bpy.types import Panel from bpy.types import Panel
from blf import gettext as _ from blf import gettext as _
class ModifierButtonsPanel(): class ModifierButtonsPanel():
bl_space_type = 'PROPERTIES' bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW' bl_region_type = 'WINDOW'
@ -207,7 +208,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
def DECIMATE(self, layout, ob, md): def DECIMATE(self, layout, ob, md):
layout.prop(md, "ratio") layout.prop(md, "ratio")
layout.label(text=_("Face Count")+": %s" % str(md.face_count)) layout.label(text=_("Face Count") + ": %d" % md.face_count)
def DISPLACE(self, layout, ob, md): def DISPLACE(self, layout, ob, md):
split = layout.split() split = layout.split()

@ -21,6 +21,7 @@ import bpy
from bpy.types import Panel from bpy.types import Panel
from blf import gettext as _ from blf import gettext as _
class PhysicsButtonsPanel(): class PhysicsButtonsPanel():
bl_space_type = 'PROPERTIES' bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW' bl_region_type = 'WINDOW'

@ -22,6 +22,7 @@ from bpy.types import Menu, Panel
from rna_prop_ui import PropertyPanel from rna_prop_ui import PropertyPanel
from blf import gettext as _ from blf import gettext as _
def active_node_mat(mat): def active_node_mat(mat):
# TODO, 2.4x has a pipeline section, for 2.5 we need to communicate # TODO, 2.4x has a pipeline section, for 2.5 we need to communicate
# which settings from node-materials are used # which settings from node-materials are used
@ -633,8 +634,9 @@ class MATERIAL_PT_game_settings(MaterialButtonsPanel, bpy.types.Panel):
row.label(text="Alpha Blend:") row.label(text="Alpha Blend:")
row.label(text="Face Orientation:") row.label(text="Face Orientation:")
row = layout.row() row = layout.row()
row.prop(game,"alpha_blend",text="") row.prop(game, "alpha_blend", text="")
row.prop(game,"face_orientation",text="") row.prop(game, "face_orientation", text="")
class MATERIAL_PT_physics(MaterialButtonsPanel, bpy.types.Panel): class MATERIAL_PT_physics(MaterialButtonsPanel, bpy.types.Panel):
bl_label = "Physics" bl_label = "Physics"

@ -22,6 +22,7 @@ from bpy.types import Panel
from rna_prop_ui import PropertyPanel from rna_prop_ui import PropertyPanel
from blf import gettext as _ from blf import gettext as _
class ObjectButtonsPanel(): class ObjectButtonsPanel():
bl_space_type = 'PROPERTIES' bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW' bl_region_type = 'WINDOW'

@ -21,6 +21,7 @@ import bpy
from bpy.types import Panel from bpy.types import Panel
from blf import gettext as _ from blf import gettext as _
class ConstraintButtonsPanel(): class ConstraintButtonsPanel():
bl_space_type = 'PROPERTIES' bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW' bl_region_type = 'WINDOW'
@ -754,7 +755,7 @@ class ConstraintButtonsPanel():
col.prop(con, "rotation_range", text=_("Pivot When")) col.prop(con, "rotation_range", text=_("Pivot When"))
def SCRIPT(self, context, layout, con): def SCRIPT(self, context, layout, con):
layout.label( _("Blender 2.5 has no py-constraints") ) layout.label(_("Blender 2.5 has no py-constraints"))
class OBJECT_PT_constraints(ConstraintButtonsPanel, Panel): class OBJECT_PT_constraints(ConstraintButtonsPanel, Panel):

@ -22,6 +22,7 @@ import bpy
from bpy.types import Panel from bpy.types import Panel
from blf import gettext as _ from blf import gettext as _
class PhysicButtonsPanel(): class PhysicButtonsPanel():
bl_space_type = 'PROPERTIES' bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW' bl_region_type = 'WINDOW'

@ -21,6 +21,7 @@ import bpy
from bpy.types import Panel from bpy.types import Panel
from blf import gettext as _ from blf import gettext as _
class PhysicButtonsPanel(): class PhysicButtonsPanel():
bl_space_type = 'PROPERTIES' bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW' bl_region_type = 'WINDOW'
@ -58,7 +59,7 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
layout.active = fluid.use layout.active = fluid.use
if fluid.type == 'DOMAIN': if fluid.type == 'DOMAIN':
layout.operator("fluid.bake", text=_("Bake (Req. Memory:")+" %s)" % fluid.memory_estimate, icon='MOD_FLUIDSIM') layout.operator("fluid.bake", text=_("Bake (Req. Memory:") + " %s)" % fluid.memory_estimate, icon='MOD_FLUIDSIM')
split = layout.split() split = layout.split()
col = split.column() col = split.column()

@ -22,6 +22,7 @@ from bpy.types import Operator, Panel
from rna_prop_ui import PropertyPanel from rna_prop_ui import PropertyPanel
from blf import gettext as _ from blf import gettext as _
class SceneButtonsPanel(): class SceneButtonsPanel():
bl_space_type = 'PROPERTIES' bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW' bl_region_type = 'WINDOW'

@ -372,13 +372,13 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel, Panel):
col = layout.column(align=True) col = layout.column(align=True)
row = col.row() row = col.row()
row.label(text=_("Final Length")+": %s" % bpy.utils.smpte_from_frame(strip.frame_final_duration)) row.label(text=_("Final Length") + ": %s" % bpy.utils.smpte_from_frame(strip.frame_final_duration))
row = col.row() row = col.row()
row.active = (frame_current >= strip.frame_start and frame_current <= strip.frame_start + strip.frame_duration) row.active = (frame_current >= strip.frame_start and frame_current <= strip.frame_start + strip.frame_duration)
row.label(text=_("Playhead")+": %d" % (frame_current - strip.frame_start)) row.label(text=_("Playhead") + ": %d" % (frame_current - strip.frame_start))
col.label(text=_("Frame Offset")+" %d:%d" % (strip.frame_offset_start, strip.frame_offset_end)) col.label(text=_("Frame Offset") + " %d:%d" % (strip.frame_offset_start, strip.frame_offset_end))
col.label(text=_("Frame Still")+" %d:%d" % (strip.frame_still_start, strip.frame_still_end)) col.label(text=_("Frame Still") + " %d:%d" % (strip.frame_still_start, strip.frame_still_end))
elem = False elem = False
@ -388,7 +388,7 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel, Panel):
elem = strip.elements[0] elem = strip.elements[0]
if elem and elem.orig_width > 0 and elem.orig_height > 0: if elem and elem.orig_width > 0 and elem.orig_height > 0:
col.label(text=_("Orig Dim")+": %dx%d" % (elem.orig_width, elem.orig_height)) col.label(text=_("Orig Dim") + ": %dx%d" % (elem.orig_width, elem.orig_height))
else: else:
col.label(text=_("Orig Dim: None")) col.label(text=_("Orig Dim: None"))
@ -690,7 +690,7 @@ class SEQUENCER_PT_scene(SequencerButtonsPanel, Panel):
if scene: if scene:
sta = scene.frame_start sta = scene.frame_start
end = scene.frame_end end = scene.frame_end
layout.label(text=_("Original frame range")+": %d-%d (%d)" % (sta, end, end - sta + 1)) layout.label(text=_("Original frame range") + ": %d-%d (%d)" % (sta, end, end - sta + 1))
class SEQUENCER_PT_filter(SequencerButtonsPanel, Panel): class SEQUENCER_PT_filter(SequencerButtonsPanel, Panel):

@ -67,9 +67,9 @@ class TEXT_HT_header(Header):
row = layout.row() row = layout.row()
if text.filepath: if text.filepath:
if text.is_dirty: if text.is_dirty:
row.label(text=_("File")+": *%r " % text.filepath+_("(unsaved)")) row.label(text=_("File") + ": *%r " % text.filepath + _("(unsaved)"))
else: else:
row.label(text=_("File")+": %r" % text.filepath) row.label(text=_("File") + ": %r" % text.filepath)
else: else:
row.label(text=_("Text: External") row.label(text=_("Text: External")
if text.library if text.library

@ -650,7 +650,7 @@ class USERPREF_PT_theme(Panel):
col = split.column() col = split.column()
for i, ui in enumerate(theme.bone_color_sets): for i, ui in enumerate(theme.bone_color_sets):
col.label(text=_("Color Set")+" %d:" % (i + 1)) # i starts from 0 col.label(text=_("Color Set") + " %d:" % (i + 1)) # i starts from 0
row = col.row() row = col.row()

@ -202,7 +202,7 @@ class InputKeyMapPanel:
subcol = self.indented_layout(col, level + 1) subcol = self.indented_layout(col, level + 1)
subrow = subcol.row() subrow = subcol.row()
subrow.prop(km, "show_expanded_items", text="", emboss=False) subrow.prop(km, "show_expanded_items", text="", emboss=False)
subrow.label(text="%s " % _(km.name) + _("(Global)") ) subrow.label(text="%s " % _(km.name) + _("(Global)"))
else: else:
km.show_expanded_items = True km.show_expanded_items = True

@ -47,6 +47,8 @@ int BLF_load_mem(const char *name, unsigned char *mem, int mem_size);
int BLF_load_unique(const char *name); int BLF_load_unique(const char *name);
int BLF_load_mem_unique(const char *name, unsigned char *mem, int mem_size); int BLF_load_mem_unique(const char *name, unsigned char *mem, int mem_size);
void BLF_unload(const char *name);
/* Attach a file with metrics information from memory. */ /* Attach a file with metrics information from memory. */
void BLF_metrics_attach(int fontid, unsigned char *mem, int mem_size); void BLF_metrics_attach(int fontid, unsigned char *mem, int mem_size);

@ -61,10 +61,7 @@
#define BLF_MAX_FONT 16 #define BLF_MAX_FONT 16
/* Font array. */ /* Font array. */
static FontBLF *global_font[BLF_MAX_FONT]; static FontBLF *global_font[BLF_MAX_FONT] = {0};
/* Number of font. */
static int global_font_num= 0;
/* Default size and dpi, for BLF_draw_default. */ /* Default size and dpi, for BLF_draw_default. */
static int global_font_default= -1; static int global_font_default= -1;
@ -99,10 +96,12 @@ void BLF_exit(void)
FontBLF *font; FontBLF *font;
int i; int i;
for (i= 0; i < global_font_num; i++) { for (i= 0; i < BLF_MAX_FONT; i++) {
font= global_font[i]; font= global_font[i];
if (font) if (font) {
blf_font_free(font); blf_font_free(font);
global_font[i]= NULL;
}
} }
blf_font_exit(); blf_font_exit();
@ -113,7 +112,7 @@ void BLF_cache_clear(void)
FontBLF *font; FontBLF *font;
int i; int i;
for (i= 0; i < global_font_num; i++) { for (i= 0; i < BLF_MAX_FONT; i++) {
font= global_font[i]; font= global_font[i];
if (font) if (font)
blf_glyph_cache_clear(font); blf_glyph_cache_clear(font);
@ -130,6 +129,18 @@ static int blf_search(const char *name)
if (font && (!strcmp(font->name, name))) if (font && (!strcmp(font->name, name)))
return i; return i;
} }
return -1;
}
static int blf_search_available(void)
{
int i;
for (i= 0; i < BLF_MAX_FONT; i++)
if(!global_font[i])
return i;
return -1; return -1;
} }
@ -149,7 +160,8 @@ int BLF_load(const char *name)
return i; return i;
} }
if (global_font_num+1 >= BLF_MAX_FONT) { i = blf_search_available();
if (i == -1) {
printf("Too many fonts!!!\n"); printf("Too many fonts!!!\n");
return -1; return -1;
} }
@ -168,9 +180,7 @@ int BLF_load(const char *name)
return -1; return -1;
} }
global_font[global_font_num]= font; global_font[i]= font;
i= global_font_num;
global_font_num++;
return i; return i;
} }
@ -186,7 +196,8 @@ int BLF_load_unique(const char *name)
/* Don't search in the cache!! make a new /* Don't search in the cache!! make a new
* object font, this is for keep fonts threads safe. * object font, this is for keep fonts threads safe.
*/ */
if (global_font_num+1 >= BLF_MAX_FONT) { i = blf_search_available();
if (i == -1) {
printf("Too many fonts!!!\n"); printf("Too many fonts!!!\n");
return -1; return -1;
} }
@ -205,9 +216,7 @@ int BLF_load_unique(const char *name)
return -1; return -1;
} }
global_font[global_font_num]= font; global_font[i]= font;
i= global_font_num;
global_font_num++;
return i; return i;
} }
@ -234,7 +243,8 @@ int BLF_load_mem(const char *name, unsigned char *mem, int mem_size)
return i; return i;
} }
if (global_font_num+1 >= BLF_MAX_FONT) { i = blf_search_available();
if (i == -1) {
printf("Too many fonts!!!\n"); printf("Too many fonts!!!\n");
return -1; return -1;
} }
@ -250,9 +260,7 @@ int BLF_load_mem(const char *name, unsigned char *mem, int mem_size)
return -1; return -1;
} }
global_font[global_font_num]= font; global_font[i]= font;
i= global_font_num;
global_font_num++;
return i; return i;
} }
@ -268,7 +276,8 @@ int BLF_load_mem_unique(const char *name, unsigned char *mem, int mem_size)
* Don't search in the cache, make a new object font! * Don't search in the cache, make a new object font!
* this is to keep the font thread safe. * this is to keep the font thread safe.
*/ */
if (global_font_num+1 >= BLF_MAX_FONT) { i = blf_search_available();
if (i == -1) {
printf("Too many fonts!!!\n"); printf("Too many fonts!!!\n");
return -1; return -1;
} }
@ -284,12 +293,25 @@ int BLF_load_mem_unique(const char *name, unsigned char *mem, int mem_size)
return -1; return -1;
} }
global_font[global_font_num]= font; global_font[i]= font;
i= global_font_num;
global_font_num++;
return i; return i;
} }
void BLF_unload(const char *name)
{
FontBLF *font;
int i;
for (i= 0; i < BLF_MAX_FONT; i++) {
font= global_font[i];
if (font && (!strcmp(font->name, name))) {
blf_font_free(font);
global_font[i]= NULL;
}
}
}
void BLF_enable(int fontid, int option) void BLF_enable(int fontid, int option)
{ {
FontBLF *font= BLF_get(fontid); FontBLF *font= BLF_get(fontid);

@ -81,8 +81,8 @@ static const char *locales[] = {
"catalan", "ca_AD", "catalan", "ca_AD",
"czech", "cs_CZ", "czech", "cs_CZ",
"ptb", "pt_BR", "ptb", "pt_BR",
"chs", "zh_CN", "Chinese (Simplified)_China.1252", "zh_CN",
"cht", "zh_TW", "Chinese (Traditional)_China.1252", "zh_TW",
"russian", "ru_RU", "russian", "ru_RU",
"croatian", "hr_HR", "croatian", "hr_HR",
"serbian", "sr_RS", "serbian", "sr_RS",
@ -115,7 +115,7 @@ void BLF_lang_set(const char *str)
char *locreturn; char *locreturn;
const char *short_locale; const char *short_locale;
int ok= 1; int ok= 1;
#if defined (_WIN32) #if defined (_WIN32) && !defined(FREE_WINDOWS)
char *long_locale = locales[ 2 * U.language]; char *long_locale = locales[ 2 * U.language];
#endif #endif
@ -127,7 +127,7 @@ void BLF_lang_set(const char *str)
else else
short_locale = locales[ 2 * U.language + 1]; short_locale = locales[ 2 * U.language + 1];
#if defined (_WIN32) #if defined (_WIN32) && !defined(FREE_WINDOWS)
if(short_locale) { if(short_locale) {
char *envStr; char *envStr;

@ -41,8 +41,6 @@ struct rctf;
#if defined _WIN32 #if defined _WIN32
# define DO_INLINE __inline # define DO_INLINE __inline
#elif defined (__sgi)
# define DO_INLINE
#elif defined (__sun) || defined (__sun__) #elif defined (__sun) || defined (__sun__)
# define DO_INLINE # define DO_INLINE
#else #else

@ -61,4 +61,5 @@ int polyIsConvex(const unsigned short* p, const int vertsPerPoly, const float* v
int polyFindVertex(const unsigned short* p, const int vertsPerPoly, unsigned short vertexIdx); int polyFindVertex(const unsigned short* p, const int vertsPerPoly, unsigned short vertexIdx);
float distPointToSegmentSq(const float* point, const float* a, const float* b); float distPointToSegmentSq(const float* point, const float* a, const float* b);
#endif //NAVMESH_CONVERSION_H #endif //NAVMESH_CONVERSION_H

@ -2278,7 +2278,7 @@ void DM_set_object_boundbox(Object *ob, DerivedMesh *dm)
dm->getMinMax(dm, min, max); dm->getMinMax(dm, min, max);
if(!ob->bb) if(!ob->bb)
ob->bb= MEM_callocN(sizeof(BoundBox), "bb"); ob->bb= MEM_callocN(sizeof(BoundBox), "DM-BoundBox");
boundbox_set_from_min_max(ob->bb, min, max); boundbox_set_from_min_max(ob->bb, min, max);
} }

@ -37,16 +37,17 @@
#include "BKE_navmesh_conversion.h" #include "BKE_navmesh_conversion.h"
#include "BKE_cdderivedmesh.h" #include "BKE_cdderivedmesh.h"
#include "BLI_utildefines.h"
#include "BLI_math.h" #include "BLI_math.h"
#include "recast-capi.h" #include "recast-capi.h"
inline float area2(const float* a, const float* b, const float* c) BM_INLINE float area2(const float* a, const float* b, const float* c)
{ {
return (b[0] - a[0]) * (c[2] - a[2]) - (c[0] - a[0]) * (b[2] - a[2]); return (b[0] - a[0]) * (c[2] - a[2]) - (c[0] - a[0]) * (b[2] - a[2]);
} }
inline int left(const float* a, const float* b, const float* c) BM_INLINE int left(const float* a, const float* b, const float* c)
{ {
return area2(a, b, c) < 0; return area2(a, b, c) < 0;
} }

@ -2363,7 +2363,7 @@ BoundBox *unit_boundbox(void)
BoundBox *bb; BoundBox *bb;
float min[3] = {-1.0f,-1.0f,-1.0f}, max[3] = {-1.0f,-1.0f,-1.0f}; float min[3] = {-1.0f,-1.0f,-1.0f}, max[3] = {-1.0f,-1.0f,-1.0f};
bb= MEM_callocN(sizeof(BoundBox), "bb"); bb= MEM_callocN(sizeof(BoundBox), "OB-BoundBox");
boundbox_set_from_min_max(bb, min, max); boundbox_set_from_min_max(bb, min, max);
return bb; return bb;

@ -1156,8 +1156,8 @@ char *BLI_get_folder_version(const int id, const int ver, const int do_check)
void BLI_setenv(const char *env, const char*val) void BLI_setenv(const char *env, const char*val)
{ {
/* SGI or free windows */ /* free windows */
#if (defined(__sgi) || ((defined(WIN32) || defined(WIN64)) && defined(FREE_WINDOWS))) #if (defined(WIN32) || defined(WIN64)) && defined(FREE_WINDOWS)
char *envstr= MEM_mallocN(sizeof(char) * (strlen(env) + strlen(val) + 2), "envstr"); /* one for = another for \0 */ char *envstr= MEM_mallocN(sizeof(char) * (strlen(env) + strlen(val) + 2), "envstr"); /* one for = another for \0 */
sprintf(envstr, "%s=%s", env, val); sprintf(envstr, "%s=%s", env, val);

@ -45,7 +45,7 @@
#include <time.h> #include <time.h>
#include <sys/stat.h> #include <sys/stat.h>
#if defined (__sun__) || defined (__sun) || defined (__sgi) || defined (__NetBSD__) #if defined (__sun__) || defined (__sun) || defined (__NetBSD__)
#include <sys/statvfs.h> /* Other modern unix os's should probably use this also */ #include <sys/statvfs.h> /* Other modern unix os's should probably use this also */
#elif !defined(__FreeBSD__) && !defined(linux) && (defined(__sparc) || defined(__sparc__)) #elif !defined(__FreeBSD__) && !defined(linux) && (defined(__sparc) || defined(__sparc__))
#include <sys/statfs.h> #include <sys/statfs.h>
@ -165,7 +165,7 @@ double BLI_diskfree(const char *dir)
return (double) (freec*bytesps*sectorspc); return (double) (freec*bytesps*sectorspc);
#else #else
#if defined (__sun__) || defined (__sun) || defined (__sgi) || defined (__NetBSD__) #if defined (__sun__) || defined (__sun) || defined (__NetBSD__)
struct statvfs disk; struct statvfs disk;
#else #else
struct statfs disk; struct statfs disk;
@ -187,7 +187,7 @@ double BLI_diskfree(const char *dir)
if (statfs(name, &disk)) return(-1); if (statfs(name, &disk)) return(-1);
#endif #endif
#if defined (__sun__) || defined (__sun) || defined (__sgi) || defined (__NetBSD__) #if defined (__sun__) || defined (__sun) || defined (__NetBSD__)
if (statvfs(name, &disk)) return(-1); if (statvfs(name, &disk)) return(-1);
#elif !defined(__FreeBSD__) && !defined(linux) && (defined(__sparc) || defined(__sparc__)) #elif !defined(__FreeBSD__) && !defined(linux) && (defined(__sparc) || defined(__sparc__))
/* WARNING - This may not be supported by geeneric unix os's - Campbell */ /* WARNING - This may not be supported by geeneric unix os's - Campbell */

@ -319,8 +319,6 @@ int BLI_system_thread_count( void )
mib[1] = HW_NCPU; mib[1] = HW_NCPU;
len = sizeof(t); len = sizeof(t);
sysctl(mib, 2, &t, &len, NULL, 0); sysctl(mib, 2, &t, &len, NULL, 0);
# elif defined(__sgi)
t = sysconf(_SC_NPROC_ONLN);
# else # else
t = (int)sysconf(_SC_NPROCESSORS_ONLN); t = (int)sysconf(_SC_NPROCESSORS_ONLN);
# endif # endif

@ -99,7 +99,7 @@ unsigned long __attribute__((__stdcall__)) htonl(unsigned long);
#else #else
/* FreeBSD, Irix, Solaris */ /* FreeBSD, Solaris */
#include <sys/types.h> #include <sys/types.h>
#endif /* ifdef platform for types */ #endif /* ifdef platform for types */
@ -118,7 +118,7 @@ unsigned long __attribute__((__stdcall__)) htonl(unsigned long);
#include <sys/param.h> #include <sys/param.h>
#elif defined (__APPLE__) #elif defined (__APPLE__)
#include <sys/types.h> #include <sys/types.h>
#else /* irix sun linux */ #else /* sun linux */
#include <netinet/in.h> #include <netinet/in.h>
#endif /* ifdef platform for htonl/ntohl */ #endif /* ifdef platform for htonl/ntohl */

@ -12290,7 +12290,7 @@ BlendFileData *blo_read_file_internal(FileData *fd, const char *filepath)
BlendFileData *bfd; BlendFileData *bfd;
bfd= MEM_callocN(sizeof(BlendFileData), "blendfiledata"); bfd= MEM_callocN(sizeof(BlendFileData), "blendfiledata");
bfd->main= MEM_callocN(sizeof(Main), "main"); bfd->main= MEM_callocN(sizeof(Main), "readfile_Main");
BLI_addtail(&fd->mainlist, bfd->main); BLI_addtail(&fd->mainlist, bfd->main);
bfd->main->versionfile= fd->fileversion; bfd->main->versionfile= fd->fileversion;

@ -1227,8 +1227,8 @@ void POSE_OT_paste (wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */ /* properties */
RNA_def_boolean(ot->srna, "flipped", 0, "Flipped on X-Axis", "Paste the stored pose flipped on to current pose"); RNA_def_boolean(ot->srna, "flipped", FALSE, "Flipped on X-Axis", "Paste the stored pose flipped on to current pose");
RNA_def_boolean(ot->srna, "selected_mask", 1, "On Selected Only", "Only paste the stored pose on to selected bones in the current pose"); RNA_def_boolean(ot->srna, "selected_mask", FALSE, "On Selected Only", "Only paste the stored pose on to selected bones in the current pose");
} }
/* ********************************************** */ /* ********************************************** */

@ -610,6 +610,7 @@ void UI_remove_popup_handlers(struct ListBase *handlers, uiPopupBlockHandle *pop
void UI_init(void); void UI_init(void);
void UI_init_userdef(void); void UI_init_userdef(void);
void UI_reinit_font(void);
void UI_exit(void); void UI_exit(void);
/* Layout /* Layout

@ -3552,6 +3552,11 @@ void UI_init_userdef(void)
uiStyleInit(); uiStyleInit();
} }
void UI_reinit_font()
{
uiStyleInit();
}
void UI_exit(void) void UI_exit(void)
{ {
ui_resources_free(); ui_resources_free();

@ -323,13 +323,28 @@ void uiStyleInit(void)
if(font->uifont_id==UIFONT_DEFAULT) { if(font->uifont_id==UIFONT_DEFAULT) {
#ifdef INTERNATIONAL #ifdef INTERNATIONAL
int unifont_size; int font_size= datatoc_bfont_ttf_size;
unsigned char *unifont_ttf= BLF_get_unifont(&unifont_size); unsigned char *font_ttf= (unsigned char*)datatoc_bfont_ttf;
static int last_font_size = 0;
if(unifont_ttf) /* use unicode font for translation */
font->blf_id= BLF_load_mem_unique("default", unifont_ttf, unifont_size); if(U.transopts & USER_DOTRANSLATE) {
else font_ttf= BLF_get_unifont(&font_size);
font->blf_id= BLF_load_mem("default", (unsigned char*)datatoc_bfont_ttf, datatoc_bfont_ttf_size);
if(!font_ttf) {
/* fall back if not found */
font_size= datatoc_bfont_ttf_size;
font_ttf= (unsigned char*)datatoc_bfont_ttf;
}
}
/* relload only if needed */
if(last_font_size != font_size) {
BLF_unload("default");
last_font_size = font_size;
}
font->blf_id= BLF_load_mem("default", font_ttf, font_size);
#else #else
font->blf_id= BLF_load_mem("default", (unsigned char*)datatoc_bfont_ttf, datatoc_bfont_ttf_size); font->blf_id= BLF_load_mem("default", (unsigned char*)datatoc_bfont_ttf, datatoc_bfont_ttf_size);
#endif #endif

@ -2488,7 +2488,7 @@ void uiTemplateReportsBanner(uiLayout *layout, bContext *C)
uiLayout *ui_abs; uiLayout *ui_abs;
uiBlock *block; uiBlock *block;
uiBut *but; uiBut *but;
uiStyle *style= U.uistyles.first; uiStyle *style= UI_GetStyle();
int width; int width;
int icon=0; int icon=0;

@ -279,18 +279,7 @@ void setlinestyle(int nr)
void set_inverted_drawing(int enable) void set_inverted_drawing(int enable)
{ {
glLogicOp(enable?GL_INVERT:GL_COPY); glLogicOp(enable?GL_INVERT:GL_COPY);
/* Use GL_BLEND_EQUATION_EXT on sgi (if we have it),
* apparently GL_COLOR_LOGIC_OP doesn't work on O2?
* Is this an sgi bug or our bug?
*/
#if defined(__sgi) && defined(GL_BLEND_EQUATION_EXT)
glBlendEquationEXT(enable?GL_LOGIC_OP:GL_FUNC_ADD_EXT);
glToggle(GL_BLEND, enable);
#else
glToggle(GL_COLOR_LOGIC_OP, enable); glToggle(GL_COLOR_LOGIC_OP, enable);
#endif
glToggle(GL_DITHER, !enable); glToggle(GL_DITHER, !enable);
} }

@ -21,11 +21,11 @@
set(INC set(INC
../include ../include
../interface
../../blenfont ../../blenfont
../../blenkernel ../../blenkernel
../../blenlib ../../blenlib
../../blenloader ../../blenloader
../../editors/interface
../../makesdna ../../makesdna
../../makesrna ../../makesrna
../../windowmanager ../../windowmanager

@ -129,7 +129,7 @@ static uiBlock *socket_component_menu(bContext *C, ARegion *ar, void *args_v)
block= uiBeginBlock(C, ar, "socket menu", UI_EMBOSS); block= uiBeginBlock(C, ar, "socket menu", UI_EMBOSS);
uiBlockSetFlag(block, UI_BLOCK_KEEP_OPEN); uiBlockSetFlag(block, UI_BLOCK_KEEP_OPEN);
layout= uiLayoutColumn(uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, args->x, args->y+2, args->width, NODE_DY, U.uistyles.first), 0); layout= uiLayoutColumn(uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, args->x, args->y+2, args->width, NODE_DY, UI_GetStyle()), 0);
uiItemR(layout, &args->ptr, "default_value", UI_ITEM_R_EXPAND, "", ICON_NONE); uiItemR(layout, &args->ptr, "default_value", UI_ITEM_R_EXPAND, "", ICON_NONE);
@ -788,7 +788,7 @@ static void node_draw_group(const bContext *C, ARegion *ar, SpaceNode *snode, bN
UI_ThemeColor(TH_TEXT_HI); UI_ThemeColor(TH_TEXT_HI);
layout = uiBlockLayout(gnode->block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, (short)(rect.xmin+15), (short)(rect.ymax+group_header), layout = uiBlockLayout(gnode->block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, (short)(rect.xmin+15), (short)(rect.ymax+group_header),
MIN2((int)(rect.xmax - rect.xmin-18.0f), node_group_frame+20), group_header, U.uistyles.first); MIN2((int)(rect.xmax - rect.xmin-18.0f), node_group_frame+20), group_header, UI_GetStyle());
RNA_pointer_create(&ntree->id, &RNA_Node, gnode, &ptr); RNA_pointer_create(&ntree->id, &RNA_Node, gnode, &ptr);
uiTemplateIDBrowse(layout, (bContext*)C, &ptr, "node_tree", NULL, NULL, NULL); uiTemplateIDBrowse(layout, (bContext*)C, &ptr, "node_tree", NULL, NULL, NULL);
uiBlockLayoutResolve(gnode->block, NULL, NULL); uiBlockLayoutResolve(gnode->block, NULL, NULL);

@ -3326,7 +3326,7 @@ static void UV_OT_cursor_set(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */ /* properties */
RNA_def_float_vector(ot->srna, "location", 2, NULL, -FLT_MAX, FLT_MAX, "Location", "Cursor location in 0.0-1.0 coordinates.", -10.0f, 10.0f); RNA_def_float_vector(ot->srna, "location", 2, NULL, -FLT_MAX, FLT_MAX, "Location", "Cursor location in normalised (0.0-1.0) coordinates", -10.0f, 10.0f);
} }
/********************** set tile operator **********************/ /********************** set tile operator **********************/

@ -862,7 +862,7 @@ static void correct_uv_aspect(BMEditMesh *em)
static void uv_map_clip_correct_properties(wmOperatorType *ot) static void uv_map_clip_correct_properties(wmOperatorType *ot)
{ {
RNA_def_boolean(ot->srna, "correct_aspect", 1, "Correct Aspect", RNA_def_boolean(ot->srna, "correct_aspect", 1, "Correct Aspect",
"Map UV's taking image aspect ratio into account"); "Map UVs taking image aspect ratio into account");
RNA_def_boolean(ot->srna, "clip_to_bounds", 0, "Clip to Bounds", RNA_def_boolean(ot->srna, "clip_to_bounds", 0, "Clip to Bounds",
"Clip UV coordinates to bounds after unwrapping"); "Clip UV coordinates to bounds after unwrapping");
RNA_def_boolean(ot->srna, "scale_to_bounds", 0, "Scale to Bounds", RNA_def_boolean(ot->srna, "scale_to_bounds", 0, "Scale to Bounds",
@ -1014,11 +1014,11 @@ void UV_OT_unwrap(wmOperatorType *ot)
/* properties */ /* properties */
RNA_def_enum(ot->srna, "method", method_items, 0, "Method", RNA_def_enum(ot->srna, "method", method_items, 0, "Method",
"Unwrapping method. Angle Based usually gives better results than Conformal, while being somewhat slower"); "Unwrapping method (Angle Based usually gives better results than Conformal, while being somewhat slower)");
RNA_def_boolean(ot->srna, "fill_holes", 1, "Fill Holes", RNA_def_boolean(ot->srna, "fill_holes", 1, "Fill Holes",
"Virtual fill holes in mesh before unwrapping, to better avoid overlaps and preserve symmetry"); "Virtual fill holes in mesh before unwrapping, to better avoid overlaps and preserve symmetry");
RNA_def_boolean(ot->srna, "correct_aspect", 1, "Correct Aspect", RNA_def_boolean(ot->srna, "correct_aspect", 1, "Correct Aspect",
"Map UV's taking image aspect ratio into account"); "Map UVs taking image aspect ratio into account");
} }
/**************** Project From View operator **************/ /**************** Project From View operator **************/

@ -114,109 +114,6 @@
#endif #endif
#endif #endif
/****/
#ifdef __sgi
#include <dmedia/moviefile.h>
static void movie_printerror(char * str) {
const char * errstr = mvGetErrorStr(mvGetErrno());
if (str) {
if (errstr) printf("%s: %s\n", str, errstr);
else printf("%s: returned error\n", str);
} else printf("%s\n", errstr);
}
static int startmovie(struct anim * anim) {
if (anim == 0) return(-1);
if ( mvOpenFile (anim->name, O_BINARY|O_RDONLY, &anim->movie ) != DM_SUCCESS ) {
printf("Can't open movie: %s\n", anim->name);
return(-1);
}
if ( mvFindTrackByMedium (anim->movie, DM_IMAGE, &anim->track) != DM_SUCCESS ) {
printf("No image track in movie: %s\n", anim->name);
mvClose(anim->movie);
return(-1);
}
anim->duration = mvGetTrackLength (anim->track);
anim->params = mvGetParams( anim->track );
anim->x = dmParamsGetInt( anim->params, DM_IMAGE_WIDTH);
anim->y = dmParamsGetInt( anim->params, DM_IMAGE_HEIGHT);
anim->interlacing = dmParamsGetEnum (anim->params, DM_IMAGE_INTERLACING);
anim->orientation = dmParamsGetEnum (anim->params, DM_IMAGE_ORIENTATION);
anim->framesize = dmImageFrameSize(anim->params);
anim->curposition = 0;
anim->preseek = 0;
/*printf("x:%d y:%d size:%d interl:%d dur:%d\n", anim->x, anim->y, anim->framesize, anim->interlacing, anim->duration);*/
return (0);
}
static ImBuf * movie_fetchibuf(struct anim * anim, int position) {
ImBuf * ibuf;
/* extern rectcpy(); */
int size;
unsigned int *rect1, *rect2;
if (anim == 0) return (0);
ibuf = IMB_allocImBuf(anim->x, anim->y, 24, IB_rect);
if ( mvReadFrames(anim->track, position, 1, ibuf->x * ibuf->y *
sizeof(int), ibuf->rect ) != DM_SUCCESS ) {
movie_printerror("mvReadFrames");
IMB_freeImBuf(ibuf);
return(0);
}
/*
if (anim->interlacing == DM_IMAGE_INTERLACED_EVEN) {
rect1 = ibuf->rect + (ibuf->x * ibuf->y) - 1;
rect2 = rect1 - ibuf->x;
for (size = ibuf->x * (ibuf->y - 1); size > 0; size--){
*rect1-- = *rect2--;
}
}
*/
if (anim->interlacing == DM_IMAGE_INTERLACED_EVEN)
{
rect1 = ibuf->rect;
rect2 = rect1 + ibuf->x;
for (size = ibuf->x * (ibuf->y - 1); size > 0; size--){
*rect1++ = *rect2++;
}
}
/*if (anim->orientation == DM_TOP_TO_BOTTOM) IMB_flipy(ibuf);*/
return(ibuf);
}
static void free_anim_movie(struct anim * anim) {
if (anim == NULL) return;
if (anim->movie) {
mvClose(anim->movie);
anim->movie = NULL;
}
anim->duration = 0;
}
int ismovie(char *name) {
return (mvIsMovieFile(name) == DM_TRUE);
}
#else
int ismovie(const char *UNUSED(name)) { int ismovie(const char *UNUSED(name)) {
return 0; return 0;
} }
@ -226,7 +123,6 @@ static int startmovie(struct anim *UNUSED(anim)) { return 1; }
static ImBuf * movie_fetchibuf(struct anim *UNUSED(anim), int UNUSED(position)) { return NULL; } static ImBuf * movie_fetchibuf(struct anim *UNUSED(anim), int UNUSED(position)) { return NULL; }
static void free_anim_movie(struct anim *UNUSED(anim)) { ; } static void free_anim_movie(struct anim *UNUSED(anim)) { ; }
#endif
#if defined(_WIN32) #if defined(_WIN32)
# define PATHSEPERATOR '\\' # define PATHSEPERATOR '\\'

@ -75,6 +75,7 @@ typedef enum ModifierType {
eModifierType_WeightVGMix, eModifierType_WeightVGMix,
eModifierType_WeightVGProximity, eModifierType_WeightVGProximity,
eModifierType_NavMesh, eModifierType_NavMesh,
eModifierType_DynamicPaint, /* reserve slot */
/* BMESH ONLY - keeps getting bumped by new modifiers in trunk */ /* BMESH ONLY - keeps getting bumped by new modifiers in trunk */
eModifierType_NgonInterp, eModifierType_NgonInterp,

@ -86,6 +86,7 @@ PropertyRNA *RNA_def_string(StructOrFunctionRNA *cont, const char *identifier, c
PropertyRNA *RNA_def_string_file_path(StructOrFunctionRNA *cont, const char *identifier, const char *default_value, int maxlen, const char *ui_name, const char *ui_description); PropertyRNA *RNA_def_string_file_path(StructOrFunctionRNA *cont, const char *identifier, const char *default_value, int maxlen, const char *ui_name, const char *ui_description);
PropertyRNA *RNA_def_string_dir_path(StructOrFunctionRNA *cont, const char *identifier, const char *default_value, int maxlen, const char *ui_name, const char *ui_description); PropertyRNA *RNA_def_string_dir_path(StructOrFunctionRNA *cont, const char *identifier, const char *default_value, int maxlen, const char *ui_name, const char *ui_description);
PropertyRNA *RNA_def_string_file_name(StructOrFunctionRNA *cont, const char *identifier, const char *default_value, int maxlen, const char *ui_name, const char *ui_description); PropertyRNA *RNA_def_string_file_name(StructOrFunctionRNA *cont, const char *identifier, const char *default_value, int maxlen, const char *ui_name, const char *ui_description);
PropertyRNA *RNA_def_string_translate(StructOrFunctionRNA *cont, const char *identifier, const char *default_value, int maxlen, const char *ui_name, const char *ui_description);
PropertyRNA *RNA_def_enum(StructOrFunctionRNA *cont, const char *identifier, const EnumPropertyItem *items, int default_value, const char *ui_name, const char *ui_description); PropertyRNA *RNA_def_enum(StructOrFunctionRNA *cont, const char *identifier, const EnumPropertyItem *items, int default_value, const char *ui_name, const char *ui_description);
PropertyRNA *RNA_def_enum_flag(StructOrFunctionRNA *cont, const char *identifier, const EnumPropertyItem *items, int default_value, const char *ui_name, const char *ui_description); PropertyRNA *RNA_def_enum_flag(StructOrFunctionRNA *cont, const char *identifier, const EnumPropertyItem *items, int default_value, const char *ui_name, const char *ui_description);

@ -110,6 +110,7 @@ typedef enum PropertySubType {
PROP_FILEPATH = 1, PROP_FILEPATH = 1,
PROP_DIRPATH = 2, PROP_DIRPATH = 2,
PROP_FILENAME = 3, PROP_FILENAME = 3,
PROP_TRANSLATE = 4, /* a string which should be translated */
/* numbers */ /* numbers */
PROP_UNSIGNED = 13, PROP_UNSIGNED = 13,

@ -1815,6 +1815,7 @@ static const char *rna_property_subtypename(PropertySubType type)
case PROP_FILEPATH: return "PROP_FILEPATH"; case PROP_FILEPATH: return "PROP_FILEPATH";
case PROP_FILENAME: return "PROP_FILENAME"; case PROP_FILENAME: return "PROP_FILENAME";
case PROP_DIRPATH: return "PROP_DIRPATH"; case PROP_DIRPATH: return "PROP_DIRPATH";
case PROP_TRANSLATE: return "PROP_TRANSLATE";
case PROP_UNSIGNED: return "PROP_UNSIGNED"; case PROP_UNSIGNED: return "PROP_UNSIGNED";
case PROP_PERCENTAGE: return "PROP_PERCENTAGE"; case PROP_PERCENTAGE: return "PROP_PERCENTAGE";
case PROP_FACTOR: return "PROP_FACTOR"; case PROP_FACTOR: return "PROP_FACTOR";

@ -460,13 +460,13 @@ static void rna_def_ID(BlenderRNA *brna)
prop= RNA_def_property(srna, "use_fake_user", PROP_BOOLEAN, PROP_NONE); prop= RNA_def_property(srna, "use_fake_user", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIB_FAKEUSER); RNA_def_property_boolean_sdna(prop, NULL, "flag", LIB_FAKEUSER);
RNA_def_property_ui_text(prop, "Fake User", "Saves this datablock even if it has no users"); RNA_def_property_ui_text(prop, "Fake User", "Save this datablock even if it has no users");
RNA_def_property_boolean_funcs(prop, NULL, "rna_ID_fake_user_set"); RNA_def_property_boolean_funcs(prop, NULL, "rna_ID_fake_user_set");
prop= RNA_def_property(srna, "tag", PROP_BOOLEAN, PROP_NONE); prop= RNA_def_property(srna, "tag", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIB_DOIT); RNA_def_property_boolean_sdna(prop, NULL, "flag", LIB_DOIT);
RNA_def_property_flag(prop, PROP_LIB_EXCEPTION); RNA_def_property_flag(prop, PROP_LIB_EXCEPTION);
RNA_def_property_ui_text(prop, "Tag", "Tools can use this to tag data, (initial state is undefined)"); RNA_def_property_ui_text(prop, "Tag", "Tools can use this to tag data (initial state is undefined)");
prop= RNA_def_property(srna, "library", PROP_POINTER, PROP_NONE); prop= RNA_def_property(srna, "library", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "lib"); RNA_def_property_pointer_sdna(prop, NULL, "lib");
@ -480,7 +480,7 @@ static void rna_def_ID(BlenderRNA *brna)
RNA_def_function_return(func, parm); RNA_def_function_return(func, parm);
func= RNA_def_function(srna, "user_clear", "rna_ID_user_clear"); func= RNA_def_function(srna, "user_clear", "rna_ID_user_clear");
RNA_def_function_ui_description(func, "Clears the user count of a datablock so its not saved, " RNA_def_function_ui_description(func, "Clear the user count of a datablock so its not saved, "
"on reload the data will be removed"); "on reload the data will be removed");
func= RNA_def_function(srna, "animation_data_create", "BKE_id_add_animdata"); func= RNA_def_function(srna, "animation_data_create", "BKE_id_add_animdata");
@ -493,7 +493,7 @@ static void rna_def_ID(BlenderRNA *brna)
func= RNA_def_function(srna, "update_tag", "rna_ID_update_tag"); func= RNA_def_function(srna, "update_tag", "rna_ID_update_tag");
RNA_def_function_flag(func, FUNC_USE_REPORTS); RNA_def_function_flag(func, FUNC_USE_REPORTS);
RNA_def_function_ui_description(func, "Tag the id to update its display data"); RNA_def_function_ui_description(func, "Tag the ID to update its display data");
RNA_def_enum_flag(func, "refresh", update_flag_items, 0, "", "Type of updates to perform"); RNA_def_enum_flag(func, "refresh", update_flag_items, 0, "", "Type of updates to perform");
} }

@ -98,13 +98,13 @@ static FCurve *rna_Action_fcurve_new(bAction *act, ReportList *reports, const ch
if(group && group[0]=='\0') group= NULL; if(group && group[0]=='\0') group= NULL;
if(data_path[0] == '\0') { if(data_path[0] == '\0') {
BKE_report(reports, RPT_ERROR, "FCurve data path empty, invalid argument"); BKE_report(reports, RPT_ERROR, "F-Curve data path empty, invalid argument");
return NULL; return NULL;
} }
/* annoying, check if this exists */ /* annoying, check if this exists */
if(verify_fcurve(act, group, data_path, index, 0)) { if(verify_fcurve(act, group, data_path, index, 0)) {
BKE_reportf(reports, RPT_ERROR, "FCurve '%s[%d]' already exists in action '%s'", data_path, index, act->id.name+2); BKE_reportf(reports, RPT_ERROR, "F-Curve '%s[%d]' already exists in action '%s'", data_path, index, act->id.name+2);
return NULL; return NULL;
} }
return verify_fcurve(act, group, data_path, index, 1); return verify_fcurve(act, group, data_path, index, 1);
@ -114,7 +114,7 @@ static void rna_Action_fcurve_remove(bAction *act, ReportList *reports, FCurve *
{ {
if (fcu->grp) { if (fcu->grp) {
if (BLI_findindex(&act->groups, fcu->grp) == -1) { if (BLI_findindex(&act->groups, fcu->grp) == -1) {
BKE_reportf(reports, RPT_ERROR, "FCurve's ActionGroup '%s' not found in action '%s'", fcu->grp->name, act->id.name+2); BKE_reportf(reports, RPT_ERROR, "F-Curve's ActionGroup '%s' not found in action '%s'", fcu->grp->name, act->id.name+2);
return; return;
} }
@ -123,7 +123,7 @@ static void rna_Action_fcurve_remove(bAction *act, ReportList *reports, FCurve *
} }
else { else {
if (BLI_findindex(&act->curves, fcu) == -1) { if (BLI_findindex(&act->curves, fcu) == -1) {
BKE_reportf(reports, RPT_ERROR, "FCurve not found in action '%s'", act->id.name+2); BKE_reportf(reports, RPT_ERROR, "F-Curve not found in action '%s'", act->id.name+2);
return; return;
} }
@ -309,20 +309,20 @@ static void rna_def_dopesheet(BlenderRNA *brna)
/* NLA Specific Settings */ /* NLA Specific Settings */
prop= RNA_def_property(srna, "show_missing_nla", PROP_BOOLEAN, PROP_NONE); prop= RNA_def_property(srna, "show_missing_nla", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NLA_NOACT); RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NLA_NOACT);
RNA_def_property_ui_text(prop, "Include Missing NLA", "Include Animation Data blocks with no NLA data. (NLA Editor only)"); RNA_def_property_ui_text(prop, "Include Missing NLA", "Include Animation Data blocks with no NLA data (NLA Editor only)");
RNA_def_property_ui_icon(prop, ICON_ACTION, 0); RNA_def_property_ui_icon(prop, ICON_ACTION, 0);
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
/* Summary Settings (DopeSheet editors only) */ /* Summary Settings (DopeSheet editors only) */
prop= RNA_def_property(srna, "show_summary", PROP_BOOLEAN, PROP_NONE); prop= RNA_def_property(srna, "show_summary", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_SUMMARY); RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_SUMMARY);
RNA_def_property_ui_text(prop, "Display Summary", "Display an additional 'summary' line. (DopeSheet Editors only)"); RNA_def_property_ui_text(prop, "Display Summary", "Display an additional 'summary' line (DopeSheet Editors only)");
RNA_def_property_ui_icon(prop, ICON_BORDERMOVE, 0); RNA_def_property_ui_icon(prop, ICON_BORDERMOVE, 0);
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
prop= RNA_def_property(srna, "show_expanded_summary", PROP_BOOLEAN, PROP_NONE); prop= RNA_def_property(srna, "show_expanded_summary", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", ADS_FLAG_SUMMARY_COLLAPSED); RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", ADS_FLAG_SUMMARY_COLLAPSED);
RNA_def_property_ui_text(prop, "Collapse Summary", "Collapse summary when shown, so all other channels get hidden. (DopeSheet Editors Only)"); RNA_def_property_ui_text(prop, "Collapse Summary", "Collapse summary when shown, so all other channels get hidden (DopeSheet Editors Only)");
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
@ -514,24 +514,24 @@ static void rna_def_action_fcurves(BlenderRNA *brna, PropertyRNA *cprop)
RNA_def_property_srna(cprop, "ActionFCurves"); RNA_def_property_srna(cprop, "ActionFCurves");
srna= RNA_def_struct(brna, "ActionFCurves", NULL); srna= RNA_def_struct(brna, "ActionFCurves", NULL);
RNA_def_struct_sdna(srna, "bAction"); RNA_def_struct_sdna(srna, "bAction");
RNA_def_struct_ui_text(srna, "Action FCurves", "Collection of action fcurves"); RNA_def_struct_ui_text(srna, "Action F-Curves", "Collection of action F-Curves");
func= RNA_def_function(srna, "new", "rna_Action_fcurve_new"); func= RNA_def_function(srna, "new", "rna_Action_fcurve_new");
RNA_def_function_ui_description(func, "Add a keyframe to the curve"); RNA_def_function_ui_description(func, "Add a keyframe to the F-Curve");
RNA_def_function_flag(func, FUNC_USE_REPORTS); RNA_def_function_flag(func, FUNC_USE_REPORTS);
parm= RNA_def_string(func, "data_path", "", 0, "Data Path", "FCurve data path to use"); parm= RNA_def_string(func, "data_path", "", 0, "Data Path", "F-Curve data path to use");
RNA_def_property_flag(parm, PROP_REQUIRED); RNA_def_property_flag(parm, PROP_REQUIRED);
RNA_def_int(func, "index", 0, 0, INT_MAX, "Index", "Array index", 0, INT_MAX); RNA_def_int(func, "index", 0, 0, INT_MAX, "Index", "Array index", 0, INT_MAX);
RNA_def_string(func, "action_group", "", 0, "Action Group", "Acton group to add this fcurve into"); RNA_def_string(func, "action_group", "", 0, "Action Group", "Acton group to add this F-Curve into");
parm= RNA_def_pointer(func, "fcurve", "FCurve", "", "Newly created fcurve"); parm= RNA_def_pointer(func, "fcurve", "FCurve", "", "Newly created F-Curve");
RNA_def_function_return(func, parm); RNA_def_function_return(func, parm);
func= RNA_def_function(srna, "remove", "rna_Action_fcurve_remove"); func= RNA_def_function(srna, "remove", "rna_Action_fcurve_remove");
RNA_def_function_ui_description(func, "Remove action group"); RNA_def_function_ui_description(func, "Remove action group");
RNA_def_function_flag(func, FUNC_USE_REPORTS); RNA_def_function_flag(func, FUNC_USE_REPORTS);
parm= RNA_def_pointer(func, "fcurve", "FCurve", "", "FCurve to remove"); parm= RNA_def_pointer(func, "fcurve", "FCurve", "", "F-Curve to remove");
RNA_def_property_flag(parm, PROP_REQUIRED|PROP_NEVER_NULL); RNA_def_property_flag(parm, PROP_REQUIRED|PROP_NEVER_NULL);
} }
@ -605,7 +605,7 @@ static void rna_def_action(BlenderRNA *brna)
rna_def_action_pose_markers(brna, prop); rna_def_action_pose_markers(brna, prop);
/* properties */ /* properties */
prop= RNA_def_float_vector(srna, "frame_range" , 2 , NULL , 0, 0, "Frame Range" , "The final frame range of all fcurves within this action" , 0 , 0); prop= RNA_def_float_vector(srna, "frame_range" , 2 , NULL , 0, 0, "Frame Range" , "The final frame range of all F-Curves within this action" , 0 , 0);
RNA_def_property_float_funcs(prop, "rna_Action_frame_range_get" , NULL, NULL); RNA_def_property_float_funcs(prop, "rna_Action_frame_range_get" , NULL, NULL);
RNA_def_property_clear_flag(prop, PROP_EDITABLE); RNA_def_property_clear_flag(prop, PROP_EDITABLE);

@ -489,7 +489,7 @@ static void rna_def_keyingset_info(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_REGISTER|PROP_NEVER_CLAMP); RNA_def_property_flag(prop, PROP_REGISTER|PROP_NEVER_CLAMP);
/* Name */ /* Name */
prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_NONE); prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_TRANSLATE);
RNA_def_property_string_sdna(prop, NULL, "name"); RNA_def_property_string_sdna(prop, NULL, "name");
RNA_def_property_ui_text(prop, "Name", ""); RNA_def_property_ui_text(prop, "Name", "");
RNA_def_struct_name_property(srna, prop); RNA_def_struct_name_property(srna, prop);

@ -2240,6 +2240,20 @@ PropertyRNA *RNA_def_string_file_name(StructOrFunctionRNA *cont_, const char *id
return prop; return prop;
} }
PropertyRNA *RNA_def_string_translate(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, int maxlen,
const char *ui_name, const char *ui_description)
{
ContainerRNA *cont= cont_;
PropertyRNA *prop;
prop= RNA_def_property(cont, identifier, PROP_STRING, PROP_TRANSLATE);
if(maxlen != 0) RNA_def_property_string_maxlength(prop, maxlen);
if(default_value) RNA_def_property_string_default(prop, default_value);
RNA_def_property_ui_text(prop, ui_name, ui_description);
return prop;
}
PropertyRNA *RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, int default_value, PropertyRNA *RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, int default_value,
const char *ui_name, const char *ui_description) const char *ui_name, const char *ui_description)
{ {

@ -286,7 +286,7 @@ static void rna_def_render_engine(BlenderRNA *brna)
RNA_def_property_string_sdna(prop, NULL, "type->idname"); RNA_def_property_string_sdna(prop, NULL, "type->idname");
RNA_def_property_flag(prop, PROP_REGISTER|PROP_NEVER_CLAMP); RNA_def_property_flag(prop, PROP_REGISTER|PROP_NEVER_CLAMP);
prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_NONE); prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_TRANSLATE);
RNA_def_property_string_sdna(prop, NULL, "type->name"); RNA_def_property_string_sdna(prop, NULL, "type->name");
RNA_def_property_flag(prop, PROP_REGISTER); RNA_def_property_flag(prop, PROP_REGISTER);

@ -53,6 +53,7 @@ EnumPropertyItem property_subtype_items[] = {
{PROP_FILEPATH, "FILEPATH", 0, "File Path", ""}, {PROP_FILEPATH, "FILEPATH", 0, "File Path", ""},
{PROP_DIRPATH, "DIRPATH", 0, "Directory Path", ""}, {PROP_DIRPATH, "DIRPATH", 0, "Directory Path", ""},
{PROP_FILENAME, "FILENAME", 0, "File Name", ""}, {PROP_FILENAME, "FILENAME", 0, "File Name", ""},
{PROP_TRANSLATE, "TRANSLATE", 0, "Translate", ""},
/* numbers */ /* numbers */
{PROP_UNSIGNED, "UNSIGNED", 0, "Unsigned", ""}, {PROP_UNSIGNED, "UNSIGNED", 0, "Unsigned", ""},

@ -661,7 +661,7 @@ static void rna_def_panel(BlenderRNA *brna)
"class name is \"OBJECT_PT_hello\", and bl_idname is not set by the " "class name is \"OBJECT_PT_hello\", and bl_idname is not set by the "
"script, then bl_idname = \"OBJECT_PT_hello\""); "script, then bl_idname = \"OBJECT_PT_hello\"");
prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_NONE); prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_TRANSLATE);
RNA_def_property_string_sdna(prop, NULL, "type->label"); RNA_def_property_string_sdna(prop, NULL, "type->label");
RNA_def_property_flag(prop, PROP_REGISTER); RNA_def_property_flag(prop, PROP_REGISTER);
RNA_def_property_ui_text(prop, "Label", RNA_def_property_ui_text(prop, "Label",
@ -785,7 +785,7 @@ static void rna_def_menu(BlenderRNA *brna)
"class name is \"OBJECT_MT_hello\", and bl_idname is not set by the " "class name is \"OBJECT_MT_hello\", and bl_idname is not set by the "
"script, then bl_idname = \"OBJECT_MT_hello\""); "script, then bl_idname = \"OBJECT_MT_hello\"");
prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_NONE); prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_TRANSLATE);
RNA_def_property_string_sdna(prop, NULL, "type->label"); RNA_def_property_string_sdna(prop, NULL, "type->label");
RNA_def_property_flag(prop, PROP_REGISTER); RNA_def_property_flag(prop, PROP_REGISTER);
RNA_def_property_ui_text(prop, "Label", "The menu label"); RNA_def_property_ui_text(prop, "Label", "The menu label");

@ -84,7 +84,7 @@ static void api_ui_item_common(FunctionRNA *func)
{ {
PropertyRNA *prop; PropertyRNA *prop;
RNA_def_string(func, "text", "", 0, "", "Override automatic text of the item"); prop= RNA_def_string_translate(func, "text", "", 0, "", "Override automatic text of the item");
prop= RNA_def_property(func, "icon", PROP_ENUM, PROP_NONE); prop= RNA_def_property(func, "icon", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, icon_items); RNA_def_property_enum_items(prop, icon_items);
@ -309,7 +309,7 @@ void RNA_api_ui_layout(StructRNA *srna)
parm= RNA_def_string(func, "type_property", "", 0, "", parm= RNA_def_string(func, "type_property", "", 0, "",
"Identifier of property in data giving the type of the ID-blocks to use"); "Identifier of property in data giving the type of the ID-blocks to use");
RNA_def_property_flag(parm, PROP_REQUIRED); RNA_def_property_flag(parm, PROP_REQUIRED);
RNA_def_string(func, "text", "", 0, "", "Custom label to display in UI"); RNA_def_string_translate(func, "text", "", 0, "", "Custom label to display in UI");
func= RNA_def_function(srna, "template_path_builder", "uiTemplatePathBuilder"); func= RNA_def_function(srna, "template_path_builder", "uiTemplatePathBuilder");
parm= RNA_def_pointer(func, "data", "AnyType", "", "Data from which to take property"); parm= RNA_def_pointer(func, "data", "AnyType", "", "Data from which to take property");
@ -318,7 +318,7 @@ void RNA_api_ui_layout(StructRNA *srna)
RNA_def_property_flag(parm, PROP_REQUIRED); RNA_def_property_flag(parm, PROP_REQUIRED);
parm= RNA_def_pointer(func, "root", "ID", "", "ID-block from which path is evaluated from"); parm= RNA_def_pointer(func, "root", "ID", "", "ID-block from which path is evaluated from");
RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR); RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR);
RNA_def_string(func, "text", "", 0, "", "Custom label to display in UI"); RNA_def_string_translate(func, "text", "", 0, "", "Custom label to display in UI");
func= RNA_def_function(srna, "template_modifier", "uiTemplateModifier"); func= RNA_def_function(srna, "template_modifier", "uiTemplateModifier");
RNA_def_function_flag(func, FUNC_USE_CONTEXT); RNA_def_function_flag(func, FUNC_USE_CONTEXT);

@ -65,6 +65,8 @@
#include "MEM_guardedalloc.h" #include "MEM_guardedalloc.h"
#include "MEM_CacheLimiterC-Api.h" #include "MEM_CacheLimiterC-Api.h"
#include "UI_interface.h"
static void rna_userdef_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *UNUSED(ptr)) static void rna_userdef_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *UNUSED(ptr))
{ {
WM_main_add_notifier(NC_WINDOW, NULL); WM_main_add_notifier(NC_WINDOW, NULL);
@ -79,7 +81,9 @@ static void rna_userdef_dpi_update(Main *bmain, Scene *scene, PointerRNA *ptr)
static void rna_userdef_language_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *UNUSED(ptr)) static void rna_userdef_language_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *UNUSED(ptr))
{ {
BLF_cache_clear();
BLF_lang_set(NULL); BLF_lang_set(NULL);
UI_reinit_font();
} }
static void rna_userdef_show_manipulator_update(Main *bmain, Scene *scene, PointerRNA *ptr) static void rna_userdef_show_manipulator_update(Main *bmain, Scene *scene, PointerRNA *ptr)

@ -1188,14 +1188,14 @@ static void rna_def_operator(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_REGISTER|PROP_NEVER_CLAMP); RNA_def_property_flag(prop, PROP_REGISTER|PROP_NEVER_CLAMP);
RNA_def_struct_name_property(srna, prop); RNA_def_struct_name_property(srna, prop);
prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_NONE); prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_TRANSLATE);
RNA_def_property_string_sdna(prop, NULL, "type->name"); RNA_def_property_string_sdna(prop, NULL, "type->name");
RNA_def_property_string_maxlength(prop, 1024); /* else it uses the pointer size! */ RNA_def_property_string_maxlength(prop, 1024); /* else it uses the pointer size! */
RNA_def_property_string_funcs(prop, NULL, NULL, "rna_Operator_bl_label_set"); RNA_def_property_string_funcs(prop, NULL, NULL, "rna_Operator_bl_label_set");
// RNA_def_property_clear_flag(prop, PROP_EDITABLE); // RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_flag(prop, PROP_REGISTER); RNA_def_property_flag(prop, PROP_REGISTER);
prop= RNA_def_property(srna, "bl_description", PROP_STRING, PROP_NONE); prop= RNA_def_property(srna, "bl_description", PROP_STRING, PROP_TRANSLATE);
RNA_def_property_string_sdna(prop, NULL, "type->description"); RNA_def_property_string_sdna(prop, NULL, "type->description");
RNA_def_property_string_maxlength(prop, 1024); /* else it uses the pointer size! */ RNA_def_property_string_maxlength(prop, 1024); /* else it uses the pointer size! */
RNA_def_property_string_funcs(prop, NULL, NULL, "rna_Operator_bl_description_set"); RNA_def_property_string_funcs(prop, NULL, NULL, "rna_Operator_bl_description_set");
@ -1249,14 +1249,14 @@ static void rna_def_macro_operator(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_REGISTER|PROP_NEVER_CLAMP); RNA_def_property_flag(prop, PROP_REGISTER|PROP_NEVER_CLAMP);
RNA_def_struct_name_property(srna, prop); RNA_def_struct_name_property(srna, prop);
prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_NONE); prop= RNA_def_property(srna, "bl_label", PROP_STRING, PROP_TRANSLATE);
RNA_def_property_string_sdna(prop, NULL, "type->name"); RNA_def_property_string_sdna(prop, NULL, "type->name");
RNA_def_property_string_maxlength(prop, 1024); /* else it uses the pointer size! */ RNA_def_property_string_maxlength(prop, 1024); /* else it uses the pointer size! */
RNA_def_property_string_funcs(prop, NULL, NULL, "rna_Operator_bl_label_set"); RNA_def_property_string_funcs(prop, NULL, NULL, "rna_Operator_bl_label_set");
// RNA_def_property_clear_flag(prop, PROP_EDITABLE); // RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_flag(prop, PROP_REGISTER); RNA_def_property_flag(prop, PROP_REGISTER);
prop= RNA_def_property(srna, "bl_description", PROP_STRING, PROP_NONE); prop= RNA_def_property(srna, "bl_description", PROP_STRING, PROP_TRANSLATE);
RNA_def_property_string_sdna(prop, NULL, "type->description"); RNA_def_property_string_sdna(prop, NULL, "type->description");
RNA_def_property_string_maxlength(prop, 1024); /* else it uses the pointer size! */ RNA_def_property_string_maxlength(prop, 1024); /* else it uses the pointer size! */
RNA_def_property_string_funcs(prop, NULL, NULL, "rna_Operator_bl_description_set"); RNA_def_property_string_funcs(prop, NULL, NULL, "rna_Operator_bl_description_set");

@ -48,12 +48,12 @@
#include "BKE_customdata.h" #include "BKE_customdata.h"
#include "MEM_guardedalloc.h" #include "MEM_guardedalloc.h"
static int bit(int a, int b) BM_INLINE int bit(int a, int b)
{ {
return (a & (1 << b)) >> b; return (a & (1 << b)) >> b;
} }
static void intToCol(int i, float* col) BM_INLINE void intToCol(int i, float* col)
{ {
int r = bit(i, 0) + bit(i, 3) * 2 + 1; int r = bit(i, 0) + bit(i, 3) * 2 + 1;
int g = bit(i, 1) + bit(i, 4) * 2 + 1; int g = bit(i, 1) + bit(i, 4) * 2 + 1;

@ -66,8 +66,6 @@ const char *node_filter_label(struct bNode *node);
// this is needed for inlining behaviour // this is needed for inlining behaviour
#if defined _WIN32 #if defined _WIN32
# define DO_INLINE __inline # define DO_INLINE __inline
#elif defined (__sgi)
# define DO_INLINE
#elif defined (__sun) || defined (__sun__) #elif defined (__sun) || defined (__sun__)
# define DO_INLINE # define DO_INLINE
#else #else

@ -95,4 +95,8 @@ if(WITH_AUDASPACE)
add_definitions(-DWITH_AUDASPACE) add_definitions(-DWITH_AUDASPACE)
endif() endif()
if(WITH_INTERNATIONAL)
add_definitions(-DINTERNATIONAL)
endif()
blender_add_lib(bf_python "${SRC}" "${INC}" "${INC_SYS}") blender_add_lib(bf_python "${SRC}" "${INC}" "${INC_SYS}")

@ -79,7 +79,7 @@ static void atexit_func_call(const char *func_name, PyObject *atexit_func_arg)
void BPY_atexit_register(void) void BPY_atexit_register(void)
{ {
/* atexit module owns this new function reference */ /* atexit module owns this new function reference */
BLI_assert(func_bpy_atregister ==NULL); BLI_assert(func_bpy_atregister == NULL);
func_bpy_atregister= (PyObject *)PyCFunction_New(&meth_bpy_atexit, NULL); func_bpy_atregister= (PyObject *)PyCFunction_New(&meth_bpy_atexit, NULL);
atexit_func_call("register", func_bpy_atregister); atexit_func_call("register", func_bpy_atregister);
@ -87,6 +87,8 @@ void BPY_atexit_register(void)
void BPY_atexit_unregister(void) void BPY_atexit_unregister(void)
{ {
BLI_assert(func_bpy_atregister != NULL);
atexit_func_call("unregister", func_bpy_atregister); atexit_func_call("unregister", func_bpy_atregister);
func_bpy_atregister= NULL; /* don't really need to set but just incase */ func_bpy_atregister= NULL; /* don't really need to set but just incase */
} }

@ -72,6 +72,7 @@ static EnumPropertyItem property_subtype_string_items[]= {
{PROP_FILEPATH, "FILE_PATH", 0, "File Path", ""}, {PROP_FILEPATH, "FILE_PATH", 0, "File Path", ""},
{PROP_DIRPATH, "DIR_PATH", 0, "Directory Path", ""}, {PROP_DIRPATH, "DIR_PATH", 0, "Directory Path", ""},
{PROP_FILENAME, "FILENAME", 0, "Filename", ""}, {PROP_FILENAME, "FILENAME", 0, "Filename", ""},
{PROP_TRANSLATE, "TRANSLATE", 0, "Translate", ""},
{PROP_NONE, "NONE", 0, "None", ""}, {PROP_NONE, "NONE", 0, "None", ""},
{0, NULL, 0, NULL, NULL}}; {0, NULL, 0, NULL, NULL}};

@ -73,6 +73,10 @@
#include "../generic/IDProp.h" /* for IDprop lookups */ #include "../generic/IDProp.h" /* for IDprop lookups */
#include "../generic/py_capi_utils.h" #include "../generic/py_capi_utils.h"
#ifdef INTERNATIONAL
#include "UI_interface.h" /* bad level call into editors */
#endif
#define USE_PEDANTIC_WRITE #define USE_PEDANTIC_WRITE
#define USE_MATHUTILS #define USE_MATHUTILS
#define USE_STRING_COERCE #define USE_STRING_COERCE
@ -1519,6 +1523,12 @@ static int pyrna_py_to_prop(PointerRNA *ptr, PropertyRNA *prop, void *data, PyOb
} }
else { else {
param= _PyUnicode_AsString(value); param= _PyUnicode_AsString(value);
#ifdef INTERNATIONAL
if(subtype == PROP_TRANSLATE) {
param= UI_translate_do_iface(param);
}
#endif // INTERNATIONAL
} }
#else // USE_STRING_COERCE #else // USE_STRING_COERCE
param= _PyUnicode_AsString(value); param= _PyUnicode_AsString(value);

@ -85,7 +85,7 @@ static int wm_operator_call_internal(bContext *C, wmOperatorType *ot, PointerRNA
void wm_event_add(wmWindow *win, wmEvent *event_to_add) void wm_event_add(wmWindow *win, wmEvent *event_to_add)
{ {
wmEvent *event= MEM_callocN(sizeof(wmEvent), "event"); wmEvent *event= MEM_callocN(sizeof(wmEvent), "wmEvent");
*event= *event_to_add; *event= *event_to_add;
BLI_addtail(&win->queue, event); BLI_addtail(&win->queue, event);

@ -359,6 +359,7 @@ void uiItemS(struct uiLayout *layout){}
void uiItemFullR(struct uiLayout *layout, struct PointerRNA *ptr, struct PropertyRNA *prop, int index, int value, int flag, char *name, int icon){} void uiItemFullR(struct uiLayout *layout, struct PointerRNA *ptr, struct PropertyRNA *prop, int index, int value, int flag, char *name, int icon){}
void uiLayoutSetContextPointer(struct uiLayout *layout, char *name, struct PointerRNA *ptr){} void uiLayoutSetContextPointer(struct uiLayout *layout, char *name, struct PointerRNA *ptr){}
char *uiLayoutIntrospect(struct uiLayout *layout){return (char *)NULL;} char *uiLayoutIntrospect(struct uiLayout *layout){return (char *)NULL;}
void UI_reinit_font() {}
/* rna template */ /* rna template */
void uiTemplateAnyID(struct uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, char *text){} void uiTemplateAnyID(struct uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, char *text){}

@ -47,11 +47,6 @@
#include <string.h> #include <string.h>
#include <signal.h> #include <signal.h>
/* for setuid / getuid */
#ifdef __sgi
#include <sys/types.h>
#include <unistd.h>
#endif
/* This little block needed for linking to Blender... */ /* This little block needed for linking to Blender... */
@ -159,7 +154,7 @@ char btempdir[FILE_MAX];
static void setCallbacks(void); static void setCallbacks(void);
/* set breakpoints here when running in debug mode, useful to catch floating point errors */ /* set breakpoints here when running in debug mode, useful to catch floating point errors */
#if defined(__sgi) || defined(__linux__) || defined(_WIN32) || defined(OSX_SSE_FPE) #if defined(__linux__) || defined(_WIN32) || defined(OSX_SSE_FPE)
static void fpe_handler(int UNUSED(sig)) static void fpe_handler(int UNUSED(sig))
{ {
// printf("SIGFPE trapped\n"); // printf("SIGFPE trapped\n");
@ -394,7 +389,7 @@ static int debug_mode(int UNUSED(argc), const char **UNUSED(argv), void *data)
static int set_fpe(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data)) static int set_fpe(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
{ {
#if defined(__sgi) || defined(__linux__) || defined(_WIN32) || defined(OSX_SSE_FPE) #if defined(__linux__) || defined(_WIN32) || defined(OSX_SSE_FPE)
/* zealous but makes float issues a heck of a lot easier to find! /* zealous but makes float issues a heck of a lot easier to find!
* set breakpoints on fpe_handler */ * set breakpoints on fpe_handler */
signal(SIGFPE, fpe_handler); signal(SIGFPE, fpe_handler);
@ -1227,10 +1222,6 @@ int main(int argc, const char **argv)
//signal(SIGFPE, segmentation_handler); //signal(SIGFPE, segmentation_handler);
} }
#ifdef __sgi
setuid(getuid()); /* end superuser */
#endif
#if defined(WITH_PYTHON_MODULE) || defined(WITH_HEADLESS) #if defined(WITH_PYTHON_MODULE) || defined(WITH_HEADLESS)
G.background= 1; /* python module mode ALWAYS runs in background mode (for now) */ G.background= 1; /* python module mode ALWAYS runs in background mode (for now) */
#else #else

@ -32,11 +32,7 @@
*/ */
#if defined (__sgi)
#include <math.h>
#else
#include <cmath> #include <cmath>
#endif
#include "SCA_LogicManager.h" #include "SCA_LogicManager.h"
#include "BL_ShapeActionActuator.h" #include "BL_ShapeActionActuator.h"

@ -33,12 +33,7 @@
* \ingroup ketsji * \ingroup ketsji
*/ */
#if defined (__sgi)
#include <math.h>
#else
#include <cmath> #include <cmath>
#endif
#include "KX_IpoActuator.h" #include "KX_IpoActuator.h"
#include "KX_GameObject.h" #include "KX_GameObject.h"

@ -25,7 +25,6 @@ import addon_utils
import sys import sys
import os import os
import imp
def source_list(path, filename_check=None): def source_list(path, filename_check=None):