diff -Nru pybik-1.1/copyright pybik-1.1.1/copyright --- pybik-1.1/copyright 2013-06-16 21:06:43.000000000 +0000 +++ pybik-1.1.1/copyright 2014-02-11 16:08:44.000000000 +0000 @@ -11,7 +11,7 @@ * Dale Mellor Files: * -Copyright: 2009-2013 B. Clausius +Copyright: 2009-2014 B. Clausius License: GPL-3+ Files: data/ui/images/BEAMED?EIGHTH?NOTES.png diff -Nru pybik-1.1/csrc/_glarea.cpp pybik-1.1.1/csrc/_glarea.cpp --- pybik-1.1/csrc/_glarea.cpp 2013-06-16 20:00:41.000000000 +0000 +++ pybik-1.1.1/csrc/_glarea.cpp 2014-02-11 16:08:47.000000000 +0000 @@ -1,6 +1,18 @@ -/* Generated by Cython 0.17.4 on Sun Jun 16 22:00:40 2013 */ +/* Generated by Cython 0.19 on Tue Feb 11 17:08:46 2014 */ #define PY_SSIZE_T_CLEAN +#ifndef CYTHON_USE_PYLONG_INTERNALS +#ifdef PYLONG_BITS_IN_DIGIT +#define CYTHON_USE_PYLONG_INTERNALS 0 +#else +#include "pyconfig.h" +#ifdef PYLONG_BITS_IN_DIGIT +#define CYTHON_USE_PYLONG_INTERNALS 1 +#else +#define CYTHON_USE_PYLONG_INTERNALS 0 +#endif +#endif +#endif #include "Python.h" #ifndef Py_PYTHON_H #error Python headers needed to compile C extensions, please install development version of Python. @@ -116,6 +128,9 @@ #if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3) #define Py_TPFLAGS_HAVE_NEWBUFFER 0 #endif +#if PY_VERSION_HEX < 0x02060000 + #define Py_TPFLAGS_HAVE_VERSION_TAG 0 +#endif #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ? \ @@ -155,6 +170,14 @@ #define PyBytes_Concat PyString_Concat #define PyBytes_ConcatAndDel PyString_ConcatAndDel #endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) + #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) +#else + #define __Pyx_PyBaseString_Check(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj) || \ + PyString_Check(obj) || PyUnicode_Check(obj)) + #define __Pyx_PyBaseString_CheckExact(obj) (Py_TYPE(obj) == &PyBaseString_Type) +#endif #if PY_VERSION_HEX < 0x02060000 #define PySet_Check(obj) PyObject_TypeCheck(obj, &PySet_Type) #define PyFrozenSet_Check(obj) PyObject_TypeCheck(obj, &PyFrozenSet_Type) @@ -227,6 +250,40 @@ #define __Pyx_NAMESTR(n) (n) #define __Pyx_DOCSTR(n) (n) #endif +#ifndef CYTHON_INLINE + #if defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifdef NAN +#define __PYX_NAN() ((float) NAN) +#else +static CYTHON_INLINE float __PYX_NAN() { + /* Initialize NaN. The sign is irrelevant, an exponent with all bits 1 and + a nonzero mantissa means NaN. If the first bit in the mantissa is 1, it is + a quiet NaN. */ + float value; + memset(&value, 0xFF, sizeof(value)); + return value; +} +#endif #if PY_MAJOR_VERSION >= 3 @@ -266,21 +323,6 @@ #define CYTHON_WITHOUT_ASSERTIONS #endif - -/* inline attribute */ -#ifndef CYTHON_INLINE - #if defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - -/* unused attribute */ #ifndef CYTHON_UNUSED # if defined(__GNUC__) # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) @@ -294,30 +336,130 @@ # define CYTHON_UNUSED # endif #endif +typedef struct {PyObject **p; char *s; const Py_ssize_t n; const char* encoding; + const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/ -typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/ - - -/* Type Conversion Predeclarations */ - -#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s) -#define __Pyx_PyBytes_AsUString(s) ((unsigned char*) PyBytes_AsString(s)) - +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +#define __Pyx_PyBytes_FromString PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(char*); +#if PY_MAJOR_VERSION < 3 + #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#else + #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize +#endif +#define __Pyx_PyObject_AsUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromUString(s) __Pyx_PyObject_FromString((char*)s) +#define __Pyx_PyBytes_FromUString(s) __Pyx_PyBytes_FromString((char*)s) +#define __Pyx_PyStr_FromUString(s) __Pyx_PyStr_FromString((char*)s) +#define __Pyx_PyUnicode_FromUString(s) __Pyx_PyUnicode_FromString((char*)s) +#if PY_MAJOR_VERSION < 3 +static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) +{ + const Py_UNICODE *u_end = u; + while (*u_end++) ; + return u_end - u - 1; +} +#else +#define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen +#endif +#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) +#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode +#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode #define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None) #define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False)) static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x); - static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*); - #if CYTHON_COMPILING_IN_CPYTHON #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #else #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) #endif #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +static int __Pyx_sys_getdefaultencoding_not_ascii; +static int __Pyx_init_sys_getdefaultencoding_params() { + PyObject* sys = NULL; + PyObject* default_encoding = NULL; + PyObject* ascii_chars_u = NULL; + PyObject* ascii_chars_b = NULL; + sys = PyImport_ImportModule("sys"); + if (sys == NULL) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); + if (default_encoding == NULL) goto bad; + if (strcmp(PyBytes_AsString(default_encoding), "ascii") == 0) { + __Pyx_sys_getdefaultencoding_not_ascii = 0; + } else { + const char* default_encoding_c = PyBytes_AS_STRING(default_encoding); + char ascii_chars[128]; + int c; + for (c = 0; c < 128; c++) { + ascii_chars[c] = c; + } + __Pyx_sys_getdefaultencoding_not_ascii = 1; + ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); + if (ascii_chars_u == NULL) goto bad; + ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); + if (ascii_chars_b == NULL || strncmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { + PyErr_Format( + PyExc_ValueError, + "This module compiled with c_string_encoding=ascii, but default encoding '%s' is not a superset of ascii.", + default_encoding_c); + goto bad; + } + } + Py_XDECREF(sys); + Py_XDECREF(default_encoding); + Py_XDECREF(ascii_chars_u); + Py_XDECREF(ascii_chars_b); + return 0; +bad: + Py_XDECREF(sys); + Py_XDECREF(default_encoding); + Py_XDECREF(ascii_chars_u); + Py_XDECREF(ascii_chars_b); + return -1; +} +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#else +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +static char* __PYX_DEFAULT_STRING_ENCODING; +static int __Pyx_init_sys_getdefaultencoding_params() { + PyObject* sys = NULL; + PyObject* default_encoding = NULL; + char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (sys == NULL) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); + if (default_encoding == NULL) goto bad; + default_encoding_c = PyBytes_AS_STRING(default_encoding); + __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); + strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); + Py_DECREF(sys); + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(sys); + Py_XDECREF(default_encoding); + return -1; +} +#endif +#endif + #ifdef __GNUC__ /* Test for GCC > 2.95 */ @@ -332,8 +474,9 @@ #define likely(x) (x) #define unlikely(x) (x) #endif /* __GNUC__ */ - + static PyObject *__pyx_m; +static PyObject *__pyx_d; static PyObject *__pyx_b; static PyObject *__pyx_empty_tuple; static PyObject *__pyx_empty_bytes; @@ -647,7 +790,32 @@ #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) -static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_getattr)) + return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +#endif + return PyObject_GetAttr(obj, attr_name); +} +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +static PyObject *__Pyx_GetBuiltinName(PyObject *name); /*proto*/ + +#ifndef __PYX_FORCE_INIT_THREADS + #define __PYX_FORCE_INIT_THREADS 0 +#endif + +static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/ +static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/ + +static void __Pyx_WriteUnraisable(const char *name, int clineno, + int lineno, const char *filename); /*proto*/ static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/ @@ -658,91 +826,27 @@ PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \ const char* function_name); /*proto*/ -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { - PyObject *r; - if (!j) return NULL; - r = PyObject_GetItem(o, j); - Py_DECREF(j); - return r; -} -#define __Pyx_GetItemInt_List(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \ - __Pyx_GetItemInt_List_Fast(o, i) : \ - __Pyx_GetItemInt_Generic(o, to_py_func(i))) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i) { -#if CYTHON_COMPILING_IN_CPYTHON - if (likely((0 <= i) & (i < PyList_GET_SIZE(o)))) { - PyObject *r = PyList_GET_ITEM(o, i); - Py_INCREF(r); - return r; - } - else if ((-PyList_GET_SIZE(o) <= i) & (i < 0)) { - PyObject *r = PyList_GET_ITEM(o, PyList_GET_SIZE(o) + i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -#define __Pyx_GetItemInt_Tuple(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \ - __Pyx_GetItemInt_Tuple_Fast(o, i) : \ - __Pyx_GetItemInt_Generic(o, to_py_func(i))) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i) { -#if CYTHON_COMPILING_IN_CPYTHON - if (likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, i); - Py_INCREF(r); - return r; - } - else if ((-PyTuple_GET_SIZE(o) <= i) & (i < 0)) { - PyObject *r = PyTuple_GET_ITEM(o, PyTuple_GET_SIZE(o) + i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -#define __Pyx_GetItemInt(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \ - __Pyx_GetItemInt_Fast(o, i) : \ - __Pyx_GetItemInt_Generic(o, to_py_func(i))) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i) { -#if CYTHON_COMPILING_IN_CPYTHON - if (PyList_CheckExact(o)) { - Py_ssize_t n = (likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); - if (likely((n >= 0) & (n < PyList_GET_SIZE(o)))) { - PyObject *r = PyList_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } - else if (PyTuple_CheckExact(o)) { - Py_ssize_t n = (likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); - if (likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } else { /* inlined PySequence_GetItem() */ - PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; - if (likely(m && m->sq_item)) { - if (unlikely(i < 0) && likely(m->sq_length)) { - Py_ssize_t l = m->sq_length(o); - if (unlikely(l < 0)) return NULL; - i += l; - } - return m->sq_item(o, i); - } - } -#else - if (PySequence_Check(o)) { - return PySequence_GetItem(o, i); - } -#endif - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -} +static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); /*proto*/ + +#define __Pyx_GetItemInt(o, i, size, to_py_func, is_list, wraparound, boundscheck) \ + (((size) <= sizeof(Py_ssize_t)) ? \ + __Pyx_GetItemInt_Fast(o, i, is_list, wraparound, boundscheck) : \ + __Pyx_GetItemInt_Generic(o, to_py_func(i))) +#define __Pyx_GetItemInt_List(o, i, size, to_py_func, is_list, wraparound, boundscheck) \ + (((size) <= sizeof(Py_ssize_t)) ? \ + __Pyx_GetItemInt_List_Fast(o, i, wraparound, boundscheck) : \ + __Pyx_GetItemInt_Generic(o, to_py_func(i))) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +#define __Pyx_GetItemInt_Tuple(o, i, size, to_py_func, is_list, wraparound, boundscheck) \ + (((size) <= sizeof(Py_ssize_t)) ? \ + __Pyx_GetItemInt_Tuple_Fast(o, i, wraparound, boundscheck) : \ + __Pyx_GetItemInt_Generic(o, to_py_func(i))) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, + int is_list, int wraparound, int boundscheck); static CYTHON_INLINE PyObject* __Pyx_decode_c_string( const char* cstring, Py_ssize_t start, Py_ssize_t stop, @@ -762,9 +866,9 @@ static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, const char *name, int exact); /*proto*/ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, long level); /*proto*/ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); /*proto*/ -static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name); +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /*proto*/ static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *); @@ -798,12 +902,6 @@ static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *); -static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/ -static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/ - -static void __Pyx_WriteUnraisable(const char *name, int clineno, - int lineno, const char *filename); /*proto*/ - static int __Pyx_check_binary_version(void); #if !defined(__Pyx_PyIdentifier_FromString) @@ -940,7 +1038,7 @@ static char __pyx_k_49[] = " from package:"; static char __pyx_k_50[] = " compiled:"; static char __pyx_k_51[] = " GL/GLES:"; -static char __pyx_k_54[] = "/home/barcc/Projekte/pybik/trunk/build/temp.linux-x86_64-3.3/pybiklib/_glarea.pyx"; +static char __pyx_k_54[] = "/home/barcc/Projekte/pybik/updates-1.1.1/build/temp.linux-x86_64-3.3/pybiklib/_glarea.pyx"; static char __pyx_k_59[] = "set_background_color"; static char __pyx_k_72[] = "gl_render_select_debug"; static char __pyx_k_77[] = "gl_create_render_program"; @@ -982,6 +1080,7 @@ static char __pyx_k__DEBUG_DRAW[] = "DEBUG_DRAW"; static char __pyx_k__DEBUG_PICK[] = "DEBUG_PICK"; static char __pyx_k____compiled[] = "__compiled"; +static char __pyx_k____import__[] = "__import__"; static char __pyx_k__attributes[] = "attributes"; static char __pyx_k__color_attr[] = "color_attr"; static char __pyx_k__projection[] = "projection"; @@ -1054,6 +1153,7 @@ static PyObject *__pyx_n_s__DEBUG_PICK; static PyObject *__pyx_n_u__GL; static PyObject *__pyx_n_s____compiled; +static PyObject *__pyx_n_s____import__; static PyObject *__pyx_n_s____main__; static PyObject *__pyx_n_s____name__; static PyObject *__pyx_n_s____package__; @@ -1232,7 +1332,13 @@ */ __pyx_t_1 = tan(((__pyx_v_7_glarea_frustrum.fovy_angle * M_PI) / 360.0)); if (unlikely(__pyx_t_1 == 0)) { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); + #endif PyErr_Format(PyExc_ZeroDivisionError, "float division"); + #ifdef WITH_THREAD + PyGILState_Release(__pyx_gilstate_save); + #endif {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_v_7_glarea_frustrum.fovy_radius = (1.0 / __pyx_t_1); @@ -1553,7 +1659,7 @@ * aspectx = 1. * aspecty = terrain.height / terrain.width */ - __pyx_t_1 = (__pyx_v_7_glarea_terrain.width < __pyx_v_7_glarea_terrain.height); + __pyx_t_1 = ((__pyx_v_7_glarea_terrain.width < __pyx_v_7_glarea_terrain.height) != 0); if (__pyx_t_1) { /* "_glarea.pyx":158 @@ -1573,7 +1679,13 @@ * aspectx = terrain.width / terrain.height */ if (unlikely(__pyx_v_7_glarea_terrain.width == 0)) { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); + #endif PyErr_Format(PyExc_ZeroDivisionError, "float division"); + #ifdef WITH_THREAD + PyGILState_Release(__pyx_gilstate_save); + #endif {__pyx_filename = __pyx_f[0]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_v_aspecty = (((double)__pyx_v_7_glarea_terrain.height) / ((double)__pyx_v_7_glarea_terrain.width)); @@ -1589,7 +1701,13 @@ * # see doc of glFrustum */ if (unlikely(__pyx_v_7_glarea_terrain.height == 0)) { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); + #endif PyErr_Format(PyExc_ZeroDivisionError, "float division"); + #ifdef WITH_THREAD + PyGILState_Release(__pyx_gilstate_save); + #endif {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_v_aspectx = (((double)__pyx_v_7_glarea_terrain.width) / ((double)__pyx_v_7_glarea_terrain.height)); @@ -1613,7 +1731,13 @@ * frustrum.projection_matrix[2][2] = -(frustrum.fovy_radius_zoom + 1.) */ if (unlikely(__pyx_v_aspectx == 0)) { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); + #endif PyErr_Format(PyExc_ZeroDivisionError, "float division"); + #ifdef WITH_THREAD + PyGILState_Release(__pyx_gilstate_save); + #endif {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } ((__pyx_v_7_glarea_frustrum.projection_matrix[0])[0]) = (((double)__pyx_v_7_glarea_frustrum.fovy_radius) / __pyx_v_aspectx); @@ -1626,7 +1750,13 @@ * frustrum.projection_matrix[3][2] = -(frustrum.fovy_radius_zoom + 2. */ if (unlikely(__pyx_v_aspecty == 0)) { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); + #endif PyErr_Format(PyExc_ZeroDivisionError, "float division"); + #ifdef WITH_THREAD + PyGILState_Release(__pyx_gilstate_save); + #endif {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } ((__pyx_v_7_glarea_frustrum.projection_matrix[1])[1]) = (((double)__pyx_v_7_glarea_frustrum.fovy_radius) / __pyx_v_aspecty); @@ -1767,6 +1897,9 @@ static PyObject *__pyx_pw_7_glarea_3set_frustrum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_bounding_sphere_radius = 0; PyObject *__pyx_v_zoom = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_frustrum (wrapper)", 0); @@ -1902,6 +2035,9 @@ PyObject *__pyx_v_red = 0; PyObject *__pyx_v_green = 0; PyObject *__pyx_v_blue = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_background_color (wrapper)", 0); @@ -2075,6 +2211,9 @@ static PyObject *__pyx_pw_7_glarea_9set_rotation_xy(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_x = 0; PyObject *__pyx_v_y = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_rotation_xy (wrapper)", 0); @@ -2293,7 +2432,7 @@ * #px print(msg, glGetString(name)) * */ - __pyx_t_1 = PyBytes_FromString(((char *)glGetString(__pyx_v_name))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_PyBytes_FromString(((char *)glGetString(__pyx_v_name))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_1)); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); @@ -2529,7 +2668,7 @@ * print('GL Strings:') * _gl_print_string(' GL Vendor:', GL_VENDOR) */ - __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__DEBUG_MSG); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__DEBUG_MSG); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -2553,10 +2692,7 @@ * _gl_print_string(' GL Renderer:', GL_RENDERER) * _gl_print_string(' GL Version:', GL_VERSION) */ - __pyx_t_1 = ((PyObject *)__pyx_kp_u_4); - __Pyx_INCREF(__pyx_t_1); - __pyx_f_7_glarea__gl_print_string(__pyx_t_1, GL_VENDOR); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_f_7_glarea__gl_print_string(((PyObject *)__pyx_kp_u_4), GL_VENDOR); /* "_glarea.pyx":244 * print('GL Strings:') @@ -2565,10 +2701,7 @@ * _gl_print_string(' GL Version:', GL_VERSION) * _gl_print_string(' GL Shading Language Version:', GL_SHADING_LANGUAGE_VERSION) */ - __pyx_t_1 = ((PyObject *)__pyx_kp_u_5); - __Pyx_INCREF(__pyx_t_1); - __pyx_f_7_glarea__gl_print_string(__pyx_t_1, GL_RENDERER); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_f_7_glarea__gl_print_string(((PyObject *)__pyx_kp_u_5), GL_RENDERER); /* "_glarea.pyx":245 * _gl_print_string(' GL Vendor:', GL_VENDOR) @@ -2577,10 +2710,7 @@ * _gl_print_string(' GL Shading Language Version:', GL_SHADING_LANGUAGE_VERSION) * #_gl_print_string(' GL Extensions:', GL_EXTENSIONS) */ - __pyx_t_1 = ((PyObject *)__pyx_kp_u_6); - __Pyx_INCREF(__pyx_t_1); - __pyx_f_7_glarea__gl_print_string(__pyx_t_1, GL_VERSION); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_f_7_glarea__gl_print_string(((PyObject *)__pyx_kp_u_6), GL_VERSION); /* "_glarea.pyx":246 * _gl_print_string(' GL Renderer:', GL_RENDERER) @@ -2589,10 +2719,7 @@ * #_gl_print_string(' GL Extensions:', GL_EXTENSIONS) * _gl_print_integer(' GL_SAMPLE_BUFFERS:', GL_SAMPLE_BUFFERS) */ - __pyx_t_1 = ((PyObject *)__pyx_kp_u_7); - __Pyx_INCREF(__pyx_t_1); - __pyx_f_7_glarea__gl_print_string(__pyx_t_1, GL_SHADING_LANGUAGE_VERSION); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_f_7_glarea__gl_print_string(((PyObject *)__pyx_kp_u_7), GL_SHADING_LANGUAGE_VERSION); /* "_glarea.pyx":248 * _gl_print_string(' GL Shading Language Version:', GL_SHADING_LANGUAGE_VERSION) @@ -2601,10 +2728,7 @@ * _gl_print_float(' GL_SAMPLE_COVERAGE_VALUE:', GL_SAMPLE_COVERAGE_VALUE) * _gl_print_bool(' GL_SAMPLE_COVERAGE_INVERT:', GL_SAMPLE_COVERAGE_INVERT) */ - __pyx_t_1 = ((PyObject *)__pyx_kp_u_8); - __Pyx_INCREF(__pyx_t_1); - __pyx_f_7_glarea__gl_print_integer(__pyx_t_1, GL_SAMPLE_BUFFERS); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_f_7_glarea__gl_print_integer(((PyObject *)__pyx_kp_u_8), GL_SAMPLE_BUFFERS); /* "_glarea.pyx":249 * #_gl_print_string(' GL Extensions:', GL_EXTENSIONS) @@ -2613,10 +2737,7 @@ * _gl_print_bool(' GL_SAMPLE_COVERAGE_INVERT:', GL_SAMPLE_COVERAGE_INVERT) * _gl_print_integer(' GL_SAMPLES:', GL_SAMPLES) */ - __pyx_t_1 = ((PyObject *)__pyx_kp_u_9); - __Pyx_INCREF(__pyx_t_1); - __pyx_f_7_glarea__gl_print_float(__pyx_t_1, GL_SAMPLE_COVERAGE_VALUE); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_f_7_glarea__gl_print_float(((PyObject *)__pyx_kp_u_9), GL_SAMPLE_COVERAGE_VALUE); /* "_glarea.pyx":250 * _gl_print_integer(' GL_SAMPLE_BUFFERS:', GL_SAMPLE_BUFFERS) @@ -2625,10 +2746,7 @@ * _gl_print_integer(' GL_SAMPLES:', GL_SAMPLES) * IF SOURCEGLVERSION == 'GL': #px/ */ - __pyx_t_1 = ((PyObject *)__pyx_kp_u_10); - __Pyx_INCREF(__pyx_t_1); - __pyx_f_7_glarea__gl_print_bool(__pyx_t_1, GL_SAMPLE_COVERAGE_INVERT); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_f_7_glarea__gl_print_bool(((PyObject *)__pyx_kp_u_10), GL_SAMPLE_COVERAGE_INVERT); /* "_glarea.pyx":251 * _gl_print_float(' GL_SAMPLE_COVERAGE_VALUE:', GL_SAMPLE_COVERAGE_VALUE) @@ -2637,10 +2755,7 @@ * IF SOURCEGLVERSION == 'GL': #px/ * #px if True: */ - __pyx_t_1 = ((PyObject *)__pyx_kp_u_11); - __Pyx_INCREF(__pyx_t_1); - __pyx_f_7_glarea__gl_print_integer(__pyx_t_1, GL_SAMPLES); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_f_7_glarea__gl_print_integer(((PyObject *)__pyx_kp_u_11), GL_SAMPLES); /* "_glarea.pyx":254 * IF SOURCEGLVERSION == 'GL': #px/ @@ -2845,13 +2960,13 @@ __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyLong_FromUnsignedLong(__pyx_v_7_glarea_program.prog_pick); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyList_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); + PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); - PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); + PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); - PyList_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); + PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_1 = 0; __pyx_t_2 = 0; @@ -2859,9 +2974,9 @@ __pyx_t_3 = ((PyObject *)__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0; for (;;) { - if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_3)) break; + if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif @@ -2876,7 +2991,7 @@ * glDeleteProgram(prog) * program.prog_render = 0 */ - __pyx_t_7 = (__pyx_v_prog > 0); + __pyx_t_7 = ((__pyx_v_prog > 0) != 0); if (__pyx_t_7) { /* "_glarea.pyx":271 @@ -2941,6 +3056,9 @@ static PyObject *__pyx_pw_7_glarea_15gl_resize(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_width = 0; PyObject *__pyx_v_height = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("gl_resize (wrapper)", 0); @@ -3119,7 +3237,7 @@ * _set_picking_matrix_identity() * _gl_render_pick() */ - __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__DEBUG_PICK); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__DEBUG_PICK); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -3162,7 +3280,8 @@ * glEnable(GL_MULTISAMPLE) * else: */ - if (__pyx_v_7_glarea_frustrum.multisample) { + __pyx_t_2 = (__pyx_v_7_glarea_frustrum.multisample != 0); + if (__pyx_t_2) { /* "_glarea.pyx":298 * #px if True: @@ -3241,7 +3360,7 @@ * gl_draw_cube_debug() * */ - __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__DEBUG_DRAW); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__DEBUG_DRAW); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -3362,7 +3481,13 @@ * selectdata[8] = 0 */ if (unlikely(__pyx_v_7_glarea_terrain.width == 0)) { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); + #endif PyErr_Format(PyExc_ZeroDivisionError, "float division"); + #ifdef WITH_THREAD + PyGILState_Release(__pyx_gilstate_save); + #endif {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } (__pyx_v_selectdata[6]) = (((((double)(__pyx_v_7_glarea_selection_debug_points.viewport1[0])) / ((double)__pyx_v_7_glarea_terrain.width)) * 2.0) - 1.0); @@ -3375,7 +3500,13 @@ * selectdata[9] = selection_debug_points.viewport2[0] / terrain.width * 2 - 1 */ if (unlikely(__pyx_v_7_glarea_terrain.height == 0)) { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); + #endif PyErr_Format(PyExc_ZeroDivisionError, "float division"); + #ifdef WITH_THREAD + PyGILState_Release(__pyx_gilstate_save); + #endif {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } (__pyx_v_selectdata[7]) = (((((double)(__pyx_v_7_glarea_selection_debug_points.viewport1[1])) / ((double)__pyx_v_7_glarea_terrain.height)) * 2.0) - 1.0); @@ -3397,7 +3528,13 @@ * selectdata[11] = 0 */ if (unlikely(__pyx_v_7_glarea_terrain.width == 0)) { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); + #endif PyErr_Format(PyExc_ZeroDivisionError, "float division"); + #ifdef WITH_THREAD + PyGILState_Release(__pyx_gilstate_save); + #endif {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } (__pyx_v_selectdata[9]) = (((((double)(__pyx_v_7_glarea_selection_debug_points.viewport2[0])) / ((double)__pyx_v_7_glarea_terrain.width)) * 2.0) - 1.0); @@ -3410,7 +3547,13 @@ * gl_draw_select_debug(&selectdata[0], sizeof(selectdata), program.prog_hud) #px/ */ if (unlikely(__pyx_v_7_glarea_terrain.height == 0)) { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); + #endif PyErr_Format(PyExc_ZeroDivisionError, "float division"); + #ifdef WITH_THREAD + PyGILState_Release(__pyx_gilstate_save); + #endif {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } (__pyx_v_selectdata[10]) = (((((double)(__pyx_v_7_glarea_selection_debug_points.viewport2[1])) / ((double)__pyx_v_7_glarea_terrain.height)) * 2.0) - 1.0); @@ -3565,16 +3708,16 @@ if (__pyx_t_1) { __pyx_t_1 = (__pyx_v_x < __pyx_v_7_glarea_terrain.width); } - if (__pyx_t_1) { + if ((__pyx_t_1 != 0)) { __pyx_t_2 = (0 <= __pyx_v_y); if (__pyx_t_2) { __pyx_t_2 = (__pyx_v_y < __pyx_v_7_glarea_terrain.height); } - __pyx_t_3 = __pyx_t_2; + __pyx_t_3 = (__pyx_t_2 != 0); } else { - __pyx_t_3 = __pyx_t_1; + __pyx_t_3 = (__pyx_t_1 != 0); } - __pyx_t_1 = (!__pyx_t_3); + __pyx_t_1 = ((!__pyx_t_3) != 0); if (__pyx_t_1) { /* "_glarea.pyx":347 @@ -3659,6 +3802,9 @@ static PyObject *__pyx_pw_7_glarea_21gl_pick_polygons(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { int __pyx_v_x; int __pyx_v_y; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("gl_pick_polygons (wrapper)", 0); @@ -3800,7 +3946,7 @@ */ __pyx_t_1 = PyFloat_FromDouble(((__pyx_v_M[0])[0])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_vvect, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_vvect, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); @@ -3808,7 +3954,7 @@ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble(((__pyx_v_M[1])[0])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_vvect, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_vvect, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); @@ -3820,7 +3966,7 @@ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyFloat_FromDouble(((__pyx_v_M[2])[0])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_vvect, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_vvect, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); @@ -3849,7 +3995,7 @@ */ __pyx_t_1 = PyFloat_FromDouble(((__pyx_v_M[0])[1])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_vvect, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_vvect, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); @@ -3857,7 +4003,7 @@ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble(((__pyx_v_M[1])[1])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_vvect, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_vvect, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); @@ -3869,7 +4015,7 @@ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyFloat_FromDouble(((__pyx_v_M[2])[1])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_vvect, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_vvect, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); @@ -3898,7 +4044,7 @@ */ __pyx_t_1 = PyFloat_FromDouble(((__pyx_v_M[0])[2])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_vvect, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_vvect, 0, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); @@ -3906,7 +4052,7 @@ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble(((__pyx_v_M[1])[2])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_vvect, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_vvect, 1, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); @@ -3918,7 +4064,7 @@ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyFloat_FromDouble(((__pyx_v_M[2])[2])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_vvect, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_vvect, 2, sizeof(long), PyInt_FromLong, 0, 0, 1); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); @@ -3973,7 +4119,13 @@ * */ if (unlikely(__pyx_v_v3 == 0)) { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); + #endif PyErr_Format(PyExc_ZeroDivisionError, "float division"); + #ifdef WITH_THREAD + PyGILState_Release(__pyx_gilstate_save); + #endif {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } (__pyx_v_mvect[0]) = ((int)((((__pyx_v_v0 / __pyx_v_v3) + 1.0) / 2.0) * __pyx_v_7_glarea_terrain.width)); @@ -3986,7 +4138,13 @@ * def get_cursor_angle(point1, point2): */ if (unlikely(__pyx_v_v3 == 0)) { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); + #endif PyErr_Format(PyExc_ZeroDivisionError, "float division"); + #ifdef WITH_THREAD + PyGILState_Release(__pyx_gilstate_save); + #endif {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } (__pyx_v_mvect[1]) = ((int)((((__pyx_v_v1 / __pyx_v_v3) + 1.0) / 2.0) * __pyx_v_7_glarea_terrain.height)); @@ -4009,6 +4167,9 @@ static PyObject *__pyx_pw_7_glarea_23get_cursor_angle(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_point1 = 0; PyObject *__pyx_v_point2 = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_cursor_angle (wrapper)", 0); @@ -4101,7 +4262,7 @@ * selection_debug_points.modelview2[i] = point2[i] * _modelview_to_viewport(point1, selection_debug_points.viewport1) */ - __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_point1, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_point1, __pyx_v_i, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -4114,7 +4275,7 @@ * _modelview_to_viewport(point1, selection_debug_points.viewport1) * _modelview_to_viewport(point2, selection_debug_points.viewport2) */ - __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_point2, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_point2, __pyx_v_i, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 388; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -4166,7 +4327,13 @@ */ __pyx_t_4 = (atan2(__pyx_v_x, __pyx_v_y) * 180.0); if (unlikely(M_PI == 0)) { + #ifdef WITH_THREAD + PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); + #endif PyErr_Format(PyExc_ZeroDivisionError, "float division"); + #ifdef WITH_THREAD + PyGILState_Release(__pyx_gilstate_save); + #endif {__pyx_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_v_angle = (__pyx_t_4 / M_PI); @@ -4234,7 +4401,7 @@ * print('==== Error compiling shader:') * glGetShaderInfoLog(shader, 1023, &length, log) #px/ */ - __pyx_t_1 = (__pyx_v_log_len > 0); + __pyx_t_1 = ((__pyx_v_log_len > 0) != 0); if (__pyx_t_1) { /* "_glarea.pyx":407 @@ -4266,7 +4433,7 @@ */ __pyx_t_2 = ((PyObject *)__Pyx_decode_c_string(__pyx_v_log, 0, strlen(__pyx_v_log), NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); - __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_t_2), __pyx_n_s__rstrip); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_t_2), __pyx_n_s__rstrip); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -4355,7 +4522,7 @@ * print('==== Error linking shader program:') * glGetProgramInfoLog(program, 1023, &length, log) #px/ */ - __pyx_t_1 = (__pyx_v_log_len > 0); + __pyx_t_1 = ((__pyx_v_log_len > 0) != 0); if (__pyx_t_1) { /* "_glarea.pyx":423 @@ -4387,7 +4554,7 @@ */ __pyx_t_2 = ((PyObject *)__Pyx_decode_c_string(__pyx_v_log, 0, strlen(__pyx_v_log), NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); - __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_t_2), __pyx_n_s__rstrip); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_t_2), __pyx_n_s__rstrip); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -4477,7 +4644,7 @@ * print('Failed to create shader') * return 0 */ - __pyx_t_1 = (__pyx_v_shader == 0); + __pyx_t_1 = ((__pyx_v_shader == 0) != 0); if (__pyx_t_1) { /* "_glarea.pyx":439 @@ -4511,7 +4678,7 @@ * glShaderSource(shader, 1, &pchar, NULL) #px/ * #px glShaderSource(shader, source) */ - __pyx_t_3 = PyBytes_AsString(((PyObject *)__pyx_v_source)); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_PyObject_AsString(((PyObject *)__pyx_v_source)); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_v_pchar = ((const GLchar*)((char *)__pyx_t_3)); /* "_glarea.pyx":442 @@ -4548,7 +4715,7 @@ * _gl_print_shader_log(shader) * return 0 */ - __pyx_t_1 = (!__pyx_v_compile_status); + __pyx_t_1 = ((!(__pyx_v_compile_status != 0)) != 0); if (__pyx_t_1) { /* "_glarea.pyx":448 @@ -4674,7 +4841,7 @@ */ __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_1)); - __pyx_v_program_info = __pyx_t_1; + __pyx_v_program_info = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; /* "_glarea.pyx":464 @@ -4838,25 +5005,25 @@ PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyList_New(9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_New(9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - PyList_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_2)); + PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_2)); __Pyx_GIVEREF(((PyObject *)__pyx_t_2)); - PyList_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_t_3)); + PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_t_3)); __Pyx_GIVEREF(((PyObject *)__pyx_t_3)); - PyList_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_t_4)); + PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_t_4)); __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); - PyList_SET_ITEM(__pyx_t_1, 3, ((PyObject *)__pyx_t_5)); + PyTuple_SET_ITEM(__pyx_t_1, 3, ((PyObject *)__pyx_t_5)); __Pyx_GIVEREF(((PyObject *)__pyx_t_5)); - PyList_SET_ITEM(__pyx_t_1, 4, ((PyObject *)__pyx_t_6)); + PyTuple_SET_ITEM(__pyx_t_1, 4, ((PyObject *)__pyx_t_6)); __Pyx_GIVEREF(((PyObject *)__pyx_t_6)); - PyList_SET_ITEM(__pyx_t_1, 5, ((PyObject *)__pyx_t_7)); + PyTuple_SET_ITEM(__pyx_t_1, 5, ((PyObject *)__pyx_t_7)); __Pyx_GIVEREF(((PyObject *)__pyx_t_7)); - PyList_SET_ITEM(__pyx_t_1, 6, ((PyObject *)__pyx_t_8)); + PyTuple_SET_ITEM(__pyx_t_1, 6, ((PyObject *)__pyx_t_8)); __Pyx_GIVEREF(((PyObject *)__pyx_t_8)); - PyList_SET_ITEM(__pyx_t_1, 7, ((PyObject *)__pyx_t_9)); + PyTuple_SET_ITEM(__pyx_t_1, 7, ((PyObject *)__pyx_t_9)); __Pyx_GIVEREF(((PyObject *)__pyx_t_9)); - PyList_SET_ITEM(__pyx_t_1, 8, ((PyObject *)__pyx_t_10)); + PyTuple_SET_ITEM(__pyx_t_1, 8, ((PyObject *)__pyx_t_10)); __Pyx_GIVEREF(((PyObject *)__pyx_t_10)); __pyx_t_2 = 0; __pyx_t_3 = 0; @@ -4878,9 +5045,9 @@ * ('link status', GL_LINK_STATUS), * ('validate status', GL_VALIDATE_STATUS), */ - if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_10)) break; + if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_10)) break; #if CYTHON_COMPILING_IN_CPYTHON - __pyx_t_1 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_11); __Pyx_INCREF(__pyx_t_1); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_11); __Pyx_INCREF(__pyx_t_1); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #else __pyx_t_1 = PySequence_ITEM(__pyx_t_10, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;} #endif @@ -4908,7 +5075,9 @@ __Pyx_INCREF(__pyx_t_8); #else __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_9); __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_8); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else @@ -5007,7 +5176,7 @@ * glGetActiveAttrib(program, i, 1023, &alength, &asize, &atype, aname) #px/ * #px aname, asize, atype = glGetActiveAttrib(program, i); alength = '?' */ - __pyx_t_10 = __Pyx_GetItemInt(((PyObject *)__pyx_v_program_info), GL_ACTIVE_ATTRIBUTES, sizeof(int), PyInt_FromLong); if (!__pyx_t_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_GetItemInt(((PyObject *)__pyx_v_program_info), GL_ACTIVE_ATTRIBUTES, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); __pyx_t_14 = __Pyx_PyInt_AsLong(__pyx_t_10); if (unlikely((__pyx_t_14 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; @@ -5039,11 +5208,11 @@ * print('active uniforms:') * for i in range(program_info[GL_ACTIVE_UNIFORMS]): */ - __pyx_t_10 = PyObject_GetAttr(((PyObject *)__pyx_kp_u_41), __pyx_n_s__format); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_kp_u_41), __pyx_n_s__format); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); __pyx_t_1 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_8 = PyBytes_FromString(__pyx_v_aname); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_8 = __Pyx_PyBytes_FromString(__pyx_v_aname); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_8)); __pyx_t_9 = PyInt_FromLong(__pyx_v_alength); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); @@ -5106,7 +5275,7 @@ * glGetActiveUniform(program, i, 1023, &alength, &asize, &atype, aname) #px/ * #px aname, asize, atype = glGetActiveUniform(program, i); alength = '?' */ - __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_program_info), GL_ACTIVE_UNIFORMS, sizeof(int), PyInt_FromLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_program_info), GL_ACTIVE_UNIFORMS, sizeof(int), PyInt_FromLong, 0, 1, 1); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_14 = __Pyx_PyInt_AsLong(__pyx_t_5); if (unlikely((__pyx_t_14 == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -5138,11 +5307,11 @@ * * cdef GLuint _gl_create_program(bytes vertex_source, bytes fragment_source, list attributes): #px/ */ - __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_kp_u_41), __pyx_n_s__format); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_kp_u_41), __pyx_n_s__format); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_10 = PyBytes_FromString(__pyx_v_aname); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_PyBytes_FromString(__pyx_v_aname); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_10)); __pyx_t_6 = PyInt_FromLong(__pyx_v_alength); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); @@ -5257,7 +5426,7 @@ * return 0 * */ - __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__DEBUG_NOSHADER); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__DEBUG_NOSHADER); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -5292,11 +5461,11 @@ * debug(' creating vertex shader') * vertex_shader = _gl_create_compiled_shader(GL_VERTEX_SHADER, vertex_source) */ - __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__DEBUG_NOVSHADER); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__DEBUG_NOVSHADER); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_3 = (!__pyx_t_2); + __pyx_t_3 = ((!__pyx_t_2) != 0); if (__pyx_t_3) { /* "_glarea.pyx":501 @@ -5306,7 +5475,7 @@ * vertex_shader = _gl_create_compiled_shader(GL_VERTEX_SHADER, vertex_source) * glAttachShader(program, vertex_shader) */ - __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__debug); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__debug); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_k_tuple_45), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); @@ -5341,11 +5510,11 @@ * debug(' creating fragment shader') * fragment_shader = _gl_create_compiled_shader(GL_FRAGMENT_SHADER, fragment_source) */ - __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__DEBUG_NOFSHADER); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__DEBUG_NOFSHADER); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_2 = (!__pyx_t_3); + __pyx_t_2 = ((!__pyx_t_3) != 0); if (__pyx_t_2) { /* "_glarea.pyx":505 @@ -5355,7 +5524,7 @@ * fragment_shader = _gl_create_compiled_shader(GL_FRAGMENT_SHADER, fragment_source) * glAttachShader(program, fragment_shader) */ - __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__debug); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__debug); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_47), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); @@ -5426,7 +5595,9 @@ __Pyx_INCREF(__pyx_t_7); #else __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else @@ -5466,7 +5637,7 @@ * glGetProgramiv(program, GL_LINK_STATUS, &link_status) #px/ */ __pyx_t_10 = __Pyx_PyInt_AsUnsignedInt(__pyx_v_index); if (unlikely((__pyx_t_10 == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_11 = PyBytes_AsString(__pyx_v_name); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_11 = __Pyx_PyObject_AsString(__pyx_v_name); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;} glBindAttribLocation(__pyx_v_program, __pyx_t_10, __pyx_t_11); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -5496,7 +5667,7 @@ * _gl_print_program_log(program) * return 0 */ - __pyx_t_2 = (!__pyx_v_link_status); + __pyx_t_2 = ((!(__pyx_v_link_status != 0)) != 0); if (__pyx_t_2) { /* "_glarea.pyx":514 @@ -5528,7 +5699,7 @@ * _gl_print_program_info(program) * glDetachShader(program, vertex_shader) */ - __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__DEBUG_MSG); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__DEBUG_MSG); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -5615,6 +5786,9 @@ static PyObject *__pyx_pw_7_glarea_25gl_create_render_program(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_vertex_source = 0; PyObject *__pyx_v_fragment_source = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("gl_create_render_program (wrapper)", 0); @@ -5703,7 +5877,7 @@ * glDeleteProgram(program.prog_render) * attributes = [ */ - __pyx_t_1 = (__pyx_v_7_glarea_program.prog_render > 0); + __pyx_t_1 = ((__pyx_v_7_glarea_program.prog_render > 0) != 0); if (__pyx_t_1) { /* "_glarea.pyx":528 @@ -5803,7 +5977,7 @@ __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; - __pyx_v_attributes = __pyx_t_2; + __pyx_v_attributes = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0; /* "_glarea.pyx":535 @@ -5822,7 +5996,7 @@ * glUseProgram(program.prog_render) * location = glGetUniformLocation(program.prog_render, b'tex') */ - __pyx_t_1 = (__pyx_v_7_glarea_program.prog_render > 0); + __pyx_t_1 = ((__pyx_v_7_glarea_program.prog_render > 0) != 0); if (__pyx_t_1) { /* "_glarea.pyx":537 @@ -5914,6 +6088,9 @@ static PyObject *__pyx_pw_7_glarea_27gl_create_hud_program(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_vertex_source = 0; PyObject *__pyx_v_fragment_source = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("gl_create_hud_program (wrapper)", 0); @@ -5999,7 +6176,7 @@ * glDeleteProgram(program.prog_hud) * attributes = [ */ - __pyx_t_1 = (__pyx_v_7_glarea_program.prog_hud > 0); + __pyx_t_1 = ((__pyx_v_7_glarea_program.prog_hud > 0) != 0); if (__pyx_t_1) { /* "_glarea.pyx":549 @@ -6057,7 +6234,7 @@ __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); __pyx_t_3 = 0; __pyx_t_4 = 0; - __pyx_v_attributes = __pyx_t_2; + __pyx_v_attributes = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0; /* "_glarea.pyx":554 @@ -6076,7 +6253,7 @@ * glUseProgram(program.prog_hud) * */ - __pyx_t_1 = (__pyx_v_7_glarea_program.prog_hud > 0); + __pyx_t_1 = ((__pyx_v_7_glarea_program.prog_hud > 0) != 0); if (__pyx_t_1) { /* "_glarea.pyx":556 @@ -6112,6 +6289,9 @@ static PyObject *__pyx_pw_7_glarea_29gl_create_pick_program(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_vertex_source = 0; PyObject *__pyx_v_fragment_source = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("gl_create_pick_program (wrapper)", 0); @@ -6197,7 +6377,7 @@ * glDeleteProgram(program.prog_pick) * attributes = [(VERTEX_ATTRIB_LOCATION, b'vertex_attr'), */ - __pyx_t_1 = (__pyx_v_7_glarea_program.prog_pick > 0); + __pyx_t_1 = ((__pyx_v_7_glarea_program.prog_pick > 0) != 0); if (__pyx_t_1) { /* "_glarea.pyx":561 @@ -6255,7 +6435,7 @@ __Pyx_GIVEREF(((PyObject *)__pyx_t_4)); __pyx_t_3 = 0; __pyx_t_4 = 0; - __pyx_v_attributes = __pyx_t_2; + __pyx_v_attributes = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0; /* "_glarea.pyx":564 @@ -6274,7 +6454,7 @@ * glUseProgram(program.prog_pick) * program.picking_location = glGetUniformLocation(program.prog_pick, b'picking') */ - __pyx_t_1 = (__pyx_v_7_glarea_program.prog_pick > 0); + __pyx_t_1 = ((__pyx_v_7_glarea_program.prog_pick > 0) != 0); if (__pyx_t_1) { /* "_glarea.pyx":566 @@ -6338,7 +6518,11 @@ #if PY_MAJOR_VERSION >= 3 static struct PyModuleDef __pyx_moduledef = { + #if PY_VERSION_HEX < 0x03020000 + { PyObject_HEAD_INIT(NULL) NULL, 0, NULL }, + #else PyModuleDef_HEAD_INIT, + #endif __Pyx_NAMESTR("_glarea"), 0, /* m_doc */ -1, /* m_size */ @@ -6404,6 +6588,7 @@ {&__pyx_n_s__DEBUG_PICK, __pyx_k__DEBUG_PICK, sizeof(__pyx_k__DEBUG_PICK), 0, 0, 1, 1}, {&__pyx_n_u__GL, __pyx_k__GL, sizeof(__pyx_k__GL), 0, 1, 0, 1}, {&__pyx_n_s____compiled, __pyx_k____compiled, sizeof(__pyx_k____compiled), 0, 0, 1, 1}, + {&__pyx_n_s____import__, __pyx_k____import__, sizeof(__pyx_k____import__), 0, 0, 1, 1}, {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1}, {&__pyx_n_s____name__, __pyx_k____name__, sizeof(__pyx_k____name__), 0, 0, 1, 1}, {&__pyx_n_s____package__, __pyx_k____package__, sizeof(__pyx_k____package__), 0, 0, 1, 1}, @@ -6449,8 +6634,8 @@ {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_print = __Pyx_GetName(__pyx_b, __pyx_n_s__print); if (!__pyx_builtin_print) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_range = __Pyx_GetName(__pyx_b, __pyx_n_s__range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s__print); if (!__pyx_builtin_print) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s__range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;} return 0; __pyx_L1_error:; return -1; @@ -6467,11 +6652,8 @@ * _gl_print_string(' GL Vendor:', GL_VENDOR) * _gl_print_string(' GL Renderer:', GL_RENDERER) */ - __pyx_k_tuple_3 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_3 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_2)); if (unlikely(!__pyx_k_tuple_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_3); - __Pyx_INCREF(((PyObject *)__pyx_kp_u_2)); - PyTuple_SET_ITEM(__pyx_k_tuple_3, 0, ((PyObject *)__pyx_kp_u_2)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_2)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_3)); /* "_glarea.pyx":407 @@ -6481,11 +6663,8 @@ * glGetShaderInfoLog(shader, 1023, &length, log) #px/ * #px log = glGetShaderInfoLog(shader, 1023) */ - __pyx_k_tuple_16 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_16 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_15)); if (unlikely(!__pyx_k_tuple_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_16); - __Pyx_INCREF(((PyObject *)__pyx_kp_u_15)); - PyTuple_SET_ITEM(__pyx_k_tuple_16, 0, ((PyObject *)__pyx_kp_u_15)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_15)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_16)); /* "_glarea.pyx":411 @@ -6495,11 +6674,8 @@ * else: * print('==== Error compiling shader (no log)') */ - __pyx_k_tuple_18 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_18 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_17)); if (unlikely(!__pyx_k_tuple_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_18); - __Pyx_INCREF(((PyObject *)__pyx_kp_u_17)); - PyTuple_SET_ITEM(__pyx_k_tuple_18, 0, ((PyObject *)__pyx_kp_u_17)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_17)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_18)); /* "_glarea.pyx":413 @@ -6509,11 +6685,8 @@ * * cdef void _gl_print_program_log(GLuint program): #px/ */ - __pyx_k_tuple_20 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_20 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_19)); if (unlikely(!__pyx_k_tuple_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_20); - __Pyx_INCREF(((PyObject *)__pyx_kp_u_19)); - PyTuple_SET_ITEM(__pyx_k_tuple_20, 0, ((PyObject *)__pyx_kp_u_19)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_19)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_20)); /* "_glarea.pyx":423 @@ -6523,11 +6696,8 @@ * glGetProgramInfoLog(program, 1023, &length, log) #px/ * #px log = glGetProgramInfoLog(program, 1023) */ - __pyx_k_tuple_22 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_22 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_21)); if (unlikely(!__pyx_k_tuple_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 423; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_22); - __Pyx_INCREF(((PyObject *)__pyx_kp_u_21)); - PyTuple_SET_ITEM(__pyx_k_tuple_22, 0, ((PyObject *)__pyx_kp_u_21)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_21)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_22)); /* "_glarea.pyx":427 @@ -6537,11 +6707,8 @@ * else: * print('==== Error linking shader program (no log)') */ - __pyx_k_tuple_23 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_23 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_17)); if (unlikely(!__pyx_k_tuple_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_23); - __Pyx_INCREF(((PyObject *)__pyx_kp_u_17)); - PyTuple_SET_ITEM(__pyx_k_tuple_23, 0, ((PyObject *)__pyx_kp_u_17)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_17)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_23)); /* "_glarea.pyx":429 @@ -6551,11 +6718,8 @@ * * cdef GLuint _gl_create_compiled_shader(GLenum shadertype, bytes source): #px/ */ - __pyx_k_tuple_25 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_25 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_24)); if (unlikely(!__pyx_k_tuple_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_25); - __Pyx_INCREF(((PyObject *)__pyx_kp_u_24)); - PyTuple_SET_ITEM(__pyx_k_tuple_25, 0, ((PyObject *)__pyx_kp_u_24)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_24)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_25)); /* "_glarea.pyx":439 @@ -6565,11 +6729,8 @@ * return 0 * pchar = source #px+ */ - __pyx_k_tuple_27 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_27)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_27 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_26)); if (unlikely(!__pyx_k_tuple_27)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_27); - __Pyx_INCREF(((PyObject *)__pyx_kp_u_26)); - PyTuple_SET_ITEM(__pyx_k_tuple_27, 0, ((PyObject *)__pyx_kp_u_26)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_26)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_27)); /* "_glarea.pyx":477 @@ -6579,11 +6740,8 @@ * for i in range(program_info[GL_ACTIVE_ATTRIBUTES]): * glGetActiveAttrib(program, i, 1023, &alength, &asize, &atype, aname) #px/ */ - __pyx_k_tuple_40 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_40)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_40 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_39)); if (unlikely(!__pyx_k_tuple_40)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_40); - __Pyx_INCREF(((PyObject *)__pyx_kp_u_39)); - PyTuple_SET_ITEM(__pyx_k_tuple_40, 0, ((PyObject *)__pyx_kp_u_39)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_39)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_40)); /* "_glarea.pyx":483 @@ -6593,11 +6751,8 @@ * for i in range(program_info[GL_ACTIVE_UNIFORMS]): * glGetActiveUniform(program, i, 1023, &alength, &asize, &atype, aname) #px/ */ - __pyx_k_tuple_43 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_43)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_43 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_42)); if (unlikely(!__pyx_k_tuple_43)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_43); - __Pyx_INCREF(((PyObject *)__pyx_kp_u_42)); - PyTuple_SET_ITEM(__pyx_k_tuple_43, 0, ((PyObject *)__pyx_kp_u_42)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_42)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_43)); /* "_glarea.pyx":501 @@ -6607,11 +6762,8 @@ * vertex_shader = _gl_create_compiled_shader(GL_VERTEX_SHADER, vertex_source) * glAttachShader(program, vertex_shader) */ - __pyx_k_tuple_45 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_45)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_45 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_44)); if (unlikely(!__pyx_k_tuple_45)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_45); - __Pyx_INCREF(((PyObject *)__pyx_kp_u_44)); - PyTuple_SET_ITEM(__pyx_k_tuple_45, 0, ((PyObject *)__pyx_kp_u_44)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_44)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_45)); /* "_glarea.pyx":505 @@ -6621,11 +6773,8 @@ * fragment_shader = _gl_create_compiled_shader(GL_FRAGMENT_SHADER, fragment_source) * glAttachShader(program, fragment_shader) */ - __pyx_k_tuple_47 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_47)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_47 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_u_46)); if (unlikely(!__pyx_k_tuple_47)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_47); - __Pyx_INCREF(((PyObject *)__pyx_kp_u_46)); - PyTuple_SET_ITEM(__pyx_k_tuple_47, 0, ((PyObject *)__pyx_kp_u_46)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_46)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_47)); /* "_glarea.pyx":56 @@ -6635,14 +6784,8 @@ * * */ - __pyx_k_tuple_52 = PyTuple_New(2); if (unlikely(!__pyx_k_tuple_52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_52 = PyTuple_Pack(2, ((PyObject *)__pyx_kp_u_51), ((PyObject *)__pyx_n_u__GL)); if (unlikely(!__pyx_k_tuple_52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_52); - __Pyx_INCREF(((PyObject *)__pyx_kp_u_51)); - PyTuple_SET_ITEM(__pyx_k_tuple_52, 0, ((PyObject *)__pyx_kp_u_51)); - __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_51)); - __Pyx_INCREF(((PyObject *)__pyx_n_u__GL)); - PyTuple_SET_ITEM(__pyx_k_tuple_52, 1, ((PyObject *)__pyx_n_u__GL)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_u__GL)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_52)); /* "_glarea.pyx":100 @@ -6661,14 +6804,8 @@ * frustrum.bounding_sphere_radius = bounding_sphere_radius * frustrum.fovy_radius_zoom = frustrum.fovy_radius / zoom */ - __pyx_k_tuple_55 = PyTuple_New(2); if (unlikely(!__pyx_k_tuple_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_55 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s_1), ((PyObject *)__pyx_n_s__zoom)); if (unlikely(!__pyx_k_tuple_55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_55); - __Pyx_INCREF(((PyObject *)__pyx_n_s_1)); - PyTuple_SET_ITEM(__pyx_k_tuple_55, 0, ((PyObject *)__pyx_n_s_1)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s_1)); - __Pyx_INCREF(((PyObject *)__pyx_n_s__zoom)); - PyTuple_SET_ITEM(__pyx_k_tuple_55, 1, ((PyObject *)__pyx_n_s__zoom)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__zoom)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_55)); __pyx_k_codeobj_56 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_55, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_54, __pyx_n_s__set_frustrum, 190, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_56)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -6679,17 +6816,8 @@ * terrain.red = red * terrain.green = green */ - __pyx_k_tuple_57 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_57)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_57 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__red), ((PyObject *)__pyx_n_s__green), ((PyObject *)__pyx_n_s__blue)); if (unlikely(!__pyx_k_tuple_57)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_57); - __Pyx_INCREF(((PyObject *)__pyx_n_s__red)); - PyTuple_SET_ITEM(__pyx_k_tuple_57, 0, ((PyObject *)__pyx_n_s__red)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__red)); - __Pyx_INCREF(((PyObject *)__pyx_n_s__green)); - PyTuple_SET_ITEM(__pyx_k_tuple_57, 1, ((PyObject *)__pyx_n_s__green)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__green)); - __Pyx_INCREF(((PyObject *)__pyx_n_s__blue)); - PyTuple_SET_ITEM(__pyx_k_tuple_57, 2, ((PyObject *)__pyx_n_s__blue)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__blue)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_57)); __pyx_k_codeobj_58 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_57, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_54, __pyx_n_s_59, 196, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -6700,11 +6828,8 @@ * frustrum.multisample = multisample * */ - __pyx_k_tuple_60 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_60 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__multisample)); if (unlikely(!__pyx_k_tuple_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_60); - __Pyx_INCREF(((PyObject *)__pyx_n_s__multisample)); - PyTuple_SET_ITEM(__pyx_k_tuple_60, 0, ((PyObject *)__pyx_n_s__multisample)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__multisample)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_60)); __pyx_k_codeobj_61 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_60, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_54, __pyx_n_s__set_antialiasing, 201, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_61)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -6715,14 +6840,8 @@ * x %= 360 * # pylint: disable=C0321 */ - __pyx_k_tuple_62 = PyTuple_New(2); if (unlikely(!__pyx_k_tuple_62)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_62 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s__x), ((PyObject *)__pyx_n_s__y)); if (unlikely(!__pyx_k_tuple_62)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_62); - __Pyx_INCREF(((PyObject *)__pyx_n_s__x)); - PyTuple_SET_ITEM(__pyx_k_tuple_62, 0, ((PyObject *)__pyx_n_s__x)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__x)); - __Pyx_INCREF(((PyObject *)__pyx_n_s__y)); - PyTuple_SET_ITEM(__pyx_k_tuple_62, 1, ((PyObject *)__pyx_n_s__y)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__y)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_62)); __pyx_k_codeobj_63 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_62, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_54, __pyx_n_s__set_rotation_xy, 204, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -6742,11 +6861,8 @@ * gl_delete_buffers() * cdef GLuint prog #px+ */ - __pyx_k_tuple_65 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_65)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_65 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__prog)); if (unlikely(!__pyx_k_tuple_65)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_65); - __Pyx_INCREF(((PyObject *)__pyx_n_s__prog)); - PyTuple_SET_ITEM(__pyx_k_tuple_65, 0, ((PyObject *)__pyx_n_s__prog)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__prog)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_65)); __pyx_k_codeobj_66 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_54, __pyx_n_s__gl_exit, 266, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -6757,14 +6873,8 @@ * terrain.width = width * terrain.height = height */ - __pyx_k_tuple_67 = PyTuple_New(2); if (unlikely(!__pyx_k_tuple_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_67 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s__width), ((PyObject *)__pyx_n_s__height)); if (unlikely(!__pyx_k_tuple_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_67); - __Pyx_INCREF(((PyObject *)__pyx_n_s__width)); - PyTuple_SET_ITEM(__pyx_k_tuple_67, 0, ((PyObject *)__pyx_n_s__width)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__width)); - __Pyx_INCREF(((PyObject *)__pyx_n_s__height)); - PyTuple_SET_ITEM(__pyx_k_tuple_67, 1, ((PyObject *)__pyx_n_s__height)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__height)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_67)); __pyx_k_codeobj_68 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_67, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_54, __pyx_n_s__gl_resize, 276, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_68)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -6784,11 +6894,8 @@ * cdef GLfloat selectdata[12] #px+ * selectdata[0] = selection_debug_points.modelview1[0] */ - __pyx_k_tuple_70 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_70 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__selectdata)); if (unlikely(!__pyx_k_tuple_70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_70); - __Pyx_INCREF(((PyObject *)__pyx_n_s__selectdata)); - PyTuple_SET_ITEM(__pyx_k_tuple_70, 0, ((PyObject *)__pyx_n_s__selectdata)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__selectdata)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_70)); __pyx_k_codeobj_71 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_70, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_54, __pyx_n_s_72, 309, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_71)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -6799,26 +6906,8 @@ * '''The result is the angle (on the screen) * at which the mouse cursor needs to be drawn.''' */ - __pyx_k_tuple_73 = PyTuple_New(6); if (unlikely(!__pyx_k_tuple_73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_73 = PyTuple_Pack(6, ((PyObject *)__pyx_n_s__point1), ((PyObject *)__pyx_n_s__point2), ((PyObject *)__pyx_n_s__angle), ((PyObject *)__pyx_n_s__i), ((PyObject *)__pyx_n_s__x), ((PyObject *)__pyx_n_s__y)); if (unlikely(!__pyx_k_tuple_73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_73); - __Pyx_INCREF(((PyObject *)__pyx_n_s__point1)); - PyTuple_SET_ITEM(__pyx_k_tuple_73, 0, ((PyObject *)__pyx_n_s__point1)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__point1)); - __Pyx_INCREF(((PyObject *)__pyx_n_s__point2)); - PyTuple_SET_ITEM(__pyx_k_tuple_73, 1, ((PyObject *)__pyx_n_s__point2)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__point2)); - __Pyx_INCREF(((PyObject *)__pyx_n_s__angle)); - PyTuple_SET_ITEM(__pyx_k_tuple_73, 2, ((PyObject *)__pyx_n_s__angle)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__angle)); - __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); - PyTuple_SET_ITEM(__pyx_k_tuple_73, 3, ((PyObject *)__pyx_n_s__i)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); - __Pyx_INCREF(((PyObject *)__pyx_n_s__x)); - PyTuple_SET_ITEM(__pyx_k_tuple_73, 4, ((PyObject *)__pyx_n_s__x)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__x)); - __Pyx_INCREF(((PyObject *)__pyx_n_s__y)); - PyTuple_SET_ITEM(__pyx_k_tuple_73, 5, ((PyObject *)__pyx_n_s__y)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__y)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_73)); __pyx_k_codeobj_74 = (PyObject*)__Pyx_PyCode_New(2, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_73, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_54, __pyx_n_s__get_cursor_angle, 381, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_74)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -6829,20 +6918,8 @@ * #px def gl_create_render_program(vertex_source, fragment_source): * cdef GLint location #px+ */ - __pyx_k_tuple_75 = PyTuple_New(4); if (unlikely(!__pyx_k_tuple_75)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_75 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__vertex_source), ((PyObject *)__pyx_n_s__fragment_source), ((PyObject *)__pyx_n_s__location), ((PyObject *)__pyx_n_s__attributes)); if (unlikely(!__pyx_k_tuple_75)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_75); - __Pyx_INCREF(((PyObject *)__pyx_n_s__vertex_source)); - PyTuple_SET_ITEM(__pyx_k_tuple_75, 0, ((PyObject *)__pyx_n_s__vertex_source)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__vertex_source)); - __Pyx_INCREF(((PyObject *)__pyx_n_s__fragment_source)); - PyTuple_SET_ITEM(__pyx_k_tuple_75, 1, ((PyObject *)__pyx_n_s__fragment_source)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fragment_source)); - __Pyx_INCREF(((PyObject *)__pyx_n_s__location)); - PyTuple_SET_ITEM(__pyx_k_tuple_75, 2, ((PyObject *)__pyx_n_s__location)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__location)); - __Pyx_INCREF(((PyObject *)__pyx_n_s__attributes)); - PyTuple_SET_ITEM(__pyx_k_tuple_75, 3, ((PyObject *)__pyx_n_s__attributes)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__attributes)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_75)); __pyx_k_codeobj_76 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_75, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_54, __pyx_n_s_77, 524, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_76)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -6853,20 +6930,8 @@ * #px def gl_create_hud_program(vertex_source, fragment_source): * cdef GLint location #px+ */ - __pyx_k_tuple_78 = PyTuple_New(4); if (unlikely(!__pyx_k_tuple_78)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_78 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__vertex_source), ((PyObject *)__pyx_n_s__fragment_source), ((PyObject *)__pyx_n_s__location), ((PyObject *)__pyx_n_s__attributes)); if (unlikely(!__pyx_k_tuple_78)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_78); - __Pyx_INCREF(((PyObject *)__pyx_n_s__vertex_source)); - PyTuple_SET_ITEM(__pyx_k_tuple_78, 0, ((PyObject *)__pyx_n_s__vertex_source)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__vertex_source)); - __Pyx_INCREF(((PyObject *)__pyx_n_s__fragment_source)); - PyTuple_SET_ITEM(__pyx_k_tuple_78, 1, ((PyObject *)__pyx_n_s__fragment_source)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fragment_source)); - __Pyx_INCREF(((PyObject *)__pyx_n_s__location)); - PyTuple_SET_ITEM(__pyx_k_tuple_78, 2, ((PyObject *)__pyx_n_s__location)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__location)); - __Pyx_INCREF(((PyObject *)__pyx_n_s__attributes)); - PyTuple_SET_ITEM(__pyx_k_tuple_78, 3, ((PyObject *)__pyx_n_s__attributes)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__attributes)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_78)); __pyx_k_codeobj_79 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_78, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_54, __pyx_n_s_80, 545, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_79)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -6877,17 +6942,8 @@ * #px def gl_create_pick_program(vertex_source, fragment_source): * if program.prog_pick > 0: */ - __pyx_k_tuple_81 = PyTuple_New(3); if (unlikely(!__pyx_k_tuple_81)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_81 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__vertex_source), ((PyObject *)__pyx_n_s__fragment_source), ((PyObject *)__pyx_n_s__attributes)); if (unlikely(!__pyx_k_tuple_81)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_81); - __Pyx_INCREF(((PyObject *)__pyx_n_s__vertex_source)); - PyTuple_SET_ITEM(__pyx_k_tuple_81, 0, ((PyObject *)__pyx_n_s__vertex_source)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__vertex_source)); - __Pyx_INCREF(((PyObject *)__pyx_n_s__fragment_source)); - PyTuple_SET_ITEM(__pyx_k_tuple_81, 1, ((PyObject *)__pyx_n_s__fragment_source)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__fragment_source)); - __Pyx_INCREF(((PyObject *)__pyx_n_s__attributes)); - PyTuple_SET_ITEM(__pyx_k_tuple_81, 2, ((PyObject *)__pyx_n_s__attributes)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__attributes)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_81)); __pyx_k_codeobj_82 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_81, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_54, __pyx_n_s_83, 558, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_82)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_RefNannyFinishContext(); @@ -6920,6 +6976,9 @@ PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannyDeclarations #if CYTHON_REFNANNY __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); @@ -6957,6 +7016,8 @@ __pyx_m = PyModule_Create(&__pyx_moduledef); #endif if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + Py_INCREF(__pyx_d); #if PY_MAJOR_VERSION >= 3 { PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -6972,6 +7033,9 @@ if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; /*--- Initialize various global constants etc. ---*/ if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) + if (__Pyx_init_sys_getdefaultencoding_params() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #endif if (__pyx_module_is_main__glarea) { if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; } @@ -7006,7 +7070,7 @@ */ __pyx_t_2 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s____compiled, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s____compiled, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea.pyx":48 @@ -7042,61 +7106,33 @@ __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s__debug), ((PyObject *)__pyx_t_2), 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; - __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__debug); - if (__pyx_t_2 == NULL) { - if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s__debug); - if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s__debug); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__debug, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s__debug, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__DEBUG_DRAW); - if (__pyx_t_2 == NULL) { - if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s__DEBUG_DRAW); - if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s__DEBUG_DRAW); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DEBUG_DRAW, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s__DEBUG_DRAW, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__DEBUG_PICK); - if (__pyx_t_2 == NULL) { - if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s__DEBUG_PICK); - if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s__DEBUG_PICK); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DEBUG_PICK, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s__DEBUG_PICK, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__DEBUG_MSG); - if (__pyx_t_2 == NULL) { - if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s__DEBUG_MSG); - if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s__DEBUG_MSG); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DEBUG_MSG, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s__DEBUG_MSG, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__DEBUG_NOVSHADER); - if (__pyx_t_2 == NULL) { - if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s__DEBUG_NOVSHADER); - if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s__DEBUG_NOVSHADER); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DEBUG_NOVSHADER, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s__DEBUG_NOVSHADER, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__DEBUG_NOFSHADER); - if (__pyx_t_2 == NULL) { - if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s__DEBUG_NOFSHADER); - if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s__DEBUG_NOFSHADER); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DEBUG_NOFSHADER, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s__DEBUG_NOFSHADER, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__DEBUG_NOSHADER); - if (__pyx_t_2 == NULL) { - if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s__DEBUG_NOSHADER); - if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } + __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s__DEBUG_NOSHADER); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DEBUG_NOSHADER, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s__DEBUG_NOSHADER, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -7107,9 +7143,9 @@ * debug(' from package:', __package__) * debug(' compiled:', __compiled) */ - __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__debug); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__debug); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s____name__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s____name__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); @@ -7132,9 +7168,9 @@ * debug(' compiled:', __compiled) * debug(' GL/GLES:', SOURCEGLVERSION) */ - __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__debug); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__debug); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s____package__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s____package__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); @@ -7157,9 +7193,9 @@ * debug(' GL/GLES:', SOURCEGLVERSION) * */ - __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__debug); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s__debug); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_4); - __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s____compiled); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s____compiled); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); @@ -7182,7 +7218,7 @@ * * */ - __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__debug); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__debug); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_52), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); @@ -7198,7 +7234,7 @@ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_7_glarea_1init_module, NULL, __pyx_n_s___glarea); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__init_module, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s__init_module, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea.pyx":190 @@ -7210,7 +7246,7 @@ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_7_glarea_3set_frustrum, NULL, __pyx_n_s___glarea); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__set_frustrum, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s__set_frustrum, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea.pyx":196 @@ -7222,7 +7258,7 @@ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_7_glarea_5set_background_color, NULL, __pyx_n_s___glarea); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_59, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_59, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea.pyx":201 @@ -7234,7 +7270,7 @@ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_7_glarea_7set_antialiasing, NULL, __pyx_n_s___glarea); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__set_antialiasing, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s__set_antialiasing, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea.pyx":204 @@ -7246,7 +7282,7 @@ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_7_glarea_9set_rotation_xy, NULL, __pyx_n_s___glarea); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__set_rotation_xy, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s__set_rotation_xy, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea.pyx":240 @@ -7258,7 +7294,7 @@ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_7_glarea_11gl_init, NULL, __pyx_n_s___glarea); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__gl_init, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s__gl_init, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea.pyx":266 @@ -7270,7 +7306,7 @@ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_7_glarea_13gl_exit, NULL, __pyx_n_s___glarea); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__gl_exit, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s__gl_exit, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea.pyx":276 @@ -7282,7 +7318,7 @@ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_7_glarea_15gl_resize, NULL, __pyx_n_s___glarea); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__gl_resize, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s__gl_resize, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea.pyx":289 @@ -7294,7 +7330,7 @@ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_7_glarea_17gl_render, NULL, __pyx_n_s___glarea); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__gl_render, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s__gl_render, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea.pyx":309 @@ -7306,7 +7342,7 @@ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_7_glarea_19gl_render_select_debug, NULL, __pyx_n_s___glarea); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_72, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_72, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea.pyx":381 @@ -7318,7 +7354,7 @@ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_7_glarea_23get_cursor_angle, NULL, __pyx_n_s___glarea); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_cursor_angle, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s__get_cursor_angle, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea.pyx":524 @@ -7330,7 +7366,7 @@ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_7_glarea_25gl_create_render_program, NULL, __pyx_n_s___glarea); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_77, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_77, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea.pyx":545 @@ -7342,7 +7378,7 @@ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_7_glarea_27gl_create_hud_program, NULL, __pyx_n_s___glarea); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_80, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_80, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea.pyx":558 @@ -7354,7 +7390,7 @@ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_7_glarea_29gl_create_pick_program, NULL, __pyx_n_s___glarea); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_83, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s_83, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea.pyx":1 @@ -7364,7 +7400,7 @@ */ __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s____test__, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; goto __pyx_L0; __pyx_L1_error:; @@ -7404,21 +7440,69 @@ } #endif /* CYTHON_REFNANNY */ -static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) { - PyObject *result; - result = PyObject_GetAttr(dict, name); - if (!result) { - if (dict != __pyx_b) { - PyErr_Clear(); - result = PyObject_GetAttr(__pyx_b, name); - } - if (!result) { - PyErr_SetObject(PyExc_NameError, name); - } +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); + if (unlikely(!result)) { + PyErr_Format(PyExc_NameError, +#if PY_MAJOR_VERSION >= 3 + "name '%U' is not defined", name); +#else + "name '%s' is not defined", PyString_AS_STRING(name)); +#endif } return result; } +static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) { +#if CYTHON_COMPILING_IN_CPYTHON + PyObject *tmp_type, *tmp_value, *tmp_tb; + PyThreadState *tstate = PyThreadState_GET(); + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#else + PyErr_Restore(type, value, tb); +#endif +} +static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) { +#if CYTHON_COMPILING_IN_CPYTHON + PyThreadState *tstate = PyThreadState_GET(); + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#else + PyErr_Fetch(type, value, tb); +#endif +} + +static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, + CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename) { + PyObject *old_exc, *old_val, *old_tb; + PyObject *ctx; + __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); + #if PY_MAJOR_VERSION < 3 + ctx = PyString_FromString(name); + #else + ctx = PyUnicode_FromString(name); + #endif + __Pyx_ErrRestore(old_exc, old_val, old_tb); + if (!ctx) { + PyErr_WriteUnraisable(Py_None); + } else { + PyErr_WriteUnraisable(ctx); + Py_DECREF(ctx); + } +} + static void __Pyx_RaiseArgtupleInvalid( const char* func_name, int exact, @@ -7558,6 +7642,101 @@ return -1; } +static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { + PyObject *result; +#if CYTHON_COMPILING_IN_CPYTHON + result = PyDict_GetItem(__pyx_d, name); + if (result) { + Py_INCREF(result); + } else { +#else + result = PyObject_GetItem(__pyx_d, name); + if (!result) { + PyErr_Clear(); +#endif + result = __Pyx_GetBuiltinName(name); + } + return result; +} + +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { + PyObject *r; + if (!j) return NULL; + r = PyObject_GetItem(o, j); + Py_DECREF(j); + return r; +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck) { +#if CYTHON_COMPILING_IN_CPYTHON + if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o); + if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) { + PyObject *r = PyList_GET_ITEM(o, i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck) { +#if CYTHON_COMPILING_IN_CPYTHON + if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o); + if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, + int is_list, int wraparound, int boundscheck) { +#if CYTHON_COMPILING_IN_CPYTHON + if (is_list || PyList_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); + if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) { + PyObject *r = PyList_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } + else if (PyTuple_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); + if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } else { + PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; + if (likely(m && m->sq_item)) { + if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { + Py_ssize_t l = m->sq_length(o); + if (likely(l >= 0)) { + i += l; + } else { + if (PyErr_ExceptionMatches(PyExc_OverflowError)) + PyErr_Clear(); + else + return NULL; + } + } + return m->sq_item(o, i); + } + } +#else + if (is_list || PySequence_Check(o)) { + return PySequence_GetItem(o, i); + } +#endif + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +} + static CYTHON_INLINE PyObject* __Pyx_decode_c_string( const char* cstring, Py_ssize_t start, Py_ssize_t stop, const char* encoding, const char* errors, @@ -7660,16 +7839,31 @@ return 0; } -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, long level) { - PyObject *py_import = 0; +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); + if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Format(PyExc_ImportError, + #if PY_MAJOR_VERSION < 3 + "cannot import name %.230s", PyString_AS_STRING(name)); + #else + "cannot import name %S", name); + #endif + } + return value; +} + +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { PyObject *empty_list = 0; PyObject *module = 0; PyObject *global_dict = 0; PyObject *empty_dict = 0; PyObject *list; - py_import = __Pyx_GetAttrString(__pyx_b, "__import__"); + #if PY_VERSION_HEX < 0x03030000 + PyObject *py_import; + py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s____import__); if (!py_import) goto bad; + #endif if (from_list) list = from_list; else { @@ -7689,13 +7883,17 @@ #if PY_MAJOR_VERSION >= 3 if (level == -1) { if (strchr(__Pyx_MODULE_NAME, '.')) { - /* try package relative import first */ + #if PY_VERSION_HEX < 0x03030000 PyObject *py_level = PyInt_FromLong(1); if (!py_level) goto bad; module = PyObject_CallFunctionObjArgs(py_import, name, global_dict, empty_dict, list, py_level, NULL); Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, global_dict, empty_dict, list, 1); + #endif if (!module) { if (!PyErr_ExceptionMatches(PyExc_ImportError)) goto bad; @@ -7706,12 +7904,17 @@ } #endif if (!module) { + #if PY_VERSION_HEX < 0x03030000 PyObject *py_level = PyInt_FromLong(level); if (!py_level) goto bad; module = PyObject_CallFunctionObjArgs(py_import, name, global_dict, empty_dict, list, py_level, NULL); Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, global_dict, empty_dict, list, level); + #endif } } #else @@ -7723,21 +7926,14 @@ name, global_dict, empty_dict, list, NULL); #endif bad: - Py_XDECREF(empty_list); + #if PY_VERSION_HEX < 0x03030000 Py_XDECREF(py_import); + #endif + Py_XDECREF(empty_list); Py_XDECREF(empty_dict); return module; } -static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name) { -#if PY_MAJOR_VERSION < 3 - PyErr_Format(PyExc_ImportError, "cannot import name %.230s", - PyString_AsString(name)); -#else - PyErr_Format(PyExc_ImportError, "cannot import name %S", name); -#endif -} - static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) { const unsigned char neg_one = (unsigned char)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; @@ -7928,10 +8124,15 @@ return (int)__Pyx_PyInt_AsLong(x); } +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) { const unsigned long neg_one = (unsigned long)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; -#if PY_VERSION_HEX < 0x03000000 +#if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { @@ -7944,6 +8145,16 @@ #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(unsigned long)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return (unsigned long) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif if (unlikely(Py_SIZE(x) < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to unsigned long"); @@ -7951,6 +8162,17 @@ } return (unsigned long)PyLong_AsUnsignedLong(x); } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(unsigned long)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return +(unsigned long) ((PyLongObject*)x)->ob_digit[0]; + case -1: return -(unsigned long) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif return (unsigned long)PyLong_AsLong(x); } } else { @@ -7963,10 +8185,15 @@ } } +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) { const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; -#if PY_VERSION_HEX < 0x03000000 +#if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { @@ -7979,6 +8206,16 @@ #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(unsigned PY_LONG_LONG)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return (unsigned PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif if (unlikely(Py_SIZE(x) < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to unsigned PY_LONG_LONG"); @@ -7986,6 +8223,17 @@ } return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(unsigned PY_LONG_LONG)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return +(unsigned PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + case -1: return -(unsigned PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x); } } else { @@ -7998,10 +8246,15 @@ } } +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) { const long neg_one = (long)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; -#if PY_VERSION_HEX < 0x03000000 +#if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { @@ -8014,6 +8267,16 @@ #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(long)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return (long) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif if (unlikely(Py_SIZE(x) < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to long"); @@ -8021,6 +8284,17 @@ } return (long)PyLong_AsUnsignedLong(x); } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(long)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return +(long) ((PyLongObject*)x)->ob_digit[0]; + case -1: return -(long) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif return (long)PyLong_AsLong(x); } } else { @@ -8033,10 +8307,15 @@ } } +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) { const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; -#if PY_VERSION_HEX < 0x03000000 +#if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { @@ -8049,6 +8328,16 @@ #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(PY_LONG_LONG)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return (PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif if (unlikely(Py_SIZE(x) < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to PY_LONG_LONG"); @@ -8056,6 +8345,17 @@ } return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(PY_LONG_LONG)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return +(PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + case -1: return -(PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif return (PY_LONG_LONG)PyLong_AsLongLong(x); } } else { @@ -8068,10 +8368,15 @@ } } +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) { const signed long neg_one = (signed long)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; -#if PY_VERSION_HEX < 0x03000000 +#if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { @@ -8084,6 +8389,16 @@ #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(signed long)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return (signed long) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif if (unlikely(Py_SIZE(x) < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to signed long"); @@ -8091,6 +8406,17 @@ } return (signed long)PyLong_AsUnsignedLong(x); } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(signed long)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return +(signed long) ((PyLongObject*)x)->ob_digit[0]; + case -1: return -(signed long) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif return (signed long)PyLong_AsLong(x); } } else { @@ -8103,10 +8429,15 @@ } } +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) { const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; -#if PY_VERSION_HEX < 0x03000000 +#if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { @@ -8119,6 +8450,16 @@ #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(signed PY_LONG_LONG)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return (signed PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif if (unlikely(Py_SIZE(x) < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to signed PY_LONG_LONG"); @@ -8126,6 +8467,17 @@ } return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(signed PY_LONG_LONG)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return +(signed PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + case -1: return -(signed PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif return (signed PY_LONG_LONG)PyLong_AsLongLong(x); } } else { @@ -8138,56 +8490,6 @@ } } -static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) { -#if CYTHON_COMPILING_IN_CPYTHON - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyThreadState *tstate = PyThreadState_GET(); - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#else - PyErr_Restore(type, value, tb); -#endif -} -static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) { -#if CYTHON_COMPILING_IN_CPYTHON - PyThreadState *tstate = PyThreadState_GET(); - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#else - PyErr_Fetch(type, value, tb); -#endif -} - -static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, - CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename) { - PyObject *old_exc, *old_val, *old_tb; - PyObject *ctx; - __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); - #if PY_MAJOR_VERSION < 3 - ctx = PyString_FromString(name); - #else - ctx = PyUnicode_FromString(name); - #endif - __Pyx_ErrRestore(old_exc, old_val, old_tb); - if (!ctx) { - PyErr_WriteUnraisable(Py_None); - } else { - PyErr_WriteUnraisable(ctx); - Py_DECREF(ctx); - } -} - static int __Pyx_check_binary_version(void) { char ctversion[4], rtversion[4]; PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); @@ -8469,27 +8771,82 @@ return 0; } - -/* Type Conversion Functions */ - +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(char* c_str) { + return __Pyx_PyUnicode_FromStringAndSize(c_str, strlen(c_str)); +} +static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) { + Py_ssize_t ignore; + return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT + if ( +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + __Pyx_sys_getdefaultencoding_not_ascii && +#endif + PyUnicode_Check(o)) { +#if PY_VERSION_HEX < 0x03030000 + char* defenc_c; + PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); + if (!defenc) return NULL; + defenc_c = PyBytes_AS_STRING(defenc); +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + { + char* end = defenc_c + PyBytes_GET_SIZE(defenc); + char* c; + for (c = defenc_c; c < end; c++) { + if ((unsigned char) (*c) >= 128) { + PyUnicode_AsASCIIString(o); + return NULL; + } + } + } +#endif /*__PYX_DEFAULT_STRING_ENCODING_IS_ASCII*/ + *length = PyBytes_GET_SIZE(defenc); + return defenc_c; +#else /* PY_VERSION_HEX < 0x03030000 */ + if (PyUnicode_READY(o) == -1) return NULL; +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + if (PyUnicode_IS_ASCII(o)) { + *length = PyUnicode_GET_DATA_SIZE(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } +#else /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII */ + return PyUnicode_AsUTF8AndSize(o, length); +#endif /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII */ +#endif /* PY_VERSION_HEX < 0x03030000 */ + } else +#endif /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT */ + { + char* result; + int r = PyBytes_AsStringAndSize(o, &result, length); + if (r < 0) { + return NULL; + } else { + return result; + } + } +} static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { int is_true = x == Py_True; if (is_true | (x == Py_False) | (x == Py_None)) return is_true; else return PyObject_IsTrue(x); } - static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) { PyNumberMethods *m; const char *name = NULL; PyObject *res = NULL; -#if PY_VERSION_HEX < 0x03000000 +#if PY_MAJOR_VERSION < 3 if (PyInt_Check(x) || PyLong_Check(x)) #else if (PyLong_Check(x)) #endif return Py_INCREF(x), x; m = Py_TYPE(x)->tp_as_number; -#if PY_VERSION_HEX < 0x03000000 +#if PY_MAJOR_VERSION < 3 if (m && m->nb_int) { name = "int"; res = PyNumber_Int(x); @@ -8505,7 +8862,7 @@ } #endif if (res) { -#if PY_VERSION_HEX < 0x03000000 +#if PY_MAJOR_VERSION < 3 if (!PyInt_Check(res) && !PyLong_Check(res)) { #else if (!PyLong_Check(res)) { @@ -8523,7 +8880,6 @@ } return res; } - static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { Py_ssize_t ival; PyObject* x = PyNumber_Index(b); @@ -8532,7 +8888,6 @@ Py_DECREF(x); return ival; } - static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { #if PY_VERSION_HEX < 0x02050000 if (ival <= LONG_MAX) @@ -8546,14 +8901,12 @@ return PyInt_FromSize_t(ival); #endif } - static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) { unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x); - if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) { - return (size_t)-1; - } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) { - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to size_t"); + if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) { + if ((val != (unsigned PY_LONG_LONG)-1) || !PyErr_Occurred()) + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to size_t"); return (size_t)-1; } return (size_t)val; diff -Nru pybik-1.1/csrc/_gldraw.cpp pybik-1.1.1/csrc/_gldraw.cpp --- pybik-1.1/csrc/_gldraw.cpp 2013-06-16 20:00:40.000000000 +0000 +++ pybik-1.1.1/csrc/_gldraw.cpp 2014-02-11 16:08:46.000000000 +0000 @@ -1,6 +1,18 @@ -/* Generated by Cython 0.17.4 on Sun Jun 16 22:00:39 2013 */ +/* Generated by Cython 0.19 on Tue Feb 11 17:08:44 2014 */ #define PY_SSIZE_T_CLEAN +#ifndef CYTHON_USE_PYLONG_INTERNALS +#ifdef PYLONG_BITS_IN_DIGIT +#define CYTHON_USE_PYLONG_INTERNALS 0 +#else +#include "pyconfig.h" +#ifdef PYLONG_BITS_IN_DIGIT +#define CYTHON_USE_PYLONG_INTERNALS 1 +#else +#define CYTHON_USE_PYLONG_INTERNALS 0 +#endif +#endif +#endif #include "Python.h" #ifndef Py_PYTHON_H #error Python headers needed to compile C extensions, please install development version of Python. @@ -116,6 +128,9 @@ #if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3) #define Py_TPFLAGS_HAVE_NEWBUFFER 0 #endif +#if PY_VERSION_HEX < 0x02060000 + #define Py_TPFLAGS_HAVE_VERSION_TAG 0 +#endif #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ? \ @@ -155,6 +170,14 @@ #define PyBytes_Concat PyString_Concat #define PyBytes_ConcatAndDel PyString_ConcatAndDel #endif +#if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) + #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) +#else + #define __Pyx_PyBaseString_Check(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj) || \ + PyString_Check(obj) || PyUnicode_Check(obj)) + #define __Pyx_PyBaseString_CheckExact(obj) (Py_TYPE(obj) == &PyBaseString_Type) +#endif #if PY_VERSION_HEX < 0x02060000 #define PySet_Check(obj) PyObject_TypeCheck(obj, &PySet_Type) #define PyFrozenSet_Check(obj) PyObject_TypeCheck(obj, &PyFrozenSet_Type) @@ -227,6 +250,40 @@ #define __Pyx_NAMESTR(n) (n) #define __Pyx_DOCSTR(n) (n) #endif +#ifndef CYTHON_INLINE + #if defined(__GNUC__) + #define CYTHON_INLINE __inline__ + #elif defined(_MSC_VER) + #define CYTHON_INLINE __inline + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_INLINE inline + #else + #define CYTHON_INLINE + #endif +#endif +#ifndef CYTHON_RESTRICT + #if defined(__GNUC__) + #define CYTHON_RESTRICT __restrict__ + #elif defined(_MSC_VER) + #define CYTHON_RESTRICT __restrict + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #define CYTHON_RESTRICT restrict + #else + #define CYTHON_RESTRICT + #endif +#endif +#ifdef NAN +#define __PYX_NAN() ((float) NAN) +#else +static CYTHON_INLINE float __PYX_NAN() { + /* Initialize NaN. The sign is irrelevant, an exponent with all bits 1 and + a nonzero mantissa means NaN. If the first bit in the mantissa is 1, it is + a quiet NaN. */ + float value; + memset(&value, 0xFF, sizeof(value)); + return value; +} +#endif #if PY_MAJOR_VERSION >= 3 @@ -265,21 +322,6 @@ #define CYTHON_WITHOUT_ASSERTIONS #endif - -/* inline attribute */ -#ifndef CYTHON_INLINE - #if defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - -/* unused attribute */ #ifndef CYTHON_UNUSED # if defined(__GNUC__) # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) @@ -293,30 +335,130 @@ # define CYTHON_UNUSED # endif #endif +typedef struct {PyObject **p; char *s; const Py_ssize_t n; const char* encoding; + const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/ -typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/ - - -/* Type Conversion Predeclarations */ - -#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s) -#define __Pyx_PyBytes_AsUString(s) ((unsigned char*) PyBytes_AsString(s)) - +#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 +#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 +#define __PYX_DEFAULT_STRING_ENCODING "" +#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString +#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +#define __Pyx_PyBytes_FromString PyBytes_FromString +#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(char*); +#if PY_MAJOR_VERSION < 3 + #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize +#else + #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString + #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize +#endif +#define __Pyx_PyObject_AsUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_FromUString(s) __Pyx_PyObject_FromString((char*)s) +#define __Pyx_PyBytes_FromUString(s) __Pyx_PyBytes_FromString((char*)s) +#define __Pyx_PyStr_FromUString(s) __Pyx_PyStr_FromString((char*)s) +#define __Pyx_PyUnicode_FromUString(s) __Pyx_PyUnicode_FromString((char*)s) +#if PY_MAJOR_VERSION < 3 +static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) +{ + const Py_UNICODE *u_end = u; + while (*u_end++) ; + return u_end - u - 1; +} +#else +#define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen +#endif +#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) +#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode +#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode #define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None) #define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False)) static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x); - static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*); - #if CYTHON_COMPILING_IN_CPYTHON #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #else #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) #endif #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII +static int __Pyx_sys_getdefaultencoding_not_ascii; +static int __Pyx_init_sys_getdefaultencoding_params() { + PyObject* sys = NULL; + PyObject* default_encoding = NULL; + PyObject* ascii_chars_u = NULL; + PyObject* ascii_chars_b = NULL; + sys = PyImport_ImportModule("sys"); + if (sys == NULL) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); + if (default_encoding == NULL) goto bad; + if (strcmp(PyBytes_AsString(default_encoding), "ascii") == 0) { + __Pyx_sys_getdefaultencoding_not_ascii = 0; + } else { + const char* default_encoding_c = PyBytes_AS_STRING(default_encoding); + char ascii_chars[128]; + int c; + for (c = 0; c < 128; c++) { + ascii_chars[c] = c; + } + __Pyx_sys_getdefaultencoding_not_ascii = 1; + ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); + if (ascii_chars_u == NULL) goto bad; + ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); + if (ascii_chars_b == NULL || strncmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { + PyErr_Format( + PyExc_ValueError, + "This module compiled with c_string_encoding=ascii, but default encoding '%s' is not a superset of ascii.", + default_encoding_c); + goto bad; + } + } + Py_XDECREF(sys); + Py_XDECREF(default_encoding); + Py_XDECREF(ascii_chars_u); + Py_XDECREF(ascii_chars_b); + return 0; +bad: + Py_XDECREF(sys); + Py_XDECREF(default_encoding); + Py_XDECREF(ascii_chars_u); + Py_XDECREF(ascii_chars_b); + return -1; +} +#endif +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) +#else +#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) +#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT +static char* __PYX_DEFAULT_STRING_ENCODING; +static int __Pyx_init_sys_getdefaultencoding_params() { + PyObject* sys = NULL; + PyObject* default_encoding = NULL; + char* default_encoding_c; + sys = PyImport_ImportModule("sys"); + if (sys == NULL) goto bad; + default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); + if (default_encoding == NULL) goto bad; + default_encoding_c = PyBytes_AS_STRING(default_encoding); + __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); + strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); + Py_DECREF(sys); + Py_DECREF(default_encoding); + return 0; +bad: + Py_XDECREF(sys); + Py_XDECREF(default_encoding); + return -1; +} +#endif +#endif + #ifdef __GNUC__ /* Test for GCC > 2.95 */ @@ -331,8 +473,9 @@ #define likely(x) (x) #define unlikely(x) (x) #endif /* __GNUC__ */ - + static PyObject *__pyx_m; +static PyObject *__pyx_d; static PyObject *__pyx_b; static PyObject *__pyx_empty_tuple; static PyObject *__pyx_empty_bytes; @@ -642,7 +785,22 @@ #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) -static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); +#if PY_MAJOR_VERSION < 3 + if (likely(tp->tp_getattr)) + return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); +#endif + return PyObject_GetAttr(obj, attr_name); +} +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +static PyObject *__Pyx_GetBuiltinName(PyObject *name); /*proto*/ static double __Pyx__PyObject_AsDouble(PyObject* obj); /* proto */ #if CYTHON_COMPILING_IN_PYPY @@ -656,91 +814,25 @@ PyFloat_AS_DOUBLE(obj) : __Pyx__PyObject_AsDouble(obj)) #endif -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { - PyObject *r; - if (!j) return NULL; - r = PyObject_GetItem(o, j); - Py_DECREF(j); - return r; -} -#define __Pyx_GetItemInt_List(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \ - __Pyx_GetItemInt_List_Fast(o, i) : \ - __Pyx_GetItemInt_Generic(o, to_py_func(i))) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i) { -#if CYTHON_COMPILING_IN_CPYTHON - if (likely((0 <= i) & (i < PyList_GET_SIZE(o)))) { - PyObject *r = PyList_GET_ITEM(o, i); - Py_INCREF(r); - return r; - } - else if ((-PyList_GET_SIZE(o) <= i) & (i < 0)) { - PyObject *r = PyList_GET_ITEM(o, PyList_GET_SIZE(o) + i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -#define __Pyx_GetItemInt_Tuple(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \ - __Pyx_GetItemInt_Tuple_Fast(o, i) : \ - __Pyx_GetItemInt_Generic(o, to_py_func(i))) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i) { -#if CYTHON_COMPILING_IN_CPYTHON - if (likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, i); - Py_INCREF(r); - return r; - } - else if ((-PyTuple_GET_SIZE(o) <= i) & (i < 0)) { - PyObject *r = PyTuple_GET_ITEM(o, PyTuple_GET_SIZE(o) + i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -#define __Pyx_GetItemInt(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \ - __Pyx_GetItemInt_Fast(o, i) : \ - __Pyx_GetItemInt_Generic(o, to_py_func(i))) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i) { -#if CYTHON_COMPILING_IN_CPYTHON - if (PyList_CheckExact(o)) { - Py_ssize_t n = (likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); - if (likely((n >= 0) & (n < PyList_GET_SIZE(o)))) { - PyObject *r = PyList_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } - else if (PyTuple_CheckExact(o)) { - Py_ssize_t n = (likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); - if (likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } else { /* inlined PySequence_GetItem() */ - PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; - if (likely(m && m->sq_item)) { - if (unlikely(i < 0) && likely(m->sq_length)) { - Py_ssize_t l = m->sq_length(o); - if (unlikely(l < 0)) return NULL; - i += l; - } - return m->sq_item(o, i); - } - } -#else - if (PySequence_Check(o)) { - return PySequence_GetItem(o, i); - } -#endif - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -} +#define __Pyx_GetItemInt(o, i, size, to_py_func, is_list, wraparound, boundscheck) \ + (((size) <= sizeof(Py_ssize_t)) ? \ + __Pyx_GetItemInt_Fast(o, i, is_list, wraparound, boundscheck) : \ + __Pyx_GetItemInt_Generic(o, to_py_func(i))) +#define __Pyx_GetItemInt_List(o, i, size, to_py_func, is_list, wraparound, boundscheck) \ + (((size) <= sizeof(Py_ssize_t)) ? \ + __Pyx_GetItemInt_List_Fast(o, i, wraparound, boundscheck) : \ + __Pyx_GetItemInt_Generic(o, to_py_func(i))) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +#define __Pyx_GetItemInt_Tuple(o, i, size, to_py_func, is_list, wraparound, boundscheck) \ + (((size) <= sizeof(Py_ssize_t)) ? \ + __Pyx_GetItemInt_Tuple_Fast(o, i, wraparound, boundscheck) : \ + __Pyx_GetItemInt_Generic(o, to_py_func(i))) +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, + int is_list, int wraparound, int boundscheck); static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); @@ -759,12 +851,14 @@ PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \ const char* function_name); /*proto*/ +static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); /*proto*/ + static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, const char *name, int exact); /*proto*/ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, long level); /*proto*/ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); /*proto*/ -static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name); +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /*proto*/ static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *); @@ -857,7 +951,7 @@ static char __pyx_k_7[] = "Importing module:"; static char __pyx_k_8[] = " from package:"; static char __pyx_k_9[] = " compiled:"; -static char __pyx_k_12[] = "/home/barcc/Projekte/pybik/trunk/build/temp.linux-x86_64-3.3/pybiklib/_gldraw.pyx"; +static char __pyx_k_12[] = "/home/barcc/Projekte/pybik/updates-1.1.1/build/temp.linux-x86_64-3.3/pybiklib/_gldraw.pyx"; static char __pyx_k__b[] = "b"; static char __pyx_k__i[] = "i"; static char __pyx_k__j[] = "j"; @@ -877,6 +971,7 @@ static char __pyx_k__angle_max[] = "angle_max"; static char __pyx_k__enumerate[] = "enumerate"; static char __pyx_k____compiled[] = "__compiled"; +static char __pyx_k____import__[] = "__import__"; static char __pyx_k__vertexdata[] = "vertexdata"; static char __pyx_k__vertexinfo[] = "vertexinfo"; static char __pyx_k____package__[] = "__package__"; @@ -900,6 +995,7 @@ static PyObject *__pyx_kp_u_9; static PyObject *__pyx_n_s____all__; static PyObject *__pyx_n_s____compiled; +static PyObject *__pyx_n_s____import__; static PyObject *__pyx_n_s____main__; static PyObject *__pyx_n_s____name__; static PyObject *__pyx_n_s____package__; @@ -1086,12 +1182,12 @@ * cube.blocks[b].in_motion = False * */ - __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_blocks, __pyx_v_b, sizeof(unsigned int)+1, PyLong_FromUnsignedLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_blocks, __pyx_v_b, sizeof(unsigned int)+1, PyLong_FromUnsignedLong, 0, 0, 1); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_5, __pyx_v_i, sizeof(unsigned int)+1, PyLong_FromUnsignedLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_5, __pyx_v_i, sizeof(unsigned int)+1, PyLong_FromUnsignedLong, 0, 0, 1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_6, __pyx_v_j, sizeof(unsigned int)+1, PyLong_FromUnsignedLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_6, __pyx_v_j, sizeof(unsigned int)+1, PyLong_FromUnsignedLong, 0, 0, 1); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = __Pyx_PyObject_AsDouble(__pyx_t_5); if (unlikely(__pyx_t_7 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -1253,7 +1349,9 @@ __Pyx_INCREF(__pyx_t_6); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else @@ -1320,6 +1418,9 @@ float __pyx_v_axisx; float __pyx_v_axisy; float __pyx_v_axisz; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_animation_start (wrapper)", 0); @@ -1496,6 +1597,9 @@ static PyObject *__pyx_pw_7_gldraw_7set_animation_next(PyObject *__pyx_self, PyObject *__pyx_arg_increment); /*proto*/ static PyObject *__pyx_pw_7_gldraw_7set_animation_next(PyObject *__pyx_self, PyObject *__pyx_arg_increment) { float __pyx_v_increment; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_animation_next (wrapper)", 0); @@ -1562,6 +1666,7 @@ __Pyx_RefNannyDeclarations unsigned int __pyx_t_1; unsigned int __pyx_t_2; + int __pyx_t_3; __Pyx_RefNannySetupContext("gl_draw_cube", 0); /* "_gldraw.pyx":149 @@ -1618,7 +1723,8 @@ * object_matrix = animation.rotation_matrix * cube.blocks[i].transformation * glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, &object_matrix[0][0]) #px/ */ - if ((__pyx_v_7_gldraw_cube.blocks[__pyx_v_i]).in_motion) { + __pyx_t_3 = ((__pyx_v_7_gldraw_cube.blocks[__pyx_v_i]).in_motion != 0); + if (__pyx_t_3) { /* "_gldraw.pyx":157 * for i in range(cube.number_blocks): @@ -1979,7 +2085,7 @@ * #### Create the raw GL data #### */ #ifndef CYTHON_WITHOUT_ASSERTIONS - if (unlikely(!(__pyx_v_7_gldraw_cube.number_blocks <= __pyx_e_7_gldraw_MAX_BLOCKS))) { + if (unlikely(!((__pyx_v_7_gldraw_cube.number_blocks <= __pyx_e_7_gldraw_MAX_BLOCKS) != 0))) { PyErr_SetNone(PyExc_AssertionError); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } @@ -2019,8 +2125,11 @@ __Pyx_INCREF(__pyx_t_3); #else __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_3); #endif } else { @@ -2101,6 +2210,7 @@ PyObject** temps[6] = {&__pyx_t_3,&__pyx_t_2,&__pyx_t_1,&__pyx_t_4,&__pyx_t_9,&__pyx_t_10}; for (i=0; i < 6; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(item); *(temps[i]) = item; } #endif @@ -2171,7 +2281,7 @@ * for i, (cnt, faceno) in enumerate(labelinfos[block]): * cube.blocks[block].idx_label[i] = idx_label */ - __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_labelinfos, __pyx_v_block, sizeof(unsigned int)+1, PyLong_FromUnsignedLong); if (!__pyx_t_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_labelinfos, __pyx_v_block, sizeof(unsigned int)+1, PyLong_FromUnsignedLong, 0, 0, 1); if (!__pyx_t_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); __pyx_t_16 = PyObject_Length(__pyx_t_10); if (unlikely(__pyx_t_16 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; @@ -2185,7 +2295,7 @@ * cube.blocks[block].cnt_label[i] = cnt */ __pyx_t_13 = 0; - __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_labelinfos, __pyx_v_block, sizeof(unsigned int)+1, PyLong_FromUnsignedLong); if (!__pyx_t_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_labelinfos, __pyx_v_block, sizeof(unsigned int)+1, PyLong_FromUnsignedLong, 0, 0, 1); if (!__pyx_t_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); if (PyList_CheckExact(__pyx_t_10) || PyTuple_CheckExact(__pyx_t_10)) { __pyx_t_9 = __pyx_t_10; __Pyx_INCREF(__pyx_t_9); __pyx_t_16 = 0; @@ -2246,7 +2356,9 @@ __Pyx_INCREF(__pyx_t_1); #else __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __Pyx_GOTREF(__pyx_t_1); #endif __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else @@ -2305,7 +2417,7 @@ * idx_label += cnt * cube.blocks[block].idx_triangles = idx_block */ - __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_texnames, __pyx_v_faceno, sizeof(unsigned int)+1, PyLong_FromUnsignedLong); if (!__pyx_t_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_texnames, __pyx_v_faceno, sizeof(unsigned int)+1, PyLong_FromUnsignedLong, 0, 0, 1); if (!__pyx_t_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); __pyx_t_19 = __Pyx_PyInt_AsInt(__pyx_t_10); if (unlikely((__pyx_t_19 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; @@ -2338,7 +2450,7 @@ * idx_block += cnts_block[block] * */ - __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_cnts_block, __pyx_v_block, sizeof(unsigned int)+1, PyLong_FromUnsignedLong); if (!__pyx_t_9) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_cnts_block, __pyx_v_block, sizeof(unsigned int)+1, PyLong_FromUnsignedLong, 0, 0, 1); if (!__pyx_t_9) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); __pyx_t_19 = __Pyx_PyInt_AsInt(__pyx_t_9); if (unlikely((__pyx_t_19 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; @@ -2353,7 +2465,7 @@ */ __pyx_t_9 = PyLong_FromUnsignedLong(__pyx_v_idx_block); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_cnts_block, __pyx_v_block, sizeof(unsigned int)+1, PyLong_FromUnsignedLong); if (!__pyx_t_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_cnts_block, __pyx_v_block, sizeof(unsigned int)+1, PyLong_FromUnsignedLong, 0, 0, 1); if (!__pyx_t_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_10); __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); @@ -2398,7 +2510,7 @@ * glBindBuffer(GL_ARRAY_BUFFER, cube.glbuffer) * glBufferData(GL_ARRAY_BUFFER, len(vertexdata), vertexdata, GL_STATIC_DRAW) #px/ */ - __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__debug); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__debug); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); if (unlikely(((PyObject *)__pyx_v_vertexdata) == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); @@ -2442,7 +2554,7 @@ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} } __pyx_t_16 = PyBytes_GET_SIZE(((PyObject *)__pyx_v_vertexdata)); if (unlikely(__pyx_t_16 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_t_20 = PyBytes_AsString(((PyObject *)__pyx_v_vertexdata)); if (unlikely((!__pyx_t_20) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_20 = __Pyx_PyObject_AsString(((PyObject *)__pyx_v_vertexdata)); if (unlikely((!__pyx_t_20) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;} glBufferData(GL_ARRAY_BUFFER, __pyx_t_16, ((char *)__pyx_t_20), GL_STATIC_DRAW); /* "_gldraw.pyx":237 @@ -2509,6 +2621,9 @@ PyObject *__pyx_v_vertexpointers = 0; PyObject *__pyx_v_vertexinfo = 0; PyObject *__pyx_v_texnames = 0; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("gl_set_data (wrapper)", 0); @@ -2851,7 +2966,11 @@ #if PY_MAJOR_VERSION >= 3 static struct PyModuleDef __pyx_moduledef = { + #if PY_VERSION_HEX < 0x03020000 + { PyObject_HEAD_INIT(NULL) NULL, 0, NULL }, + #else PyModuleDef_HEAD_INIT, + #endif __Pyx_NAMESTR("_gldraw"), 0, /* m_doc */ -1, /* m_size */ @@ -2876,6 +2995,7 @@ {&__pyx_kp_u_9, __pyx_k_9, sizeof(__pyx_k_9), 0, 1, 0, 0}, {&__pyx_n_s____all__, __pyx_k____all__, sizeof(__pyx_k____all__), 0, 0, 1, 1}, {&__pyx_n_s____compiled, __pyx_k____compiled, sizeof(__pyx_k____compiled), 0, 0, 1, 1}, + {&__pyx_n_s____import__, __pyx_k____import__, sizeof(__pyx_k____import__), 0, 0, 1, 1}, {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1}, {&__pyx_n_s____name__, __pyx_k____name__, sizeof(__pyx_k____name__), 0, 0, 1, 1}, {&__pyx_n_s____package__, __pyx_k____package__, sizeof(__pyx_k____package__), 0, 0, 1, 1}, @@ -2907,8 +3027,8 @@ {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_range = __Pyx_GetName(__pyx_b, __pyx_n_s__range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - __pyx_builtin_enumerate = __Pyx_GetName(__pyx_b, __pyx_n_s__enumerate); if (!__pyx_builtin_enumerate) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s__range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s__enumerate); if (!__pyx_builtin_enumerate) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;} return 0; __pyx_L1_error:; return -1; @@ -2925,11 +3045,8 @@ * cdef int i #px+ * */ - __pyx_k_tuple_10 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_10 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__i)); if (unlikely(!__pyx_k_tuple_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_10); - __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); - PyTuple_SET_ITEM(__pyx_k_tuple_10, 0, ((PyObject *)__pyx_n_s__i)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_10)); __pyx_k_codeobj_11 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_12, __pyx_n_s__init_module, 110, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -2940,20 +3057,8 @@ * cdef unsigned int b,i,j #px+ * for b in range(cube.number_blocks): */ - __pyx_k_tuple_13 = PyTuple_New(4); if (unlikely(!__pyx_k_tuple_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_k_tuple_13 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__blocks), ((PyObject *)__pyx_n_s__b), ((PyObject *)__pyx_n_s__i), ((PyObject *)__pyx_n_s__j)); if (unlikely(!__pyx_k_tuple_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_k_tuple_13); - __Pyx_INCREF(((PyObject *)__pyx_n_s__blocks)); - PyTuple_SET_ITEM(__pyx_k_tuple_13, 0, ((PyObject *)__pyx_n_s__blocks)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__blocks)); - __Pyx_INCREF(((PyObject *)__pyx_n_s__b)); - PyTuple_SET_ITEM(__pyx_k_tuple_13, 1, ((PyObject *)__pyx_n_s__b)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__b)); - __Pyx_INCREF(((PyObject *)__pyx_n_s__i)); - PyTuple_SET_ITEM(__pyx_k_tuple_13, 2, ((PyObject *)__pyx_n_s__i)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__i)); - __Pyx_INCREF(((PyObject *)__pyx_n_s__j)); - PyTuple_SET_ITEM(__pyx_k_tuple_13, 3, ((PyObject *)__pyx_n_s__j)); - __Pyx_GIVEREF(((PyObject *)__pyx_n_s__j)); __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_13)); __pyx_k_codeobj_14 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_12, __pyx_n_s__set_transformations, 122, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_RefNannyFinishContext(); @@ -2981,6 +3086,9 @@ PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; __Pyx_RefNannyDeclarations #if CYTHON_REFNANNY __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); @@ -3018,6 +3126,8 @@ __pyx_m = PyModule_Create(&__pyx_moduledef); #endif if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + Py_INCREF(__pyx_d); #if PY_MAJOR_VERSION >= 3 { PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} @@ -3033,6 +3143,9 @@ if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; /*--- Initialize various global constants etc. ---*/ if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) + if (__Pyx_init_sys_getdefaultencoding_params() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + #endif if (__pyx_module_is_main__gldraw) { if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}; } @@ -3065,7 +3178,7 @@ */ __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s____compiled, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s____compiled, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_gldraw.pyx":32 @@ -3107,7 +3220,7 @@ __Pyx_INCREF(((PyObject *)__pyx_n_u_6)); PyList_SET_ITEM(__pyx_t_1, 9, ((PyObject *)__pyx_n_u_6)); __Pyx_GIVEREF(((PyObject *)__pyx_n_u_6)); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s____all__, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s____all__, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; /* "_gldraw.pyx":36 @@ -3125,13 +3238,9 @@ __pyx_t_2 = __Pyx_Import(((PyObject *)__pyx_n_s__debug), ((PyObject *)__pyx_t_1), 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0; - __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__debug); - if (__pyx_t_1 == NULL) { - if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s__debug); - if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;} - } + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s__debug); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__debug, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s__debug, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -3142,9 +3251,9 @@ * debug(' from package:', __package__) * debug(' compiled:', __compiled) */ - __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__debug); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__debug); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s____name__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s____name__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); @@ -3167,9 +3276,9 @@ * debug(' compiled:', __compiled) * */ - __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__debug); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__debug); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s____package__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s____package__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); @@ -3192,9 +3301,9 @@ * * */ - __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__debug); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__debug); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s____compiled); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s____compiled); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_1); @@ -3219,7 +3328,7 @@ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_7_gldraw_1init_module, NULL, __pyx_n_s___gldraw); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__init_module, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s__init_module, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_gldraw.pyx":122 @@ -3231,7 +3340,7 @@ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_7_gldraw_3set_transformations, NULL, __pyx_n_s___gldraw); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(__pyx_t_2); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s__set_transformations, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s__set_transformations, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_gldraw.pyx":1 @@ -3241,7 +3350,7 @@ */ __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_GOTREF(((PyObject *)__pyx_t_2)); - if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} + if (PyDict_SetItem(__pyx_d, __pyx_n_s____test__, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; goto __pyx_L0; __pyx_L1_error:; @@ -3280,17 +3389,15 @@ } #endif /* CYTHON_REFNANNY */ -static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) { - PyObject *result; - result = PyObject_GetAttr(dict, name); - if (!result) { - if (dict != __pyx_b) { - PyErr_Clear(); - result = PyObject_GetAttr(__pyx_b, name); - } - if (!result) { - PyErr_SetObject(PyExc_NameError, name); - } +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); + if (unlikely(!result)) { + PyErr_Format(PyExc_NameError, +#if PY_MAJOR_VERSION >= 3 + "name '%U' is not defined", name); +#else + "name '%s' is not defined", PyString_AS_STRING(name)); +#endif } return result; } @@ -3300,8 +3407,16 @@ #if CYTHON_COMPILING_IN_PYPY float_value = PyNumber_Float(obj); #else - if (Py_TYPE(obj)->tp_as_number && Py_TYPE(obj)->tp_as_number->nb_float) { - return PyFloat_AsDouble(obj); + PyNumberMethods *nb = Py_TYPE(obj)->tp_as_number; + if (likely(nb) && likely(nb->nb_float)) { + float_value = nb->nb_float(obj); + if (likely(float_value) && unlikely(!PyFloat_Check(float_value))) { + PyErr_Format(PyExc_TypeError, + "__float__ returned non-float (type %.200s)", + Py_TYPE(float_value)->tp_name); + Py_DECREF(float_value); + goto bad; + } } else if (PyUnicode_CheckExact(obj) || PyBytes_CheckExact(obj)) { #if PY_MAJOR_VERSION >= 3 float_value = PyFloat_FromString(obj); @@ -3326,6 +3441,84 @@ return (double)-1; } +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { + PyObject *r; + if (!j) return NULL; + r = PyObject_GetItem(o, j); + Py_DECREF(j); + return r; +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck) { +#if CYTHON_COMPILING_IN_CPYTHON + if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o); + if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) { + PyObject *r = PyList_GET_ITEM(o, i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, + int wraparound, int boundscheck) { +#if CYTHON_COMPILING_IN_CPYTHON + if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o); + if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, i); + Py_INCREF(r); + return r; + } + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +#else + return PySequence_GetItem(o, i); +#endif +} +static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, + int is_list, int wraparound, int boundscheck) { +#if CYTHON_COMPILING_IN_CPYTHON + if (is_list || PyList_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); + if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) { + PyObject *r = PyList_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } + else if (PyTuple_CheckExact(o)) { + Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); + if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { + PyObject *r = PyTuple_GET_ITEM(o, n); + Py_INCREF(r); + return r; + } + } else { + PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; + if (likely(m && m->sq_item)) { + if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { + Py_ssize_t l = m->sq_length(o); + if (likely(l >= 0)) { + i += l; + } else { + if (PyErr_ExceptionMatches(PyExc_OverflowError)) + PyErr_Clear(); + else + return NULL; + } + } + return m->sq_item(o, i); + } + } +#else + if (is_list || PySequence_Check(o)) { + return PySequence_GetItem(o, i); + } +#endif + return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); +} + static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { PyErr_Format(PyExc_ValueError, "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); @@ -3521,6 +3714,23 @@ return -1; } +static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { + PyObject *result; +#if CYTHON_COMPILING_IN_CPYTHON + result = PyDict_GetItem(__pyx_d, name); + if (result) { + Py_INCREF(result); + } else { +#else + result = PyObject_GetItem(__pyx_d, name); + if (!result) { + PyErr_Clear(); +#endif + result = __Pyx_GetBuiltinName(name); + } + return result; +} + static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, const char *name, int exact) { @@ -3541,16 +3751,31 @@ return 0; } -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, long level) { - PyObject *py_import = 0; +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); + if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { + PyErr_Format(PyExc_ImportError, + #if PY_MAJOR_VERSION < 3 + "cannot import name %.230s", PyString_AS_STRING(name)); + #else + "cannot import name %S", name); + #endif + } + return value; +} + +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { PyObject *empty_list = 0; PyObject *module = 0; PyObject *global_dict = 0; PyObject *empty_dict = 0; PyObject *list; - py_import = __Pyx_GetAttrString(__pyx_b, "__import__"); + #if PY_VERSION_HEX < 0x03030000 + PyObject *py_import; + py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s____import__); if (!py_import) goto bad; + #endif if (from_list) list = from_list; else { @@ -3570,13 +3795,17 @@ #if PY_MAJOR_VERSION >= 3 if (level == -1) { if (strchr(__Pyx_MODULE_NAME, '.')) { - /* try package relative import first */ + #if PY_VERSION_HEX < 0x03030000 PyObject *py_level = PyInt_FromLong(1); if (!py_level) goto bad; module = PyObject_CallFunctionObjArgs(py_import, name, global_dict, empty_dict, list, py_level, NULL); Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, global_dict, empty_dict, list, 1); + #endif if (!module) { if (!PyErr_ExceptionMatches(PyExc_ImportError)) goto bad; @@ -3587,12 +3816,17 @@ } #endif if (!module) { + #if PY_VERSION_HEX < 0x03030000 PyObject *py_level = PyInt_FromLong(level); if (!py_level) goto bad; module = PyObject_CallFunctionObjArgs(py_import, name, global_dict, empty_dict, list, py_level, NULL); Py_DECREF(py_level); + #else + module = PyImport_ImportModuleLevelObject( + name, global_dict, empty_dict, list, level); + #endif } } #else @@ -3604,21 +3838,14 @@ name, global_dict, empty_dict, list, NULL); #endif bad: - Py_XDECREF(empty_list); + #if PY_VERSION_HEX < 0x03030000 Py_XDECREF(py_import); + #endif + Py_XDECREF(empty_list); Py_XDECREF(empty_dict); return module; } -static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name) { -#if PY_MAJOR_VERSION < 3 - PyErr_Format(PyExc_ImportError, "cannot import name %.230s", - PyString_AsString(name)); -#else - PyErr_Format(PyExc_ImportError, "cannot import name %S", name); -#endif -} - static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) { const unsigned char neg_one = (unsigned char)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; @@ -3809,10 +4036,15 @@ return (int)__Pyx_PyInt_AsLong(x); } +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) { const unsigned long neg_one = (unsigned long)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; -#if PY_VERSION_HEX < 0x03000000 +#if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { @@ -3825,6 +4057,16 @@ #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(unsigned long)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return (unsigned long) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif if (unlikely(Py_SIZE(x) < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to unsigned long"); @@ -3832,6 +4074,17 @@ } return (unsigned long)PyLong_AsUnsignedLong(x); } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(unsigned long)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return +(unsigned long) ((PyLongObject*)x)->ob_digit[0]; + case -1: return -(unsigned long) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif return (unsigned long)PyLong_AsLong(x); } } else { @@ -3844,10 +4097,15 @@ } } +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) { const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; -#if PY_VERSION_HEX < 0x03000000 +#if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { @@ -3860,6 +4118,16 @@ #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(unsigned PY_LONG_LONG)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return (unsigned PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif if (unlikely(Py_SIZE(x) < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to unsigned PY_LONG_LONG"); @@ -3867,6 +4135,17 @@ } return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(unsigned PY_LONG_LONG)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return +(unsigned PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + case -1: return -(unsigned PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x); } } else { @@ -3879,10 +4158,15 @@ } } +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) { const long neg_one = (long)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; -#if PY_VERSION_HEX < 0x03000000 +#if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { @@ -3895,6 +4179,16 @@ #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(long)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return (long) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif if (unlikely(Py_SIZE(x) < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to long"); @@ -3902,6 +4196,17 @@ } return (long)PyLong_AsUnsignedLong(x); } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(long)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return +(long) ((PyLongObject*)x)->ob_digit[0]; + case -1: return -(long) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif return (long)PyLong_AsLong(x); } } else { @@ -3914,10 +4219,15 @@ } } +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) { const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; -#if PY_VERSION_HEX < 0x03000000 +#if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { @@ -3930,6 +4240,16 @@ #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(PY_LONG_LONG)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return (PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif if (unlikely(Py_SIZE(x) < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to PY_LONG_LONG"); @@ -3937,6 +4257,17 @@ } return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(PY_LONG_LONG)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return +(PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + case -1: return -(PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif return (PY_LONG_LONG)PyLong_AsLongLong(x); } } else { @@ -3949,10 +4280,15 @@ } } +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) { const signed long neg_one = (signed long)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; -#if PY_VERSION_HEX < 0x03000000 +#if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { @@ -3965,6 +4301,16 @@ #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(signed long)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return (signed long) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif if (unlikely(Py_SIZE(x) < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to signed long"); @@ -3972,6 +4318,17 @@ } return (signed long)PyLong_AsUnsignedLong(x); } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(signed long)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return +(signed long) ((PyLongObject*)x)->ob_digit[0]; + case -1: return -(signed long) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif return (signed long)PyLong_AsLong(x); } } else { @@ -3984,10 +4341,15 @@ } } +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS +#include "longintrepr.h" +#endif +#endif static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) { const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0; const int is_unsigned = neg_one > const_zero; -#if PY_VERSION_HEX < 0x03000000 +#if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { @@ -4000,6 +4362,16 @@ #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(signed PY_LONG_LONG)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return (signed PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif if (unlikely(Py_SIZE(x) < 0)) { PyErr_SetString(PyExc_OverflowError, "can't convert negative value to signed PY_LONG_LONG"); @@ -4007,6 +4379,17 @@ } return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x); } else { +#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 +#if CYTHON_USE_PYLONG_INTERNALS + if (sizeof(digit) <= sizeof(signed PY_LONG_LONG)) { + switch (Py_SIZE(x)) { + case 0: return 0; + case 1: return +(signed PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + case -1: return -(signed PY_LONG_LONG) ((PyLongObject*)x)->ob_digit[0]; + } + } +#endif +#endif return (signed PY_LONG_LONG)PyLong_AsLongLong(x); } } else { @@ -4266,27 +4649,82 @@ return 0; } - -/* Type Conversion Functions */ - +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(char* c_str) { + return __Pyx_PyUnicode_FromStringAndSize(c_str, strlen(c_str)); +} +static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) { + Py_ssize_t ignore; + return __Pyx_PyObject_AsStringAndSize(o, &ignore); +} +static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT + if ( +#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + __Pyx_sys_getdefaultencoding_not_ascii && +#endif + PyUnicode_Check(o)) { +#if PY_VERSION_HEX < 0x03030000 + char* defenc_c; + PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); + if (!defenc) return NULL; + defenc_c = PyBytes_AS_STRING(defenc); +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + { + char* end = defenc_c + PyBytes_GET_SIZE(defenc); + char* c; + for (c = defenc_c; c < end; c++) { + if ((unsigned char) (*c) >= 128) { + PyUnicode_AsASCIIString(o); + return NULL; + } + } + } +#endif /*__PYX_DEFAULT_STRING_ENCODING_IS_ASCII*/ + *length = PyBytes_GET_SIZE(defenc); + return defenc_c; +#else /* PY_VERSION_HEX < 0x03030000 */ + if (PyUnicode_READY(o) == -1) return NULL; +#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII + if (PyUnicode_IS_ASCII(o)) { + *length = PyUnicode_GET_DATA_SIZE(o); + return PyUnicode_AsUTF8(o); + } else { + PyUnicode_AsASCIIString(o); + return NULL; + } +#else /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII */ + return PyUnicode_AsUTF8AndSize(o, length); +#endif /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII */ +#endif /* PY_VERSION_HEX < 0x03030000 */ + } else +#endif /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT */ + { + char* result; + int r = PyBytes_AsStringAndSize(o, &result, length); + if (r < 0) { + return NULL; + } else { + return result; + } + } +} static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { int is_true = x == Py_True; if (is_true | (x == Py_False) | (x == Py_None)) return is_true; else return PyObject_IsTrue(x); } - static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) { PyNumberMethods *m; const char *name = NULL; PyObject *res = NULL; -#if PY_VERSION_HEX < 0x03000000 +#if PY_MAJOR_VERSION < 3 if (PyInt_Check(x) || PyLong_Check(x)) #else if (PyLong_Check(x)) #endif return Py_INCREF(x), x; m = Py_TYPE(x)->tp_as_number; -#if PY_VERSION_HEX < 0x03000000 +#if PY_MAJOR_VERSION < 3 if (m && m->nb_int) { name = "int"; res = PyNumber_Int(x); @@ -4302,7 +4740,7 @@ } #endif if (res) { -#if PY_VERSION_HEX < 0x03000000 +#if PY_MAJOR_VERSION < 3 if (!PyInt_Check(res) && !PyLong_Check(res)) { #else if (!PyLong_Check(res)) { @@ -4320,7 +4758,6 @@ } return res; } - static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { Py_ssize_t ival; PyObject* x = PyNumber_Index(b); @@ -4329,7 +4766,6 @@ Py_DECREF(x); return ival; } - static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { #if PY_VERSION_HEX < 0x02050000 if (ival <= LONG_MAX) @@ -4343,14 +4779,12 @@ return PyInt_FromSize_t(ival); #endif } - static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) { unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x); - if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) { - return (size_t)-1; - } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) { - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to size_t"); + if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) { + if ((val != (unsigned PY_LONG_LONG)-1) || !PyErr_Occurred()) + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to size_t"); return (size_t)-1; } return (size_t)val; diff -Nru pybik-1.1/data/applications/pybik.desktop pybik-1.1.1/data/applications/pybik.desktop --- pybik-1.1/data/applications/pybik.desktop 2013-06-16 16:43:44.000000000 +0000 +++ pybik-1.1.1/data/applications/pybik.desktop 2014-02-11 16:04:44.000000000 +0000 @@ -1,12 +1,15 @@ [Desktop Entry] Name=Pybik Name[ast]=Pybik +Name[bg]=Рубик Name[bn]=Pybik Name[bs]=Pybik +Name[cs]=Pybik Name[de]=Pybik Name[el]=Pybik Name[en_GB]=Pybik Name[es]=Pybik +Name[fi]=Pybik Name[fr]=Pybik Name[gl]=Pybik Name[he]=Pybik @@ -19,18 +22,23 @@ Name[pt_BR]=Pybik Name[ru]=Pybik Name[sr]=Питонова коцка +Name[te]=పైబిక్ +Name[tr]=Pybik Name[uk]=Pybik Name[uz]=Pybik Name[zh_CN]=Pybik Name[zh_TW]=Pybik Comment=3D Rubik's cube game Comment[ast]=Xuegu del cubu de Rubik 3D +Comment[bg]=Триизмерна игра с кубчето на Рубик Comment[bn]=ত্রিমাত্রিক Rubik's কিউব খেলা Comment[bs]=3D Rubikova kocka +Comment[cs]=3D Rubikova kostka Comment[de]=Ein 3D-Zauberwürfelspiel Comment[el]=Τρισδιάστατος κύβος του Ρούμπικ Comment[en_GB]=3D Rubik's cube game Comment[es]=Juego del cubo de Rubik en 3D +Comment[fi]=Kolmiulotteinen Rubiikin kuutio -peli Comment[fr]=Jeu de Rubik's cube en 3D Comment[gl]=Xogo do cubo de Rubik en 3D Comment[he]=משחק קוביה הונגרית תלת־ממדי @@ -41,6 +49,8 @@ Comment[pl]=Trójwymiarowe układanie kostki Rubika Comment[pt_BR]=Jogo 3D do cubo de Rubik Comment[ru]=Трёхмерный кубик Рубика +Comment[te]=3D రుబిక్స్ క్యూబ్ ఆట +Comment[tr]=3B Rubik küpü oyunu Comment[uk]=Тривимірний кубик Рубіка Comment[uz]=3D Rubik'ning kub oʻyini Comment[zh_CN]=3D 魔方游戏 @@ -50,10 +60,12 @@ Icon=pybik Type=Application Categories=Game;LogicGame; -# Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +# Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. Keywords=rubik;cube;puzzle;magic; Keywords[ast]=rubik;cubu;rompecabeces;máxicu; +Keywords[bg]=Рубик;куб;пъзел;магия; Keywords[bs]=rubik;kocka;puzzle;slagalica;zagonetka; +Keywords[cs]=rubik;kostka;hlavolam;kouzelný; Keywords[de]=rubik;cube;würfel;puzzle;zauberwürfel; Keywords[el]=ρούμπικ;ρουμπικ;κύβος;κυβος;γρίφος;γριφος;kybos;kivos;kyvos;kubos;kuvos;grifos; Keywords[en_GB]=rubik;cube;puzzle;magic; @@ -61,9 +73,12 @@ Keywords[fr]=rubik;cube;casse-tête;magique;jeu;énigme; Keywords[gl]=rubik;cubo;quebracabezas;maxico; Keywords[he]=הונגרית;רוביק;תצרף;פאזל;פזל;קסם;טריק; +Keywords[it]=rubik;cubo;rompicapo;magico; Keywords[ms]=rubik;kuib;teka-teki;magik; Keywords[pl]=rubik;kostka;puzzle;łamigłówka;magiczna; +Keywords[ru]=Рубик;кубик;головоломка;магия; Keywords[uk]=rubik;cube;puzzle;magic;рубік;кубик;головоломка;загадка;гра; +Keywords[uz]=rubik;kubik;boshqotirma;sehrli; Keywords[zh_TW]=rubik;cube;puzzle;magic;魔術;方塊;立方體;拼圖; StartupNotify=true X-Ubuntu-Gettext-Domain=pybik diff -Nru pybik-1.1/data/plugins/90-library.algorithm pybik-1.1.1/data/plugins/90-library.algorithm --- pybik-1.1/data/plugins/90-library.algorithm 2013-06-16 16:51:55.000000000 +0000 +++ pybik-1.1.1/data/plugins/90-library.algorithm 2014-02-10 19:45:32.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright © 2012-2013 B. Clausius +# Copyright © 2012-2014 B. Clausius # # 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 @@ -44,6 +44,7 @@ Path: /Library/Rotate Center/Up and Down Moves: urlf2f2r-l-u-rlf2f2r-l- +# Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer Path: /Library/Misc/Back without Back Moves: rrllffrruurrllddllf-rrllffrruurrllddllff diff -Nru pybik-1.1/debian/changelog pybik-1.1.1/debian/changelog --- pybik-1.1/debian/changelog 2014-04-01 13:23:44.000000000 +0000 +++ pybik-1.1.1/debian/changelog 2014-07-21 18:53:58.000000000 +0000 @@ -1,14 +1,17 @@ -pybik (1.1-2build2) trusty; urgency=medium +pybik (1.1.1-1) unstable; urgency=medium - * No change rebuild to drop python3.3 compiled extension. + * New upstream release + + New and updated translations + + Misc bugfixes and improvements + * Cryptographic verification of upstream packages + * Added DEP12 upstream metadata + * Removed patches (included upstream) + * Added patch to fix option for pickle protocol + * Use a pickle protocol compatible with all supported Python 3 versions + * No need to remove __pycache__ directories in debian/rules any more + * autopkgtest needs dependency on xauth - -- Dimitri John Ledkov Tue, 01 Apr 2014 14:23:44 +0100 - -pybik (1.1-2build1) trusty; urgency=medium - - * Rebuild for python3.4 as a supported python version. - - -- Matthias Klose Sat, 04 Jan 2014 19:32:10 +0000 + -- B. Clausius Sun, 20 Jul 2014 15:56:10 +0200 pybik (1.1-2) unstable; urgency=low diff -Nru pybik-1.1/debian/control pybik-1.1.1/debian/control --- pybik-1.1/debian/control 2014-04-01 13:23:44.000000000 +0000 +++ pybik-1.1.1/debian/control 2013-12-01 18:04:24.000000000 +0000 @@ -1,8 +1,7 @@ Source: pybik Section: games Priority: optional -Maintainer: Ubuntu Developers -XSBC-Original-Maintainer: Python Applications Packaging Team +Maintainer: Python Applications Packaging Team Uploaders: B. Clausius Build-Depends: debhelper (>= 9), cython3, diff -Nru pybik-1.1/debian/copyright pybik-1.1.1/debian/copyright --- pybik-1.1/debian/copyright 2013-02-03 19:02:14.000000000 +0000 +++ pybik-1.1.1/debian/copyright 2014-05-18 18:24:14.000000000 +0000 @@ -2,7 +2,7 @@ Upstream-Name: pybik Upstream-Contact: B. Clausius Source: https://launchpad.net/pybik/+download -Comment: +Comment: Originally this package was derived from GNUbik 2.3 and ported from C to Python. Authors of GNUbik: @@ -11,7 +11,7 @@ * Dale Mellor Files: * -Copyright: 2009-2013 B. Clausius +Copyright: 2009-2014 B. Clausius License: GPL-3+ Files: data/ui/images/BEAMED?EIGHTH?NOTES.png diff -Nru pybik-1.1/debian/patches/fix-pickle-protocol.diff pybik-1.1.1/debian/patches/fix-pickle-protocol.diff --- pybik-1.1/debian/patches/fix-pickle-protocol.diff 1970-01-01 00:00:00.000000000 +0000 +++ pybik-1.1.1/debian/patches/fix-pickle-protocol.diff 2014-05-18 18:24:14.000000000 +0000 @@ -0,0 +1,28 @@ +Description: Fix option for pickle protocol +Author: B. Clausius +Forwarded: not-needed +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +--- a/setup.py ++++ b/setup.py +@@ -391,7 +391,7 @@ + self.force = None + self.parallel = None + self.fast = None +- self.pickle_protocol = '-1' ++ self.pickle_protocol = None + + def finalize_options(self): + self.set_undefined_options('build', +@@ -409,7 +409,10 @@ + self.parallel = multiprocessing.cpu_count() + else: + self.parallel = int(self.parallel) +- self.pickle_protocol = int(self.pickle_protocol) ++ if self.pickle_protocol is None: ++ self.pickle_protocol = -1 ++ else: ++ self.pickle_protocol = int(self.pickle_protocol) + + def run(self): + from tools import modeldata diff -Nru pybik-1.1/debian/patches/lp-pybik-r2126_reduce-model-size.patch pybik-1.1.1/debian/patches/lp-pybik-r2126_reduce-model-size.patch --- pybik-1.1/debian/patches/lp-pybik-r2126_reduce-model-size.patch 2013-12-01 18:04:24.000000000 +0000 +++ pybik-1.1.1/debian/patches/lp-pybik-r2126_reduce-model-size.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,72 +0,0 @@ -Description: Heavily reduce the size of the binary package pybik, part 1 - Data structures are modified in a way that the pickled files in - /usr/share/pybik/models/ are smaller. -Origin: upstream, http://bazaar.launchpad.net/~barcc/pybik/trunk/revision/2126 ---- -This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ ---- a/pybiklib/cubestate.py -+++ b/pybiklib/cubestate.py -@@ -92,7 +92,7 @@ - for index, (pos, rot) in enumerate(self._blocksn): - if rot != allrot: - return False # Cubie rotated -- block = self.model.rotated_position[index, rot] -+ block = self.model.rotated_position[index][rot] - if pos != block: - return False # Cubie at wrong place - return True ---- a/pybiklib/model.py -+++ b/pybiklib/model.py -@@ -143,9 +143,10 @@ - self.inplace_rotations = [] - - def init_inplace_rotations(self, model): -- for (blocknum, rotsym), blocknum2 in model.rotated_position.items(): -- if blocknum == blocknum2 == self.index and rotsym: -- self.inplace_rotations.append(rotsym) -+ for blocknum, rotsym_blocknum2 in enumerate(model.rotated_position): -+ for rotsym, blocknum2 in rotsym_blocknum2.items(): -+ if blocknum == blocknum2 == self.index and rotsym: -+ self.inplace_rotations.append(rotsym) - self.inplace_rotations = sorted(self.inplace_rotations, key=len)[:2] - - def __repr__(self): -@@ -370,13 +371,13 @@ - return face_permutations - - def _create_rotated_position(self): -- rotated_position = {} -+ rotated_position = [{} for block in self.blocks] - for b, block in enumerate(self.blocks): - for sym, rotation in self.rotation_matrices.items(): - coords = (np.matrix([block.coords]) * rotation).A.tolist()[0] - for p, pos in enumerate(self.blocks): - if pos.coords == coords: -- rotated_position[b, sym] = p -+ rotated_position[b][sym] = p - break - else: - assert False, 'not a permutation' -@@ -385,10 +386,10 @@ - @classmethod - def get_datafilename(cls, sizes): - x, y, unused_z = sizes -- if x <= 2: -- return 'mdata_01-02' -+ if x <= 3: -+ return 'mdata_01-03' - else: -- return 'mdata_{:02}_{}'.format(x, 0 if x<=5 else y%2 if x<=8 else y%3) -+ return 'mdata_{:02}_{}'.format(x, 0 if x<=6 else y%2 if x<=10 else y%3) - - def get_savedata(self): - self.calc_data() -@@ -466,7 +467,7 @@ - - def rotate_symbolic(self, axis, rdir, block, sym): - rsym = (self.symbols if not rdir else self.symbolsI)[axis] -- block = self.rotated_position[block, rsym] -+ block = self.rotated_position[block][rsym] - sym = self.norm_symbol(sym + rsym) - return block, sym - diff -Nru pybik-1.1/debian/patches/lp-pybik-r2127_reduce-model-size.patch pybik-1.1.1/debian/patches/lp-pybik-r2127_reduce-model-size.patch --- pybik-1.1/debian/patches/lp-pybik-r2127_reduce-model-size.patch 2013-12-01 18:04:24.000000000 +0000 +++ pybik-1.1.1/debian/patches/lp-pybik-r2127_reduce-model-size.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ -Description: Heavily reduce the size of the binary package pybik, part 2 - Data structures are modified in a way that the pickled files in - /usr/share/pybik/models/ are smaller. -Origin: upstream, http://bazaar.launchpad.net/~barcc/pybik/trunk/revision/2127 ---- -This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ ---- a/pybiklib/cubestate.py -+++ b/pybiklib/cubestate.py -@@ -92,7 +92,7 @@ - for index, (pos, rot) in enumerate(self._blocksn): - if rot != allrot: - return False # Cubie rotated -- block = self.model.rotated_position[index][rot] -+ block = self.model.rotated_position[rot][index] - if pos != block: - return False # Cubie at wrong place - return True ---- a/pybiklib/model.py -+++ b/pybiklib/model.py -@@ -143,8 +143,8 @@ - self.inplace_rotations = [] - - def init_inplace_rotations(self, model): -- for blocknum, rotsym_blocknum2 in enumerate(model.rotated_position): -- for rotsym, blocknum2 in rotsym_blocknum2.items(): -+ for rotsym, blocknum_blocknum2 in model.rotated_position.items(): -+ for blocknum, blocknum2 in enumerate(blocknum_blocknum2): - if blocknum == blocknum2 == self.index and rotsym: - self.inplace_rotations.append(rotsym) - self.inplace_rotations = sorted(self.inplace_rotations, key=len)[:2] -@@ -371,13 +371,15 @@ - return face_permutations - - def _create_rotated_position(self): -- rotated_position = [{} for block in self.blocks] -+ rotated_position = {} - for b, block in enumerate(self.blocks): - for sym, rotation in self.rotation_matrices.items(): - coords = (np.matrix([block.coords]) * rotation).A.tolist()[0] - for p, pos in enumerate(self.blocks): - if pos.coords == coords: -- rotated_position[b][sym] = p -+ if sym not in rotated_position: -+ rotated_position[sym] = [0 for block in self.blocks] -+ rotated_position[sym][b] = p - break - else: - assert False, 'not a permutation' -@@ -467,7 +469,7 @@ - - def rotate_symbolic(self, axis, rdir, block, sym): - rsym = (self.symbols if not rdir else self.symbolsI)[axis] -- block = self.rotated_position[block][rsym] -+ block = self.rotated_position[rsym][block] - sym = self.norm_symbol(sym + rsym) - return block, sym - diff -Nru pybik-1.1/debian/patches/lp-pybik-r2308_fix-tests-for-newer-python.patch pybik-1.1.1/debian/patches/lp-pybik-r2308_fix-tests-for-newer-python.patch --- pybik-1.1/debian/patches/lp-pybik-r2308_fix-tests-for-newer-python.patch 2013-12-01 18:04:24.000000000 +0000 +++ pybik-1.1.1/debian/patches/lp-pybik-r2308_fix-tests-for-newer-python.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -Description: Fix test for newer Python version - -Origin: upstream, http://bazaar.launchpad.net/~barcc/pybik/trunk/revision/2308 ---- -This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ ---- a/pybiktest/testrunner.py -+++ b/pybiktest/testrunner.py -@@ -97,6 +97,7 @@ - def mkState(fields): - _State = namedtuple('_State', fields) - class State(_State): # pylint: disable=W0232 -+ __slots__ = () - def tostr(self, other=None): - def field_tostr(i): - if self[i] is matchall: diff -Nru pybik-1.1/debian/patches/series pybik-1.1.1/debian/patches/series --- pybik-1.1/debian/patches/series 2013-12-01 18:04:24.000000000 +0000 +++ pybik-1.1.1/debian/patches/series 2014-05-18 18:24:14.000000000 +0000 @@ -1,3 +1 @@ -lp-pybik-r2126_reduce-model-size.patch -lp-pybik-r2127_reduce-model-size.patch -lp-pybik-r2308_fix-tests-for-newer-python.patch +fix-pickle-protocol.diff diff -Nru pybik-1.1/debian/rules pybik-1.1.1/debian/rules --- pybik-1.1/debian/rules 2013-12-01 18:04:24.000000000 +0000 +++ pybik-1.1.1/debian/rules 2014-05-18 18:24:14.000000000 +0000 @@ -9,13 +9,18 @@ NUMJOBS = auto endif +PY3VERSIONS=$(shell py3versions -vr) +ifneq (,$(filter 3.2 3.3,$(PY3VERSIONS))) + PICKLE_PROTOCOL=3 +else + PICKLE_PROTOCOL=4 +endif + %: dh $@ --with python3 --buildsystem=pybuild override_dh_auto_clean: dh_auto_clean - # Remove __pycache__ directories created by "setup.py clean" - rm -rf pybiklib/__pycache__ tools/__pycache__ rm -f debian/README override_dh_auto_build-arch: @@ -23,7 +28,10 @@ override_dh_auto_build-indep: python3 tools/create_docs.py --skip-install README=debian/README - dh_auto_build -- --build-args="--indep-only --parallel=$(NUMJOBS)" + dh_auto_build -- --build-args=" \ + --indep-only \ + --parallel=$(NUMJOBS) \ + --pickle-protocol=$(PICKLE_PROTOCOL)" override_dh_auto_install-arch: dh_auto_install -- --install-args=" \ @@ -38,7 +46,12 @@ --data-dir=/usr/share" override_dh_auto_test: - # Pybik has no unittests, skip autodetection due to false positive + # test whether pickled data can be loaded with all supported Python versions + PYBUILD_SYSTEM=custom \ + PYBUILD_TEST_ARGS="{interpreter} -c 'import glob,pickle; \ + [(print(\"test with {version}:\", f), pickle.load(open(f, \"rb\"))) \ + for f in glob.glob(\"build/models/*\")]'" \ + dh_auto_test override_dh_python3: dh_python3 -p pybik diff -Nru pybik-1.1/debian/source/include-binaries pybik-1.1.1/debian/source/include-binaries --- pybik-1.1/debian/source/include-binaries 1970-01-01 00:00:00.000000000 +0000 +++ pybik-1.1.1/debian/source/include-binaries 2014-03-11 18:52:32.000000000 +0000 @@ -0,0 +1 @@ +debian/upstream/signing-key.pgp diff -Nru pybik-1.1/debian/tests/control pybik-1.1.1/debian/tests/control --- pybik-1.1/debian/tests/control 2013-07-28 14:10:58.000000000 +0000 +++ pybik-1.1.1/debian/tests/control 2014-02-27 19:53:07.000000000 +0000 @@ -1,2 +1,2 @@ Tests: all -Depends: @, xvfb +Depends: @, xvfb, xauth diff -Nru pybik-1.1/debian/upstream/metadata pybik-1.1.1/debian/upstream/metadata --- pybik-1.1/debian/upstream/metadata 1970-01-01 00:00:00.000000000 +0000 +++ pybik-1.1.1/debian/upstream/metadata 2014-02-27 19:53:07.000000000 +0000 @@ -0,0 +1,5 @@ +Bug-Database: https://bugs.launchpad.net/pybik +Bug-Submit: https://bugs.launchpad.net/pybik/+filebug +Contact: https://answers.launchpad.net/pybik +Repository: lp:pybik +Repository-Browse: http://bazaar.launchpad.net/~barcc/pybik/trunk/files Binary files /tmp/IIPbyl8PW4/pybik-1.1/debian/upstream/signing-key.pgp and /tmp/7OPLCY83zq/pybik-1.1.1/debian/upstream/signing-key.pgp differ diff -Nru pybik-1.1/debian/watch pybik-1.1.1/debian/watch --- pybik-1.1/debian/watch 2013-02-03 19:02:14.000000000 +0000 +++ pybik-1.1.1/debian/watch 2014-02-01 20:15:15.000000000 +0000 @@ -1,2 +1,3 @@ version=3 +opts=pgpsigurlmangle=s/$/.asc/ \ https://launchpad.net/pybik/+download .*/pybik-(\d.*)\.(?:tgz|tar\.(?:gz|bz2|xz)) diff -Nru pybik-1.1/NEWS pybik-1.1.1/NEWS --- pybik-1.1/NEWS 2013-06-16 17:11:50.000000000 +0000 +++ pybik-1.1.1/NEWS 2014-02-10 19:53:02.000000000 +0000 @@ -1,3 +1,8 @@ +Pybik 1.1.1: + + * New and updated translations + * Misc bugfixes and improvements + Pybik 1.1: * Rendering engine now uses modern OpenGL diff -Nru pybik-1.1/PKG-INFO pybik-1.1.1/PKG-INFO --- pybik-1.1/PKG-INFO 2013-06-16 21:06:43.000000000 +0000 +++ pybik-1.1.1/PKG-INFO 2014-02-11 16:08:48.000000000 +0000 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: pybik -Version: 1.1 +Version: 1.1.1 Summary: 3D Rubik's cube game Home-page: https://launchpad.net/pybik/ Author: B. Clausius diff -Nru pybik-1.1/po/ast.po pybik-1.1.1/po/ast.po --- pybik-1.1/po/ast.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/ast.po 2014-02-11 16:04:02.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" "PO-Revision-Date: 2013-06-15 11:23+0000\n" "Last-Translator: Xuacu Saturio \n" "Language-Team: Asturian \n" @@ -15,8 +15,8 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Launchpad-Export-Date: 2013-06-16 04:40+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-03 05:23+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" @@ -229,27 +229,27 @@ "Hebo un error al lleer la configuración:\n" "{error_message}" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" msgstr "Lladriyu" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-Bloque" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" msgstr "Torre" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" msgstr "{0}×{1}-Torre" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" msgstr "Cubu" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-Cubu" @@ -261,32 +261,37 @@ msgid "This algorithm only works for:\n" msgstr "Esti algoritmu namái funciona pa:\n" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" msgstr "desactiváu" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" msgstr "feu" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" msgstr "baxo" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" msgstr "mediu" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" msgstr "Altu/a" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" msgstr "mayor" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" msgstr "Les configuraciones nun puen lleese pal ficheru: {error_message}" @@ -555,7 +560,7 @@ msgid "Background:" msgstr "Fondu:" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;cubu;rompecabeces;máxicu;" @@ -869,8 +874,8 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" msgstr "Biblioteca" @@ -928,15 +933,16 @@ msgid "Up and Down" msgstr "Arriba y abaxo" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" msgstr "Otros" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" msgstr "Atrás ensin retornu" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" msgstr "2xAtrás ensin retornu" diff -Nru pybik-1.1/po/bg.po pybik-1.1.1/po/bg.po --- pybik-1.1/po/bg.po 1970-01-01 00:00:00.000000000 +0000 +++ pybik-1.1.1/po/bg.po 2014-02-11 16:04:02.000000000 +0000 @@ -0,0 +1,956 @@ +# Bulgarian translation for pybik +# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 +# This file is distributed under the same license as the pybik package. +# FIRST AUTHOR , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: pybik\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" +"PO-Revision-Date: 2014-02-07 09:44+0000\n" +"Last-Translator: Atanas Kovachki \n" +"Language-Team: Bulgarian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Launchpad-Export-Date: 2014-02-08 06:55+0000\n" +"X-Generator: Launchpad (build 16916)\n" + +#: ../pybiklib/application.py:343 +msgid "Press the Esc key to exit Edit Mode" +msgstr "Натиснете клавиша Esc, за да излезете от режима за редактиране" + +#. substitution for {move_text} in statusbar text +#: ../pybiklib/application.py:352 +msgid "{current} / {total} move" +msgid_plural "{current} / {total} moves" +msgstr[0] "{current} / {total} ход" +msgstr[1] "{current} / {total} хода" + +#. substitution for {solved_text} in statusbar text +#: ../pybiklib/application.py:356 ../pybiklib/ui/model.py:16 +msgid "solved" +msgstr "решено" + +#: ../pybiklib/application.py:356 +msgid "not solved" +msgstr "не e решено" + +#. statusbar text +#: ../pybiklib/application.py:359 +msgid "{model_text}, {move_text}, {solved_text}" +msgstr "{model_text}, {move_text}, {solved_text}" + +#: ../pybiklib/application.py:392 +msgid "Congratulations, you have solved the puzzle!" +msgstr "Поздравления, вие решихте пъзела!" + +#. Name of the application, probably should not be translated. +#: ../pybiklib/config.py:31 ../pybiklib/ui/main.py:34 +#: ../data/applications/pybik.desktop.in.h:1 +msgid "Pybik" +msgstr "Рубик" + +#: ../pybiklib/config.py:65 ../data/applications/pybik.desktop.in.h:2 +msgid "3D Rubik's cube game" +msgstr "Триизмерна игра с кубчето на Рубик" + +#: ../pybiklib/config.py:67 +msgid "" +"Pybik is an interactive, graphical, single player puzzle about the cube " +"invented by Ernő Rubik. Besides the cube the program can handle towers and " +"bricks (non cubic puzzles). Pybik also has solvers, pretty patterns and a " +"collection of various moves. The cube can be manipulated with the mouse or " +"keyboard. You can change the colors or images on the faces of the cube." +msgstr "" +"Рубик е интерактивна графична главоблъсканица за един играч, основана от " +"кубът изработен от Ерньо Рубик. Освен куба на Рубик, програмата позволява да " +"играете и други главоблъсканици с кули и тухли (не кубични пъзели). В Рубик " +"също има автоматично решаване на главоблъсканицата, колекция от красиви " +"модели и различни движения. Кубът може да бъде управяван с помощта на " +"мишката или клавиатурата. Можете да промените цветовете или изображенията " +"върху лицата на куба." + +#: ../pybiklib/config.py:75 +msgid "" +"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 3 of the License, or (at your option) " +"any later version.\n" +"\n" +"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." +msgstr "" +"Това е свободна програма; можете да я разпространявате и/или променяте при " +"условията на Общото Право за Обществено Ползване ГНУ публикувано от " +"Фондацията за свободни програми; или версия 3 или (по Ваш избор) коя да е по " +"късна версия.\n" +"\n" +"Тази програма се разпространява с надеждата , че ще бъде полезна но БЕЗ " +"КАКВАТО И ДА Е ГАРАНЦИЯ ЗА ТОВА, дори без косвена гаранция за ПРИГОДНОСТ ЗА " +"ОПРЕДЕЛЕНА ЦЕЛ. Виж условията на Общото Право за Обществено Ползване ГНУ за " +"повече подробности." + +#. Text between "<" and ">" is expanded to a link by the program and should not be modified. +#. Text between "" and "<|>" is the translatable text for the link. +#: ../pybiklib/config.py:87 +msgid "" +"Read the full text of the GNU General Public " +"License<|> or see ." +msgstr "" +"Прочетете пълния текст на Общото Право на " +"Обществено Ползване ГНУ<|>, или посетете уеб сайта " +"." + +#: ../pybiklib/config.py:90 +msgid "" +"You should have received a copy of the GNU General Public License along with " +"this program. If not, see ." +msgstr "" +"Би трябвало да сте получили препис от Общото Право за Обществено Ползване " +"ГНУ заедно с тази програма. Ако не сте обърнете се към " +"." + +#. "Wishlist" is used on Launchpad for Importance, so this word should probably not be translated +#: ../pybiklib/config.py:96 +msgid "" +"If you find any bugs in Pybik or have a suggestion for an improvement then " +"please submit a <{CONTACT_FILEBUG}|>bug report<|>. In the latter case you " +"can mark the bug report as \"Wishlist\"." +msgstr "" +"Ако намерите грешка в Рубик или имате предложение за подобряване на " +"програмата, моля изпратете <{CONTACT_FILEBUG}|>доклад за грешка<|>. В " +"последния случай може да маркирате доклада за грешка като «Wishlist»." + +#: ../pybiklib/config.py:102 +msgid "" +"Translations are managed by the " +"Launchpad " +"translation group<|>.\n" +"\n" +"If you want help to translate Pybik to your language you can do it through " +"the web interface<|>.\n" +"\n" +"Read more about \"Translating with " +"Launchpad\"<|> and " +"\"Starting to " +"translate\"<|>." +msgstr "" +"Превода на програмата се провежда от " +"групата " +"за превод в Launchpad<|>.\n" +"\n" +"Ако искате да помогнете при превеждането на Рубик на други езици, можете да " +"го направите чрез уеб " +"интерфейса<|>.\n" +"\n" +"Узнайте повече в разделите за помощ " +"«Translating with Launchpad»<|> и " +"«Starting to " +"translate»<|>." + +#: ../pybiklib/dialogs.py:168 +msgid "Press a key …" +msgstr "Натиснете клавиша..." + +#: ../pybiklib/dialogs.py:263 +msgid "The program needs to be restarted for the changes to take effect." +msgstr "" +"Програмата трябва да бъде рестартирана, за да влязат промените в сила." + +#. Only a single color, no picture or pattern +#: ../pybiklib/dialogs.py:296 +msgid "plain" +msgstr "обикновено" + +#: ../pybiklib/dialogs.py:301 +msgid "select …" +msgstr "избери ..." + +#: ../pybiklib/dialogs.py:313 +msgid "Up" +msgstr "Нагоре" + +#: ../pybiklib/dialogs.py:313 +msgid "Down" +msgstr "Надолу" + +#: ../pybiklib/dialogs.py:313 +msgid "Left" +msgstr "Наляво" + +#: ../pybiklib/dialogs.py:313 +msgid "Right" +msgstr "Надясно" + +#: ../pybiklib/dialogs.py:313 +msgid "Front" +msgstr "Напред" + +#: ../pybiklib/dialogs.py:313 +msgid "Back" +msgstr "Назад" + +#: ../pybiklib/dialogs.py:331 +msgid "Move" +msgstr "Придвижване" + +#: ../pybiklib/dialogs.py:332 +msgid "Key" +msgstr "Клавиш" + +#: ../pybiklib/dialogs.py:481 +msgid "Open Image" +msgstr "Отвори изображение" + +#: ../pybiklib/dialogs.py:533 ../pybiklib/ui/model.py:13 +msgid "Size:" +msgstr "Размер:" + +#: ../pybiklib/dialogs.py:533 +msgid "Basis:" +msgstr "Основа:" + +#: ../pybiklib/dialogs.py:533 +msgid "Width:" +msgstr "Ширина:" + +#: ../pybiklib/dialogs.py:562 +msgid "Canceling operation, please wait" +msgstr "Прекратяване на операцията, моля почакайте" + +#: ../pybiklib/dialogs.py:634 +msgid "Pybik project website" +msgstr "Уеб сайт на проекта Рубик" + +#: ../pybiklib/main.py:230 +msgid "" +"An error occurred while reading the settings:\n" +"{error_message}" +msgstr "" +"Възникна грешка по време на четенето на настройките:\n" +"{error_message}" + +#: ../pybiklib/model.py:206 +msgid "Brick" +msgstr "Блок" + +#: ../pybiklib/model.py:207 +msgid "{0}×{1}×{2}-Brick" +msgstr "{0}×{1}×{2}-Блок" + +#: ../pybiklib/model.py:855 +msgid "Tower" +msgstr "Кула" + +#: ../pybiklib/model.py:856 +msgid "{0}×{1}-Tower" +msgstr "{0}×{1}-Кула" + +#: ../pybiklib/model.py:870 +msgid "Cube" +msgstr "Куб" + +#: ../pybiklib/model.py:871 +msgid "{0}×{0}×{0}-Cube" +msgstr "{0}×{0}×{0}-Куб" + +#: ../pybiklib/plugins.py:92 +msgid "This algorithm does not work for any model.\n" +msgstr "Този алгоритъм не работи за всички модели.\n" + +#: ../pybiklib/plugins.py:94 ../pybiklib/plugins.py:97 +msgid "This algorithm only works for:\n" +msgstr "Този алгоритъм работи само за:\n" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 +msgid "disabled" +msgstr "деактивирано" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 +msgid "ugly" +msgstr "ужасно" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 +msgid "low" +msgstr "ниско" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 +msgid "medium" +msgstr "средно" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 +msgid "high" +msgstr "високо" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 +msgid "higher" +msgstr "максимално" + +#: ../pybiklib/settings.py:251 +msgid "Settings can not be written to file: {error_message}" +msgstr "Настройките не могат да бъдат записани във файла: {error_message}" + +#: ../pybiklib/ui/about.py:14 +msgid "About Pybik" +msgstr "Относно Рубик" + +#: ../pybiklib/ui/about.py:15 +msgid "About" +msgstr "Относно" + +#: ../pybiklib/ui/about.py:16 +msgid "Translators:" +msgstr "Преводачи:" + +#: ../pybiklib/ui/about.py:17 +msgid "Feedback" +msgstr "Връзка" + +#: ../pybiklib/ui/about.py:18 +msgid "Translate" +msgstr "Превод" + +#: ../pybiklib/ui/about.py:19 +msgid "License" +msgstr "Лиценз" + +#: ../pybiklib/ui/main.py:35 +msgid "&Game" +msgstr "&Игра" + +#: ../pybiklib/ui/main.py:36 +msgid "&Edit" +msgstr "&Редактиране" + +#: ../pybiklib/ui/main.py:37 +msgid "&View" +msgstr "&Изглед" + +#: ../pybiklib/ui/main.py:38 +msgid "&Help" +msgstr "&Помощ" + +#: ../pybiklib/ui/main.py:39 +msgid "&New Random" +msgstr "&Нова случайна" + +#: ../pybiklib/ui/main.py:40 +msgid "Ne&w Solved" +msgstr "Н&ова решена" + +#: ../pybiklib/ui/main.py:41 +msgid "&Quit" +msgstr "&Изход" + +#: ../pybiklib/ui/main.py:42 +msgid "&Select Model …" +msgstr "&Изберете модел …" + +#: ../pybiklib/ui/main.py:43 +msgid "&Set as Initial State" +msgstr "&Задай за начално състояние" + +#: ../pybiklib/ui/main.py:44 +msgid "&Reset Rotation" +msgstr "&Възстанови ротациите" + +#: ../pybiklib/ui/main.py:45 +msgid "&Invert Moves" +msgstr "&Обърни движенията" + +#: ../pybiklib/ui/main.py:46 +msgid "Reload Plugins" +msgstr "Презареди плъгините" + +#: ../pybiklib/ui/main.py:47 +msgid "&Preferences …" +msgstr "&Настройки…" + +#: ../pybiklib/ui/main.py:48 +msgid "&Toolbar" +msgstr "&Лента с инструменти" + +#: ../pybiklib/ui/main.py:49 +msgid "&Status Bar" +msgstr "&Лента за състоянието" + +#: ../pybiklib/ui/main.py:50 +msgid "&Info …" +msgstr "&Информация …" + +#: ../pybiklib/ui/main.py:51 +msgid "Rewind" +msgstr "Превърти назад" + +#: ../pybiklib/ui/main.py:52 +msgid "Go to the previous mark (or the beginning) of the sequence of moves" +msgstr "" +"Премини към предишната отметка (или в началото) в последователността на " +"ходовете" + +#: ../pybiklib/ui/main.py:53 +msgid "Previous" +msgstr "Предишен" + +#: ../pybiklib/ui/main.py:54 +msgid "Make one step backwards" +msgstr "Направи една крачка назад" + +#: ../pybiklib/ui/main.py:55 +msgid "Stop" +msgstr "Спри" + +#: ../pybiklib/ui/main.py:56 +msgid "Stop running the sequence of moves" +msgstr "Спри използването на последователността на ходовете" + +#: ../pybiklib/ui/main.py:57 +msgid "Play" +msgstr "Старт" + +#: ../pybiklib/ui/main.py:58 +msgid "Run forward through the sequence of moves" +msgstr "Стартирай последователността на ходовете" + +#: ../pybiklib/ui/main.py:59 +msgid "Next" +msgstr "Следващ" + +#: ../pybiklib/ui/main.py:60 +msgid "Make one step forwards" +msgstr "Направи една крачка напред" + +#: ../pybiklib/ui/main.py:61 +msgid "Forward" +msgstr "Превърти напред" + +#: ../pybiklib/ui/main.py:62 +msgid "Go to the next mark (or the end) of the sequence of moves" +msgstr "" +"Премини към следващата отметка (или в края) в последователността на ходовете" + +#: ../pybiklib/ui/main.py:63 +msgid "Add Mark" +msgstr "Добави отметката" + +#: ../pybiklib/ui/main.py:64 +msgid "Mark the current place in the sequence of moves" +msgstr "Маркирай сегашното място в последователността на ходовете" + +#: ../pybiklib/ui/main.py:65 +msgid "Remove Mark" +msgstr "Изтрий отметката" + +#: ../pybiklib/ui/main.py:66 +msgid "Remove the mark at the current place in the sequence of moves" +msgstr "Изтрий отметката от сегашното място в последователността на ходовете" + +#: ../pybiklib/ui/main.py:67 +msgid "&Edit Bar" +msgstr "&Редакционен панел" + +#: ../pybiklib/ui/main.py:68 +msgid "Normalize Cube Rotations" +msgstr "Нормализирай ротациите на куба" + +#: ../pybiklib/ui/model.py:12 +msgid "Select Model" +msgstr "Изберете модел" + +#: ../pybiklib/ui/model.py:14 +msgid "Height:" +msgstr "Височина:" + +#: ../pybiklib/ui/model.py:15 +msgid "Depth:" +msgstr "Дълбочина:" + +#: ../pybiklib/ui/preferences.py:27 +msgid "Preferences" +msgstr "Предпочитания" + +#: ../pybiklib/ui/preferences.py:28 +msgid "Graphic" +msgstr "Графика" + +#: ../pybiklib/ui/preferences.py:29 +msgid "Animation Speed:" +msgstr "Скорост на анимацията:" + +#: ../pybiklib/ui/preferences.py:30 +msgid "Lighting" +msgstr "Осветление" + +#: ../pybiklib/ui/preferences.py:31 +msgid "Mirror Distance:" +msgstr "Разстояние на огледалото:" + +#: ../pybiklib/ui/preferences.py:32 +msgid "" +"Lower antialiasing means better performance, higher antialiasing means " +"better quality.\n" +"If animations are not smooth, you can adjust this setting. Afterwards you " +"have to restart the program." +msgstr "" +"Ниската стойност на изглаждане, подобрява производителността, високото " +"подобрява качеството.\n" +"Ако анимацията не е плавна, променете стойността и след това рестартирайте " +"програмата." + +#: ../pybiklib/ui/preferences.py:33 +msgid "Antialiasing" +msgstr "Изглаждане" + +#: ../pybiklib/ui/preferences.py:34 +msgid "Mouse" +msgstr "Мишка" + +#: ../pybiklib/ui/preferences.py:35 +msgid "Four directions" +msgstr "Четири направления" + +#: ../pybiklib/ui/preferences.py:36 +msgid "" +"Simplified,\n" +"right button inverts move" +msgstr "" +"Опростена, \n" +"десния бутон връща ход назад" + +#: ../pybiklib/ui/preferences.py:37 +msgid "Keys" +msgstr "Клавиши" + +#: ../pybiklib/ui/preferences.py:38 ../pybiklib/ui/preferences.py:39 +msgid "Add" +msgstr "Добави" + +#: ../pybiklib/ui/preferences.py:40 ../pybiklib/ui/preferences.py:41 +msgid "Remove" +msgstr "Премахни" + +#: ../pybiklib/ui/preferences.py:42 ../pybiklib/ui/preferences.py:43 +msgid "Reset" +msgstr "Възстанови" + +#: ../pybiklib/ui/preferences.py:44 +msgid "Appearance" +msgstr "Външен вид" + +#: ../pybiklib/ui/preferences.py:45 +msgid "Color:" +msgstr "Цвят:" + +#: ../pybiklib/ui/preferences.py:46 +msgid "Image File:" +msgstr "Изображение:" + +#: ../pybiklib/ui/preferences.py:47 +msgid "Tiled" +msgstr "Теракот" + +#: ../pybiklib/ui/preferences.py:48 +msgid "Mosaic" +msgstr "Мозайка" + +#: ../pybiklib/ui/preferences.py:49 +msgid "Background:" +msgstr "Фон:" + +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. +#: ../data/applications/pybik.desktop.in.h:4 +msgid "rubik;cube;puzzle;magic;" +msgstr "Рубик;куб;пъзел;магия;" + +#: ../data/plugins/01-challenges.algorithm.py:19 +#: ../data/plugins/01-challenges.algorithm.py:22 +#: ../data/plugins/01-challenges.algorithm.py:25 +#: ../data/plugins/01-challenges.algorithm.py:28 +#: ../data/plugins/01-challenges.algorithm.py:31 +#: ../data/plugins/01-challenges.algorithm.py:34 +#: ../data/plugins/01-challenges.algorithm.py:37 +#: ../data/plugins/01-challenges.algorithm.py:40 +#: ../data/plugins/01-challenges.algorithm.py:43 +#: ../data/plugins/01-challenges.algorithm.py:46 +#: ../data/plugins/01-challenges.algorithm.py:49 +msgid "Challenges" +msgstr "Предизвикателства" + +#: ../data/plugins/01-challenges.algorithm.py:20 +msgid "Solve random cube" +msgstr "Събери случаен куб" + +#: ../data/plugins/01-challenges.algorithm.py:23 +msgid "Solve in 1 move" +msgstr "Събери за 1 ход" + +#: ../data/plugins/01-challenges.algorithm.py:26 +msgid "Solve in 2 moves" +msgstr "Събери за 2 хода" + +#: ../data/plugins/01-challenges.algorithm.py:29 +msgid "Solve in 3 moves" +msgstr "Събери за 3 хода" + +#: ../data/plugins/01-challenges.algorithm.py:32 +msgid "Solve in 4 moves" +msgstr "Събери за 4 хода" + +#: ../data/plugins/01-challenges.algorithm.py:35 +msgid "Solve in 5 moves" +msgstr "Събери за 5 хода" + +#: ../data/plugins/01-challenges.algorithm.py:38 +msgid "Solve in 6 moves" +msgstr "Събери за 6 хода" + +#: ../data/plugins/01-challenges.algorithm.py:41 +msgid "Solve in 7 moves" +msgstr "Събери за 7 хода" + +#: ../data/plugins/01-challenges.algorithm.py:44 +msgid "Solve in 8 moves" +msgstr "Събери за 8 хода" + +#: ../data/plugins/01-challenges.algorithm.py:47 +msgid "Solve in 9 moves" +msgstr "Събери за 9 хода" + +#: ../data/plugins/01-challenges.algorithm.py:50 +msgid "Solve in 10 moves" +msgstr "Събери за 10 хода" + +#: ../data/plugins/10-spiegel.algorithm.py:35 +#: ../data/plugins/10-spiegel.algorithm.py:38 +#: ../data/plugins/10-spiegel.algorithm.py:67 +#: ../data/plugins/10-spiegel.algorithm.py:88 +#: ../data/plugins/10-spiegel.algorithm.py:103 +#: ../data/plugins/10-spiegel.algorithm.py:116 +#: ../data/plugins/10-spiegel.algorithm.py:133 +#: ../data/plugins/10-spiegel.algorithm.py:144 +#: ../data/plugins/11-spiegel-improved.algorithm.py:35 +#: ../data/plugins/11-spiegel-improved.algorithm.py:38 +#: ../data/plugins/11-spiegel-improved.algorithm.py:83 +#: ../data/plugins/11-spiegel-improved.algorithm.py:122 +#: ../data/plugins/11-spiegel-improved.algorithm.py:154 +#: ../data/plugins/11-spiegel-improved.algorithm.py:180 +#: ../data/plugins/11-spiegel-improved.algorithm.py:198 +#: ../data/plugins/11-spiegel-improved.algorithm.py:212 +#: ../data/plugins/12-lbl-leyan.algorithm.py:22 +#: ../data/plugins/12-lbl-leyan.algorithm.py:25 +#: ../data/plugins/12-lbl-leyan.algorithm.py:54 +#: ../data/plugins/12-lbl-leyan.algorithm.py:75 +#: ../data/plugins/12-lbl-leyan.algorithm.py:91 +#: ../data/plugins/12-lbl-leyan.algorithm.py:108 +#: ../data/plugins/12-lbl-leyan.algorithm.py:130 +#: ../data/plugins/12-lbl-leyan.algorithm.py:171 +#: ../data/plugins/20-2x2x2.algorithm.py:19 +#: ../data/plugins/20-2x2x2.algorithm.py:22 +#: ../data/plugins/20-2x2x2.algorithm.py:41 +#: ../data/plugins/20-2x2x2.algorithm.py:61 +msgid "Solvers" +msgstr "Решители" + +#. Spiegel is the name of a solution method +#: ../data/plugins/10-spiegel.algorithm.py:37 +#: ../data/plugins/10-spiegel.algorithm.py:39 +#: ../data/plugins/10-spiegel.algorithm.py:68 +#: ../data/plugins/10-spiegel.algorithm.py:89 +#: ../data/plugins/10-spiegel.algorithm.py:104 +#: ../data/plugins/10-spiegel.algorithm.py:117 +#: ../data/plugins/10-spiegel.algorithm.py:134 +#: ../data/plugins/10-spiegel.algorithm.py:145 +msgid "Spiegel" +msgstr "Шпигел" + +#: ../data/plugins/10-spiegel.algorithm.py:40 +#: ../data/plugins/11-spiegel-improved.algorithm.py:40 +#: ../data/plugins/12-lbl-leyan.algorithm.py:27 +msgid "Top edges" +msgstr "Топ ръбове" + +#: ../data/plugins/10-spiegel.algorithm.py:69 +#: ../data/plugins/11-spiegel-improved.algorithm.py:85 +#: ../data/plugins/12-lbl-leyan.algorithm.py:56 +msgid "Top corners" +msgstr "Топ ъгли" + +#: ../data/plugins/10-spiegel.algorithm.py:90 +#: ../data/plugins/11-spiegel-improved.algorithm.py:124 +#: ../data/plugins/12-lbl-leyan.algorithm.py:77 +msgid "Middle slice" +msgstr "Среден слой" + +#: ../data/plugins/10-spiegel.algorithm.py:105 +#: ../data/plugins/11-spiegel-improved.algorithm.py:156 +#: ../data/plugins/12-lbl-leyan.algorithm.py:173 +msgid "Bottom edge place" +msgstr "Долно място на ръба" + +#: ../data/plugins/10-spiegel.algorithm.py:118 +#: ../data/plugins/11-spiegel-improved.algorithm.py:182 +#: ../data/plugins/12-lbl-leyan.algorithm.py:93 +msgid "Bottom edge orient" +msgstr "Долен ръбов ориентир" + +#: ../data/plugins/10-spiegel.algorithm.py:135 +#: ../data/plugins/11-spiegel-improved.algorithm.py:200 +#: ../data/plugins/12-lbl-leyan.algorithm.py:110 +#: ../data/plugins/20-2x2x2.algorithm.py:43 +msgid "Bottom corner place" +msgstr "Долно ъглово място" + +#: ../data/plugins/10-spiegel.algorithm.py:146 +#: ../data/plugins/11-spiegel-improved.algorithm.py:214 +#: ../data/plugins/12-lbl-leyan.algorithm.py:132 +#: ../data/plugins/20-2x2x2.algorithm.py:63 +msgid "Bottom corner orient" +msgstr "Долен ъглов ориентир" + +#. Spiegel is the name of a solution method +#: ../data/plugins/11-spiegel-improved.algorithm.py:37 +#: ../data/plugins/11-spiegel-improved.algorithm.py:39 +#: ../data/plugins/11-spiegel-improved.algorithm.py:84 +#: ../data/plugins/11-spiegel-improved.algorithm.py:123 +#: ../data/plugins/11-spiegel-improved.algorithm.py:155 +#: ../data/plugins/11-spiegel-improved.algorithm.py:181 +#: ../data/plugins/11-spiegel-improved.algorithm.py:199 +#: ../data/plugins/11-spiegel-improved.algorithm.py:213 +msgid "Spiegel improved" +msgstr "Подобрен шпигел" + +#. Leyan Lo is the inventor of the solution method +#: ../data/plugins/12-lbl-leyan.algorithm.py:24 +#: ../data/plugins/12-lbl-leyan.algorithm.py:26 +#: ../data/plugins/12-lbl-leyan.algorithm.py:55 +#: ../data/plugins/12-lbl-leyan.algorithm.py:76 +#: ../data/plugins/12-lbl-leyan.algorithm.py:92 +#: ../data/plugins/12-lbl-leyan.algorithm.py:109 +#: ../data/plugins/12-lbl-leyan.algorithm.py:131 +#: ../data/plugins/12-lbl-leyan.algorithm.py:172 +msgid "Layer Method (Leyan Lo)" +msgstr "Метод на слоя (Leyan Lo)" + +#: ../data/plugins/20-2x2x2.algorithm.py:20 +#: ../data/plugins/20-2x2x2.algorithm.py:23 +#: ../data/plugins/20-2x2x2.algorithm.py:42 +#: ../data/plugins/20-2x2x2.algorithm.py:62 +msgid "2×2×2" +msgstr "2×2×2" + +#: ../data/plugins/20-2x2x2.algorithm.py:24 +msgid "Top slice" +msgstr "Горен слой" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:18 +#: ../data/plugins/80-pretty-patterns.algorithm.py:22 +#: ../data/plugins/80-pretty-patterns.algorithm.py:26 +#: ../data/plugins/80-pretty-patterns.algorithm.py:30 +#: ../data/plugins/80-pretty-patterns.algorithm.py:34 +#: ../data/plugins/80-pretty-patterns.algorithm.py:39 +#: ../data/plugins/80-pretty-patterns.algorithm.py:43 +#: ../data/plugins/80-pretty-patterns.algorithm.py:48 +#: ../data/plugins/80-pretty-patterns.algorithm.py:52 +#: ../data/plugins/80-pretty-patterns.algorithm.py:56 +#: ../data/plugins/80-pretty-patterns.algorithm.py:60 +#: ../data/plugins/80-pretty-patterns.algorithm.py:64 +#: ../data/plugins/80-pretty-patterns.algorithm.py:68 +#: ../data/plugins/80-pretty-patterns.algorithm.py:74 +#: ../data/plugins/80-pretty-patterns.algorithm.py:78 +#: ../data/plugins/80-pretty-patterns.algorithm.py:83 +#: ../data/plugins/80-pretty-patterns.algorithm.py:87 +#: ../data/plugins/80-pretty-patterns.algorithm.py:91 +#: ../data/plugins/80-pretty-patterns.algorithm.py:95 +#: ../data/plugins/80-pretty-patterns.algorithm.py:99 +#: ../data/plugins/80-pretty-patterns.algorithm.py:103 +#: ../data/plugins/80-pretty-patterns.algorithm.py:108 +#: ../data/plugins/80-pretty-patterns.algorithm.py:112 +#: ../data/plugins/80-pretty-patterns.algorithm.py:116 +#: ../data/plugins/80-pretty-patterns.algorithm.py:120 +#: ../data/plugins/80-pretty-patterns.algorithm.py:125 +#: ../data/plugins/80-pretty-patterns.algorithm.py:129 +#: ../data/plugins/80-pretty-patterns.algorithm.py:133 +#: ../data/plugins/80-pretty-patterns.algorithm.py:137 +#: ../data/plugins/80-pretty-patterns.algorithm.py:141 +msgid "Pretty patterns" +msgstr "Красиви модели" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:19 +#: ../data/plugins/80-pretty-patterns.algorithm.py:23 +#: ../data/plugins/80-pretty-patterns.algorithm.py:27 +#: ../data/plugins/80-pretty-patterns.algorithm.py:31 +#: ../data/plugins/80-pretty-patterns.algorithm.py:35 +#: ../data/plugins/80-pretty-patterns.algorithm.py:40 +#: ../data/plugins/80-pretty-patterns.algorithm.py:44 +msgid "Stripes" +msgstr "Ивици" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:49 +#: ../data/plugins/80-pretty-patterns.algorithm.py:53 +msgid "Criss-Cross" +msgstr "Наопаки" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:57 +msgid "Fried Eggs" +msgstr "Пържени яйца" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:61 +msgid "Big Fried Eggs" +msgstr "Големи пържени яйца" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:65 +msgid "4 Fried Eggs" +msgstr "4 пържени яйца" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:69 +msgid "Chessboard" +msgstr "Шахматно" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:75 +msgid "Cross" +msgstr "Пресечно" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:79 +msgid "Zig Zag" +msgstr "Зиг заг" + +#. T is the shape formed by the cube labels +#: ../data/plugins/80-pretty-patterns.algorithm.py:85 +#: ../data/plugins/80-pretty-patterns.algorithm.py:88 +#: ../data/plugins/80-pretty-patterns.algorithm.py:92 +#: ../data/plugins/80-pretty-patterns.algorithm.py:96 +#: ../data/plugins/80-pretty-patterns.algorithm.py:100 +#: ../data/plugins/80-pretty-patterns.algorithm.py:104 +msgid "T-Time" +msgstr "Т-време" + +#. C is the shape formed by the cube labels +#: ../data/plugins/80-pretty-patterns.algorithm.py:110 +msgid "C" +msgstr "С" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:113 +msgid "Cube in a Cube" +msgstr "Куб в куба" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:117 +msgid "Striped Cube in a Cube" +msgstr "Раиран куб в куба" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:121 +msgid "Six Square Cuboids" +msgstr "Шест квадратни кубоиди" + +#. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. +#: ../data/plugins/80-pretty-patterns.algorithm.py:127 +msgid "Superflip" +msgstr "Супер флип" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:130 +msgid "Superflip easy" +msgstr "Лесен супер флип" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:134 +msgid "Green Mamba" +msgstr "Зелена мамба" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:138 +msgid "Anaconda" +msgstr "Анаконда" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:142 +msgid "Duck Feet" +msgstr "Патешки крачета" + +#: ../data/plugins/90-library.algorithm.py:20 +#: ../data/plugins/90-library.algorithm.py:23 +#: ../data/plugins/90-library.algorithm.py:26 +#: ../data/plugins/90-library.algorithm.py:29 +#: ../data/plugins/90-library.algorithm.py:32 +#: ../data/plugins/90-library.algorithm.py:35 +#: ../data/plugins/90-library.algorithm.py:38 +#: ../data/plugins/90-library.algorithm.py:41 +#: ../data/plugins/90-library.algorithm.py:44 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 +msgid "Library" +msgstr "Библиотека" + +#: ../data/plugins/90-library.algorithm.py:21 +#: ../data/plugins/90-library.algorithm.py:24 +msgid "Middle Layer" +msgstr "Среден слой" + +#: ../data/plugins/90-library.algorithm.py:22 +msgid "Front to Right" +msgstr "Напред и надясно" + +#: ../data/plugins/90-library.algorithm.py:25 +msgid "Front to Left" +msgstr "Напред и наляво" + +#: ../data/plugins/90-library.algorithm.py:27 +#: ../data/plugins/90-library.algorithm.py:30 +#: ../data/plugins/90-library.algorithm.py:33 +#: ../data/plugins/90-library.algorithm.py:36 +msgid "Last Layer" +msgstr "Последен слой" + +#: ../data/plugins/90-library.algorithm.py:28 +msgid "Swap Edges" +msgstr "Разменени ръбове" + +#: ../data/plugins/90-library.algorithm.py:31 +msgid "Flip Edges" +msgstr "Обърнати ръбове" + +#: ../data/plugins/90-library.algorithm.py:34 +msgid "Swap Corners" +msgstr "Разменени ъгли" + +#: ../data/plugins/90-library.algorithm.py:37 +msgid "Rotate Corners" +msgstr "Завъртени ъгли" + +#: ../data/plugins/90-library.algorithm.py:39 +#: ../data/plugins/90-library.algorithm.py:42 +#: ../data/plugins/90-library.algorithm.py:45 +msgid "Rotate Center" +msgstr "Завъртян център" + +#: ../data/plugins/90-library.algorithm.py:40 +msgid "2×Up" +msgstr "2×нагоре" + +#: ../data/plugins/90-library.algorithm.py:43 +msgid "Up and Front" +msgstr "Нагоре и напред" + +#: ../data/plugins/90-library.algorithm.py:46 +msgid "Up and Down" +msgstr "Нагоре и нодолу" + +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 +msgid "Misc" +msgstr "Разно" + +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 +msgid "Back without Back" +msgstr "Назад без връщане" + +#: ../data/plugins/90-library.algorithm.py:54 +msgid "2×Back without Back" +msgstr "2×назад без връщане" diff -Nru pybik-1.1/po/bn.po pybik-1.1.1/po/bn.po --- pybik-1.1/po/bn.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/bn.po 2014-02-11 16:04:02.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" "PO-Revision-Date: 2013-06-15 04:31+0000\n" "Last-Translator: Iftekhar Mohammad \n" "Language-Team: Bengali \n" @@ -15,8 +15,8 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Launchpad-Export-Date: 2013-06-16 04:40+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-03 05:23+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" @@ -197,27 +197,27 @@ "{error_message}" msgstr "" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" msgstr "" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" msgstr "" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" msgstr "" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" msgstr "" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" msgstr "ঘনক" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" msgstr "" @@ -229,32 +229,37 @@ msgid "This algorithm only works for:\n" msgstr "" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" msgstr "নিস্ক্রিয় করা হয়েছে" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" msgstr "" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" msgstr "নিম্ন" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" msgstr "মাঝারি / মাধ্যম" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" msgstr "উচ্চ" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" msgstr "" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" msgstr "" @@ -516,7 +521,7 @@ msgid "Background:" msgstr "" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" msgstr "" @@ -830,8 +835,8 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" msgstr "" @@ -889,15 +894,16 @@ msgid "Up and Down" msgstr "" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" msgstr "" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" msgstr "" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" msgstr "" diff -Nru pybik-1.1/po/bs.po pybik-1.1.1/po/bs.po --- pybik-1.1/po/bs.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/bs.po 2014-02-11 16:04:02.000000000 +0000 @@ -7,17 +7,17 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" "PO-Revision-Date: 2013-06-09 11:55+0000\n" -"Last-Translator: Kenan Dervišević \n" +"Last-Translator: Kenan Dervišević \n" "Language-Team: Bosnian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Launchpad-Export-Date: 2013-06-11 05:57+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-03 05:23+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" @@ -209,27 +209,27 @@ "Desila se greška prilikom čitanja postavki:\n" "{error_message}" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" msgstr "Cigla" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-Cigla" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" msgstr "Kula" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" msgstr "{0}×{1}-Kula" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" msgstr "Kocka" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-Kocka" @@ -241,32 +241,37 @@ msgid "This algorithm only works for:\n" msgstr "Ovaj algoritam radi samo za:\n" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" msgstr "onemogućeno" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" msgstr "ružno" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" msgstr "slabo" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" msgstr "srednji" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" msgstr "jako" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" msgstr "više" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" msgstr "Postavke ne mogu biti zapisane u datoteku: {error_message}" @@ -530,7 +535,7 @@ msgid "Background:" msgstr "Pozadina:" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;kocka;puzzle;slagalica;zagonetka;" @@ -844,8 +849,8 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" msgstr "Biblioteka" @@ -903,15 +908,16 @@ msgid "Up and Down" msgstr "Gore i dole" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" msgstr "Razno" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" msgstr "Nazad bez poleđine" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" msgstr "2×Nazad bez poleđine" diff -Nru pybik-1.1/po/cs.po pybik-1.1.1/po/cs.po --- pybik-1.1/po/cs.po 1970-01-01 00:00:00.000000000 +0000 +++ pybik-1.1.1/po/cs.po 2014-02-11 16:04:02.000000000 +0000 @@ -0,0 +1,950 @@ +# Czech translation for pybik +# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 +# This file is distributed under the same license as the pybik package. +# FIRST AUTHOR , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: pybik\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" +"PO-Revision-Date: 2014-02-08 07:30+0000\n" +"Last-Translator: Tadeáš Pařík \n" +"Language-Team: Czech \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Launchpad-Export-Date: 2014-02-09 06:23+0000\n" +"X-Generator: Launchpad (build 16916)\n" + +#: ../pybiklib/application.py:343 +msgid "Press the Esc key to exit Edit Mode" +msgstr "Stiskněte klávesu Esc pro opuštění editačního módu" + +#. substitution for {move_text} in statusbar text +#: ../pybiklib/application.py:352 +msgid "{current} / {total} move" +msgid_plural "{current} / {total} moves" +msgstr[0] "{current} / {total} pohyb" +msgstr[1] "{current} / {total} pohyby" +msgstr[2] "{current} / {total} pohybů" + +#. substitution for {solved_text} in statusbar text +#: ../pybiklib/application.py:356 ../pybiklib/ui/model.py:16 +msgid "solved" +msgstr "vyřešeno" + +#: ../pybiklib/application.py:356 +msgid "not solved" +msgstr "nevyřešeno" + +#. statusbar text +#: ../pybiklib/application.py:359 +msgid "{model_text}, {move_text}, {solved_text}" +msgstr "{model_text}, {move_text}, {solved_text}" + +#: ../pybiklib/application.py:392 +msgid "Congratulations, you have solved the puzzle!" +msgstr "Gratulujeme, vyřešili jste hlavolam!" + +#. Name of the application, probably should not be translated. +#: ../pybiklib/config.py:31 ../pybiklib/ui/main.py:34 +#: ../data/applications/pybik.desktop.in.h:1 +msgid "Pybik" +msgstr "Pybik" + +#: ../pybiklib/config.py:65 ../data/applications/pybik.desktop.in.h:2 +msgid "3D Rubik's cube game" +msgstr "3D Rubikova kostka" + +#: ../pybiklib/config.py:67 +msgid "" +"Pybik is an interactive, graphical, single player puzzle about the cube " +"invented by Ernő Rubik. Besides the cube the program can handle towers and " +"bricks (non cubic puzzles). Pybik also has solvers, pretty patterns and a " +"collection of various moves. The cube can be manipulated with the mouse or " +"keyboard. You can change the colors or images on the faces of the cube." +msgstr "" +"Pybik je interaktivní a grafický hlavolam určený pro jednoho hráče, založený " +"na kostce od Ernő Rubika. Mimo klasické krychle zvládne tento program také " +"věže a cihly (hlavolamy bez klasické kostky). Pybik má také řešitele, pěkné " +"vzory a sbírku různých pohybů. Kostkou lze otáčet pomocí klávesnice či myši. " +"Můžete také měnit vzory a barvy, které jsou na povrchu kostky." + +#: ../pybiklib/config.py:75 +msgid "" +"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 3 of the License, or (at your option) " +"any later version.\n" +"\n" +"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." +msgstr "" +"Tento program je svobodným softwarem: můžete ho dále šířit a/nebo " +"modifikovat za podmínek licence GNU General Public, která je uveřejněna " +"Nadací Svobodného Softwaru, ve verzi 3 nebo (podle vašeho uvážení) jakékoli " +"pozdější verze.\n" +"\n" +"Tento program je uveřejněn, jak doufáme, že bude užitečný, avšak BEZ " +"JAKÉKOLI ZÁRUKY; bez záruky PRODEJNOSTI nebo VHODNOSTI PRO DANÝ ÚČEL. " +"Podívejte se do licence General Public pro více informací." + +#. Text between "<" and ">" is expanded to a link by the program and should not be modified. +#. Text between "" and "<|>" is the translatable text for the link. +#: ../pybiklib/config.py:87 +msgid "" +"Read the full text of the GNU General Public " +"License<|> or see ." +msgstr "" +"Přečtěte si plné znění licence GNU General " +"Public<|> nebo se podívejte na ." + +#: ../pybiklib/config.py:90 +msgid "" +"You should have received a copy of the GNU General Public License along with " +"this program. If not, see ." +msgstr "" +"Spolu s tímto programem byste měli obdržet kopii licence GNU General Public " +"License. Pokud se tak nestalo, podívejte se na " +"." + +#. "Wishlist" is used on Launchpad for Importance, so this word should probably not be translated +#: ../pybiklib/config.py:96 +msgid "" +"If you find any bugs in Pybik or have a suggestion for an improvement then " +"please submit a <{CONTACT_FILEBUG}|>bug report<|>. In the latter case you " +"can mark the bug report as \"Wishlist\"." +msgstr "" +"Jestliže najdete v programu Pybik nějakou chybu nebo máte nějaký nápad na " +"zlepšení, odešlete, prosím, <{CONTACT_FILEBUG}|>chybové hlášení<|>. V druhém " +"případě ho označte jako \"Přání\"." + +#: ../pybiklib/config.py:102 +msgid "" +"Translations are managed by the " +"Launchpad " +"translation group<|>.\n" +"\n" +"If you want help to translate Pybik to your language you can do it through " +"the web interface<|>.\n" +"\n" +"Read more about \"Translating with " +"Launchpad\"<|> and " +"\"Starting to " +"translate\"<|>." +msgstr "" +"Překlady jsou spravovány " +"skupinou " +"překladatelů v Launchpadu<|>.\n" +"\n" +"Jestliže si přejete pomoci s překlady programu Pybik, můžete tak učinit " +"skrze webové rozhraní<|>.\n" +"\n" +"Přečtěte si více o \"Překladech v " +"Launchpadu\"<|> a " +"\"Začínáme " +"překládat\"<|>." + +#: ../pybiklib/dialogs.py:168 +msgid "Press a key …" +msgstr "Stiskněte jakoukoli klávesu ..." + +#: ../pybiklib/dialogs.py:263 +msgid "The program needs to be restarted for the changes to take effect." +msgstr "Program musí být pro uplatnění změn restartován." + +#. Only a single color, no picture or pattern +#: ../pybiklib/dialogs.py:296 +msgid "plain" +msgstr "prostý" + +#: ../pybiklib/dialogs.py:301 +msgid "select …" +msgstr "vybrat ..." + +#: ../pybiklib/dialogs.py:313 +msgid "Up" +msgstr "Nahoře" + +#: ../pybiklib/dialogs.py:313 +msgid "Down" +msgstr "Dole" + +#: ../pybiklib/dialogs.py:313 +msgid "Left" +msgstr "Vlevo" + +#: ../pybiklib/dialogs.py:313 +msgid "Right" +msgstr "Vpravo" + +#: ../pybiklib/dialogs.py:313 +msgid "Front" +msgstr "Zepředu" + +#: ../pybiklib/dialogs.py:313 +msgid "Back" +msgstr "Zpět" + +#: ../pybiklib/dialogs.py:331 +msgid "Move" +msgstr "Pohyb" + +#: ../pybiklib/dialogs.py:332 +msgid "Key" +msgstr "Klávesa" + +#: ../pybiklib/dialogs.py:481 +msgid "Open Image" +msgstr "Otevřít obrázek" + +#: ../pybiklib/dialogs.py:533 ../pybiklib/ui/model.py:13 +msgid "Size:" +msgstr "Velikost:" + +#: ../pybiklib/dialogs.py:533 +msgid "Basis:" +msgstr "Základ:" + +#: ../pybiklib/dialogs.py:533 +msgid "Width:" +msgstr "Šířka:" + +#: ../pybiklib/dialogs.py:562 +msgid "Canceling operation, please wait" +msgstr "Rušení operace, čekejte prosím" + +#: ../pybiklib/dialogs.py:634 +msgid "Pybik project website" +msgstr "Webové stránky projektu Pybik" + +#: ../pybiklib/main.py:230 +msgid "" +"An error occurred while reading the settings:\n" +"{error_message}" +msgstr "" +"Nastala chyba při načítání nastavení:\n" +"{error_message}" + +#: ../pybiklib/model.py:206 +msgid "Brick" +msgstr "Kostka" + +#: ../pybiklib/model.py:207 +msgid "{0}×{1}×{2}-Brick" +msgstr "{0}×{1}×{2}-Cihla" + +#: ../pybiklib/model.py:855 +msgid "Tower" +msgstr "Věž" + +#: ../pybiklib/model.py:856 +msgid "{0}×{1}-Tower" +msgstr "{0}×{1}-Věž" + +#: ../pybiklib/model.py:870 +msgid "Cube" +msgstr "Kostka" + +#: ../pybiklib/model.py:871 +msgid "{0}×{0}×{0}-Cube" +msgstr "{0}×{0}×{0}-Kostka" + +#: ../pybiklib/plugins.py:92 +msgid "This algorithm does not work for any model.\n" +msgstr "Tento algoritmus nespolupracuje s žádným modelem.\n" + +#: ../pybiklib/plugins.py:94 ../pybiklib/plugins.py:97 +msgid "This algorithm only works for:\n" +msgstr "Tento algoritmus funguje pouze pro:\n" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 +msgid "disabled" +msgstr "zakázáno" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 +msgid "ugly" +msgstr "ošklivé" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 +msgid "low" +msgstr "nízké" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 +msgid "medium" +msgstr "střední" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 +msgid "high" +msgstr "vysoké" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 +msgid "higher" +msgstr "nejvyšší" + +#: ../pybiklib/settings.py:251 +msgid "Settings can not be written to file: {error_message}" +msgstr "Nastavení nemůže být zapsáno do souboru: {error_message}" + +#: ../pybiklib/ui/about.py:14 +msgid "About Pybik" +msgstr "O programu Pybik" + +#: ../pybiklib/ui/about.py:15 +msgid "About" +msgstr "O programu" + +#: ../pybiklib/ui/about.py:16 +msgid "Translators:" +msgstr "Překladatelé:" + +#: ../pybiklib/ui/about.py:17 +msgid "Feedback" +msgstr "Zpětná vazba" + +#: ../pybiklib/ui/about.py:18 +msgid "Translate" +msgstr "Přeložit" + +#: ../pybiklib/ui/about.py:19 +msgid "License" +msgstr "Licence" + +#: ../pybiklib/ui/main.py:35 +msgid "&Game" +msgstr "&Hra" + +#: ../pybiklib/ui/main.py:36 +msgid "&Edit" +msgstr "&Upravit" + +#: ../pybiklib/ui/main.py:37 +msgid "&View" +msgstr "&Zobrazit" + +#: ../pybiklib/ui/main.py:38 +msgid "&Help" +msgstr "Nápo&věda" + +#: ../pybiklib/ui/main.py:39 +msgid "&New Random" +msgstr "&Nová náhodná" + +#: ../pybiklib/ui/main.py:40 +msgid "Ne&w Solved" +msgstr "No&vá vyřešená" + +#: ../pybiklib/ui/main.py:41 +msgid "&Quit" +msgstr "U&končit" + +#: ../pybiklib/ui/main.py:42 +msgid "&Select Model …" +msgstr "Vy&brat model ..." + +#: ../pybiklib/ui/main.py:43 +msgid "&Set as Initial State" +msgstr "Nas&tavit jako výchozí stav" + +#: ../pybiklib/ui/main.py:44 +msgid "&Reset Rotation" +msgstr "&Výchozí otočení" + +#: ../pybiklib/ui/main.py:45 +msgid "&Invert Moves" +msgstr "&Otočit pohyby" + +#: ../pybiklib/ui/main.py:46 +msgid "Reload Plugins" +msgstr "Znovu nahrát zásuvné moduly" + +#: ../pybiklib/ui/main.py:47 +msgid "&Preferences …" +msgstr "&Nastavení" + +#: ../pybiklib/ui/main.py:48 +msgid "&Toolbar" +msgstr "&Panel nástrojů" + +#: ../pybiklib/ui/main.py:49 +msgid "&Status Bar" +msgstr "&Stavový řádek" + +#: ../pybiklib/ui/main.py:50 +msgid "&Info …" +msgstr "&Informace ..." + +#: ../pybiklib/ui/main.py:51 +msgid "Rewind" +msgstr "Posunout zpět" + +#: ../pybiklib/ui/main.py:52 +msgid "Go to the previous mark (or the beginning) of the sequence of moves" +msgstr "" +"Jít na předchozí značku (nebo začátek) v posloupnosti jednotlivých kroků" + +#: ../pybiklib/ui/main.py:53 +msgid "Previous" +msgstr "Předchozí" + +#: ../pybiklib/ui/main.py:54 +msgid "Make one step backwards" +msgstr "Provést krok zpět" + +#: ../pybiklib/ui/main.py:55 +msgid "Stop" +msgstr "Zastavit" + +#: ../pybiklib/ui/main.py:56 +msgid "Stop running the sequence of moves" +msgstr "Zastavit běžící sekvenci pohybů" + +#: ../pybiklib/ui/main.py:57 +msgid "Play" +msgstr "Přehrát" + +#: ../pybiklib/ui/main.py:58 +msgid "Run forward through the sequence of moves" +msgstr "Dopředu přes sekvenci pohybů" + +#: ../pybiklib/ui/main.py:59 +msgid "Next" +msgstr "Další" + +#: ../pybiklib/ui/main.py:60 +msgid "Make one step forwards" +msgstr "Provést jeden krok vpřed" + +#: ../pybiklib/ui/main.py:61 +msgid "Forward" +msgstr "Vpřed" + +#: ../pybiklib/ui/main.py:62 +msgid "Go to the next mark (or the end) of the sequence of moves" +msgstr "Jít na další značku (nebo konec) v posloupnosti jednotlivých kroků" + +#: ../pybiklib/ui/main.py:63 +msgid "Add Mark" +msgstr "Přidat značku" + +#: ../pybiklib/ui/main.py:64 +msgid "Mark the current place in the sequence of moves" +msgstr "Označit stávající místo v posloupnosti jednotlivých kroků" + +#: ../pybiklib/ui/main.py:65 +msgid "Remove Mark" +msgstr "Odstranit značku" + +#: ../pybiklib/ui/main.py:66 +msgid "Remove the mark at the current place in the sequence of moves" +msgstr "" +"Odstranit značku pro stávající místo v posloupnosti jednotlivých kroků" + +#: ../pybiklib/ui/main.py:67 +msgid "&Edit Bar" +msgstr "&Upravit nabídku" + +#: ../pybiklib/ui/main.py:68 +msgid "Normalize Cube Rotations" +msgstr "Normalizovat otáčení kostky" + +#: ../pybiklib/ui/model.py:12 +msgid "Select Model" +msgstr "Vybrat model" + +#: ../pybiklib/ui/model.py:14 +msgid "Height:" +msgstr "Výška:" + +#: ../pybiklib/ui/model.py:15 +msgid "Depth:" +msgstr "Hloubka:" + +#: ../pybiklib/ui/preferences.py:27 +msgid "Preferences" +msgstr "Předvolby" + +#: ../pybiklib/ui/preferences.py:28 +msgid "Graphic" +msgstr "Grafika" + +#: ../pybiklib/ui/preferences.py:29 +msgid "Animation Speed:" +msgstr "Rychlost animace:" + +#: ../pybiklib/ui/preferences.py:30 +msgid "Lighting" +msgstr "Nasvícení" + +#: ../pybiklib/ui/preferences.py:31 +msgid "Mirror Distance:" +msgstr "Vzdálenost zrcadla:" + +#: ../pybiklib/ui/preferences.py:32 +msgid "" +"Lower antialiasing means better performance, higher antialiasing means " +"better quality.\n" +"If animations are not smooth, you can adjust this setting. Afterwards you " +"have to restart the program." +msgstr "" +"Nižší vyhlazování hran znamená lepší výkon, vyšší kvalita vyhlazování hran " +"znamená lepší kvalitu.\n" +"Jestliže animace nejsou plynulé, můžete upravit nastavení. Následně musíte " +"program spustit znovu." + +#: ../pybiklib/ui/preferences.py:33 +msgid "Antialiasing" +msgstr "Vyhlazování okrajů" + +#: ../pybiklib/ui/preferences.py:34 +msgid "Mouse" +msgstr "Myš" + +#: ../pybiklib/ui/preferences.py:35 +msgid "Four directions" +msgstr "Čtyři směry" + +#: ../pybiklib/ui/preferences.py:36 +msgid "" +"Simplified,\n" +"right button inverts move" +msgstr "" +"Zjednodušené,\n" +"pravé tlačítko pro pohyb v opačném směru." + +#: ../pybiklib/ui/preferences.py:37 +msgid "Keys" +msgstr "Klávesy" + +#: ../pybiklib/ui/preferences.py:38 ../pybiklib/ui/preferences.py:39 +msgid "Add" +msgstr "Přidat" + +#: ../pybiklib/ui/preferences.py:40 ../pybiklib/ui/preferences.py:41 +msgid "Remove" +msgstr "Odebrat" + +#: ../pybiklib/ui/preferences.py:42 ../pybiklib/ui/preferences.py:43 +msgid "Reset" +msgstr "Obnovit" + +#: ../pybiklib/ui/preferences.py:44 +msgid "Appearance" +msgstr "Vzhled" + +#: ../pybiklib/ui/preferences.py:45 +msgid "Color:" +msgstr "Barva:" + +#: ../pybiklib/ui/preferences.py:46 +msgid "Image File:" +msgstr "Soubor obrázku:" + +#: ../pybiklib/ui/preferences.py:47 +msgid "Tiled" +msgstr "Dlaždice" + +#: ../pybiklib/ui/preferences.py:48 +msgid "Mosaic" +msgstr "Mozaika" + +#: ../pybiklib/ui/preferences.py:49 +msgid "Background:" +msgstr "Pozadí:" + +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. +#: ../data/applications/pybik.desktop.in.h:4 +msgid "rubik;cube;puzzle;magic;" +msgstr "rubik;kostka;hlavolam;kouzelný;" + +#: ../data/plugins/01-challenges.algorithm.py:19 +#: ../data/plugins/01-challenges.algorithm.py:22 +#: ../data/plugins/01-challenges.algorithm.py:25 +#: ../data/plugins/01-challenges.algorithm.py:28 +#: ../data/plugins/01-challenges.algorithm.py:31 +#: ../data/plugins/01-challenges.algorithm.py:34 +#: ../data/plugins/01-challenges.algorithm.py:37 +#: ../data/plugins/01-challenges.algorithm.py:40 +#: ../data/plugins/01-challenges.algorithm.py:43 +#: ../data/plugins/01-challenges.algorithm.py:46 +#: ../data/plugins/01-challenges.algorithm.py:49 +msgid "Challenges" +msgstr "Výzvy" + +#: ../data/plugins/01-challenges.algorithm.py:20 +msgid "Solve random cube" +msgstr "Vyřešit náhodnou kostku" + +#: ../data/plugins/01-challenges.algorithm.py:23 +msgid "Solve in 1 move" +msgstr "Vyřešit v 1 kroku" + +#: ../data/plugins/01-challenges.algorithm.py:26 +msgid "Solve in 2 moves" +msgstr "Vyřešit ve 2 krocích" + +#: ../data/plugins/01-challenges.algorithm.py:29 +msgid "Solve in 3 moves" +msgstr "Vyřešit ve 3 krocích" + +#: ../data/plugins/01-challenges.algorithm.py:32 +msgid "Solve in 4 moves" +msgstr "Vyřešit ve 4 krocích" + +#: ../data/plugins/01-challenges.algorithm.py:35 +msgid "Solve in 5 moves" +msgstr "Vyřešit ve 5 krocích" + +#: ../data/plugins/01-challenges.algorithm.py:38 +msgid "Solve in 6 moves" +msgstr "Vyřešit ve 6 krocích" + +#: ../data/plugins/01-challenges.algorithm.py:41 +msgid "Solve in 7 moves" +msgstr "Vyřešit v 7 krocích" + +#: ../data/plugins/01-challenges.algorithm.py:44 +msgid "Solve in 8 moves" +msgstr "Vyřešit v 8 krocích" + +#: ../data/plugins/01-challenges.algorithm.py:47 +msgid "Solve in 9 moves" +msgstr "Vyřešit v 9 krocích" + +#: ../data/plugins/01-challenges.algorithm.py:50 +msgid "Solve in 10 moves" +msgstr "Vyřešit v 10 krocích" + +#: ../data/plugins/10-spiegel.algorithm.py:35 +#: ../data/plugins/10-spiegel.algorithm.py:38 +#: ../data/plugins/10-spiegel.algorithm.py:67 +#: ../data/plugins/10-spiegel.algorithm.py:88 +#: ../data/plugins/10-spiegel.algorithm.py:103 +#: ../data/plugins/10-spiegel.algorithm.py:116 +#: ../data/plugins/10-spiegel.algorithm.py:133 +#: ../data/plugins/10-spiegel.algorithm.py:144 +#: ../data/plugins/11-spiegel-improved.algorithm.py:35 +#: ../data/plugins/11-spiegel-improved.algorithm.py:38 +#: ../data/plugins/11-spiegel-improved.algorithm.py:83 +#: ../data/plugins/11-spiegel-improved.algorithm.py:122 +#: ../data/plugins/11-spiegel-improved.algorithm.py:154 +#: ../data/plugins/11-spiegel-improved.algorithm.py:180 +#: ../data/plugins/11-spiegel-improved.algorithm.py:198 +#: ../data/plugins/11-spiegel-improved.algorithm.py:212 +#: ../data/plugins/12-lbl-leyan.algorithm.py:22 +#: ../data/plugins/12-lbl-leyan.algorithm.py:25 +#: ../data/plugins/12-lbl-leyan.algorithm.py:54 +#: ../data/plugins/12-lbl-leyan.algorithm.py:75 +#: ../data/plugins/12-lbl-leyan.algorithm.py:91 +#: ../data/plugins/12-lbl-leyan.algorithm.py:108 +#: ../data/plugins/12-lbl-leyan.algorithm.py:130 +#: ../data/plugins/12-lbl-leyan.algorithm.py:171 +#: ../data/plugins/20-2x2x2.algorithm.py:19 +#: ../data/plugins/20-2x2x2.algorithm.py:22 +#: ../data/plugins/20-2x2x2.algorithm.py:41 +#: ../data/plugins/20-2x2x2.algorithm.py:61 +msgid "Solvers" +msgstr "Ti, co vyřešili" + +#. Spiegel is the name of a solution method +#: ../data/plugins/10-spiegel.algorithm.py:37 +#: ../data/plugins/10-spiegel.algorithm.py:39 +#: ../data/plugins/10-spiegel.algorithm.py:68 +#: ../data/plugins/10-spiegel.algorithm.py:89 +#: ../data/plugins/10-spiegel.algorithm.py:104 +#: ../data/plugins/10-spiegel.algorithm.py:117 +#: ../data/plugins/10-spiegel.algorithm.py:134 +#: ../data/plugins/10-spiegel.algorithm.py:145 +msgid "Spiegel" +msgstr "Spiegel" + +#: ../data/plugins/10-spiegel.algorithm.py:40 +#: ../data/plugins/11-spiegel-improved.algorithm.py:40 +#: ../data/plugins/12-lbl-leyan.algorithm.py:27 +msgid "Top edges" +msgstr "Horní hrany" + +#: ../data/plugins/10-spiegel.algorithm.py:69 +#: ../data/plugins/11-spiegel-improved.algorithm.py:85 +#: ../data/plugins/12-lbl-leyan.algorithm.py:56 +msgid "Top corners" +msgstr "Horní rohy" + +#: ../data/plugins/10-spiegel.algorithm.py:90 +#: ../data/plugins/11-spiegel-improved.algorithm.py:124 +#: ../data/plugins/12-lbl-leyan.algorithm.py:77 +msgid "Middle slice" +msgstr "Střední řez" + +#: ../data/plugins/10-spiegel.algorithm.py:105 +#: ../data/plugins/11-spiegel-improved.algorithm.py:156 +#: ../data/plugins/12-lbl-leyan.algorithm.py:173 +msgid "Bottom edge place" +msgstr "Umístění spodní hrany" + +#: ../data/plugins/10-spiegel.algorithm.py:118 +#: ../data/plugins/11-spiegel-improved.algorithm.py:182 +#: ../data/plugins/12-lbl-leyan.algorithm.py:93 +msgid "Bottom edge orient" +msgstr "Orientace spodní hrany" + +#: ../data/plugins/10-spiegel.algorithm.py:135 +#: ../data/plugins/11-spiegel-improved.algorithm.py:200 +#: ../data/plugins/12-lbl-leyan.algorithm.py:110 +#: ../data/plugins/20-2x2x2.algorithm.py:43 +msgid "Bottom corner place" +msgstr "Umístění spodního rohu" + +#: ../data/plugins/10-spiegel.algorithm.py:146 +#: ../data/plugins/11-spiegel-improved.algorithm.py:214 +#: ../data/plugins/12-lbl-leyan.algorithm.py:132 +#: ../data/plugins/20-2x2x2.algorithm.py:63 +msgid "Bottom corner orient" +msgstr "Orientace spodního rohu" + +#. Spiegel is the name of a solution method +#: ../data/plugins/11-spiegel-improved.algorithm.py:37 +#: ../data/plugins/11-spiegel-improved.algorithm.py:39 +#: ../data/plugins/11-spiegel-improved.algorithm.py:84 +#: ../data/plugins/11-spiegel-improved.algorithm.py:123 +#: ../data/plugins/11-spiegel-improved.algorithm.py:155 +#: ../data/plugins/11-spiegel-improved.algorithm.py:181 +#: ../data/plugins/11-spiegel-improved.algorithm.py:199 +#: ../data/plugins/11-spiegel-improved.algorithm.py:213 +msgid "Spiegel improved" +msgstr "Vylepšený Spiegel" + +#. Leyan Lo is the inventor of the solution method +#: ../data/plugins/12-lbl-leyan.algorithm.py:24 +#: ../data/plugins/12-lbl-leyan.algorithm.py:26 +#: ../data/plugins/12-lbl-leyan.algorithm.py:55 +#: ../data/plugins/12-lbl-leyan.algorithm.py:76 +#: ../data/plugins/12-lbl-leyan.algorithm.py:92 +#: ../data/plugins/12-lbl-leyan.algorithm.py:109 +#: ../data/plugins/12-lbl-leyan.algorithm.py:131 +#: ../data/plugins/12-lbl-leyan.algorithm.py:172 +msgid "Layer Method (Leyan Lo)" +msgstr "Metoda vrstvy (Leyan Lo)" + +#: ../data/plugins/20-2x2x2.algorithm.py:20 +#: ../data/plugins/20-2x2x2.algorithm.py:23 +#: ../data/plugins/20-2x2x2.algorithm.py:42 +#: ../data/plugins/20-2x2x2.algorithm.py:62 +msgid "2×2×2" +msgstr "2×2×2" + +#: ../data/plugins/20-2x2x2.algorithm.py:24 +msgid "Top slice" +msgstr "Horní řez" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:18 +#: ../data/plugins/80-pretty-patterns.algorithm.py:22 +#: ../data/plugins/80-pretty-patterns.algorithm.py:26 +#: ../data/plugins/80-pretty-patterns.algorithm.py:30 +#: ../data/plugins/80-pretty-patterns.algorithm.py:34 +#: ../data/plugins/80-pretty-patterns.algorithm.py:39 +#: ../data/plugins/80-pretty-patterns.algorithm.py:43 +#: ../data/plugins/80-pretty-patterns.algorithm.py:48 +#: ../data/plugins/80-pretty-patterns.algorithm.py:52 +#: ../data/plugins/80-pretty-patterns.algorithm.py:56 +#: ../data/plugins/80-pretty-patterns.algorithm.py:60 +#: ../data/plugins/80-pretty-patterns.algorithm.py:64 +#: ../data/plugins/80-pretty-patterns.algorithm.py:68 +#: ../data/plugins/80-pretty-patterns.algorithm.py:74 +#: ../data/plugins/80-pretty-patterns.algorithm.py:78 +#: ../data/plugins/80-pretty-patterns.algorithm.py:83 +#: ../data/plugins/80-pretty-patterns.algorithm.py:87 +#: ../data/plugins/80-pretty-patterns.algorithm.py:91 +#: ../data/plugins/80-pretty-patterns.algorithm.py:95 +#: ../data/plugins/80-pretty-patterns.algorithm.py:99 +#: ../data/plugins/80-pretty-patterns.algorithm.py:103 +#: ../data/plugins/80-pretty-patterns.algorithm.py:108 +#: ../data/plugins/80-pretty-patterns.algorithm.py:112 +#: ../data/plugins/80-pretty-patterns.algorithm.py:116 +#: ../data/plugins/80-pretty-patterns.algorithm.py:120 +#: ../data/plugins/80-pretty-patterns.algorithm.py:125 +#: ../data/plugins/80-pretty-patterns.algorithm.py:129 +#: ../data/plugins/80-pretty-patterns.algorithm.py:133 +#: ../data/plugins/80-pretty-patterns.algorithm.py:137 +#: ../data/plugins/80-pretty-patterns.algorithm.py:141 +msgid "Pretty patterns" +msgstr "Hezké vzory" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:19 +#: ../data/plugins/80-pretty-patterns.algorithm.py:23 +#: ../data/plugins/80-pretty-patterns.algorithm.py:27 +#: ../data/plugins/80-pretty-patterns.algorithm.py:31 +#: ../data/plugins/80-pretty-patterns.algorithm.py:35 +#: ../data/plugins/80-pretty-patterns.algorithm.py:40 +#: ../data/plugins/80-pretty-patterns.algorithm.py:44 +msgid "Stripes" +msgstr "Pruhy" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:49 +#: ../data/plugins/80-pretty-patterns.algorithm.py:53 +msgid "Criss-Cross" +msgstr "Křižování" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:57 +msgid "Fried Eggs" +msgstr "Smažená vajíčka" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:61 +msgid "Big Fried Eggs" +msgstr "Velká smažená vajíčka" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:65 +msgid "4 Fried Eggs" +msgstr "4 smažená vajíčka" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:69 +msgid "Chessboard" +msgstr "Šachovnice" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:75 +msgid "Cross" +msgstr "Kříž" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:79 +msgid "Zig Zag" +msgstr "Cikcak" + +#. T is the shape formed by the cube labels +#: ../data/plugins/80-pretty-patterns.algorithm.py:85 +#: ../data/plugins/80-pretty-patterns.algorithm.py:88 +#: ../data/plugins/80-pretty-patterns.algorithm.py:92 +#: ../data/plugins/80-pretty-patterns.algorithm.py:96 +#: ../data/plugins/80-pretty-patterns.algorithm.py:100 +#: ../data/plugins/80-pretty-patterns.algorithm.py:104 +msgid "T-Time" +msgstr "T-Time" + +#. C is the shape formed by the cube labels +#: ../data/plugins/80-pretty-patterns.algorithm.py:110 +msgid "C" +msgstr "C" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:113 +msgid "Cube in a Cube" +msgstr "Kostka v kostce" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:117 +msgid "Striped Cube in a Cube" +msgstr "Pruhovaná kostka v kostce" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:121 +msgid "Six Square Cuboids" +msgstr "Kvádr o šesti kostkách" + +#. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. +#: ../data/plugins/80-pretty-patterns.algorithm.py:127 +msgid "Superflip" +msgstr "Superflip" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:130 +msgid "Superflip easy" +msgstr "Jednoduchý superflip" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:134 +msgid "Green Mamba" +msgstr "Zelená mamba" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:138 +msgid "Anaconda" +msgstr "Anakonda" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:142 +msgid "Duck Feet" +msgstr "Kachní nohy" + +#: ../data/plugins/90-library.algorithm.py:20 +#: ../data/plugins/90-library.algorithm.py:23 +#: ../data/plugins/90-library.algorithm.py:26 +#: ../data/plugins/90-library.algorithm.py:29 +#: ../data/plugins/90-library.algorithm.py:32 +#: ../data/plugins/90-library.algorithm.py:35 +#: ../data/plugins/90-library.algorithm.py:38 +#: ../data/plugins/90-library.algorithm.py:41 +#: ../data/plugins/90-library.algorithm.py:44 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 +msgid "Library" +msgstr "Knihovna" + +#: ../data/plugins/90-library.algorithm.py:21 +#: ../data/plugins/90-library.algorithm.py:24 +msgid "Middle Layer" +msgstr "Střední vrstva" + +#: ../data/plugins/90-library.algorithm.py:22 +msgid "Front to Right" +msgstr "Zepředu doprava" + +#: ../data/plugins/90-library.algorithm.py:25 +msgid "Front to Left" +msgstr "Zepředu doleva" + +#: ../data/plugins/90-library.algorithm.py:27 +#: ../data/plugins/90-library.algorithm.py:30 +#: ../data/plugins/90-library.algorithm.py:33 +#: ../data/plugins/90-library.algorithm.py:36 +msgid "Last Layer" +msgstr "Poslední vrstva" + +#: ../data/plugins/90-library.algorithm.py:28 +msgid "Swap Edges" +msgstr "Prohození hran" + +#: ../data/plugins/90-library.algorithm.py:31 +msgid "Flip Edges" +msgstr "Otočit hrany" + +#: ../data/plugins/90-library.algorithm.py:34 +msgid "Swap Corners" +msgstr "Prohození rohů" + +#: ../data/plugins/90-library.algorithm.py:37 +msgid "Rotate Corners" +msgstr "Otočení rohů" + +#: ../data/plugins/90-library.algorithm.py:39 +#: ../data/plugins/90-library.algorithm.py:42 +#: ../data/plugins/90-library.algorithm.py:45 +msgid "Rotate Center" +msgstr "Otočení středu" + +#: ../data/plugins/90-library.algorithm.py:40 +msgid "2×Up" +msgstr "2x nahoru" + +#: ../data/plugins/90-library.algorithm.py:43 +msgid "Up and Front" +msgstr "Nahoru a vpřed" + +#: ../data/plugins/90-library.algorithm.py:46 +msgid "Up and Down" +msgstr "Nahoru a dolů" + +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 +msgid "Misc" +msgstr "Různé" + +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 +msgid "Back without Back" +msgstr "Falešný krok zpět" + +#: ../data/plugins/90-library.algorithm.py:54 +msgid "2×Back without Back" +msgstr "2x Falešný krok zpět" diff -Nru pybik-1.1/po/de.po pybik-1.1.1/po/de.po --- pybik-1.1/po/de.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/de.po 2014-02-11 16:04:02.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" "PO-Revision-Date: 2013-05-31 23:46+0000\n" "Last-Translator: B Clausius \n" "Language-Team: German\n" @@ -16,8 +16,8 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Launchpad-Export-Date: 2013-06-11 05:57+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-03 05:23+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" @@ -230,27 +230,27 @@ "Beim Lesen der Einstellungen ist ein Fehler aufgetreten:\n" "{error_message}" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" msgstr "Ziegel" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-Ziegel" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" msgstr "Turm" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" msgstr "{0}×{1}-Turm" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" msgstr "Würfel" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-Würfel" @@ -262,32 +262,37 @@ msgid "This algorithm only works for:\n" msgstr "Dieser Algorithmus funktioniert nur für:\n" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" msgstr "deaktiviert" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" msgstr "hässlich" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" msgstr "schwach" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" msgstr "mittel" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" msgstr "stark" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" msgstr "stärker" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" msgstr "" "Die Einstellungen können nicht in die Datei geschrieben werden: " @@ -557,7 +562,7 @@ msgid "Background:" msgstr "Hintergrund:" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;cube;würfel;puzzle;zauberwürfel;" @@ -871,8 +876,8 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" msgstr "Sammlung" @@ -930,15 +935,16 @@ msgid "Up and Down" msgstr "Oben und Unten" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" msgstr "Verschiedenes" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" msgstr "Hinten ohne Hinten" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" msgstr "2×Hinten ohne Hinten" diff -Nru pybik-1.1/po/el.po pybik-1.1.1/po/el.po --- pybik-1.1/po/el.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/el.po 2014-02-11 16:04:02.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" "PO-Revision-Date: 2013-06-09 15:59+0000\n" "Last-Translator: mara sdr \n" "Language-Team: Greek \n" @@ -15,8 +15,8 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Launchpad-Export-Date: 2013-06-11 05:57+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-03 05:23+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" @@ -235,27 +235,27 @@ "Προέκυψε ένα σφάλμα κατά την ανάγνωση των ρυθμίσεων:\n" "{error_message}" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" msgstr "Τούβλο" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" msgstr "Τούβλο {0}×{1}×{2}" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" msgstr "Πύργος" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" msgstr "Πύργος {0}×{1}" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" msgstr "Κύβος" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" msgstr "Κύβος {0}×{0}×{0}" @@ -267,32 +267,37 @@ msgid "This algorithm only works for:\n" msgstr "Αυτός ο αλγόριθμος λειτουργεί μόνο για:\n" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" msgstr "απενεργοποιημένο" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" msgstr "άσχημο" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" msgstr "χαμηλό" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" msgstr "μέτριο" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" msgstr "υψηλό" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" msgstr "υψηλότερο" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" msgstr "Αδύνατη η εγγραφή των ρυθμίσεων στο αρχείο: {error_message}" @@ -560,7 +565,7 @@ msgid "Background:" msgstr "Φόντο:" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" msgstr "" @@ -876,8 +881,8 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" msgstr "Βιβλιοθήκη" @@ -935,15 +940,16 @@ msgid "Up and Down" msgstr "Πάνω και Κάτω" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" msgstr "Διάφορα" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" msgstr "Back without Back" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" msgstr "2×Back without Back" diff -Nru pybik-1.1/po/en_GB.po pybik-1.1.1/po/en_GB.po --- pybik-1.1/po/en_GB.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/en_GB.po 2014-02-11 16:04:02.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" "PO-Revision-Date: 2013-06-01 23:31+0000\n" "Last-Translator: Anthony Harrington \n" "Language-Team: \n" @@ -16,8 +16,8 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Launchpad-Export-Date: 2013-06-11 05:58+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-03 05:24+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" @@ -226,27 +226,27 @@ "An error occurred while reading the settings:\n" "{error_message}" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" msgstr "Brick" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-Brick" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" msgstr "Tower" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" msgstr "{0}×{1}-Tower" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" msgstr "Cube" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-Cube" @@ -258,32 +258,37 @@ msgid "This algorithm only works for:\n" msgstr "This algorithm only works for:\n" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" msgstr "disabled" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" msgstr "ugly" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" msgstr "low" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" msgstr "medium" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" msgstr "high" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" msgstr "higher" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" msgstr "Settings can not be written to file: {error_message}" @@ -551,7 +556,7 @@ msgid "Background:" msgstr "Background:" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;cube;puzzle;magic;" @@ -865,8 +870,8 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" msgstr "Library" @@ -924,15 +929,16 @@ msgid "Up and Down" msgstr "Up and Down" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" msgstr "Misc" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" msgstr "Back without Back" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" msgstr "2×Back without Back" diff -Nru pybik-1.1/po/es.po pybik-1.1.1/po/es.po --- pybik-1.1/po/es.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/es.po 2014-02-11 16:04:02.000000000 +0000 @@ -7,17 +7,17 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" -"PO-Revision-Date: 2013-06-15 12:02+0000\n" -"Last-Translator: Adolfo Jayme Barrientos \n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" +"PO-Revision-Date: 2014-02-08 20:21+0000\n" +"Last-Translator: Adolfo Jayme \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Launchpad-Export-Date: 2013-06-16 04:40+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-09 06:23+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" @@ -66,6 +66,11 @@ "collection of various moves. The cube can be manipulated with the mouse or " "keyboard. You can change the colors or images on the faces of the cube." msgstr "" +"Pybik es un juego de rompecabezas interactivo, gráfico y de un solo jugador " +"sobre el cubo inventado por Ernő Rubik. Además del cubo, el programa puede " +"crear torres y bloques. Pybik también incluye solucionadores, patrones y una " +"colección de movimientos variados. Se puede manipular el cubo con el ratón y " +"el teclado. Puede modificar los colores o las imágenes de las caras del cubo." #: ../pybiklib/config.py:75 msgid "" @@ -114,6 +119,9 @@ "please submit a <{CONTACT_FILEBUG}|>bug report<|>. In the latter case you " "can mark the bug report as \"Wishlist\"." msgstr "" +"Si encuentra un error en Pybik o quiere hacer una sugerencia, cree un <" +"{CONTACT_FILEBUG}|>informe de error<|> (en inglés). Las sugerencias se " +"marcarán como «Wishlist»." #: ../pybiklib/config.py:102 msgid "" @@ -218,27 +226,27 @@ "Ocurrió un error mientras se leían las configuraciones:\n" "{error_message}" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" msgstr "Ladrillo" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-Bloque" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" msgstr "Torre" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" msgstr "{0}×{1}-Torre" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" msgstr "Cubo" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-Cubo" @@ -248,37 +256,41 @@ #: ../pybiklib/plugins.py:94 ../pybiklib/plugins.py:97 msgid "This algorithm only works for:\n" -msgstr "Este algoritmo sólo funciona para:\n" +msgstr "Este algoritmo solo funciona para:\n" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" msgstr "desactivado" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" msgstr "horrible" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" msgstr "baja" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" msgstr "media" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" msgstr "alta" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" msgstr "" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" -msgstr "" -"Las configuraciones no pueden ser leídas para el archivo: {error_message}" +msgstr "No se puede guardar la configuración en el archivo: {error_message}" #: ../pybiklib/ui/about.py:14 msgid "About Pybik" @@ -306,7 +318,7 @@ #: ../pybiklib/ui/main.py:35 msgid "&Game" -msgstr "&Juego" +msgstr "&Partida" #: ../pybiklib/ui/main.py:36 msgid "&Edit" @@ -374,7 +386,7 @@ #: ../pybiklib/ui/main.py:52 msgid "Go to the previous mark (or the beginning) of the sequence of moves" -msgstr "" +msgstr "Ir a la marca anterior (o al principio) de la secuencia de movimientos" #: ../pybiklib/ui/main.py:53 msgid "Previous" @@ -382,7 +394,7 @@ #: ../pybiklib/ui/main.py:54 msgid "Make one step backwards" -msgstr "" +msgstr "Dar un paso hacia atrás" #: ../pybiklib/ui/main.py:55 msgid "Stop" @@ -390,7 +402,7 @@ #: ../pybiklib/ui/main.py:56 msgid "Stop running the sequence of moves" -msgstr "" +msgstr "Dejar de ejecutar la secuencia de movimientos" #: ../pybiklib/ui/main.py:57 msgid "Play" @@ -406,7 +418,7 @@ #: ../pybiklib/ui/main.py:60 msgid "Make one step forwards" -msgstr "" +msgstr "Dar un paso hacia adelante" #: ../pybiklib/ui/main.py:61 msgid "Forward" @@ -414,7 +426,7 @@ #: ../pybiklib/ui/main.py:62 msgid "Go to the next mark (or the end) of the sequence of moves" -msgstr "" +msgstr "Ir a la siguiente marca (o final) de la secuencia de movimientos" #: ../pybiklib/ui/main.py:63 msgid "Add Mark" @@ -438,7 +450,7 @@ #: ../pybiklib/ui/main.py:68 msgid "Normalize Cube Rotations" -msgstr "" +msgstr "Normalizar giros del cubo" #: ../pybiklib/ui/model.py:12 msgid "Select Model" @@ -497,6 +509,8 @@ "Simplified,\n" "right button inverts move" msgstr "" +"Simplificado,\n" +"el botón derecho invierte el movimiento" #: ../pybiklib/ui/preferences.py:37 msgid "Keys" @@ -538,7 +552,7 @@ msgid "Background:" msgstr "Fondo:" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;cubo;rompecabezas;mágico;" @@ -648,13 +662,13 @@ #: ../data/plugins/11-spiegel-improved.algorithm.py:40 #: ../data/plugins/12-lbl-leyan.algorithm.py:27 msgid "Top edges" -msgstr "" +msgstr "Bordes superiores" #: ../data/plugins/10-spiegel.algorithm.py:69 #: ../data/plugins/11-spiegel-improved.algorithm.py:85 #: ../data/plugins/12-lbl-leyan.algorithm.py:56 msgid "Top corners" -msgstr "" +msgstr "Esquinas superiores" #: ../data/plugins/10-spiegel.algorithm.py:90 #: ../data/plugins/11-spiegel-improved.algorithm.py:124 @@ -773,15 +787,15 @@ #: ../data/plugins/80-pretty-patterns.algorithm.py:57 msgid "Fried Eggs" -msgstr "" +msgstr "Huevos fritos" #: ../data/plugins/80-pretty-patterns.algorithm.py:61 msgid "Big Fried Eggs" -msgstr "" +msgstr "Huevos fritos grandes" #: ../data/plugins/80-pretty-patterns.algorithm.py:65 msgid "4 Fried Eggs" -msgstr "" +msgstr "4 huevos fritos" #: ../data/plugins/80-pretty-patterns.algorithm.py:69 msgid "Chessboard" @@ -825,11 +839,11 @@ #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: ../data/plugins/80-pretty-patterns.algorithm.py:127 msgid "Superflip" -msgstr "" +msgstr "Superflip" #: ../data/plugins/80-pretty-patterns.algorithm.py:130 msgid "Superflip easy" -msgstr "" +msgstr "Superflip fácil" #: ../data/plugins/80-pretty-patterns.algorithm.py:134 msgid "Green Mamba" @@ -841,7 +855,7 @@ #: ../data/plugins/80-pretty-patterns.algorithm.py:142 msgid "Duck Feet" -msgstr "" +msgstr "Pies de pato" #: ../data/plugins/90-library.algorithm.py:20 #: ../data/plugins/90-library.algorithm.py:23 @@ -852,8 +866,8 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" msgstr "Biblioteca" @@ -875,7 +889,7 @@ #: ../data/plugins/90-library.algorithm.py:33 #: ../data/plugins/90-library.algorithm.py:36 msgid "Last Layer" -msgstr "" +msgstr "Última capa" #: ../data/plugins/90-library.algorithm.py:28 msgid "Swap Edges" @@ -897,7 +911,7 @@ #: ../data/plugins/90-library.algorithm.py:42 #: ../data/plugins/90-library.algorithm.py:45 msgid "Rotate Center" -msgstr "" +msgstr "Girar el centro" #: ../data/plugins/90-library.algorithm.py:40 msgid "2×Up" @@ -911,15 +925,16 @@ msgid "Up and Down" msgstr "Arriba y abajo" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" msgstr "Varios" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" msgstr "" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" msgstr "" diff -Nru pybik-1.1/po/fi.po pybik-1.1.1/po/fi.po --- pybik-1.1/po/fi.po 1970-01-01 00:00:00.000000000 +0000 +++ pybik-1.1.1/po/fi.po 2014-02-11 16:04:02.000000000 +0000 @@ -0,0 +1,910 @@ +# Finnish translation for pybik +# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 +# This file is distributed under the same license as the pybik package. +# FIRST AUTHOR , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: pybik\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" +"PO-Revision-Date: 2014-02-07 07:39+0000\n" +"Last-Translator: Jiri Grönroos \n" +"Language-Team: Finnish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Launchpad-Export-Date: 2014-02-08 06:55+0000\n" +"X-Generator: Launchpad (build 16916)\n" + +#: ../pybiklib/application.py:343 +msgid "Press the Esc key to exit Edit Mode" +msgstr "" + +#. substitution for {move_text} in statusbar text +#: ../pybiklib/application.py:352 +msgid "{current} / {total} move" +msgid_plural "{current} / {total} moves" +msgstr[0] "{current} / {total} siirto" +msgstr[1] "{current} / {total} siirtoa" + +#. substitution for {solved_text} in statusbar text +#: ../pybiklib/application.py:356 ../pybiklib/ui/model.py:16 +msgid "solved" +msgstr "ratkaistu" + +#: ../pybiklib/application.py:356 +msgid "not solved" +msgstr "ei ratkaistu" + +#. statusbar text +#: ../pybiklib/application.py:359 +msgid "{model_text}, {move_text}, {solved_text}" +msgstr "{model_text}, {move_text}, {solved_text}" + +#: ../pybiklib/application.py:392 +msgid "Congratulations, you have solved the puzzle!" +msgstr "Onnittelut, ratkaisit arvoituksen!" + +#. Name of the application, probably should not be translated. +#: ../pybiklib/config.py:31 ../pybiklib/ui/main.py:34 +#: ../data/applications/pybik.desktop.in.h:1 +msgid "Pybik" +msgstr "Pybik" + +#: ../pybiklib/config.py:65 ../data/applications/pybik.desktop.in.h:2 +msgid "3D Rubik's cube game" +msgstr "Kolmiulotteinen Rubiikin kuutio -peli" + +#: ../pybiklib/config.py:67 +msgid "" +"Pybik is an interactive, graphical, single player puzzle about the cube " +"invented by Ernő Rubik. Besides the cube the program can handle towers and " +"bricks (non cubic puzzles). Pybik also has solvers, pretty patterns and a " +"collection of various moves. The cube can be manipulated with the mouse or " +"keyboard. You can change the colors or images on the faces of the cube." +msgstr "" + +#: ../pybiklib/config.py:75 +msgid "" +"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 3 of the License, or (at your option) " +"any later version.\n" +"\n" +"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." +msgstr "" + +#. Text between "<" and ">" is expanded to a link by the program and should not be modified. +#. Text between "" and "<|>" is the translatable text for the link. +#: ../pybiklib/config.py:87 +msgid "" +"Read the full text of the GNU General Public " +"License<|> or see ." +msgstr "" + +#: ../pybiklib/config.py:90 +msgid "" +"You should have received a copy of the GNU General Public License along with " +"this program. If not, see ." +msgstr "" +"Tämän ohjelman mukana pitäisi tulla kopio GPL-lisenssistä; jos näin ei ole, " +"katso lisätietoja sivulta ." + +#. "Wishlist" is used on Launchpad for Importance, so this word should probably not be translated +#: ../pybiklib/config.py:96 +msgid "" +"If you find any bugs in Pybik or have a suggestion for an improvement then " +"please submit a <{CONTACT_FILEBUG}|>bug report<|>. In the latter case you " +"can mark the bug report as \"Wishlist\"." +msgstr "" + +#: ../pybiklib/config.py:102 +msgid "" +"Translations are managed by the " +"Launchpad " +"translation group<|>.\n" +"\n" +"If you want help to translate Pybik to your language you can do it through " +"the web interface<|>.\n" +"\n" +"Read more about \"Translating with " +"Launchpad\"<|> and " +"\"Starting to " +"translate\"<|>." +msgstr "" + +#: ../pybiklib/dialogs.py:168 +msgid "Press a key …" +msgstr "Paina näppäintä…" + +#: ../pybiklib/dialogs.py:263 +msgid "The program needs to be restarted for the changes to take effect." +msgstr "" +"Tämä sovellus tulee käynnistää uudelleen, jotta muutokset tulevat voimaan." + +#. Only a single color, no picture or pattern +#: ../pybiklib/dialogs.py:296 +msgid "plain" +msgstr "" + +#: ../pybiklib/dialogs.py:301 +msgid "select …" +msgstr "valitse…" + +#: ../pybiklib/dialogs.py:313 +msgid "Up" +msgstr "Ylös" + +#: ../pybiklib/dialogs.py:313 +msgid "Down" +msgstr "Alas" + +#: ../pybiklib/dialogs.py:313 +msgid "Left" +msgstr "Vasen" + +#: ../pybiklib/dialogs.py:313 +msgid "Right" +msgstr "Oikea" + +#: ../pybiklib/dialogs.py:313 +msgid "Front" +msgstr "" + +#: ../pybiklib/dialogs.py:313 +msgid "Back" +msgstr "" + +#: ../pybiklib/dialogs.py:331 +msgid "Move" +msgstr "" + +#: ../pybiklib/dialogs.py:332 +msgid "Key" +msgstr "" + +#: ../pybiklib/dialogs.py:481 +msgid "Open Image" +msgstr "Avaa kuva" + +#: ../pybiklib/dialogs.py:533 ../pybiklib/ui/model.py:13 +msgid "Size:" +msgstr "Koko:" + +#: ../pybiklib/dialogs.py:533 +msgid "Basis:" +msgstr "" + +#: ../pybiklib/dialogs.py:533 +msgid "Width:" +msgstr "Leveys:" + +#: ../pybiklib/dialogs.py:562 +msgid "Canceling operation, please wait" +msgstr "" + +#: ../pybiklib/dialogs.py:634 +msgid "Pybik project website" +msgstr "Pybikin verkkosivusto" + +#: ../pybiklib/main.py:230 +msgid "" +"An error occurred while reading the settings:\n" +"{error_message}" +msgstr "" + +#: ../pybiklib/model.py:206 +msgid "Brick" +msgstr "" + +#: ../pybiklib/model.py:207 +msgid "{0}×{1}×{2}-Brick" +msgstr "" + +#: ../pybiklib/model.py:855 +msgid "Tower" +msgstr "Torni" + +#: ../pybiklib/model.py:856 +msgid "{0}×{1}-Tower" +msgstr "" + +#: ../pybiklib/model.py:870 +msgid "Cube" +msgstr "Kuutio" + +#: ../pybiklib/model.py:871 +msgid "{0}×{0}×{0}-Cube" +msgstr "{0}×{0}×{0}-kuutio" + +#: ../pybiklib/plugins.py:92 +msgid "This algorithm does not work for any model.\n" +msgstr "" + +#: ../pybiklib/plugins.py:94 ../pybiklib/plugins.py:97 +msgid "This algorithm only works for:\n" +msgstr "" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 +msgid "disabled" +msgstr "" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 +msgid "ugly" +msgstr "" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 +msgid "low" +msgstr "" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 +msgid "medium" +msgstr "" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 +msgid "high" +msgstr "" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 +msgid "higher" +msgstr "" + +#: ../pybiklib/settings.py:251 +msgid "Settings can not be written to file: {error_message}" +msgstr "Asetuksia ei voi kirjoittaa tiedostoon: {error_message}" + +#: ../pybiklib/ui/about.py:14 +msgid "About Pybik" +msgstr "Tietoja - Pybik" + +#: ../pybiklib/ui/about.py:15 +msgid "About" +msgstr "Tietoja" + +#: ../pybiklib/ui/about.py:16 +msgid "Translators:" +msgstr "Kääntäjät:" + +#: ../pybiklib/ui/about.py:17 +msgid "Feedback" +msgstr "Palaute" + +#: ../pybiklib/ui/about.py:18 +msgid "Translate" +msgstr "Käännä" + +#: ../pybiklib/ui/about.py:19 +msgid "License" +msgstr "Lisenssi" + +#: ../pybiklib/ui/main.py:35 +msgid "&Game" +msgstr "&Peli" + +#: ../pybiklib/ui/main.py:36 +msgid "&Edit" +msgstr "&Muokkaa" + +#: ../pybiklib/ui/main.py:37 +msgid "&View" +msgstr "&Näytä" + +#: ../pybiklib/ui/main.py:38 +msgid "&Help" +msgstr "&Ohje" + +#: ../pybiklib/ui/main.py:39 +msgid "&New Random" +msgstr "&Uusi satunnainen" + +#: ../pybiklib/ui/main.py:40 +msgid "Ne&w Solved" +msgstr "Uusi &ratkaistu" + +#: ../pybiklib/ui/main.py:41 +msgid "&Quit" +msgstr "&Lopeta" + +#: ../pybiklib/ui/main.py:42 +msgid "&Select Model …" +msgstr "&Valitse malli…" + +#: ../pybiklib/ui/main.py:43 +msgid "&Set as Initial State" +msgstr "" + +#: ../pybiklib/ui/main.py:44 +msgid "&Reset Rotation" +msgstr "" + +#: ../pybiklib/ui/main.py:45 +msgid "&Invert Moves" +msgstr "" + +#: ../pybiklib/ui/main.py:46 +msgid "Reload Plugins" +msgstr "Lataa liitännäiset uudelleen" + +#: ../pybiklib/ui/main.py:47 +msgid "&Preferences …" +msgstr "&Asetukset …" + +#: ../pybiklib/ui/main.py:48 +msgid "&Toolbar" +msgstr "&Työkalupalkki" + +#: ../pybiklib/ui/main.py:49 +msgid "&Status Bar" +msgstr "Tilapal&kki" + +#: ../pybiklib/ui/main.py:50 +msgid "&Info …" +msgstr "Ti&etoja…" + +#: ../pybiklib/ui/main.py:51 +msgid "Rewind" +msgstr "" + +#: ../pybiklib/ui/main.py:52 +msgid "Go to the previous mark (or the beginning) of the sequence of moves" +msgstr "" + +#: ../pybiklib/ui/main.py:53 +msgid "Previous" +msgstr "Edellinen" + +#: ../pybiklib/ui/main.py:54 +msgid "Make one step backwards" +msgstr "" + +#: ../pybiklib/ui/main.py:55 +msgid "Stop" +msgstr "Pysäytä" + +#: ../pybiklib/ui/main.py:56 +msgid "Stop running the sequence of moves" +msgstr "" + +#: ../pybiklib/ui/main.py:57 +msgid "Play" +msgstr "" + +#: ../pybiklib/ui/main.py:58 +msgid "Run forward through the sequence of moves" +msgstr "" + +#: ../pybiklib/ui/main.py:59 +msgid "Next" +msgstr "Seuraava" + +#: ../pybiklib/ui/main.py:60 +msgid "Make one step forwards" +msgstr "" + +#: ../pybiklib/ui/main.py:61 +msgid "Forward" +msgstr "" + +#: ../pybiklib/ui/main.py:62 +msgid "Go to the next mark (or the end) of the sequence of moves" +msgstr "" + +#: ../pybiklib/ui/main.py:63 +msgid "Add Mark" +msgstr "" + +#: ../pybiklib/ui/main.py:64 +msgid "Mark the current place in the sequence of moves" +msgstr "" + +#: ../pybiklib/ui/main.py:65 +msgid "Remove Mark" +msgstr "" + +#: ../pybiklib/ui/main.py:66 +msgid "Remove the mark at the current place in the sequence of moves" +msgstr "" + +#: ../pybiklib/ui/main.py:67 +msgid "&Edit Bar" +msgstr "" + +#: ../pybiklib/ui/main.py:68 +msgid "Normalize Cube Rotations" +msgstr "" + +#: ../pybiklib/ui/model.py:12 +msgid "Select Model" +msgstr "Valitse malli" + +#: ../pybiklib/ui/model.py:14 +msgid "Height:" +msgstr "Korkeus:" + +#: ../pybiklib/ui/model.py:15 +msgid "Depth:" +msgstr "" + +#: ../pybiklib/ui/preferences.py:27 +msgid "Preferences" +msgstr "Asetukset" + +#: ../pybiklib/ui/preferences.py:28 +msgid "Graphic" +msgstr "" + +#: ../pybiklib/ui/preferences.py:29 +msgid "Animation Speed:" +msgstr "" + +#: ../pybiklib/ui/preferences.py:30 +msgid "Lighting" +msgstr "" + +#: ../pybiklib/ui/preferences.py:31 +msgid "Mirror Distance:" +msgstr "" + +#: ../pybiklib/ui/preferences.py:32 +msgid "" +"Lower antialiasing means better performance, higher antialiasing means " +"better quality.\n" +"If animations are not smooth, you can adjust this setting. Afterwards you " +"have to restart the program." +msgstr "" + +#: ../pybiklib/ui/preferences.py:33 +msgid "Antialiasing" +msgstr "Reunojen pehmennys" + +#: ../pybiklib/ui/preferences.py:34 +msgid "Mouse" +msgstr "Hiiri" + +#: ../pybiklib/ui/preferences.py:35 +msgid "Four directions" +msgstr "" + +#: ../pybiklib/ui/preferences.py:36 +msgid "" +"Simplified,\n" +"right button inverts move" +msgstr "" + +#: ../pybiklib/ui/preferences.py:37 +msgid "Keys" +msgstr "" + +#: ../pybiklib/ui/preferences.py:38 ../pybiklib/ui/preferences.py:39 +msgid "Add" +msgstr "Lisää" + +#: ../pybiklib/ui/preferences.py:40 ../pybiklib/ui/preferences.py:41 +msgid "Remove" +msgstr "Poista" + +#: ../pybiklib/ui/preferences.py:42 ../pybiklib/ui/preferences.py:43 +msgid "Reset" +msgstr "" + +#: ../pybiklib/ui/preferences.py:44 +msgid "Appearance" +msgstr "Ulkoasu" + +#: ../pybiklib/ui/preferences.py:45 +msgid "Color:" +msgstr "Väri:" + +#: ../pybiklib/ui/preferences.py:46 +msgid "Image File:" +msgstr "Kuvatiedosto:" + +#: ../pybiklib/ui/preferences.py:47 +msgid "Tiled" +msgstr "" + +#: ../pybiklib/ui/preferences.py:48 +msgid "Mosaic" +msgstr "Mosaiikki" + +#: ../pybiklib/ui/preferences.py:49 +msgid "Background:" +msgstr "Tausta:" + +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. +#: ../data/applications/pybik.desktop.in.h:4 +msgid "rubik;cube;puzzle;magic;" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:19 +#: ../data/plugins/01-challenges.algorithm.py:22 +#: ../data/plugins/01-challenges.algorithm.py:25 +#: ../data/plugins/01-challenges.algorithm.py:28 +#: ../data/plugins/01-challenges.algorithm.py:31 +#: ../data/plugins/01-challenges.algorithm.py:34 +#: ../data/plugins/01-challenges.algorithm.py:37 +#: ../data/plugins/01-challenges.algorithm.py:40 +#: ../data/plugins/01-challenges.algorithm.py:43 +#: ../data/plugins/01-challenges.algorithm.py:46 +#: ../data/plugins/01-challenges.algorithm.py:49 +msgid "Challenges" +msgstr "Haasteet" + +#: ../data/plugins/01-challenges.algorithm.py:20 +msgid "Solve random cube" +msgstr "Ratkaise satunnainen kuutio" + +#: ../data/plugins/01-challenges.algorithm.py:23 +msgid "Solve in 1 move" +msgstr "Ratkaise yhdellä siirrolla" + +#: ../data/plugins/01-challenges.algorithm.py:26 +msgid "Solve in 2 moves" +msgstr "Ratkaise kahdella siirrolla" + +#: ../data/plugins/01-challenges.algorithm.py:29 +msgid "Solve in 3 moves" +msgstr "Ratkaise kolmella siirrolla" + +#: ../data/plugins/01-challenges.algorithm.py:32 +msgid "Solve in 4 moves" +msgstr "Ratkaise neljällä siirrolla" + +#: ../data/plugins/01-challenges.algorithm.py:35 +msgid "Solve in 5 moves" +msgstr "Ratkaise viidellä siirrolla" + +#: ../data/plugins/01-challenges.algorithm.py:38 +msgid "Solve in 6 moves" +msgstr "Ratkaise kuudella siirrolla" + +#: ../data/plugins/01-challenges.algorithm.py:41 +msgid "Solve in 7 moves" +msgstr "Ratkaise seitsemällä siirrolla" + +#: ../data/plugins/01-challenges.algorithm.py:44 +msgid "Solve in 8 moves" +msgstr "Ratkaise kahdeksalla siirrolla" + +#: ../data/plugins/01-challenges.algorithm.py:47 +msgid "Solve in 9 moves" +msgstr "Ratkaise yhdeksällä siirrolla" + +#: ../data/plugins/01-challenges.algorithm.py:50 +msgid "Solve in 10 moves" +msgstr "Ratkaise kymmenellä siirrolla" + +#: ../data/plugins/10-spiegel.algorithm.py:35 +#: ../data/plugins/10-spiegel.algorithm.py:38 +#: ../data/plugins/10-spiegel.algorithm.py:67 +#: ../data/plugins/10-spiegel.algorithm.py:88 +#: ../data/plugins/10-spiegel.algorithm.py:103 +#: ../data/plugins/10-spiegel.algorithm.py:116 +#: ../data/plugins/10-spiegel.algorithm.py:133 +#: ../data/plugins/10-spiegel.algorithm.py:144 +#: ../data/plugins/11-spiegel-improved.algorithm.py:35 +#: ../data/plugins/11-spiegel-improved.algorithm.py:38 +#: ../data/plugins/11-spiegel-improved.algorithm.py:83 +#: ../data/plugins/11-spiegel-improved.algorithm.py:122 +#: ../data/plugins/11-spiegel-improved.algorithm.py:154 +#: ../data/plugins/11-spiegel-improved.algorithm.py:180 +#: ../data/plugins/11-spiegel-improved.algorithm.py:198 +#: ../data/plugins/11-spiegel-improved.algorithm.py:212 +#: ../data/plugins/12-lbl-leyan.algorithm.py:22 +#: ../data/plugins/12-lbl-leyan.algorithm.py:25 +#: ../data/plugins/12-lbl-leyan.algorithm.py:54 +#: ../data/plugins/12-lbl-leyan.algorithm.py:75 +#: ../data/plugins/12-lbl-leyan.algorithm.py:91 +#: ../data/plugins/12-lbl-leyan.algorithm.py:108 +#: ../data/plugins/12-lbl-leyan.algorithm.py:130 +#: ../data/plugins/12-lbl-leyan.algorithm.py:171 +#: ../data/plugins/20-2x2x2.algorithm.py:19 +#: ../data/plugins/20-2x2x2.algorithm.py:22 +#: ../data/plugins/20-2x2x2.algorithm.py:41 +#: ../data/plugins/20-2x2x2.algorithm.py:61 +msgid "Solvers" +msgstr "Ratkaisijat" + +#. Spiegel is the name of a solution method +#: ../data/plugins/10-spiegel.algorithm.py:37 +#: ../data/plugins/10-spiegel.algorithm.py:39 +#: ../data/plugins/10-spiegel.algorithm.py:68 +#: ../data/plugins/10-spiegel.algorithm.py:89 +#: ../data/plugins/10-spiegel.algorithm.py:104 +#: ../data/plugins/10-spiegel.algorithm.py:117 +#: ../data/plugins/10-spiegel.algorithm.py:134 +#: ../data/plugins/10-spiegel.algorithm.py:145 +msgid "Spiegel" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:40 +#: ../data/plugins/11-spiegel-improved.algorithm.py:40 +#: ../data/plugins/12-lbl-leyan.algorithm.py:27 +msgid "Top edges" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:69 +#: ../data/plugins/11-spiegel-improved.algorithm.py:85 +#: ../data/plugins/12-lbl-leyan.algorithm.py:56 +msgid "Top corners" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:90 +#: ../data/plugins/11-spiegel-improved.algorithm.py:124 +#: ../data/plugins/12-lbl-leyan.algorithm.py:77 +msgid "Middle slice" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:105 +#: ../data/plugins/11-spiegel-improved.algorithm.py:156 +#: ../data/plugins/12-lbl-leyan.algorithm.py:173 +msgid "Bottom edge place" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:118 +#: ../data/plugins/11-spiegel-improved.algorithm.py:182 +#: ../data/plugins/12-lbl-leyan.algorithm.py:93 +msgid "Bottom edge orient" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:135 +#: ../data/plugins/11-spiegel-improved.algorithm.py:200 +#: ../data/plugins/12-lbl-leyan.algorithm.py:110 +#: ../data/plugins/20-2x2x2.algorithm.py:43 +msgid "Bottom corner place" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:146 +#: ../data/plugins/11-spiegel-improved.algorithm.py:214 +#: ../data/plugins/12-lbl-leyan.algorithm.py:132 +#: ../data/plugins/20-2x2x2.algorithm.py:63 +msgid "Bottom corner orient" +msgstr "" + +#. Spiegel is the name of a solution method +#: ../data/plugins/11-spiegel-improved.algorithm.py:37 +#: ../data/plugins/11-spiegel-improved.algorithm.py:39 +#: ../data/plugins/11-spiegel-improved.algorithm.py:84 +#: ../data/plugins/11-spiegel-improved.algorithm.py:123 +#: ../data/plugins/11-spiegel-improved.algorithm.py:155 +#: ../data/plugins/11-spiegel-improved.algorithm.py:181 +#: ../data/plugins/11-spiegel-improved.algorithm.py:199 +#: ../data/plugins/11-spiegel-improved.algorithm.py:213 +msgid "Spiegel improved" +msgstr "" + +#. Leyan Lo is the inventor of the solution method +#: ../data/plugins/12-lbl-leyan.algorithm.py:24 +#: ../data/plugins/12-lbl-leyan.algorithm.py:26 +#: ../data/plugins/12-lbl-leyan.algorithm.py:55 +#: ../data/plugins/12-lbl-leyan.algorithm.py:76 +#: ../data/plugins/12-lbl-leyan.algorithm.py:92 +#: ../data/plugins/12-lbl-leyan.algorithm.py:109 +#: ../data/plugins/12-lbl-leyan.algorithm.py:131 +#: ../data/plugins/12-lbl-leyan.algorithm.py:172 +msgid "Layer Method (Leyan Lo)" +msgstr "" + +#: ../data/plugins/20-2x2x2.algorithm.py:20 +#: ../data/plugins/20-2x2x2.algorithm.py:23 +#: ../data/plugins/20-2x2x2.algorithm.py:42 +#: ../data/plugins/20-2x2x2.algorithm.py:62 +msgid "2×2×2" +msgstr "2×2×2" + +#: ../data/plugins/20-2x2x2.algorithm.py:24 +msgid "Top slice" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:18 +#: ../data/plugins/80-pretty-patterns.algorithm.py:22 +#: ../data/plugins/80-pretty-patterns.algorithm.py:26 +#: ../data/plugins/80-pretty-patterns.algorithm.py:30 +#: ../data/plugins/80-pretty-patterns.algorithm.py:34 +#: ../data/plugins/80-pretty-patterns.algorithm.py:39 +#: ../data/plugins/80-pretty-patterns.algorithm.py:43 +#: ../data/plugins/80-pretty-patterns.algorithm.py:48 +#: ../data/plugins/80-pretty-patterns.algorithm.py:52 +#: ../data/plugins/80-pretty-patterns.algorithm.py:56 +#: ../data/plugins/80-pretty-patterns.algorithm.py:60 +#: ../data/plugins/80-pretty-patterns.algorithm.py:64 +#: ../data/plugins/80-pretty-patterns.algorithm.py:68 +#: ../data/plugins/80-pretty-patterns.algorithm.py:74 +#: ../data/plugins/80-pretty-patterns.algorithm.py:78 +#: ../data/plugins/80-pretty-patterns.algorithm.py:83 +#: ../data/plugins/80-pretty-patterns.algorithm.py:87 +#: ../data/plugins/80-pretty-patterns.algorithm.py:91 +#: ../data/plugins/80-pretty-patterns.algorithm.py:95 +#: ../data/plugins/80-pretty-patterns.algorithm.py:99 +#: ../data/plugins/80-pretty-patterns.algorithm.py:103 +#: ../data/plugins/80-pretty-patterns.algorithm.py:108 +#: ../data/plugins/80-pretty-patterns.algorithm.py:112 +#: ../data/plugins/80-pretty-patterns.algorithm.py:116 +#: ../data/plugins/80-pretty-patterns.algorithm.py:120 +#: ../data/plugins/80-pretty-patterns.algorithm.py:125 +#: ../data/plugins/80-pretty-patterns.algorithm.py:129 +#: ../data/plugins/80-pretty-patterns.algorithm.py:133 +#: ../data/plugins/80-pretty-patterns.algorithm.py:137 +#: ../data/plugins/80-pretty-patterns.algorithm.py:141 +msgid "Pretty patterns" +msgstr "Nätit kuviot" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:19 +#: ../data/plugins/80-pretty-patterns.algorithm.py:23 +#: ../data/plugins/80-pretty-patterns.algorithm.py:27 +#: ../data/plugins/80-pretty-patterns.algorithm.py:31 +#: ../data/plugins/80-pretty-patterns.algorithm.py:35 +#: ../data/plugins/80-pretty-patterns.algorithm.py:40 +#: ../data/plugins/80-pretty-patterns.algorithm.py:44 +msgid "Stripes" +msgstr "Raidat" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:49 +#: ../data/plugins/80-pretty-patterns.algorithm.py:53 +msgid "Criss-Cross" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:57 +msgid "Fried Eggs" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:61 +msgid "Big Fried Eggs" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:65 +msgid "4 Fried Eggs" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:69 +msgid "Chessboard" +msgstr "Shakkilauta" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:75 +msgid "Cross" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:79 +msgid "Zig Zag" +msgstr "" + +#. T is the shape formed by the cube labels +#: ../data/plugins/80-pretty-patterns.algorithm.py:85 +#: ../data/plugins/80-pretty-patterns.algorithm.py:88 +#: ../data/plugins/80-pretty-patterns.algorithm.py:92 +#: ../data/plugins/80-pretty-patterns.algorithm.py:96 +#: ../data/plugins/80-pretty-patterns.algorithm.py:100 +#: ../data/plugins/80-pretty-patterns.algorithm.py:104 +msgid "T-Time" +msgstr "" + +#. C is the shape formed by the cube labels +#: ../data/plugins/80-pretty-patterns.algorithm.py:110 +msgid "C" +msgstr "C" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:113 +msgid "Cube in a Cube" +msgstr "Kuutio kuutiossa" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:117 +msgid "Striped Cube in a Cube" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:121 +msgid "Six Square Cuboids" +msgstr "" + +#. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. +#: ../data/plugins/80-pretty-patterns.algorithm.py:127 +msgid "Superflip" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:130 +msgid "Superflip easy" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:134 +msgid "Green Mamba" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:138 +msgid "Anaconda" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:142 +msgid "Duck Feet" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:20 +#: ../data/plugins/90-library.algorithm.py:23 +#: ../data/plugins/90-library.algorithm.py:26 +#: ../data/plugins/90-library.algorithm.py:29 +#: ../data/plugins/90-library.algorithm.py:32 +#: ../data/plugins/90-library.algorithm.py:35 +#: ../data/plugins/90-library.algorithm.py:38 +#: ../data/plugins/90-library.algorithm.py:41 +#: ../data/plugins/90-library.algorithm.py:44 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 +msgid "Library" +msgstr "Kirjasto" + +#: ../data/plugins/90-library.algorithm.py:21 +#: ../data/plugins/90-library.algorithm.py:24 +msgid "Middle Layer" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:22 +msgid "Front to Right" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:25 +msgid "Front to Left" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:27 +#: ../data/plugins/90-library.algorithm.py:30 +#: ../data/plugins/90-library.algorithm.py:33 +#: ../data/plugins/90-library.algorithm.py:36 +msgid "Last Layer" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:28 +msgid "Swap Edges" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:31 +msgid "Flip Edges" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:34 +msgid "Swap Corners" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:37 +msgid "Rotate Corners" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:39 +#: ../data/plugins/90-library.algorithm.py:42 +#: ../data/plugins/90-library.algorithm.py:45 +msgid "Rotate Center" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:40 +msgid "2×Up" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:43 +msgid "Up and Front" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:46 +msgid "Up and Down" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 +msgid "Misc" +msgstr "" + +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 +msgid "Back without Back" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:54 +msgid "2×Back without Back" +msgstr "" diff -Nru pybik-1.1/po/fr.po pybik-1.1.1/po/fr.po --- pybik-1.1/po/fr.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/fr.po 2014-02-11 16:04:02.000000000 +0000 @@ -7,8 +7,8 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" -"PO-Revision-Date: 2013-06-09 12:53+0000\n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" +"PO-Revision-Date: 2014-01-27 23:06+0000\n" "Last-Translator: Célestin Taramarcaz \n" "Language-Team: French \n" "Language: fr\n" @@ -16,8 +16,8 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Launchpad-Export-Date: 2013-06-11 05:57+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-03 05:23+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" @@ -187,7 +187,7 @@ #: ../pybiklib/dialogs.py:332 msgid "Key" -msgstr "" +msgstr "Clé" #: ../pybiklib/dialogs.py:481 msgid "Open Image" @@ -221,27 +221,27 @@ "Une erreur s'est produite pendant la lecture des options :\n" "{error_message}" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" msgstr "" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" msgstr "" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" msgstr "Tour" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" msgstr "" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" msgstr "Cube" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" msgstr "" @@ -253,32 +253,37 @@ msgid "This algorithm only works for:\n" msgstr "Cet algorithme fonctionne seulement pour :\n" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" msgstr "Désactivé" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" msgstr "moche" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" msgstr "faible" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" msgstr "moyen" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" msgstr "élevé" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" msgstr "maximum" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" msgstr "Impossible d'écrire les paramètres dans le fichier : {error_message}" @@ -443,7 +448,7 @@ #: ../pybiklib/ui/main.py:68 msgid "Normalize Cube Rotations" -msgstr "" +msgstr "Normaliser les rotations du cube" #: ../pybiklib/ui/model.py:12 msgid "Select Model" @@ -550,7 +555,7 @@ msgid "Background:" msgstr "Arrière plan :" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;cube;casse-tête;magique;jeu;énigme;" @@ -776,7 +781,7 @@ #: ../data/plugins/80-pretty-patterns.algorithm.py:40 #: ../data/plugins/80-pretty-patterns.algorithm.py:44 msgid "Stripes" -msgstr "" +msgstr "Bandes" #: ../data/plugins/80-pretty-patterns.algorithm.py:49 #: ../data/plugins/80-pretty-patterns.algorithm.py:53 @@ -797,15 +802,15 @@ #: ../data/plugins/80-pretty-patterns.algorithm.py:69 msgid "Chessboard" -msgstr "" +msgstr "Échiquier" #: ../data/plugins/80-pretty-patterns.algorithm.py:75 msgid "Cross" -msgstr "" +msgstr "Croix" #: ../data/plugins/80-pretty-patterns.algorithm.py:79 msgid "Zig Zag" -msgstr "" +msgstr "Zig Zag" #. T is the shape formed by the cube labels #: ../data/plugins/80-pretty-patterns.algorithm.py:85 @@ -845,7 +850,7 @@ #: ../data/plugins/80-pretty-patterns.algorithm.py:134 msgid "Green Mamba" -msgstr "" +msgstr "Green Mamba" #: ../data/plugins/80-pretty-patterns.algorithm.py:138 msgid "Anaconda" @@ -853,7 +858,7 @@ #: ../data/plugins/80-pretty-patterns.algorithm.py:142 msgid "Duck Feet" -msgstr "" +msgstr "Duck Feet" #: ../data/plugins/90-library.algorithm.py:20 #: ../data/plugins/90-library.algorithm.py:23 @@ -864,8 +869,8 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" msgstr "Bibliothèque" @@ -923,15 +928,16 @@ msgid "Up and Down" msgstr "" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" msgstr "Divers" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" msgstr "" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" msgstr "" diff -Nru pybik-1.1/po/gl.po pybik-1.1.1/po/gl.po --- pybik-1.1/po/gl.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/gl.po 2014-02-11 16:04:02.000000000 +0000 @@ -7,8 +7,8 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" -"PO-Revision-Date: 2013-06-01 22:21+0000\n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" +"PO-Revision-Date: 2013-08-15 14:27+0000\n" "Last-Translator: Miguel Anxo Bouzada \n" "Language-Team: Galician \n" "Language: gl\n" @@ -16,8 +16,8 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Launchpad-Export-Date: 2013-06-11 05:57+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-03 05:23+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" @@ -85,7 +85,7 @@ "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details." msgstr "" -"Este programa é software lbre: vostede pode redistribuílo e/pu modificalo " +"Este programa é software lbre: vostede pode redistribuílo e/ou modificalo " "baixo os termos da Licenza Pública Xeral GNU, tal e como é publicada pola " "Free Software Foundation, na súa versión 3, ou (á súa elección) segundo unha " "versión posterior.\n" @@ -121,7 +121,7 @@ "can mark the bug report as \"Wishlist\"." msgstr "" "Se atopa algún erro no Pybik ou ten unha suxestión para melloralo, envíe un " -"<{CONTACT_FILEBUG}|>informe de erro<|>. Neste último caso se pode marcar o " +"<{CONTACT_FILEBUG}|>informe de erro<|>. Neste último caso se pode marque o " "informe de erro como «Wishlist» (Lista de desexos)." #: ../pybiklib/config.py:102 @@ -139,7 +139,7 @@ "As traducións son xestionadas polo Grupo de tradución de Launchpad<|>.\n" "\n" -"Se quere axudar na tradución do Pybik ao seu idioma pode facelos na interface web<|>.\n" "\n" "Bótelle unha ollada a \"Traducindo " @@ -227,27 +227,27 @@ "Produciuse un erro ao ler a configuración:\n" "{error_message}" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" msgstr "Ladrillo" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-ladrillo" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" msgstr "Torre" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" msgstr "{0}×{1}-torre" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" msgstr "Cubo" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-Cubo" @@ -259,32 +259,37 @@ msgid "This algorithm only works for:\n" msgstr "Este algoritmo só funciona para:\n" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" msgstr "desactivado" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" msgstr "pobre" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" msgstr "baixo" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" msgstr "medio" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" msgstr "alto" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" msgstr "moi alto" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" msgstr "Non foi posíbel gardar as configuracións no ficheiro: {error_message}" @@ -552,7 +557,7 @@ msgid "Background:" msgstr "Fondo:" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;cubo;quebracabezas;maxico;" @@ -866,8 +871,8 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" msgstr "Biblioteca" @@ -925,15 +930,16 @@ msgid "Up and Down" msgstr "Arriba e abaixo" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" msgstr "Miscelánea" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" msgstr "Atrás sen retorno" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" msgstr "2×atrás sen retorno" diff -Nru pybik-1.1/po/he.po pybik-1.1.1/po/he.po --- pybik-1.1/po/he.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/he.po 2014-02-11 16:04:02.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" "PO-Revision-Date: 2013-06-03 14:41+0000\n" "Last-Translator: Yaron \n" "Language-Team: Hebrew \n" @@ -16,8 +16,8 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Launchpad-Export-Date: 2013-06-11 05:58+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-03 05:23+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" @@ -224,27 +224,27 @@ "אירעה שגיאה בעת קריאת ההגדרות:\n" "{error_message}" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" msgstr "לבנה" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-לבנה" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" msgstr "מגדל" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" msgstr "{0}×{1}-מגדל" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" msgstr "קוביה" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-קוביה" @@ -256,32 +256,37 @@ msgid "This algorithm only works for:\n" msgstr "האלגוריתם הזה עובד רק עם:\n" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" msgstr "מנוטרל" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" msgstr "מכוער" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" msgstr "נמוך" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" msgstr "רגיל" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" msgstr "גבוה" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" msgstr "גבוה יותר" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" msgstr "לא ניתן לכתוב את ההגדרות לקובץ: {error_message}" @@ -549,7 +554,7 @@ msgid "Background:" msgstr "רקע:" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" msgstr "הונגרית;רוביק;תצרף;פאזל;פזל;קסם;טריק;" @@ -863,8 +868,8 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" msgstr "ספרייה" @@ -922,15 +927,16 @@ msgid "Up and Down" msgstr "למעלה ולמטה" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" msgstr "שונות" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" msgstr "גב ללא גב" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" msgstr "2×גב ללא גב" diff -Nru pybik-1.1/po/id.po pybik-1.1.1/po/id.po --- pybik-1.1/po/id.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/id.po 2014-02-11 16:04:02.000000000 +0000 @@ -7,16 +7,16 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" -"PO-Revision-Date: 2013-06-15 08:57+0000\n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" +"PO-Revision-Date: 2014-02-09 02:18+0000\n" "Last-Translator: Trisno Pamuji \n" "Language-Team: Indonesian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Launchpad-Export-Date: 2013-06-16 04:40+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-10 05:33+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" @@ -26,8 +26,7 @@ #: ../pybiklib/application.py:352 msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "{sekarang} / {total} gerakan" #. substitution for {solved_text} in statusbar text #: ../pybiklib/application.py:356 ../pybiklib/ui/model.py:16 @@ -195,27 +194,27 @@ "{error_message}" msgstr "" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" msgstr "" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" msgstr "" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" msgstr "" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" msgstr "" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" msgstr "" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" msgstr "" @@ -227,32 +226,37 @@ msgid "This algorithm only works for:\n" msgstr "" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" msgstr "" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" msgstr "" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" msgstr "" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" msgstr "" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" msgstr "" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" msgstr "" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" msgstr "" @@ -514,7 +518,7 @@ msgid "Background:" msgstr "" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" msgstr "" @@ -828,8 +832,8 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" msgstr "" @@ -887,15 +891,16 @@ msgid "Up and Down" msgstr "" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" msgstr "" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" msgstr "" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" msgstr "" diff -Nru pybik-1.1/po/it.po pybik-1.1.1/po/it.po --- pybik-1.1/po/it.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/it.po 2014-02-11 16:04:02.000000000 +0000 @@ -7,21 +7,21 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" -"PO-Revision-Date: 2013-06-15 16:05+0000\n" -"Last-Translator: Alfio Missaglia \n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" +"PO-Revision-Date: 2014-02-02 08:56+0000\n" +"Last-Translator: Gianfranco Frisani \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Launchpad-Export-Date: 2013-06-16 04:40+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-03 05:23+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" -msgstr "" +msgstr "Premi il tasto Esc per uscire dalla modalità Modifica" #. substitution for {move_text} in statusbar text #: ../pybiklib/application.py:352 @@ -66,6 +66,12 @@ "collection of various moves. The cube can be manipulated with the mouse or " "keyboard. You can change the colors or images on the faces of the cube." msgstr "" +"Pybik è un rompicapo per giocatore singolo interattivo e grafico sul cubo " +"inventato da Ernő Rubik. Oltre al cubo, il programma è in grado di gestire " +"torri e mattoni (rompicapo non cubici). Pybik ha anche risolutori, graziosi " +"modelli e una collezione di varie mosse. Il cubo può essere manipolato con " +"il mouse o con la tastiera. È possibile modificare i colori o le immagini " +"sulle facce del cubo." #: ../pybiklib/config.py:75 msgid "" @@ -79,6 +85,15 @@ "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details." msgstr "" +"Questo programma è un software libero; è possibile ridistribuirlo e/o " +"modificarlo secondo i termini della licenza GNU General Public License, come " +"pubblicata dalla Free Software Foundation; versione 3 della licenza, o (a " +"scelta) una versione più recente.\n" +"\n" +"Questo programma è distribuito nella speranza che possa risultare utile, ma " +"SENZA ALCUNA GARANZIA; nemmeno la garanzia implicita di COMMERCIABILITÀ o " +"APPLICABILITÀ PER UNO SCOPO PARTICOLARE. Per maggiori dettagli consultare la " +"GNU General Public License." #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. @@ -87,12 +102,17 @@ "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" +"Leggere il testo integrale della GNU General Public " +"License<|> o consultare consultare ." #: ../pybiklib/config.py:90 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" +"Una copia della GNU General Public License dovrebbe essere stata fornita con " +"questo programma. In caso contrario consultare ." #. "Wishlist" is used on Launchpad for Importance, so this word should probably not be translated #: ../pybiklib/config.py:96 @@ -101,6 +121,9 @@ "please submit a <{CONTACT_FILEBUG}|>bug report<|>. In the latter case you " "can mark the bug report as \"Wishlist\"." msgstr "" +"Se si trova un bug in Pybik o si ha un suggerimento per un miglioramento, è " +"possibile inviare un <{CONTACT_FILEBUG}|>bug report<|>. In quest'ultimo caso " +"è possibile contrassegnare il bug report come \"Wishlist\"." #: ../pybiklib/config.py:102 msgid "" @@ -114,6 +137,15 @@ "Launchpad\"<|> and \"Starting to translate\"<|>." msgstr "" +"Le traduzioni sono gestite dal gruppo di traduzione su Launchpad<|>.\n" +"\n" +"Per contribuire alla traduzione di Pybik nella propria lingua utilizzare " +"l'interfaccia web<|>.\n" +"\n" +"Per maggiori dettagli consultare " +"\"Translating with Launchpad\"<|> e \"Starting to translate\"<|>." #: ../pybiklib/dialogs.py:168 msgid "Press a key …" @@ -127,47 +159,47 @@ #. Only a single color, no picture or pattern #: ../pybiklib/dialogs.py:296 msgid "plain" -msgstr "" +msgstr "Semplice" #: ../pybiklib/dialogs.py:301 msgid "select …" -msgstr "" +msgstr "Seleziona ..." #: ../pybiklib/dialogs.py:313 msgid "Up" -msgstr "" +msgstr "Su" #: ../pybiklib/dialogs.py:313 msgid "Down" -msgstr "" +msgstr "Giù" #: ../pybiklib/dialogs.py:313 msgid "Left" -msgstr "" +msgstr "Sinistra" #: ../pybiklib/dialogs.py:313 msgid "Right" -msgstr "" +msgstr "Destra" #: ../pybiklib/dialogs.py:313 msgid "Front" -msgstr "" +msgstr "Davanti" #: ../pybiklib/dialogs.py:313 msgid "Back" -msgstr "" +msgstr "Dietro" #: ../pybiklib/dialogs.py:331 msgid "Move" -msgstr "" +msgstr "Muovi" #: ../pybiklib/dialogs.py:332 msgid "Key" -msgstr "" +msgstr "Tasto" #: ../pybiklib/dialogs.py:481 msgid "Open Image" -msgstr "" +msgstr "Apri immagine" #: ../pybiklib/dialogs.py:533 ../pybiklib/ui/model.py:13 msgid "Size:" @@ -175,7 +207,7 @@ #: ../pybiklib/dialogs.py:533 msgid "Basis:" -msgstr "" +msgstr "Base:" #: ../pybiklib/dialogs.py:533 msgid "Width:" @@ -183,7 +215,7 @@ #: ../pybiklib/dialogs.py:562 msgid "Canceling operation, please wait" -msgstr "" +msgstr "Annullamento dell'operazione, attendere" #: ../pybiklib/dialogs.py:634 msgid "Pybik project website" @@ -197,29 +229,29 @@ "Si è verificato un errore durante la lettura delle impostazioni:\n" "{error_message}" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" -msgstr "" +msgstr "Mattone" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" -msgstr "" +msgstr "{0}×{1}×{2}-Mattone" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" -msgstr "" +msgstr "Torre" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" -msgstr "" +msgstr "{0}×{1}-Torre" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" -msgstr "" +msgstr "Cubo" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" -msgstr "" +msgstr "{0}×{0}×{0}-Cubo" #: ../pybiklib/plugins.py:92 msgid "This algorithm does not work for any model.\n" @@ -229,32 +261,37 @@ msgid "This algorithm only works for:\n" msgstr "Questo algoritmo funziona solo per:\n" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" -msgstr "" +msgstr "Disabilitato" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" -msgstr "" +msgstr "Brutto" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" -msgstr "" +msgstr "Basso" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" -msgstr "" +msgstr "Medio" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" -msgstr "" +msgstr "Alto" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" -msgstr "" +msgstr "Massima" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" msgstr "Le impostazioni non possono essere scritte su file: {error_message}" @@ -276,7 +313,7 @@ #: ../pybiklib/ui/about.py:18 msgid "Translate" -msgstr "" +msgstr "Traduzioni" #: ../pybiklib/ui/about.py:19 msgid "License" @@ -300,11 +337,11 @@ #: ../pybiklib/ui/main.py:39 msgid "&New Random" -msgstr "" +msgstr "&Nuovo casuale" #: ../pybiklib/ui/main.py:40 msgid "Ne&w Solved" -msgstr "" +msgstr "N&uovo risolto" #: ../pybiklib/ui/main.py:41 msgid "&Quit" @@ -316,7 +353,7 @@ #: ../pybiklib/ui/main.py:43 msgid "&Set as Initial State" -msgstr "" +msgstr "&Imposta come stato iniziale" #: ../pybiklib/ui/main.py:44 msgid "&Reset Rotation" @@ -348,75 +385,75 @@ #: ../pybiklib/ui/main.py:51 msgid "Rewind" -msgstr "" +msgstr "Indietro" #: ../pybiklib/ui/main.py:52 msgid "Go to the previous mark (or the beginning) of the sequence of moves" -msgstr "" +msgstr "Vai al marcatore precedente (o all'inizio) della sequenza di mosse" #: ../pybiklib/ui/main.py:53 msgid "Previous" -msgstr "" +msgstr "Precedente" #: ../pybiklib/ui/main.py:54 msgid "Make one step backwards" -msgstr "" +msgstr "Passo indietro" #: ../pybiklib/ui/main.py:55 msgid "Stop" -msgstr "" +msgstr "Interrompi" #: ../pybiklib/ui/main.py:56 msgid "Stop running the sequence of moves" -msgstr "" +msgstr "Interrompe l'esecuzione della sequenza di mosse" #: ../pybiklib/ui/main.py:57 msgid "Play" -msgstr "" +msgstr "Riproduci" #: ../pybiklib/ui/main.py:58 msgid "Run forward through the sequence of moves" -msgstr "" +msgstr "Prosegue attraverso la sequenza di mosse" #: ../pybiklib/ui/main.py:59 msgid "Next" -msgstr "" +msgstr "Successiva" #: ../pybiklib/ui/main.py:60 msgid "Make one step forwards" -msgstr "" +msgstr "Passo in avanti" #: ../pybiklib/ui/main.py:61 msgid "Forward" -msgstr "" +msgstr "Avanti" #: ../pybiklib/ui/main.py:62 msgid "Go to the next mark (or the end) of the sequence of moves" -msgstr "" +msgstr "Vai alla prossimo marcatore (o alla fine) della sequenza di mosse" #: ../pybiklib/ui/main.py:63 msgid "Add Mark" -msgstr "" +msgstr "Aggiungi marcatore" #: ../pybiklib/ui/main.py:64 msgid "Mark the current place in the sequence of moves" -msgstr "" +msgstr "Segna la posizione corrente nella sequenza di mosse" #: ../pybiklib/ui/main.py:65 msgid "Remove Mark" -msgstr "" +msgstr "Rimuovi marcatore" #: ../pybiklib/ui/main.py:66 msgid "Remove the mark at the current place in the sequence of moves" -msgstr "" +msgstr "Rimuovi il marcatore nella posizione corrente nella sequenza di mosse" #: ../pybiklib/ui/main.py:67 msgid "&Edit Bar" -msgstr "" +msgstr "&Barra delle modifiche" #: ../pybiklib/ui/main.py:68 msgid "Normalize Cube Rotations" -msgstr "" +msgstr "Normalizza le rotazioni del cubo" #: ../pybiklib/ui/model.py:12 msgid "Select Model" @@ -440,15 +477,15 @@ #: ../pybiklib/ui/preferences.py:29 msgid "Animation Speed:" -msgstr "" +msgstr "Velocità animazione:" #: ../pybiklib/ui/preferences.py:30 msgid "Lighting" -msgstr "" +msgstr "Luminosità" #: ../pybiklib/ui/preferences.py:31 msgid "Mirror Distance:" -msgstr "" +msgstr "Distanza specchi:" #: ../pybiklib/ui/preferences.py:32 msgid "" @@ -457,6 +494,10 @@ "If animations are not smooth, you can adjust this setting. Afterwards you " "have to restart the program." msgstr "" +"Un minore antialiasing implica migliori prestazioni, con maggiore " +"antialiasing si ottiene una migliore qualità.\n" +"Se le animazioni non sono funzionanti, è possibile regolare questa " +"impostazione. riavviando il programma." #: ../pybiklib/ui/preferences.py:33 msgid "Antialiasing" @@ -475,6 +516,8 @@ "Simplified,\n" "right button inverts move" msgstr "" +"Semplificato.\n" +"Il pulsante destro inverte il movimento" #: ../pybiklib/ui/preferences.py:37 msgid "Keys" @@ -506,20 +549,20 @@ #: ../pybiklib/ui/preferences.py:47 msgid "Tiled" -msgstr "" +msgstr "Piastrellato" #: ../pybiklib/ui/preferences.py:48 msgid "Mosaic" -msgstr "" +msgstr "Mosaico" #: ../pybiklib/ui/preferences.py:49 msgid "Background:" msgstr "Sfondo:" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" -msgstr "" +msgstr "rubik;cubo;rompicapo;magico;" #: ../data/plugins/01-challenges.algorithm.py:19 #: ../data/plugins/01-challenges.algorithm.py:22 @@ -626,45 +669,45 @@ #: ../data/plugins/11-spiegel-improved.algorithm.py:40 #: ../data/plugins/12-lbl-leyan.algorithm.py:27 msgid "Top edges" -msgstr "" +msgstr "Bordi superiori" #: ../data/plugins/10-spiegel.algorithm.py:69 #: ../data/plugins/11-spiegel-improved.algorithm.py:85 #: ../data/plugins/12-lbl-leyan.algorithm.py:56 msgid "Top corners" -msgstr "" +msgstr "Angoli superiori" #: ../data/plugins/10-spiegel.algorithm.py:90 #: ../data/plugins/11-spiegel-improved.algorithm.py:124 #: ../data/plugins/12-lbl-leyan.algorithm.py:77 msgid "Middle slice" -msgstr "" +msgstr "Strato intermedio" #: ../data/plugins/10-spiegel.algorithm.py:105 #: ../data/plugins/11-spiegel-improved.algorithm.py:156 #: ../data/plugins/12-lbl-leyan.algorithm.py:173 msgid "Bottom edge place" -msgstr "" +msgstr "Bordi inferiori" #: ../data/plugins/10-spiegel.algorithm.py:118 #: ../data/plugins/11-spiegel-improved.algorithm.py:182 #: ../data/plugins/12-lbl-leyan.algorithm.py:93 msgid "Bottom edge orient" -msgstr "" +msgstr "Orientamento bordi inferiori" #: ../data/plugins/10-spiegel.algorithm.py:135 #: ../data/plugins/11-spiegel-improved.algorithm.py:200 #: ../data/plugins/12-lbl-leyan.algorithm.py:110 #: ../data/plugins/20-2x2x2.algorithm.py:43 msgid "Bottom corner place" -msgstr "" +msgstr "Angoli inferiori" #: ../data/plugins/10-spiegel.algorithm.py:146 #: ../data/plugins/11-spiegel-improved.algorithm.py:214 #: ../data/plugins/12-lbl-leyan.algorithm.py:132 #: ../data/plugins/20-2x2x2.algorithm.py:63 msgid "Bottom corner orient" -msgstr "" +msgstr "Orientameto angoli inferiori" #. Spiegel is the name of a solution method #: ../data/plugins/11-spiegel-improved.algorithm.py:37 @@ -688,7 +731,7 @@ #: ../data/plugins/12-lbl-leyan.algorithm.py:131 #: ../data/plugins/12-lbl-leyan.algorithm.py:172 msgid "Layer Method (Leyan Lo)" -msgstr "" +msgstr "Metodo Layer (Leyan Lo)" #: ../data/plugins/20-2x2x2.algorithm.py:20 #: ../data/plugins/20-2x2x2.algorithm.py:23 @@ -699,7 +742,7 @@ #: ../data/plugins/20-2x2x2.algorithm.py:24 msgid "Top slice" -msgstr "" +msgstr "Strato superiore" #: ../data/plugins/80-pretty-patterns.algorithm.py:18 #: ../data/plugins/80-pretty-patterns.algorithm.py:22 @@ -732,7 +775,7 @@ #: ../data/plugins/80-pretty-patterns.algorithm.py:137 #: ../data/plugins/80-pretty-patterns.algorithm.py:141 msgid "Pretty patterns" -msgstr "" +msgstr "Modelli graziosi" #: ../data/plugins/80-pretty-patterns.algorithm.py:19 #: ../data/plugins/80-pretty-patterns.algorithm.py:23 @@ -742,36 +785,36 @@ #: ../data/plugins/80-pretty-patterns.algorithm.py:40 #: ../data/plugins/80-pretty-patterns.algorithm.py:44 msgid "Stripes" -msgstr "" +msgstr "Strisce" #: ../data/plugins/80-pretty-patterns.algorithm.py:49 #: ../data/plugins/80-pretty-patterns.algorithm.py:53 msgid "Criss-Cross" -msgstr "" +msgstr "Incrociato" #: ../data/plugins/80-pretty-patterns.algorithm.py:57 msgid "Fried Eggs" -msgstr "" +msgstr "Uova Fritte" #: ../data/plugins/80-pretty-patterns.algorithm.py:61 msgid "Big Fried Eggs" -msgstr "" +msgstr "Grandi uova fritte" #: ../data/plugins/80-pretty-patterns.algorithm.py:65 msgid "4 Fried Eggs" -msgstr "" +msgstr "4 uova fritte" #: ../data/plugins/80-pretty-patterns.algorithm.py:69 msgid "Chessboard" -msgstr "" +msgstr "Scacchiera" #: ../data/plugins/80-pretty-patterns.algorithm.py:75 msgid "Cross" -msgstr "" +msgstr "Croce" #: ../data/plugins/80-pretty-patterns.algorithm.py:79 msgid "Zig Zag" -msgstr "" +msgstr "Zig Zag" #. T is the shape formed by the cube labels #: ../data/plugins/80-pretty-patterns.algorithm.py:85 @@ -781,45 +824,45 @@ #: ../data/plugins/80-pretty-patterns.algorithm.py:100 #: ../data/plugins/80-pretty-patterns.algorithm.py:104 msgid "T-Time" -msgstr "" +msgstr "T" #. C is the shape formed by the cube labels #: ../data/plugins/80-pretty-patterns.algorithm.py:110 msgid "C" -msgstr "" +msgstr "C" #: ../data/plugins/80-pretty-patterns.algorithm.py:113 msgid "Cube in a Cube" -msgstr "" +msgstr "Cubo in Cubo" #: ../data/plugins/80-pretty-patterns.algorithm.py:117 msgid "Striped Cube in a Cube" -msgstr "" +msgstr "Cubo a righe in un Cubo" #: ../data/plugins/80-pretty-patterns.algorithm.py:121 msgid "Six Square Cuboids" -msgstr "" +msgstr "Cuboide a sei quadrati" #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: ../data/plugins/80-pretty-patterns.algorithm.py:127 msgid "Superflip" -msgstr "" +msgstr "Salto mortale" #: ../data/plugins/80-pretty-patterns.algorithm.py:130 msgid "Superflip easy" -msgstr "" +msgstr "Salto mortale facile" #: ../data/plugins/80-pretty-patterns.algorithm.py:134 msgid "Green Mamba" -msgstr "" +msgstr "Mamba verde" #: ../data/plugins/80-pretty-patterns.algorithm.py:138 msgid "Anaconda" -msgstr "" +msgstr "Anaconda" #: ../data/plugins/80-pretty-patterns.algorithm.py:142 msgid "Duck Feet" -msgstr "" +msgstr "Piede d'anatra" #: ../data/plugins/90-library.algorithm.py:20 #: ../data/plugins/90-library.algorithm.py:23 @@ -830,74 +873,75 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" -msgstr "" +msgstr "Libreria" #: ../data/plugins/90-library.algorithm.py:21 #: ../data/plugins/90-library.algorithm.py:24 msgid "Middle Layer" -msgstr "" +msgstr "Strato medio" #: ../data/plugins/90-library.algorithm.py:22 msgid "Front to Right" -msgstr "" +msgstr "Avanti a destra" #: ../data/plugins/90-library.algorithm.py:25 msgid "Front to Left" -msgstr "" +msgstr "Avanti a sinistra" #: ../data/plugins/90-library.algorithm.py:27 #: ../data/plugins/90-library.algorithm.py:30 #: ../data/plugins/90-library.algorithm.py:33 #: ../data/plugins/90-library.algorithm.py:36 msgid "Last Layer" -msgstr "" +msgstr "Ultimo strato" #: ../data/plugins/90-library.algorithm.py:28 msgid "Swap Edges" -msgstr "" +msgstr "Scambia bordi" #: ../data/plugins/90-library.algorithm.py:31 msgid "Flip Edges" -msgstr "" +msgstr "Capovolgi bordi" #: ../data/plugins/90-library.algorithm.py:34 msgid "Swap Corners" -msgstr "" +msgstr "Scambia angoli" #: ../data/plugins/90-library.algorithm.py:37 msgid "Rotate Corners" -msgstr "" +msgstr "Ruota angoli" #: ../data/plugins/90-library.algorithm.py:39 #: ../data/plugins/90-library.algorithm.py:42 #: ../data/plugins/90-library.algorithm.py:45 msgid "Rotate Center" -msgstr "" +msgstr "Ruota centro" #: ../data/plugins/90-library.algorithm.py:40 msgid "2×Up" -msgstr "" +msgstr "2×Su" #: ../data/plugins/90-library.algorithm.py:43 msgid "Up and Front" -msgstr "" +msgstr "Davanti e su" #: ../data/plugins/90-library.algorithm.py:46 msgid "Up and Down" -msgstr "" +msgstr "Su e giù" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" -msgstr "" +msgstr "Varie" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" -msgstr "" +msgstr "Dietro senza Dietro" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" -msgstr "" +msgstr "2xDietro senza Dietro" diff -Nru pybik-1.1/po/ja.po pybik-1.1.1/po/ja.po --- pybik-1.1/po/ja.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/ja.po 2014-02-11 16:04:02.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" "PO-Revision-Date: 2013-06-10 04:36+0000\n" "Last-Translator: epii \n" "Language-Team: Japanese \n" @@ -15,8 +15,8 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Launchpad-Export-Date: 2013-06-11 05:58+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-03 05:23+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" @@ -196,27 +196,27 @@ "設定の読込中にエラーが発生しました:\n" "{error_message}" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" msgstr "" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" msgstr "" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" msgstr "" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" msgstr "" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" msgstr "" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" msgstr "" @@ -228,32 +228,37 @@ msgid "This algorithm only works for:\n" msgstr "" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" msgstr "" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" msgstr "" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" msgstr "" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" msgstr "" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" msgstr "" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" msgstr "" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" msgstr "" @@ -515,7 +520,7 @@ msgid "Background:" msgstr "" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" msgstr "" @@ -829,8 +834,8 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" msgstr "" @@ -888,15 +893,16 @@ msgid "Up and Down" msgstr "" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" msgstr "" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" msgstr "" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" msgstr "" diff -Nru pybik-1.1/po/ky.po pybik-1.1.1/po/ky.po --- pybik-1.1/po/ky.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/ky.po 2014-02-11 16:04:02.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" "PO-Revision-Date: 2012-12-14 10:00+0000\n" "Last-Translator: ballpen \n" "Language-Team: Kirghiz \n" @@ -16,8 +16,8 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Launchpad-Export-Date: 2013-06-11 05:58+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-03 05:23+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" @@ -194,27 +194,27 @@ "{error_message}" msgstr "" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" msgstr "" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" msgstr "" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" msgstr "" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" msgstr "" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" msgstr "Куб" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" msgstr "" @@ -226,32 +226,37 @@ msgid "This algorithm only works for:\n" msgstr "" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" msgstr "" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" msgstr "" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" msgstr "" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" msgstr "" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" msgstr "" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" msgstr "" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" msgstr "" @@ -515,7 +520,7 @@ msgid "Background:" msgstr "Фон:" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" msgstr "" @@ -829,8 +834,8 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" msgstr "" @@ -888,15 +893,16 @@ msgid "Up and Down" msgstr "" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" msgstr "" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" msgstr "" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" msgstr "" diff -Nru pybik-1.1/po/ms.po pybik-1.1.1/po/ms.po --- pybik-1.1/po/ms.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/ms.po 2014-02-11 16:04:02.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" "PO-Revision-Date: 2013-06-15 12:23+0000\n" "Last-Translator: abuyop \n" "Language-Team: Malay \n" @@ -16,8 +16,8 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Launchpad-Export-Date: 2013-06-16 04:40+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-03 05:23+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" @@ -228,27 +228,27 @@ "Ralat berlaku semasa membaca tetapan:\n" "{error_message}" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" msgstr "Bata" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" msgstr "Bata-{0}×{1}×{2}" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" msgstr "Menara" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" msgstr "Menara-{0}×{1}" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" msgstr "Kiub" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" msgstr "Kiub-{0}×{0}×{0}" @@ -260,32 +260,37 @@ msgid "This algorithm only works for:\n" msgstr "Algoritma ini hanya berfungsi untuk:\n" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" msgstr "dilumpuhkan" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" msgstr "buruk" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" msgstr "rendah" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" msgstr "sederhana" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" msgstr "tinggi" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" msgstr "lebih tinggi" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" msgstr "Tetapan tidak dapat ditulis ke fail: {error_message}" @@ -553,7 +558,7 @@ msgid "Background:" msgstr "Latar Belakang:" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;kuib;teka-teki;magik;" @@ -867,8 +872,8 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" msgstr "Pustaka" @@ -926,15 +931,16 @@ msgid "Up and Down" msgstr "Naik dan Turun" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" msgstr "Pelbagai" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" msgstr "Belakang tanpa Undur" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" msgstr "2xUndur tanpa Belakang" diff -Nru pybik-1.1/po/pl.po pybik-1.1.1/po/pl.po --- pybik-1.1/po/pl.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/pl.po 2014-02-11 16:04:02.000000000 +0000 @@ -7,17 +7,17 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" -"PO-Revision-Date: 2013-06-15 11:18+0000\n" -"Last-Translator: Szymon Nieznański \n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" +"PO-Revision-Date: 2013-06-27 12:09+0000\n" +"Last-Translator: Michał Rzepiński \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" -"X-Launchpad-Export-Date: 2013-06-16 04:40+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-03 05:23+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" @@ -86,6 +86,17 @@ "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details." msgstr "" +"Ten program jest wolnym oprogramowaniem: możesz go redystrybuować i/lub " +"modyfikować zgodnie z warunkami GNU General Public License opublikowanej " +"przez Free Software Foundation (Fundacja Wolnego Oprogramowania), w wersji 3 " +"lub (wedle Twojego uznania) każdej poprzedniej wersji.\n" +"\n" +"Ten program jest dystrybuowany w nadziei, iż będzie użyteczny, lecz NIE " +"POSIADA ŻADNEJ GWARANCJI; nie posiada \"dorozumianej gwarancji przydatności " +"do sprzedaży\" (IMPLIED WARRANTY OF MERCHANTABILITY) ani \"dorozumianej " +"gwarancji przydatności do określonego celu\" (IMPLIED WARRANTY OF FITNESS " +"FOR A PARTICULAR PURPOSE). By poznać szczegóły, zajrzyj do dokumentacji GNU " +"General Public License." #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. @@ -131,6 +142,17 @@ "\"Starting to " "translate\"<|>." msgstr "" +"Tłumaczenia są zarządzane przez: " +"Launchpad " +"translation group<|>.\n" +"\n" +"Jeśli chcesz pomóc przetłumaczyć Pybik na Twój język, możesz to zrobić " +"poprzez interfejs sieciowy<|>.\n" +"\n" +"Przeczytaj więcej o \"Translating " +"with Launchpad\" (Tłumaczenie z Launchpadem)<|> oraz " +"\"Starting to " +"translate\" (Zaczynanie tłumaczenia)<|>." #: ../pybiklib/dialogs.py:168 msgid "Press a key …" @@ -179,7 +201,7 @@ #: ../pybiklib/dialogs.py:332 msgid "Key" -msgstr "" +msgstr "Klucz" #: ../pybiklib/dialogs.py:481 msgid "Open Image" @@ -213,27 +235,27 @@ "Wystąpił błąd podczas wczytywania ustawień:\n" "{error_message}" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" msgstr "Klocek" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-Klocek" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" msgstr "Wieża" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" msgstr "{0}×{1}-Wieża" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" msgstr "Kostka" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-Kostka" @@ -245,32 +267,37 @@ msgid "This algorithm only works for:\n" msgstr "Ten algorytm działa tylko dla:\n" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" msgstr "wyłączony" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" msgstr "brzydki" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" msgstr "niski" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" msgstr "średni" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" msgstr "wysoki" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" msgstr "wyższy" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" msgstr "Nie można zapisać ustawień do pliku: {error_message}" @@ -400,7 +427,7 @@ #: ../pybiklib/ui/main.py:60 msgid "Make one step forwards" -msgstr "" +msgstr "Zrób jeden krok do przodu" #: ../pybiklib/ui/main.py:61 msgid "Forward" @@ -528,17 +555,17 @@ #: ../pybiklib/ui/preferences.py:47 msgid "Tiled" -msgstr "" +msgstr "Kafelki" #: ../pybiklib/ui/preferences.py:48 msgid "Mosaic" -msgstr "" +msgstr "Mozaika" #: ../pybiklib/ui/preferences.py:49 msgid "Background:" msgstr "Tło:" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" msgstr "rubik,kostka,puzzle,łamigłówka,magiczna" @@ -642,7 +669,7 @@ #: ../data/plugins/10-spiegel.algorithm.py:134 #: ../data/plugins/10-spiegel.algorithm.py:145 msgid "Spiegel" -msgstr "" +msgstr "Metoda Spiegel" #: ../data/plugins/10-spiegel.algorithm.py:40 #: ../data/plugins/11-spiegel-improved.algorithm.py:40 @@ -698,7 +725,7 @@ #: ../data/plugins/11-spiegel-improved.algorithm.py:199 #: ../data/plugins/11-spiegel-improved.algorithm.py:213 msgid "Spiegel improved" -msgstr "" +msgstr "Ulepszona metoda Spiegel" #. Leyan Lo is the inventor of the solution method #: ../data/plugins/12-lbl-leyan.algorithm.py:24 @@ -710,7 +737,7 @@ #: ../data/plugins/12-lbl-leyan.algorithm.py:131 #: ../data/plugins/12-lbl-leyan.algorithm.py:172 msgid "Layer Method (Leyan Lo)" -msgstr "" +msgstr "Metoda Layer (twórca: Leyan Lo)" #: ../data/plugins/20-2x2x2.algorithm.py:20 #: ../data/plugins/20-2x2x2.algorithm.py:23 @@ -808,7 +835,7 @@ #. C is the shape formed by the cube labels #: ../data/plugins/80-pretty-patterns.algorithm.py:110 msgid "C" -msgstr "" +msgstr "C" #: ../data/plugins/80-pretty-patterns.algorithm.py:113 msgid "Cube in a Cube" @@ -825,11 +852,11 @@ #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: ../data/plugins/80-pretty-patterns.algorithm.py:127 msgid "Superflip" -msgstr "" +msgstr "Superflip" #: ../data/plugins/80-pretty-patterns.algorithm.py:130 msgid "Superflip easy" -msgstr "" +msgstr "Superflip łatwy" #: ../data/plugins/80-pretty-patterns.algorithm.py:134 msgid "Green Mamba" @@ -852,8 +879,8 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" msgstr "Biblioteka" @@ -911,15 +938,16 @@ msgid "Up and Down" msgstr "" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" msgstr "" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" msgstr "" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" msgstr "" diff -Nru pybik-1.1/po/pt_BR.po pybik-1.1.1/po/pt_BR.po --- pybik-1.1/po/pt_BR.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/pt_BR.po 2014-02-11 16:04:02.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" "PO-Revision-Date: 2012-12-14 14:05+0000\n" "Last-Translator: Rafael Neri \n" "Language-Team: Brazilian Portuguese \n" @@ -16,8 +16,8 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Launchpad-Export-Date: 2013-06-11 05:58+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-03 05:24+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" @@ -199,27 +199,27 @@ "{error_message}" msgstr "" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" msgstr "Tijolo" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" msgstr "" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" msgstr "Torre" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" msgstr "" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" msgstr "Cubo" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" msgstr "" @@ -231,32 +231,37 @@ msgid "This algorithm only works for:\n" msgstr "" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" msgstr "" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" msgstr "" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" msgstr "" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" msgstr "" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" msgstr "" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" msgstr "" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" msgstr "Não foi possível gravar as configurações no arquivo: {error_message}" @@ -520,7 +525,7 @@ msgid "Background:" msgstr "Plano de fundo:" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" msgstr "" @@ -834,8 +839,8 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" msgstr "Biblioteca" @@ -893,15 +898,16 @@ msgid "Up and Down" msgstr "" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" msgstr "Diversos" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" msgstr "" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" msgstr "" diff -Nru pybik-1.1/po/ru.po pybik-1.1.1/po/ru.po --- pybik-1.1/po/ru.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/ru.po 2014-02-11 16:04:02.000000000 +0000 @@ -7,9 +7,9 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" -"PO-Revision-Date: 2013-06-15 09:25+0000\n" -"Last-Translator: Oleg Koptev \n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" +"PO-Revision-Date: 2014-02-11 04:37+0000\n" +"Last-Translator: Rashid Aliyev \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" @@ -17,8 +17,8 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Launchpad-Export-Date: 2013-06-16 04:40+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-11 05:57+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" @@ -68,6 +68,12 @@ "collection of various moves. The cube can be manipulated with the mouse or " "keyboard. You can change the colors or images on the faces of the cube." msgstr "" +"Pybik — это интерактивная графическая головоломка для одного игрока, " +"основанная на игре, изобретённой Эрне Рубиком. Кроме кубика Рубика, " +"позволяет играть с некубическими головоломками (башнями и блоками). В Pybik " +"также имеются автоматические решатели головоломок, сборка красивых узоров и " +"коллекция различных вращений. Кубиком можно управлять с помощью мыши или " +"клавиатуры. Цвета граней куба или изображения на них можно менять." #: ../pybiklib/config.py:75 msgid "" @@ -81,6 +87,15 @@ "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details." msgstr "" +"Это свободное программное обеспечение: его можно распространять и/или " +"изменять на условиях GNU General Public License, опубликованной Free " +"Software Foundation; либо версии 3 этой лицензии, либо (на ваш выбор) любой " +"более поздней версии.\n" +"\n" +"Программа распространяется в надежде, что она будет полезной, но БЕЗ КАКОЙ " +"ЛИБО ГАРАНТИИ, даже без обязательной гарантии КОМЕРЧЕСКОЙ ЦЕННОСТИ ИЛИ " +"ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННОЙ ЦЕЛИ. Подробности смотрите в тексте GNU General " +"Public License." #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. @@ -107,6 +122,9 @@ "please submit a <{CONTACT_FILEBUG}|>bug report<|>. In the latter case you " "can mark the bug report as \"Wishlist\"." msgstr "" +"Если вы обнаружили ошибку в Pybik или у вас есть предложение по улучшению " +"программы, отправьте, пожалуйста <{CONTACT_FILEBUG}|>отчёт об ошибке<|>. В " +"последнем случае можете снабдить отчёт об ошибке пометкой \"Wishlist\"." #: ../pybiklib/config.py:102 msgid "" @@ -141,190 +159,197 @@ #. Only a single color, no picture or pattern #: ../pybiklib/dialogs.py:296 msgid "plain" -msgstr "" +msgstr "нет" #: ../pybiklib/dialogs.py:301 msgid "select …" -msgstr "" +msgstr "выбрать …" #: ../pybiklib/dialogs.py:313 msgid "Up" -msgstr "" +msgstr "Верхняя" #: ../pybiklib/dialogs.py:313 msgid "Down" -msgstr "" +msgstr "Нижняя" #: ../pybiklib/dialogs.py:313 msgid "Left" -msgstr "" +msgstr "Левая" #: ../pybiklib/dialogs.py:313 msgid "Right" -msgstr "" +msgstr "Правая" #: ../pybiklib/dialogs.py:313 msgid "Front" -msgstr "" +msgstr "Передняя" #: ../pybiklib/dialogs.py:313 msgid "Back" -msgstr "" +msgstr "Задняя" #: ../pybiklib/dialogs.py:331 msgid "Move" -msgstr "" +msgstr "Перемещение" #: ../pybiklib/dialogs.py:332 msgid "Key" -msgstr "" +msgstr "Клавиша" #: ../pybiklib/dialogs.py:481 msgid "Open Image" -msgstr "" +msgstr "Открыть изображение" #: ../pybiklib/dialogs.py:533 ../pybiklib/ui/model.py:13 msgid "Size:" -msgstr "" +msgstr "Размер:" #: ../pybiklib/dialogs.py:533 msgid "Basis:" -msgstr "" +msgstr "Основание:" #: ../pybiklib/dialogs.py:533 msgid "Width:" -msgstr "" +msgstr "Ширина:" #: ../pybiklib/dialogs.py:562 msgid "Canceling operation, please wait" -msgstr "" +msgstr "Отмена операции, подождите" #: ../pybiklib/dialogs.py:634 msgid "Pybik project website" -msgstr "" +msgstr "Сайт проекта Pybik" #: ../pybiklib/main.py:230 msgid "" "An error occurred while reading the settings:\n" "{error_message}" msgstr "" +"Произошла ошибка при чтении настроек:\n" +"{error_message}" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" -msgstr "" +msgstr "Блок" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" -msgstr "" +msgstr "{0}×{1}×{2}-Блок" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" -msgstr "" +msgstr "Башня" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" -msgstr "" +msgstr "{0}×{1}-Башня" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" -msgstr "" +msgstr "Куб" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" -msgstr "" +msgstr "{0}×{0}×{0}-Куб" #: ../pybiklib/plugins.py:92 msgid "This algorithm does not work for any model.\n" -msgstr "" +msgstr "Этот алгоритм подходит не для всех моделей.\n" #: ../pybiklib/plugins.py:94 ../pybiklib/plugins.py:97 msgid "This algorithm only works for:\n" -msgstr "" +msgstr "Этот алгоритм подходит только для:\n" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" -msgstr "" +msgstr "отключено" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" -msgstr "" +msgstr "ужасное" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" -msgstr "" +msgstr "низкое" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" -msgstr "" +msgstr "среднее" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" -msgstr "" +msgstr "высокое" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" -msgstr "" +msgstr "максимальное" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" -msgstr "" +msgstr "Не удалось записать настройки в файл: {error_message}" #: ../pybiklib/ui/about.py:14 msgid "About Pybik" -msgstr "" +msgstr "Об игре Pybik" #: ../pybiklib/ui/about.py:15 msgid "About" -msgstr "" +msgstr "О программе" #: ../pybiklib/ui/about.py:16 msgid "Translators:" -msgstr "" +msgstr "Переводчики:" #: ../pybiklib/ui/about.py:17 msgid "Feedback" -msgstr "" +msgstr "Обратная связь" #: ../pybiklib/ui/about.py:18 msgid "Translate" -msgstr "" +msgstr "Перевод" #: ../pybiklib/ui/about.py:19 msgid "License" -msgstr "" +msgstr "Лицензия" #: ../pybiklib/ui/main.py:35 msgid "&Game" -msgstr "" +msgstr "&Игра" #: ../pybiklib/ui/main.py:36 msgid "&Edit" -msgstr "" +msgstr "&Правка" #: ../pybiklib/ui/main.py:37 msgid "&View" -msgstr "" +msgstr "&Вид" #: ../pybiklib/ui/main.py:38 msgid "&Help" -msgstr "" +msgstr "&Справка" #: ../pybiklib/ui/main.py:39 msgid "&New Random" -msgstr "" +msgstr "&Новая случайная" #: ../pybiklib/ui/main.py:40 msgid "Ne&w Solved" -msgstr "" +msgstr "Н&овая собранная" #: ../pybiklib/ui/main.py:41 msgid "&Quit" -msgstr "" +msgstr "В&ыйти" #: ../pybiklib/ui/main.py:42 msgid "&Select Model …" -msgstr "" +msgstr "&Выбрать модель …" #: ../pybiklib/ui/main.py:43 msgid "&Set as Initial State" @@ -332,135 +357,135 @@ #: ../pybiklib/ui/main.py:44 msgid "&Reset Rotation" -msgstr "" +msgstr "&Обнулить поворот" #: ../pybiklib/ui/main.py:45 msgid "&Invert Moves" -msgstr "" +msgstr "&Инвертировать ходы" #: ../pybiklib/ui/main.py:46 msgid "Reload Plugins" -msgstr "" +msgstr "Перезагрузить плагины" #: ../pybiklib/ui/main.py:47 msgid "&Preferences …" -msgstr "" +msgstr "&Настройки…" #: ../pybiklib/ui/main.py:48 msgid "&Toolbar" -msgstr "" +msgstr "&Панель инструментов" #: ../pybiklib/ui/main.py:49 msgid "&Status Bar" -msgstr "" +msgstr "&Строка состояния" #: ../pybiklib/ui/main.py:50 msgid "&Info …" -msgstr "" +msgstr "&Информация …" #: ../pybiklib/ui/main.py:51 msgid "Rewind" -msgstr "" +msgstr "Назад" #: ../pybiklib/ui/main.py:52 msgid "Go to the previous mark (or the beginning) of the sequence of moves" -msgstr "" +msgstr "Перейти к предыдущей метке (или началу) последовательности вращений" #: ../pybiklib/ui/main.py:53 msgid "Previous" -msgstr "" +msgstr "Предыдущее" #: ../pybiklib/ui/main.py:54 msgid "Make one step backwards" -msgstr "" +msgstr "Вернуться на шаг назад" #: ../pybiklib/ui/main.py:55 msgid "Stop" -msgstr "" +msgstr "Стоп" #: ../pybiklib/ui/main.py:56 msgid "Stop running the sequence of moves" -msgstr "" +msgstr "Остановить выполнение последовательности вращений" #: ../pybiklib/ui/main.py:57 msgid "Play" -msgstr "" +msgstr "Воспроизвести" #: ../pybiklib/ui/main.py:58 msgid "Run forward through the sequence of moves" -msgstr "" +msgstr "Воспроизвести последовательность вращений" #: ../pybiklib/ui/main.py:59 msgid "Next" -msgstr "" +msgstr "Следующее" #: ../pybiklib/ui/main.py:60 msgid "Make one step forwards" -msgstr "" +msgstr "Перейти на шаг вперёд" #: ../pybiklib/ui/main.py:61 msgid "Forward" -msgstr "" +msgstr "Вперёд" #: ../pybiklib/ui/main.py:62 msgid "Go to the next mark (or the end) of the sequence of moves" -msgstr "" +msgstr "Перейти к следующей метке (или концу) последовательности вращений" #: ../pybiklib/ui/main.py:63 msgid "Add Mark" -msgstr "" +msgstr "Добавить метку" #: ../pybiklib/ui/main.py:64 msgid "Mark the current place in the sequence of moves" -msgstr "" +msgstr "Пометить текущую позицию в последовательности вращений" #: ../pybiklib/ui/main.py:65 msgid "Remove Mark" -msgstr "" +msgstr "Удалить метку" #: ../pybiklib/ui/main.py:66 msgid "Remove the mark at the current place in the sequence of moves" -msgstr "" +msgstr "Убрать метку из текущей позиции в последовательности вращений" #: ../pybiklib/ui/main.py:67 msgid "&Edit Bar" -msgstr "" +msgstr "П&анель редактирования" #: ../pybiklib/ui/main.py:68 msgid "Normalize Cube Rotations" -msgstr "" +msgstr "Нормализовать вращение куба" #: ../pybiklib/ui/model.py:12 msgid "Select Model" -msgstr "" +msgstr "Выберите модель" #: ../pybiklib/ui/model.py:14 msgid "Height:" -msgstr "" +msgstr "Высота:" #: ../pybiklib/ui/model.py:15 msgid "Depth:" -msgstr "" +msgstr "Глубина:" #: ../pybiklib/ui/preferences.py:27 msgid "Preferences" -msgstr "" +msgstr "Настройки" #: ../pybiklib/ui/preferences.py:28 msgid "Graphic" -msgstr "" +msgstr "Графика" #: ../pybiklib/ui/preferences.py:29 msgid "Animation Speed:" -msgstr "" +msgstr "Скорость анимации:" #: ../pybiklib/ui/preferences.py:30 msgid "Lighting" -msgstr "" +msgstr "Освещение" #: ../pybiklib/ui/preferences.py:31 msgid "Mirror Distance:" -msgstr "" +msgstr "Расстояние зеркала:" #: ../pybiklib/ui/preferences.py:32 msgid "" @@ -469,69 +494,75 @@ "If animations are not smooth, you can adjust this setting. Afterwards you " "have to restart the program." msgstr "" +"Низкое значение сглаживания улучшает производительность, высокое — улучшает " +"качество.\n" +"Если анимация не плавная, измените это значение, затем перезапустите " +"программу." #: ../pybiklib/ui/preferences.py:33 msgid "Antialiasing" -msgstr "" +msgstr "Сглаживание" #: ../pybiklib/ui/preferences.py:34 msgid "Mouse" -msgstr "" +msgstr "Мышь" #: ../pybiklib/ui/preferences.py:35 msgid "Four directions" -msgstr "" +msgstr "Четыре направления" #: ../pybiklib/ui/preferences.py:36 msgid "" "Simplified,\n" "right button inverts move" msgstr "" +"Упрощённая,\n" +"правая кнопка обращает поворот" #: ../pybiklib/ui/preferences.py:37 msgid "Keys" -msgstr "" +msgstr "Клавиши" #: ../pybiklib/ui/preferences.py:38 ../pybiklib/ui/preferences.py:39 msgid "Add" -msgstr "" +msgstr "Добавить" #: ../pybiklib/ui/preferences.py:40 ../pybiklib/ui/preferences.py:41 msgid "Remove" -msgstr "" +msgstr "Удалить" #: ../pybiklib/ui/preferences.py:42 ../pybiklib/ui/preferences.py:43 msgid "Reset" -msgstr "" +msgstr "Сбросить" #: ../pybiklib/ui/preferences.py:44 msgid "Appearance" -msgstr "" +msgstr "Внешний вид" #: ../pybiklib/ui/preferences.py:45 msgid "Color:" -msgstr "" +msgstr "Цвет:" #: ../pybiklib/ui/preferences.py:46 msgid "Image File:" -msgstr "" +msgstr "Изображение:" #: ../pybiklib/ui/preferences.py:47 msgid "Tiled" -msgstr "" +msgstr "Черепица" #: ../pybiklib/ui/preferences.py:48 msgid "Mosaic" -msgstr "" +msgstr "Мозаика" #: ../pybiklib/ui/preferences.py:49 msgid "Background:" -msgstr "" +msgstr "Фон:" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" -msgstr "" +msgstr "Рубик;кубик;головоломка;магия;" #: ../data/plugins/01-challenges.algorithm.py:19 #: ../data/plugins/01-challenges.algorithm.py:22 @@ -545,51 +576,51 @@ #: ../data/plugins/01-challenges.algorithm.py:46 #: ../data/plugins/01-challenges.algorithm.py:49 msgid "Challenges" -msgstr "" +msgstr "Задачи" #: ../data/plugins/01-challenges.algorithm.py:20 msgid "Solve random cube" -msgstr "" +msgstr "Собрать случайный кубик" #: ../data/plugins/01-challenges.algorithm.py:23 msgid "Solve in 1 move" -msgstr "" +msgstr "Собрать за 1 ход" #: ../data/plugins/01-challenges.algorithm.py:26 msgid "Solve in 2 moves" -msgstr "" +msgstr "Собрать за 2 хода" #: ../data/plugins/01-challenges.algorithm.py:29 msgid "Solve in 3 moves" -msgstr "" +msgstr "Собрать за 3 хода" #: ../data/plugins/01-challenges.algorithm.py:32 msgid "Solve in 4 moves" -msgstr "" +msgstr "Собрать за 4 хода" #: ../data/plugins/01-challenges.algorithm.py:35 msgid "Solve in 5 moves" -msgstr "" +msgstr "Собрать за 5 ходов" #: ../data/plugins/01-challenges.algorithm.py:38 msgid "Solve in 6 moves" -msgstr "" +msgstr "Собрать за 6 ходов" #: ../data/plugins/01-challenges.algorithm.py:41 msgid "Solve in 7 moves" -msgstr "" +msgstr "Собрать за 7 ходов" #: ../data/plugins/01-challenges.algorithm.py:44 msgid "Solve in 8 moves" -msgstr "" +msgstr "Собрать за 8 ходов" #: ../data/plugins/01-challenges.algorithm.py:47 msgid "Solve in 9 moves" -msgstr "" +msgstr "Собрать за 9 ходов" #: ../data/plugins/01-challenges.algorithm.py:50 msgid "Solve in 10 moves" -msgstr "" +msgstr "Собрать за 10 ходов" #: ../data/plugins/10-spiegel.algorithm.py:35 #: ../data/plugins/10-spiegel.algorithm.py:38 @@ -620,7 +651,7 @@ #: ../data/plugins/20-2x2x2.algorithm.py:41 #: ../data/plugins/20-2x2x2.algorithm.py:61 msgid "Solvers" -msgstr "" +msgstr "Решатели" #. Spiegel is the name of a solution method #: ../data/plugins/10-spiegel.algorithm.py:37 @@ -632,51 +663,51 @@ #: ../data/plugins/10-spiegel.algorithm.py:134 #: ../data/plugins/10-spiegel.algorithm.py:145 msgid "Spiegel" -msgstr "" +msgstr "Spiegel" #: ../data/plugins/10-spiegel.algorithm.py:40 #: ../data/plugins/11-spiegel-improved.algorithm.py:40 #: ../data/plugins/12-lbl-leyan.algorithm.py:27 msgid "Top edges" -msgstr "" +msgstr "Верхние кромки" #: ../data/plugins/10-spiegel.algorithm.py:69 #: ../data/plugins/11-spiegel-improved.algorithm.py:85 #: ../data/plugins/12-lbl-leyan.algorithm.py:56 msgid "Top corners" -msgstr "" +msgstr "Верхние углы" #: ../data/plugins/10-spiegel.algorithm.py:90 #: ../data/plugins/11-spiegel-improved.algorithm.py:124 #: ../data/plugins/12-lbl-leyan.algorithm.py:77 msgid "Middle slice" -msgstr "" +msgstr "Средний слой" #: ../data/plugins/10-spiegel.algorithm.py:105 #: ../data/plugins/11-spiegel-improved.algorithm.py:156 #: ../data/plugins/12-lbl-leyan.algorithm.py:173 msgid "Bottom edge place" -msgstr "" +msgstr "Положение нижней кромки" #: ../data/plugins/10-spiegel.algorithm.py:118 #: ../data/plugins/11-spiegel-improved.algorithm.py:182 #: ../data/plugins/12-lbl-leyan.algorithm.py:93 msgid "Bottom edge orient" -msgstr "" +msgstr "Ориентация нижней кромки" #: ../data/plugins/10-spiegel.algorithm.py:135 #: ../data/plugins/11-spiegel-improved.algorithm.py:200 #: ../data/plugins/12-lbl-leyan.algorithm.py:110 #: ../data/plugins/20-2x2x2.algorithm.py:43 msgid "Bottom corner place" -msgstr "" +msgstr "Положение нижнего угла" #: ../data/plugins/10-spiegel.algorithm.py:146 #: ../data/plugins/11-spiegel-improved.algorithm.py:214 #: ../data/plugins/12-lbl-leyan.algorithm.py:132 #: ../data/plugins/20-2x2x2.algorithm.py:63 msgid "Bottom corner orient" -msgstr "" +msgstr "Ориентация нижнего угла" #. Spiegel is the name of a solution method #: ../data/plugins/11-spiegel-improved.algorithm.py:37 @@ -688,7 +719,7 @@ #: ../data/plugins/11-spiegel-improved.algorithm.py:199 #: ../data/plugins/11-spiegel-improved.algorithm.py:213 msgid "Spiegel improved" -msgstr "" +msgstr "Улушенный Spiegel" #. Leyan Lo is the inventor of the solution method #: ../data/plugins/12-lbl-leyan.algorithm.py:24 @@ -700,18 +731,18 @@ #: ../data/plugins/12-lbl-leyan.algorithm.py:131 #: ../data/plugins/12-lbl-leyan.algorithm.py:172 msgid "Layer Method (Leyan Lo)" -msgstr "" +msgstr "Метод слоёв (Leyan Lo)" #: ../data/plugins/20-2x2x2.algorithm.py:20 #: ../data/plugins/20-2x2x2.algorithm.py:23 #: ../data/plugins/20-2x2x2.algorithm.py:42 #: ../data/plugins/20-2x2x2.algorithm.py:62 msgid "2×2×2" -msgstr "" +msgstr "2×2×2" #: ../data/plugins/20-2x2x2.algorithm.py:24 msgid "Top slice" -msgstr "" +msgstr "Верхний слой" #: ../data/plugins/80-pretty-patterns.algorithm.py:18 #: ../data/plugins/80-pretty-patterns.algorithm.py:22 @@ -744,7 +775,7 @@ #: ../data/plugins/80-pretty-patterns.algorithm.py:137 #: ../data/plugins/80-pretty-patterns.algorithm.py:141 msgid "Pretty patterns" -msgstr "" +msgstr "Красивые узоры" #: ../data/plugins/80-pretty-patterns.algorithm.py:19 #: ../data/plugins/80-pretty-patterns.algorithm.py:23 @@ -754,36 +785,36 @@ #: ../data/plugins/80-pretty-patterns.algorithm.py:40 #: ../data/plugins/80-pretty-patterns.algorithm.py:44 msgid "Stripes" -msgstr "" +msgstr "Полоски" #: ../data/plugins/80-pretty-patterns.algorithm.py:49 #: ../data/plugins/80-pretty-patterns.algorithm.py:53 msgid "Criss-Cross" -msgstr "" +msgstr "Перекресток" #: ../data/plugins/80-pretty-patterns.algorithm.py:57 msgid "Fried Eggs" -msgstr "" +msgstr "Яичница" #: ../data/plugins/80-pretty-patterns.algorithm.py:61 msgid "Big Fried Eggs" -msgstr "" +msgstr "Большая яичница" #: ../data/plugins/80-pretty-patterns.algorithm.py:65 msgid "4 Fried Eggs" -msgstr "" +msgstr "4 жареных яйца" #: ../data/plugins/80-pretty-patterns.algorithm.py:69 msgid "Chessboard" -msgstr "" +msgstr "Шахматная доска" #: ../data/plugins/80-pretty-patterns.algorithm.py:75 msgid "Cross" -msgstr "" +msgstr "Крест" #: ../data/plugins/80-pretty-patterns.algorithm.py:79 msgid "Zig Zag" -msgstr "" +msgstr "Зигзаг" #. T is the shape formed by the cube labels #: ../data/plugins/80-pretty-patterns.algorithm.py:85 @@ -793,16 +824,16 @@ #: ../data/plugins/80-pretty-patterns.algorithm.py:100 #: ../data/plugins/80-pretty-patterns.algorithm.py:104 msgid "T-Time" -msgstr "" +msgstr "T-форма" #. C is the shape formed by the cube labels #: ../data/plugins/80-pretty-patterns.algorithm.py:110 msgid "C" -msgstr "" +msgstr "C" #: ../data/plugins/80-pretty-patterns.algorithm.py:113 msgid "Cube in a Cube" -msgstr "" +msgstr "Куб в кубе" #: ../data/plugins/80-pretty-patterns.algorithm.py:117 msgid "Striped Cube in a Cube" @@ -810,12 +841,12 @@ #: ../data/plugins/80-pretty-patterns.algorithm.py:121 msgid "Six Square Cuboids" -msgstr "" +msgstr "Шесть квадратных кубоидов" #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: ../data/plugins/80-pretty-patterns.algorithm.py:127 msgid "Superflip" -msgstr "" +msgstr "Superflip" #: ../data/plugins/80-pretty-patterns.algorithm.py:130 msgid "Superflip easy" @@ -823,15 +854,15 @@ #: ../data/plugins/80-pretty-patterns.algorithm.py:134 msgid "Green Mamba" -msgstr "" +msgstr "Зеленая мамба" #: ../data/plugins/80-pretty-patterns.algorithm.py:138 msgid "Anaconda" -msgstr "" +msgstr "Анаконда" #: ../data/plugins/80-pretty-patterns.algorithm.py:142 msgid "Duck Feet" -msgstr "" +msgstr "Утиная лапа" #: ../data/plugins/90-library.algorithm.py:20 #: ../data/plugins/90-library.algorithm.py:23 @@ -842,15 +873,15 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" -msgstr "" +msgstr "Библиотека" #: ../data/plugins/90-library.algorithm.py:21 #: ../data/plugins/90-library.algorithm.py:24 msgid "Middle Layer" -msgstr "" +msgstr "Средний слой" #: ../data/plugins/90-library.algorithm.py:22 msgid "Front to Right" @@ -865,11 +896,11 @@ #: ../data/plugins/90-library.algorithm.py:33 #: ../data/plugins/90-library.algorithm.py:36 msgid "Last Layer" -msgstr "" +msgstr "Последний слой" #: ../data/plugins/90-library.algorithm.py:28 msgid "Swap Edges" -msgstr "" +msgstr "Поменять края" #: ../data/plugins/90-library.algorithm.py:31 msgid "Flip Edges" @@ -881,13 +912,13 @@ #: ../data/plugins/90-library.algorithm.py:37 msgid "Rotate Corners" -msgstr "" +msgstr "Вращать углы" #: ../data/plugins/90-library.algorithm.py:39 #: ../data/plugins/90-library.algorithm.py:42 #: ../data/plugins/90-library.algorithm.py:45 msgid "Rotate Center" -msgstr "" +msgstr "Вращать центр" #: ../data/plugins/90-library.algorithm.py:40 msgid "2×Up" @@ -901,15 +932,16 @@ msgid "Up and Down" msgstr "" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" -msgstr "" +msgstr "Разное" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" msgstr "" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" msgstr "" diff -Nru pybik-1.1/po/sr.po pybik-1.1.1/po/sr.po --- pybik-1.1/po/sr.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/sr.po 2014-02-11 16:04:02.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" "PO-Revision-Date: 2013-02-27 13:26+0000\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian \n" @@ -16,8 +16,8 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Launchpad-Export-Date: 2013-06-11 05:58+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-03 05:24+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" @@ -197,27 +197,27 @@ "{error_message}" msgstr "" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" msgstr "" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" msgstr "" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" msgstr "" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" msgstr "" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" msgstr "" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" msgstr "" @@ -229,32 +229,37 @@ msgid "This algorithm only works for:\n" msgstr "" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" msgstr "" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" msgstr "" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" msgstr "" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" msgstr "" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" msgstr "" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" msgstr "" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" msgstr "" @@ -520,7 +525,7 @@ msgid "Background:" msgstr "Позадина:" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" msgstr "" @@ -834,8 +839,8 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" msgstr "" @@ -893,15 +898,16 @@ msgid "Up and Down" msgstr "" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" msgstr "" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" msgstr "" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" msgstr "" diff -Nru pybik-1.1/po/te.po pybik-1.1.1/po/te.po --- pybik-1.1/po/te.po 1970-01-01 00:00:00.000000000 +0000 +++ pybik-1.1.1/po/te.po 2014-02-11 16:04:02.000000000 +0000 @@ -0,0 +1,907 @@ +# Telugu translation for pybik +# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 +# This file is distributed under the same license as the pybik package. +# FIRST AUTHOR , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: pybik\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" +"PO-Revision-Date: 2014-02-06 16:36+0000\n" +"Last-Translator: Praveen Illa \n" +"Language-Team: Telugu \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Launchpad-Export-Date: 2014-02-07 06:20+0000\n" +"X-Generator: Launchpad (build 16916)\n" + +#: ../pybiklib/application.py:343 +msgid "Press the Esc key to exit Edit Mode" +msgstr "సవరణ రీతి నుండి నిష్క్రమించుటకు Esc మీటను నొక్కండి" + +#. substitution for {move_text} in statusbar text +#: ../pybiklib/application.py:352 +msgid "{current} / {total} move" +msgid_plural "{current} / {total} moves" +msgstr[0] "" +msgstr[1] "" + +#. substitution for {solved_text} in statusbar text +#: ../pybiklib/application.py:356 ../pybiklib/ui/model.py:16 +msgid "solved" +msgstr "సాధించబడింది" + +#: ../pybiklib/application.py:356 +msgid "not solved" +msgstr "సాధించలేదు" + +#. statusbar text +#: ../pybiklib/application.py:359 +msgid "{model_text}, {move_text}, {solved_text}" +msgstr "" + +#: ../pybiklib/application.py:392 +msgid "Congratulations, you have solved the puzzle!" +msgstr "అభినందనలు, ప్రహేళికను సాధించారు" + +#. Name of the application, probably should not be translated. +#: ../pybiklib/config.py:31 ../pybiklib/ui/main.py:34 +#: ../data/applications/pybik.desktop.in.h:1 +msgid "Pybik" +msgstr "పైబిక్" + +#: ../pybiklib/config.py:65 ../data/applications/pybik.desktop.in.h:2 +msgid "3D Rubik's cube game" +msgstr "3D రుబిక్స్ క్యూబ్ ఆట" + +#: ../pybiklib/config.py:67 +msgid "" +"Pybik is an interactive, graphical, single player puzzle about the cube " +"invented by Ernő Rubik. Besides the cube the program can handle towers and " +"bricks (non cubic puzzles). Pybik also has solvers, pretty patterns and a " +"collection of various moves. The cube can be manipulated with the mouse or " +"keyboard. You can change the colors or images on the faces of the cube." +msgstr "" + +#: ../pybiklib/config.py:75 +msgid "" +"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 3 of the License, or (at your option) " +"any later version.\n" +"\n" +"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." +msgstr "" + +#. Text between "<" and ">" is expanded to a link by the program and should not be modified. +#. Text between "" and "<|>" is the translatable text for the link. +#: ../pybiklib/config.py:87 +msgid "" +"Read the full text of the GNU General Public " +"License<|> or see ." +msgstr "" + +#: ../pybiklib/config.py:90 +msgid "" +"You should have received a copy of the GNU General Public License along with " +"this program. If not, see ." +msgstr "" + +#. "Wishlist" is used on Launchpad for Importance, so this word should probably not be translated +#: ../pybiklib/config.py:96 +msgid "" +"If you find any bugs in Pybik or have a suggestion for an improvement then " +"please submit a <{CONTACT_FILEBUG}|>bug report<|>. In the latter case you " +"can mark the bug report as \"Wishlist\"." +msgstr "" + +#: ../pybiklib/config.py:102 +msgid "" +"Translations are managed by the " +"Launchpad " +"translation group<|>.\n" +"\n" +"If you want help to translate Pybik to your language you can do it through " +"the web interface<|>.\n" +"\n" +"Read more about \"Translating with " +"Launchpad\"<|> and " +"\"Starting to " +"translate\"<|>." +msgstr "" + +#: ../pybiklib/dialogs.py:168 +msgid "Press a key …" +msgstr "ఒక మీటను నొక్కండి ..." + +#: ../pybiklib/dialogs.py:263 +msgid "The program needs to be restarted for the changes to take effect." +msgstr "మార్పులు వర్తించడానికి కార్యక్రమాన్ని పునఃప్రారంభించాల్సివుంటుంది." + +#. Only a single color, no picture or pattern +#: ../pybiklib/dialogs.py:296 +msgid "plain" +msgstr "సాదా" + +#: ../pybiklib/dialogs.py:301 +msgid "select …" +msgstr "ఎంచకోండి ..." + +#: ../pybiklib/dialogs.py:313 +msgid "Up" +msgstr "పైకి" + +#: ../pybiklib/dialogs.py:313 +msgid "Down" +msgstr "కిందికి" + +#: ../pybiklib/dialogs.py:313 +msgid "Left" +msgstr "" + +#: ../pybiklib/dialogs.py:313 +msgid "Right" +msgstr "" + +#: ../pybiklib/dialogs.py:313 +msgid "Front" +msgstr "" + +#: ../pybiklib/dialogs.py:313 +msgid "Back" +msgstr "" + +#: ../pybiklib/dialogs.py:331 +msgid "Move" +msgstr "" + +#: ../pybiklib/dialogs.py:332 +msgid "Key" +msgstr "" + +#: ../pybiklib/dialogs.py:481 +msgid "Open Image" +msgstr "" + +#: ../pybiklib/dialogs.py:533 ../pybiklib/ui/model.py:13 +msgid "Size:" +msgstr "" + +#: ../pybiklib/dialogs.py:533 +msgid "Basis:" +msgstr "" + +#: ../pybiklib/dialogs.py:533 +msgid "Width:" +msgstr "" + +#: ../pybiklib/dialogs.py:562 +msgid "Canceling operation, please wait" +msgstr "" + +#: ../pybiklib/dialogs.py:634 +msgid "Pybik project website" +msgstr "" + +#: ../pybiklib/main.py:230 +msgid "" +"An error occurred while reading the settings:\n" +"{error_message}" +msgstr "" + +#: ../pybiklib/model.py:206 +msgid "Brick" +msgstr "" + +#: ../pybiklib/model.py:207 +msgid "{0}×{1}×{2}-Brick" +msgstr "" + +#: ../pybiklib/model.py:855 +msgid "Tower" +msgstr "" + +#: ../pybiklib/model.py:856 +msgid "{0}×{1}-Tower" +msgstr "" + +#: ../pybiklib/model.py:870 +msgid "Cube" +msgstr "" + +#: ../pybiklib/model.py:871 +msgid "{0}×{0}×{0}-Cube" +msgstr "" + +#: ../pybiklib/plugins.py:92 +msgid "This algorithm does not work for any model.\n" +msgstr "" + +#: ../pybiklib/plugins.py:94 ../pybiklib/plugins.py:97 +msgid "This algorithm only works for:\n" +msgstr "" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 +msgid "disabled" +msgstr "" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 +msgid "ugly" +msgstr "" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 +msgid "low" +msgstr "" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 +msgid "medium" +msgstr "" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 +msgid "high" +msgstr "" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 +msgid "higher" +msgstr "" + +#: ../pybiklib/settings.py:251 +msgid "Settings can not be written to file: {error_message}" +msgstr "" + +#: ../pybiklib/ui/about.py:14 +msgid "About Pybik" +msgstr "" + +#: ../pybiklib/ui/about.py:15 +msgid "About" +msgstr "" + +#: ../pybiklib/ui/about.py:16 +msgid "Translators:" +msgstr "" + +#: ../pybiklib/ui/about.py:17 +msgid "Feedback" +msgstr "" + +#: ../pybiklib/ui/about.py:18 +msgid "Translate" +msgstr "" + +#: ../pybiklib/ui/about.py:19 +msgid "License" +msgstr "" + +#: ../pybiklib/ui/main.py:35 +msgid "&Game" +msgstr "" + +#: ../pybiklib/ui/main.py:36 +msgid "&Edit" +msgstr "" + +#: ../pybiklib/ui/main.py:37 +msgid "&View" +msgstr "" + +#: ../pybiklib/ui/main.py:38 +msgid "&Help" +msgstr "" + +#: ../pybiklib/ui/main.py:39 +msgid "&New Random" +msgstr "" + +#: ../pybiklib/ui/main.py:40 +msgid "Ne&w Solved" +msgstr "" + +#: ../pybiklib/ui/main.py:41 +msgid "&Quit" +msgstr "" + +#: ../pybiklib/ui/main.py:42 +msgid "&Select Model …" +msgstr "" + +#: ../pybiklib/ui/main.py:43 +msgid "&Set as Initial State" +msgstr "" + +#: ../pybiklib/ui/main.py:44 +msgid "&Reset Rotation" +msgstr "" + +#: ../pybiklib/ui/main.py:45 +msgid "&Invert Moves" +msgstr "" + +#: ../pybiklib/ui/main.py:46 +msgid "Reload Plugins" +msgstr "" + +#: ../pybiklib/ui/main.py:47 +msgid "&Preferences …" +msgstr "" + +#: ../pybiklib/ui/main.py:48 +msgid "&Toolbar" +msgstr "" + +#: ../pybiklib/ui/main.py:49 +msgid "&Status Bar" +msgstr "" + +#: ../pybiklib/ui/main.py:50 +msgid "&Info …" +msgstr "" + +#: ../pybiklib/ui/main.py:51 +msgid "Rewind" +msgstr "" + +#: ../pybiklib/ui/main.py:52 +msgid "Go to the previous mark (or the beginning) of the sequence of moves" +msgstr "" + +#: ../pybiklib/ui/main.py:53 +msgid "Previous" +msgstr "" + +#: ../pybiklib/ui/main.py:54 +msgid "Make one step backwards" +msgstr "" + +#: ../pybiklib/ui/main.py:55 +msgid "Stop" +msgstr "" + +#: ../pybiklib/ui/main.py:56 +msgid "Stop running the sequence of moves" +msgstr "" + +#: ../pybiklib/ui/main.py:57 +msgid "Play" +msgstr "" + +#: ../pybiklib/ui/main.py:58 +msgid "Run forward through the sequence of moves" +msgstr "" + +#: ../pybiklib/ui/main.py:59 +msgid "Next" +msgstr "" + +#: ../pybiklib/ui/main.py:60 +msgid "Make one step forwards" +msgstr "" + +#: ../pybiklib/ui/main.py:61 +msgid "Forward" +msgstr "" + +#: ../pybiklib/ui/main.py:62 +msgid "Go to the next mark (or the end) of the sequence of moves" +msgstr "" + +#: ../pybiklib/ui/main.py:63 +msgid "Add Mark" +msgstr "" + +#: ../pybiklib/ui/main.py:64 +msgid "Mark the current place in the sequence of moves" +msgstr "" + +#: ../pybiklib/ui/main.py:65 +msgid "Remove Mark" +msgstr "" + +#: ../pybiklib/ui/main.py:66 +msgid "Remove the mark at the current place in the sequence of moves" +msgstr "" + +#: ../pybiklib/ui/main.py:67 +msgid "&Edit Bar" +msgstr "" + +#: ../pybiklib/ui/main.py:68 +msgid "Normalize Cube Rotations" +msgstr "" + +#: ../pybiklib/ui/model.py:12 +msgid "Select Model" +msgstr "" + +#: ../pybiklib/ui/model.py:14 +msgid "Height:" +msgstr "" + +#: ../pybiklib/ui/model.py:15 +msgid "Depth:" +msgstr "" + +#: ../pybiklib/ui/preferences.py:27 +msgid "Preferences" +msgstr "" + +#: ../pybiklib/ui/preferences.py:28 +msgid "Graphic" +msgstr "" + +#: ../pybiklib/ui/preferences.py:29 +msgid "Animation Speed:" +msgstr "" + +#: ../pybiklib/ui/preferences.py:30 +msgid "Lighting" +msgstr "" + +#: ../pybiklib/ui/preferences.py:31 +msgid "Mirror Distance:" +msgstr "" + +#: ../pybiklib/ui/preferences.py:32 +msgid "" +"Lower antialiasing means better performance, higher antialiasing means " +"better quality.\n" +"If animations are not smooth, you can adjust this setting. Afterwards you " +"have to restart the program." +msgstr "" + +#: ../pybiklib/ui/preferences.py:33 +msgid "Antialiasing" +msgstr "" + +#: ../pybiklib/ui/preferences.py:34 +msgid "Mouse" +msgstr "" + +#: ../pybiklib/ui/preferences.py:35 +msgid "Four directions" +msgstr "" + +#: ../pybiklib/ui/preferences.py:36 +msgid "" +"Simplified,\n" +"right button inverts move" +msgstr "" + +#: ../pybiklib/ui/preferences.py:37 +msgid "Keys" +msgstr "" + +#: ../pybiklib/ui/preferences.py:38 ../pybiklib/ui/preferences.py:39 +msgid "Add" +msgstr "" + +#: ../pybiklib/ui/preferences.py:40 ../pybiklib/ui/preferences.py:41 +msgid "Remove" +msgstr "" + +#: ../pybiklib/ui/preferences.py:42 ../pybiklib/ui/preferences.py:43 +msgid "Reset" +msgstr "" + +#: ../pybiklib/ui/preferences.py:44 +msgid "Appearance" +msgstr "" + +#: ../pybiklib/ui/preferences.py:45 +msgid "Color:" +msgstr "" + +#: ../pybiklib/ui/preferences.py:46 +msgid "Image File:" +msgstr "" + +#: ../pybiklib/ui/preferences.py:47 +msgid "Tiled" +msgstr "" + +#: ../pybiklib/ui/preferences.py:48 +msgid "Mosaic" +msgstr "" + +#: ../pybiklib/ui/preferences.py:49 +msgid "Background:" +msgstr "" + +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. +#: ../data/applications/pybik.desktop.in.h:4 +msgid "rubik;cube;puzzle;magic;" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:19 +#: ../data/plugins/01-challenges.algorithm.py:22 +#: ../data/plugins/01-challenges.algorithm.py:25 +#: ../data/plugins/01-challenges.algorithm.py:28 +#: ../data/plugins/01-challenges.algorithm.py:31 +#: ../data/plugins/01-challenges.algorithm.py:34 +#: ../data/plugins/01-challenges.algorithm.py:37 +#: ../data/plugins/01-challenges.algorithm.py:40 +#: ../data/plugins/01-challenges.algorithm.py:43 +#: ../data/plugins/01-challenges.algorithm.py:46 +#: ../data/plugins/01-challenges.algorithm.py:49 +msgid "Challenges" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:20 +msgid "Solve random cube" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:23 +msgid "Solve in 1 move" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:26 +msgid "Solve in 2 moves" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:29 +msgid "Solve in 3 moves" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:32 +msgid "Solve in 4 moves" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:35 +msgid "Solve in 5 moves" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:38 +msgid "Solve in 6 moves" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:41 +msgid "Solve in 7 moves" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:44 +msgid "Solve in 8 moves" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:47 +msgid "Solve in 9 moves" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:50 +msgid "Solve in 10 moves" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:35 +#: ../data/plugins/10-spiegel.algorithm.py:38 +#: ../data/plugins/10-spiegel.algorithm.py:67 +#: ../data/plugins/10-spiegel.algorithm.py:88 +#: ../data/plugins/10-spiegel.algorithm.py:103 +#: ../data/plugins/10-spiegel.algorithm.py:116 +#: ../data/plugins/10-spiegel.algorithm.py:133 +#: ../data/plugins/10-spiegel.algorithm.py:144 +#: ../data/plugins/11-spiegel-improved.algorithm.py:35 +#: ../data/plugins/11-spiegel-improved.algorithm.py:38 +#: ../data/plugins/11-spiegel-improved.algorithm.py:83 +#: ../data/plugins/11-spiegel-improved.algorithm.py:122 +#: ../data/plugins/11-spiegel-improved.algorithm.py:154 +#: ../data/plugins/11-spiegel-improved.algorithm.py:180 +#: ../data/plugins/11-spiegel-improved.algorithm.py:198 +#: ../data/plugins/11-spiegel-improved.algorithm.py:212 +#: ../data/plugins/12-lbl-leyan.algorithm.py:22 +#: ../data/plugins/12-lbl-leyan.algorithm.py:25 +#: ../data/plugins/12-lbl-leyan.algorithm.py:54 +#: ../data/plugins/12-lbl-leyan.algorithm.py:75 +#: ../data/plugins/12-lbl-leyan.algorithm.py:91 +#: ../data/plugins/12-lbl-leyan.algorithm.py:108 +#: ../data/plugins/12-lbl-leyan.algorithm.py:130 +#: ../data/plugins/12-lbl-leyan.algorithm.py:171 +#: ../data/plugins/20-2x2x2.algorithm.py:19 +#: ../data/plugins/20-2x2x2.algorithm.py:22 +#: ../data/plugins/20-2x2x2.algorithm.py:41 +#: ../data/plugins/20-2x2x2.algorithm.py:61 +msgid "Solvers" +msgstr "" + +#. Spiegel is the name of a solution method +#: ../data/plugins/10-spiegel.algorithm.py:37 +#: ../data/plugins/10-spiegel.algorithm.py:39 +#: ../data/plugins/10-spiegel.algorithm.py:68 +#: ../data/plugins/10-spiegel.algorithm.py:89 +#: ../data/plugins/10-spiegel.algorithm.py:104 +#: ../data/plugins/10-spiegel.algorithm.py:117 +#: ../data/plugins/10-spiegel.algorithm.py:134 +#: ../data/plugins/10-spiegel.algorithm.py:145 +msgid "Spiegel" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:40 +#: ../data/plugins/11-spiegel-improved.algorithm.py:40 +#: ../data/plugins/12-lbl-leyan.algorithm.py:27 +msgid "Top edges" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:69 +#: ../data/plugins/11-spiegel-improved.algorithm.py:85 +#: ../data/plugins/12-lbl-leyan.algorithm.py:56 +msgid "Top corners" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:90 +#: ../data/plugins/11-spiegel-improved.algorithm.py:124 +#: ../data/plugins/12-lbl-leyan.algorithm.py:77 +msgid "Middle slice" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:105 +#: ../data/plugins/11-spiegel-improved.algorithm.py:156 +#: ../data/plugins/12-lbl-leyan.algorithm.py:173 +msgid "Bottom edge place" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:118 +#: ../data/plugins/11-spiegel-improved.algorithm.py:182 +#: ../data/plugins/12-lbl-leyan.algorithm.py:93 +msgid "Bottom edge orient" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:135 +#: ../data/plugins/11-spiegel-improved.algorithm.py:200 +#: ../data/plugins/12-lbl-leyan.algorithm.py:110 +#: ../data/plugins/20-2x2x2.algorithm.py:43 +msgid "Bottom corner place" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:146 +#: ../data/plugins/11-spiegel-improved.algorithm.py:214 +#: ../data/plugins/12-lbl-leyan.algorithm.py:132 +#: ../data/plugins/20-2x2x2.algorithm.py:63 +msgid "Bottom corner orient" +msgstr "" + +#. Spiegel is the name of a solution method +#: ../data/plugins/11-spiegel-improved.algorithm.py:37 +#: ../data/plugins/11-spiegel-improved.algorithm.py:39 +#: ../data/plugins/11-spiegel-improved.algorithm.py:84 +#: ../data/plugins/11-spiegel-improved.algorithm.py:123 +#: ../data/plugins/11-spiegel-improved.algorithm.py:155 +#: ../data/plugins/11-spiegel-improved.algorithm.py:181 +#: ../data/plugins/11-spiegel-improved.algorithm.py:199 +#: ../data/plugins/11-spiegel-improved.algorithm.py:213 +msgid "Spiegel improved" +msgstr "" + +#. Leyan Lo is the inventor of the solution method +#: ../data/plugins/12-lbl-leyan.algorithm.py:24 +#: ../data/plugins/12-lbl-leyan.algorithm.py:26 +#: ../data/plugins/12-lbl-leyan.algorithm.py:55 +#: ../data/plugins/12-lbl-leyan.algorithm.py:76 +#: ../data/plugins/12-lbl-leyan.algorithm.py:92 +#: ../data/plugins/12-lbl-leyan.algorithm.py:109 +#: ../data/plugins/12-lbl-leyan.algorithm.py:131 +#: ../data/plugins/12-lbl-leyan.algorithm.py:172 +msgid "Layer Method (Leyan Lo)" +msgstr "" + +#: ../data/plugins/20-2x2x2.algorithm.py:20 +#: ../data/plugins/20-2x2x2.algorithm.py:23 +#: ../data/plugins/20-2x2x2.algorithm.py:42 +#: ../data/plugins/20-2x2x2.algorithm.py:62 +msgid "2×2×2" +msgstr "" + +#: ../data/plugins/20-2x2x2.algorithm.py:24 +msgid "Top slice" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:18 +#: ../data/plugins/80-pretty-patterns.algorithm.py:22 +#: ../data/plugins/80-pretty-patterns.algorithm.py:26 +#: ../data/plugins/80-pretty-patterns.algorithm.py:30 +#: ../data/plugins/80-pretty-patterns.algorithm.py:34 +#: ../data/plugins/80-pretty-patterns.algorithm.py:39 +#: ../data/plugins/80-pretty-patterns.algorithm.py:43 +#: ../data/plugins/80-pretty-patterns.algorithm.py:48 +#: ../data/plugins/80-pretty-patterns.algorithm.py:52 +#: ../data/plugins/80-pretty-patterns.algorithm.py:56 +#: ../data/plugins/80-pretty-patterns.algorithm.py:60 +#: ../data/plugins/80-pretty-patterns.algorithm.py:64 +#: ../data/plugins/80-pretty-patterns.algorithm.py:68 +#: ../data/plugins/80-pretty-patterns.algorithm.py:74 +#: ../data/plugins/80-pretty-patterns.algorithm.py:78 +#: ../data/plugins/80-pretty-patterns.algorithm.py:83 +#: ../data/plugins/80-pretty-patterns.algorithm.py:87 +#: ../data/plugins/80-pretty-patterns.algorithm.py:91 +#: ../data/plugins/80-pretty-patterns.algorithm.py:95 +#: ../data/plugins/80-pretty-patterns.algorithm.py:99 +#: ../data/plugins/80-pretty-patterns.algorithm.py:103 +#: ../data/plugins/80-pretty-patterns.algorithm.py:108 +#: ../data/plugins/80-pretty-patterns.algorithm.py:112 +#: ../data/plugins/80-pretty-patterns.algorithm.py:116 +#: ../data/plugins/80-pretty-patterns.algorithm.py:120 +#: ../data/plugins/80-pretty-patterns.algorithm.py:125 +#: ../data/plugins/80-pretty-patterns.algorithm.py:129 +#: ../data/plugins/80-pretty-patterns.algorithm.py:133 +#: ../data/plugins/80-pretty-patterns.algorithm.py:137 +#: ../data/plugins/80-pretty-patterns.algorithm.py:141 +msgid "Pretty patterns" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:19 +#: ../data/plugins/80-pretty-patterns.algorithm.py:23 +#: ../data/plugins/80-pretty-patterns.algorithm.py:27 +#: ../data/plugins/80-pretty-patterns.algorithm.py:31 +#: ../data/plugins/80-pretty-patterns.algorithm.py:35 +#: ../data/plugins/80-pretty-patterns.algorithm.py:40 +#: ../data/plugins/80-pretty-patterns.algorithm.py:44 +msgid "Stripes" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:49 +#: ../data/plugins/80-pretty-patterns.algorithm.py:53 +msgid "Criss-Cross" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:57 +msgid "Fried Eggs" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:61 +msgid "Big Fried Eggs" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:65 +msgid "4 Fried Eggs" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:69 +msgid "Chessboard" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:75 +msgid "Cross" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:79 +msgid "Zig Zag" +msgstr "" + +#. T is the shape formed by the cube labels +#: ../data/plugins/80-pretty-patterns.algorithm.py:85 +#: ../data/plugins/80-pretty-patterns.algorithm.py:88 +#: ../data/plugins/80-pretty-patterns.algorithm.py:92 +#: ../data/plugins/80-pretty-patterns.algorithm.py:96 +#: ../data/plugins/80-pretty-patterns.algorithm.py:100 +#: ../data/plugins/80-pretty-patterns.algorithm.py:104 +msgid "T-Time" +msgstr "" + +#. C is the shape formed by the cube labels +#: ../data/plugins/80-pretty-patterns.algorithm.py:110 +msgid "C" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:113 +msgid "Cube in a Cube" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:117 +msgid "Striped Cube in a Cube" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:121 +msgid "Six Square Cuboids" +msgstr "" + +#. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. +#: ../data/plugins/80-pretty-patterns.algorithm.py:127 +msgid "Superflip" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:130 +msgid "Superflip easy" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:134 +msgid "Green Mamba" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:138 +msgid "Anaconda" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:142 +msgid "Duck Feet" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:20 +#: ../data/plugins/90-library.algorithm.py:23 +#: ../data/plugins/90-library.algorithm.py:26 +#: ../data/plugins/90-library.algorithm.py:29 +#: ../data/plugins/90-library.algorithm.py:32 +#: ../data/plugins/90-library.algorithm.py:35 +#: ../data/plugins/90-library.algorithm.py:38 +#: ../data/plugins/90-library.algorithm.py:41 +#: ../data/plugins/90-library.algorithm.py:44 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 +msgid "Library" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:21 +#: ../data/plugins/90-library.algorithm.py:24 +msgid "Middle Layer" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:22 +msgid "Front to Right" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:25 +msgid "Front to Left" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:27 +#: ../data/plugins/90-library.algorithm.py:30 +#: ../data/plugins/90-library.algorithm.py:33 +#: ../data/plugins/90-library.algorithm.py:36 +msgid "Last Layer" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:28 +msgid "Swap Edges" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:31 +msgid "Flip Edges" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:34 +msgid "Swap Corners" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:37 +msgid "Rotate Corners" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:39 +#: ../data/plugins/90-library.algorithm.py:42 +#: ../data/plugins/90-library.algorithm.py:45 +msgid "Rotate Center" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:40 +msgid "2×Up" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:43 +msgid "Up and Front" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:46 +msgid "Up and Down" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 +msgid "Misc" +msgstr "" + +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 +msgid "Back without Back" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:54 +msgid "2×Back without Back" +msgstr "" diff -Nru pybik-1.1/po/tr.po pybik-1.1.1/po/tr.po --- pybik-1.1/po/tr.po 1970-01-01 00:00:00.000000000 +0000 +++ pybik-1.1.1/po/tr.po 2014-02-11 16:04:02.000000000 +0000 @@ -0,0 +1,907 @@ +# Turkish translation for pybik +# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 +# This file is distributed under the same license as the pybik package. +# FIRST AUTHOR , 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: pybik\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" +"PO-Revision-Date: 2014-02-06 10:17+0000\n" +"Last-Translator: Şâkir Aşçı \n" +"Language-Team: Turkish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Launchpad-Export-Date: 2014-02-07 06:20+0000\n" +"X-Generator: Launchpad (build 16916)\n" + +#: ../pybiklib/application.py:343 +msgid "Press the Esc key to exit Edit Mode" +msgstr "Düzenleme Modu'ndan çıkmak için Esc'ye basın" + +#. substitution for {move_text} in statusbar text +#: ../pybiklib/application.py:352 +msgid "{current} / {total} move" +msgid_plural "{current} / {total} moves" +msgstr[0] "" +msgstr[1] "{current} / {total} moves" + +#. substitution for {solved_text} in statusbar text +#: ../pybiklib/application.py:356 ../pybiklib/ui/model.py:16 +msgid "solved" +msgstr "" + +#: ../pybiklib/application.py:356 +msgid "not solved" +msgstr "" + +#. statusbar text +#: ../pybiklib/application.py:359 +msgid "{model_text}, {move_text}, {solved_text}" +msgstr "" + +#: ../pybiklib/application.py:392 +msgid "Congratulations, you have solved the puzzle!" +msgstr "Tebrikler, yapbozu çözdünüz!" + +#. Name of the application, probably should not be translated. +#: ../pybiklib/config.py:31 ../pybiklib/ui/main.py:34 +#: ../data/applications/pybik.desktop.in.h:1 +msgid "Pybik" +msgstr "Pybik" + +#: ../pybiklib/config.py:65 ../data/applications/pybik.desktop.in.h:2 +msgid "3D Rubik's cube game" +msgstr "3B Rubik küpü oyunu" + +#: ../pybiklib/config.py:67 +msgid "" +"Pybik is an interactive, graphical, single player puzzle about the cube " +"invented by Ernő Rubik. Besides the cube the program can handle towers and " +"bricks (non cubic puzzles). Pybik also has solvers, pretty patterns and a " +"collection of various moves. The cube can be manipulated with the mouse or " +"keyboard. You can change the colors or images on the faces of the cube." +msgstr "" + +#: ../pybiklib/config.py:75 +msgid "" +"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 3 of the License, or (at your option) " +"any later version.\n" +"\n" +"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." +msgstr "" + +#. Text between "<" and ">" is expanded to a link by the program and should not be modified. +#. Text between "" and "<|>" is the translatable text for the link. +#: ../pybiklib/config.py:87 +msgid "" +"Read the full text of the GNU General Public " +"License<|> or see ." +msgstr "" + +#: ../pybiklib/config.py:90 +msgid "" +"You should have received a copy of the GNU General Public License along with " +"this program. If not, see ." +msgstr "" + +#. "Wishlist" is used on Launchpad for Importance, so this word should probably not be translated +#: ../pybiklib/config.py:96 +msgid "" +"If you find any bugs in Pybik or have a suggestion for an improvement then " +"please submit a <{CONTACT_FILEBUG}|>bug report<|>. In the latter case you " +"can mark the bug report as \"Wishlist\"." +msgstr "" + +#: ../pybiklib/config.py:102 +msgid "" +"Translations are managed by the " +"Launchpad " +"translation group<|>.\n" +"\n" +"If you want help to translate Pybik to your language you can do it through " +"the web interface<|>.\n" +"\n" +"Read more about \"Translating with " +"Launchpad\"<|> and " +"\"Starting to " +"translate\"<|>." +msgstr "" + +#: ../pybiklib/dialogs.py:168 +msgid "Press a key …" +msgstr "" + +#: ../pybiklib/dialogs.py:263 +msgid "The program needs to be restarted for the changes to take effect." +msgstr "" + +#. Only a single color, no picture or pattern +#: ../pybiklib/dialogs.py:296 +msgid "plain" +msgstr "" + +#: ../pybiklib/dialogs.py:301 +msgid "select …" +msgstr "" + +#: ../pybiklib/dialogs.py:313 +msgid "Up" +msgstr "" + +#: ../pybiklib/dialogs.py:313 +msgid "Down" +msgstr "" + +#: ../pybiklib/dialogs.py:313 +msgid "Left" +msgstr "" + +#: ../pybiklib/dialogs.py:313 +msgid "Right" +msgstr "" + +#: ../pybiklib/dialogs.py:313 +msgid "Front" +msgstr "" + +#: ../pybiklib/dialogs.py:313 +msgid "Back" +msgstr "" + +#: ../pybiklib/dialogs.py:331 +msgid "Move" +msgstr "" + +#: ../pybiklib/dialogs.py:332 +msgid "Key" +msgstr "" + +#: ../pybiklib/dialogs.py:481 +msgid "Open Image" +msgstr "" + +#: ../pybiklib/dialogs.py:533 ../pybiklib/ui/model.py:13 +msgid "Size:" +msgstr "" + +#: ../pybiklib/dialogs.py:533 +msgid "Basis:" +msgstr "" + +#: ../pybiklib/dialogs.py:533 +msgid "Width:" +msgstr "" + +#: ../pybiklib/dialogs.py:562 +msgid "Canceling operation, please wait" +msgstr "" + +#: ../pybiklib/dialogs.py:634 +msgid "Pybik project website" +msgstr "" + +#: ../pybiklib/main.py:230 +msgid "" +"An error occurred while reading the settings:\n" +"{error_message}" +msgstr "" + +#: ../pybiklib/model.py:206 +msgid "Brick" +msgstr "" + +#: ../pybiklib/model.py:207 +msgid "{0}×{1}×{2}-Brick" +msgstr "" + +#: ../pybiklib/model.py:855 +msgid "Tower" +msgstr "" + +#: ../pybiklib/model.py:856 +msgid "{0}×{1}-Tower" +msgstr "" + +#: ../pybiklib/model.py:870 +msgid "Cube" +msgstr "" + +#: ../pybiklib/model.py:871 +msgid "{0}×{0}×{0}-Cube" +msgstr "" + +#: ../pybiklib/plugins.py:92 +msgid "This algorithm does not work for any model.\n" +msgstr "" + +#: ../pybiklib/plugins.py:94 ../pybiklib/plugins.py:97 +msgid "This algorithm only works for:\n" +msgstr "" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 +msgid "disabled" +msgstr "" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 +msgid "ugly" +msgstr "" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 +msgid "low" +msgstr "" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 +msgid "medium" +msgstr "" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 +msgid "high" +msgstr "" + +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 +msgid "higher" +msgstr "" + +#: ../pybiklib/settings.py:251 +msgid "Settings can not be written to file: {error_message}" +msgstr "" + +#: ../pybiklib/ui/about.py:14 +msgid "About Pybik" +msgstr "" + +#: ../pybiklib/ui/about.py:15 +msgid "About" +msgstr "" + +#: ../pybiklib/ui/about.py:16 +msgid "Translators:" +msgstr "" + +#: ../pybiklib/ui/about.py:17 +msgid "Feedback" +msgstr "" + +#: ../pybiklib/ui/about.py:18 +msgid "Translate" +msgstr "" + +#: ../pybiklib/ui/about.py:19 +msgid "License" +msgstr "" + +#: ../pybiklib/ui/main.py:35 +msgid "&Game" +msgstr "" + +#: ../pybiklib/ui/main.py:36 +msgid "&Edit" +msgstr "" + +#: ../pybiklib/ui/main.py:37 +msgid "&View" +msgstr "" + +#: ../pybiklib/ui/main.py:38 +msgid "&Help" +msgstr "" + +#: ../pybiklib/ui/main.py:39 +msgid "&New Random" +msgstr "" + +#: ../pybiklib/ui/main.py:40 +msgid "Ne&w Solved" +msgstr "" + +#: ../pybiklib/ui/main.py:41 +msgid "&Quit" +msgstr "" + +#: ../pybiklib/ui/main.py:42 +msgid "&Select Model …" +msgstr "" + +#: ../pybiklib/ui/main.py:43 +msgid "&Set as Initial State" +msgstr "" + +#: ../pybiklib/ui/main.py:44 +msgid "&Reset Rotation" +msgstr "" + +#: ../pybiklib/ui/main.py:45 +msgid "&Invert Moves" +msgstr "" + +#: ../pybiklib/ui/main.py:46 +msgid "Reload Plugins" +msgstr "" + +#: ../pybiklib/ui/main.py:47 +msgid "&Preferences …" +msgstr "" + +#: ../pybiklib/ui/main.py:48 +msgid "&Toolbar" +msgstr "" + +#: ../pybiklib/ui/main.py:49 +msgid "&Status Bar" +msgstr "" + +#: ../pybiklib/ui/main.py:50 +msgid "&Info …" +msgstr "" + +#: ../pybiklib/ui/main.py:51 +msgid "Rewind" +msgstr "" + +#: ../pybiklib/ui/main.py:52 +msgid "Go to the previous mark (or the beginning) of the sequence of moves" +msgstr "" + +#: ../pybiklib/ui/main.py:53 +msgid "Previous" +msgstr "" + +#: ../pybiklib/ui/main.py:54 +msgid "Make one step backwards" +msgstr "" + +#: ../pybiklib/ui/main.py:55 +msgid "Stop" +msgstr "" + +#: ../pybiklib/ui/main.py:56 +msgid "Stop running the sequence of moves" +msgstr "" + +#: ../pybiklib/ui/main.py:57 +msgid "Play" +msgstr "" + +#: ../pybiklib/ui/main.py:58 +msgid "Run forward through the sequence of moves" +msgstr "" + +#: ../pybiklib/ui/main.py:59 +msgid "Next" +msgstr "" + +#: ../pybiklib/ui/main.py:60 +msgid "Make one step forwards" +msgstr "" + +#: ../pybiklib/ui/main.py:61 +msgid "Forward" +msgstr "" + +#: ../pybiklib/ui/main.py:62 +msgid "Go to the next mark (or the end) of the sequence of moves" +msgstr "" + +#: ../pybiklib/ui/main.py:63 +msgid "Add Mark" +msgstr "" + +#: ../pybiklib/ui/main.py:64 +msgid "Mark the current place in the sequence of moves" +msgstr "" + +#: ../pybiklib/ui/main.py:65 +msgid "Remove Mark" +msgstr "" + +#: ../pybiklib/ui/main.py:66 +msgid "Remove the mark at the current place in the sequence of moves" +msgstr "" + +#: ../pybiklib/ui/main.py:67 +msgid "&Edit Bar" +msgstr "" + +#: ../pybiklib/ui/main.py:68 +msgid "Normalize Cube Rotations" +msgstr "" + +#: ../pybiklib/ui/model.py:12 +msgid "Select Model" +msgstr "" + +#: ../pybiklib/ui/model.py:14 +msgid "Height:" +msgstr "" + +#: ../pybiklib/ui/model.py:15 +msgid "Depth:" +msgstr "" + +#: ../pybiklib/ui/preferences.py:27 +msgid "Preferences" +msgstr "" + +#: ../pybiklib/ui/preferences.py:28 +msgid "Graphic" +msgstr "" + +#: ../pybiklib/ui/preferences.py:29 +msgid "Animation Speed:" +msgstr "" + +#: ../pybiklib/ui/preferences.py:30 +msgid "Lighting" +msgstr "" + +#: ../pybiklib/ui/preferences.py:31 +msgid "Mirror Distance:" +msgstr "" + +#: ../pybiklib/ui/preferences.py:32 +msgid "" +"Lower antialiasing means better performance, higher antialiasing means " +"better quality.\n" +"If animations are not smooth, you can adjust this setting. Afterwards you " +"have to restart the program." +msgstr "" + +#: ../pybiklib/ui/preferences.py:33 +msgid "Antialiasing" +msgstr "" + +#: ../pybiklib/ui/preferences.py:34 +msgid "Mouse" +msgstr "" + +#: ../pybiklib/ui/preferences.py:35 +msgid "Four directions" +msgstr "" + +#: ../pybiklib/ui/preferences.py:36 +msgid "" +"Simplified,\n" +"right button inverts move" +msgstr "" + +#: ../pybiklib/ui/preferences.py:37 +msgid "Keys" +msgstr "" + +#: ../pybiklib/ui/preferences.py:38 ../pybiklib/ui/preferences.py:39 +msgid "Add" +msgstr "" + +#: ../pybiklib/ui/preferences.py:40 ../pybiklib/ui/preferences.py:41 +msgid "Remove" +msgstr "" + +#: ../pybiklib/ui/preferences.py:42 ../pybiklib/ui/preferences.py:43 +msgid "Reset" +msgstr "" + +#: ../pybiklib/ui/preferences.py:44 +msgid "Appearance" +msgstr "" + +#: ../pybiklib/ui/preferences.py:45 +msgid "Color:" +msgstr "" + +#: ../pybiklib/ui/preferences.py:46 +msgid "Image File:" +msgstr "" + +#: ../pybiklib/ui/preferences.py:47 +msgid "Tiled" +msgstr "" + +#: ../pybiklib/ui/preferences.py:48 +msgid "Mosaic" +msgstr "" + +#: ../pybiklib/ui/preferences.py:49 +msgid "Background:" +msgstr "" + +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. +#: ../data/applications/pybik.desktop.in.h:4 +msgid "rubik;cube;puzzle;magic;" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:19 +#: ../data/plugins/01-challenges.algorithm.py:22 +#: ../data/plugins/01-challenges.algorithm.py:25 +#: ../data/plugins/01-challenges.algorithm.py:28 +#: ../data/plugins/01-challenges.algorithm.py:31 +#: ../data/plugins/01-challenges.algorithm.py:34 +#: ../data/plugins/01-challenges.algorithm.py:37 +#: ../data/plugins/01-challenges.algorithm.py:40 +#: ../data/plugins/01-challenges.algorithm.py:43 +#: ../data/plugins/01-challenges.algorithm.py:46 +#: ../data/plugins/01-challenges.algorithm.py:49 +msgid "Challenges" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:20 +msgid "Solve random cube" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:23 +msgid "Solve in 1 move" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:26 +msgid "Solve in 2 moves" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:29 +msgid "Solve in 3 moves" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:32 +msgid "Solve in 4 moves" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:35 +msgid "Solve in 5 moves" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:38 +msgid "Solve in 6 moves" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:41 +msgid "Solve in 7 moves" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:44 +msgid "Solve in 8 moves" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:47 +msgid "Solve in 9 moves" +msgstr "" + +#: ../data/plugins/01-challenges.algorithm.py:50 +msgid "Solve in 10 moves" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:35 +#: ../data/plugins/10-spiegel.algorithm.py:38 +#: ../data/plugins/10-spiegel.algorithm.py:67 +#: ../data/plugins/10-spiegel.algorithm.py:88 +#: ../data/plugins/10-spiegel.algorithm.py:103 +#: ../data/plugins/10-spiegel.algorithm.py:116 +#: ../data/plugins/10-spiegel.algorithm.py:133 +#: ../data/plugins/10-spiegel.algorithm.py:144 +#: ../data/plugins/11-spiegel-improved.algorithm.py:35 +#: ../data/plugins/11-spiegel-improved.algorithm.py:38 +#: ../data/plugins/11-spiegel-improved.algorithm.py:83 +#: ../data/plugins/11-spiegel-improved.algorithm.py:122 +#: ../data/plugins/11-spiegel-improved.algorithm.py:154 +#: ../data/plugins/11-spiegel-improved.algorithm.py:180 +#: ../data/plugins/11-spiegel-improved.algorithm.py:198 +#: ../data/plugins/11-spiegel-improved.algorithm.py:212 +#: ../data/plugins/12-lbl-leyan.algorithm.py:22 +#: ../data/plugins/12-lbl-leyan.algorithm.py:25 +#: ../data/plugins/12-lbl-leyan.algorithm.py:54 +#: ../data/plugins/12-lbl-leyan.algorithm.py:75 +#: ../data/plugins/12-lbl-leyan.algorithm.py:91 +#: ../data/plugins/12-lbl-leyan.algorithm.py:108 +#: ../data/plugins/12-lbl-leyan.algorithm.py:130 +#: ../data/plugins/12-lbl-leyan.algorithm.py:171 +#: ../data/plugins/20-2x2x2.algorithm.py:19 +#: ../data/plugins/20-2x2x2.algorithm.py:22 +#: ../data/plugins/20-2x2x2.algorithm.py:41 +#: ../data/plugins/20-2x2x2.algorithm.py:61 +msgid "Solvers" +msgstr "" + +#. Spiegel is the name of a solution method +#: ../data/plugins/10-spiegel.algorithm.py:37 +#: ../data/plugins/10-spiegel.algorithm.py:39 +#: ../data/plugins/10-spiegel.algorithm.py:68 +#: ../data/plugins/10-spiegel.algorithm.py:89 +#: ../data/plugins/10-spiegel.algorithm.py:104 +#: ../data/plugins/10-spiegel.algorithm.py:117 +#: ../data/plugins/10-spiegel.algorithm.py:134 +#: ../data/plugins/10-spiegel.algorithm.py:145 +msgid "Spiegel" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:40 +#: ../data/plugins/11-spiegel-improved.algorithm.py:40 +#: ../data/plugins/12-lbl-leyan.algorithm.py:27 +msgid "Top edges" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:69 +#: ../data/plugins/11-spiegel-improved.algorithm.py:85 +#: ../data/plugins/12-lbl-leyan.algorithm.py:56 +msgid "Top corners" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:90 +#: ../data/plugins/11-spiegel-improved.algorithm.py:124 +#: ../data/plugins/12-lbl-leyan.algorithm.py:77 +msgid "Middle slice" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:105 +#: ../data/plugins/11-spiegel-improved.algorithm.py:156 +#: ../data/plugins/12-lbl-leyan.algorithm.py:173 +msgid "Bottom edge place" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:118 +#: ../data/plugins/11-spiegel-improved.algorithm.py:182 +#: ../data/plugins/12-lbl-leyan.algorithm.py:93 +msgid "Bottom edge orient" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:135 +#: ../data/plugins/11-spiegel-improved.algorithm.py:200 +#: ../data/plugins/12-lbl-leyan.algorithm.py:110 +#: ../data/plugins/20-2x2x2.algorithm.py:43 +msgid "Bottom corner place" +msgstr "" + +#: ../data/plugins/10-spiegel.algorithm.py:146 +#: ../data/plugins/11-spiegel-improved.algorithm.py:214 +#: ../data/plugins/12-lbl-leyan.algorithm.py:132 +#: ../data/plugins/20-2x2x2.algorithm.py:63 +msgid "Bottom corner orient" +msgstr "" + +#. Spiegel is the name of a solution method +#: ../data/plugins/11-spiegel-improved.algorithm.py:37 +#: ../data/plugins/11-spiegel-improved.algorithm.py:39 +#: ../data/plugins/11-spiegel-improved.algorithm.py:84 +#: ../data/plugins/11-spiegel-improved.algorithm.py:123 +#: ../data/plugins/11-spiegel-improved.algorithm.py:155 +#: ../data/plugins/11-spiegel-improved.algorithm.py:181 +#: ../data/plugins/11-spiegel-improved.algorithm.py:199 +#: ../data/plugins/11-spiegel-improved.algorithm.py:213 +msgid "Spiegel improved" +msgstr "" + +#. Leyan Lo is the inventor of the solution method +#: ../data/plugins/12-lbl-leyan.algorithm.py:24 +#: ../data/plugins/12-lbl-leyan.algorithm.py:26 +#: ../data/plugins/12-lbl-leyan.algorithm.py:55 +#: ../data/plugins/12-lbl-leyan.algorithm.py:76 +#: ../data/plugins/12-lbl-leyan.algorithm.py:92 +#: ../data/plugins/12-lbl-leyan.algorithm.py:109 +#: ../data/plugins/12-lbl-leyan.algorithm.py:131 +#: ../data/plugins/12-lbl-leyan.algorithm.py:172 +msgid "Layer Method (Leyan Lo)" +msgstr "" + +#: ../data/plugins/20-2x2x2.algorithm.py:20 +#: ../data/plugins/20-2x2x2.algorithm.py:23 +#: ../data/plugins/20-2x2x2.algorithm.py:42 +#: ../data/plugins/20-2x2x2.algorithm.py:62 +msgid "2×2×2" +msgstr "" + +#: ../data/plugins/20-2x2x2.algorithm.py:24 +msgid "Top slice" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:18 +#: ../data/plugins/80-pretty-patterns.algorithm.py:22 +#: ../data/plugins/80-pretty-patterns.algorithm.py:26 +#: ../data/plugins/80-pretty-patterns.algorithm.py:30 +#: ../data/plugins/80-pretty-patterns.algorithm.py:34 +#: ../data/plugins/80-pretty-patterns.algorithm.py:39 +#: ../data/plugins/80-pretty-patterns.algorithm.py:43 +#: ../data/plugins/80-pretty-patterns.algorithm.py:48 +#: ../data/plugins/80-pretty-patterns.algorithm.py:52 +#: ../data/plugins/80-pretty-patterns.algorithm.py:56 +#: ../data/plugins/80-pretty-patterns.algorithm.py:60 +#: ../data/plugins/80-pretty-patterns.algorithm.py:64 +#: ../data/plugins/80-pretty-patterns.algorithm.py:68 +#: ../data/plugins/80-pretty-patterns.algorithm.py:74 +#: ../data/plugins/80-pretty-patterns.algorithm.py:78 +#: ../data/plugins/80-pretty-patterns.algorithm.py:83 +#: ../data/plugins/80-pretty-patterns.algorithm.py:87 +#: ../data/plugins/80-pretty-patterns.algorithm.py:91 +#: ../data/plugins/80-pretty-patterns.algorithm.py:95 +#: ../data/plugins/80-pretty-patterns.algorithm.py:99 +#: ../data/plugins/80-pretty-patterns.algorithm.py:103 +#: ../data/plugins/80-pretty-patterns.algorithm.py:108 +#: ../data/plugins/80-pretty-patterns.algorithm.py:112 +#: ../data/plugins/80-pretty-patterns.algorithm.py:116 +#: ../data/plugins/80-pretty-patterns.algorithm.py:120 +#: ../data/plugins/80-pretty-patterns.algorithm.py:125 +#: ../data/plugins/80-pretty-patterns.algorithm.py:129 +#: ../data/plugins/80-pretty-patterns.algorithm.py:133 +#: ../data/plugins/80-pretty-patterns.algorithm.py:137 +#: ../data/plugins/80-pretty-patterns.algorithm.py:141 +msgid "Pretty patterns" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:19 +#: ../data/plugins/80-pretty-patterns.algorithm.py:23 +#: ../data/plugins/80-pretty-patterns.algorithm.py:27 +#: ../data/plugins/80-pretty-patterns.algorithm.py:31 +#: ../data/plugins/80-pretty-patterns.algorithm.py:35 +#: ../data/plugins/80-pretty-patterns.algorithm.py:40 +#: ../data/plugins/80-pretty-patterns.algorithm.py:44 +msgid "Stripes" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:49 +#: ../data/plugins/80-pretty-patterns.algorithm.py:53 +msgid "Criss-Cross" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:57 +msgid "Fried Eggs" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:61 +msgid "Big Fried Eggs" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:65 +msgid "4 Fried Eggs" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:69 +msgid "Chessboard" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:75 +msgid "Cross" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:79 +msgid "Zig Zag" +msgstr "" + +#. T is the shape formed by the cube labels +#: ../data/plugins/80-pretty-patterns.algorithm.py:85 +#: ../data/plugins/80-pretty-patterns.algorithm.py:88 +#: ../data/plugins/80-pretty-patterns.algorithm.py:92 +#: ../data/plugins/80-pretty-patterns.algorithm.py:96 +#: ../data/plugins/80-pretty-patterns.algorithm.py:100 +#: ../data/plugins/80-pretty-patterns.algorithm.py:104 +msgid "T-Time" +msgstr "" + +#. C is the shape formed by the cube labels +#: ../data/plugins/80-pretty-patterns.algorithm.py:110 +msgid "C" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:113 +msgid "Cube in a Cube" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:117 +msgid "Striped Cube in a Cube" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:121 +msgid "Six Square Cuboids" +msgstr "" + +#. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. +#: ../data/plugins/80-pretty-patterns.algorithm.py:127 +msgid "Superflip" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:130 +msgid "Superflip easy" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:134 +msgid "Green Mamba" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:138 +msgid "Anaconda" +msgstr "" + +#: ../data/plugins/80-pretty-patterns.algorithm.py:142 +msgid "Duck Feet" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:20 +#: ../data/plugins/90-library.algorithm.py:23 +#: ../data/plugins/90-library.algorithm.py:26 +#: ../data/plugins/90-library.algorithm.py:29 +#: ../data/plugins/90-library.algorithm.py:32 +#: ../data/plugins/90-library.algorithm.py:35 +#: ../data/plugins/90-library.algorithm.py:38 +#: ../data/plugins/90-library.algorithm.py:41 +#: ../data/plugins/90-library.algorithm.py:44 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 +msgid "Library" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:21 +#: ../data/plugins/90-library.algorithm.py:24 +msgid "Middle Layer" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:22 +msgid "Front to Right" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:25 +msgid "Front to Left" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:27 +#: ../data/plugins/90-library.algorithm.py:30 +#: ../data/plugins/90-library.algorithm.py:33 +#: ../data/plugins/90-library.algorithm.py:36 +msgid "Last Layer" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:28 +msgid "Swap Edges" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:31 +msgid "Flip Edges" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:34 +msgid "Swap Corners" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:37 +msgid "Rotate Corners" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:39 +#: ../data/plugins/90-library.algorithm.py:42 +#: ../data/plugins/90-library.algorithm.py:45 +msgid "Rotate Center" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:40 +msgid "2×Up" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:43 +msgid "Up and Front" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:46 +msgid "Up and Down" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 +msgid "Misc" +msgstr "" + +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 +msgid "Back without Back" +msgstr "" + +#: ../data/plugins/90-library.algorithm.py:54 +msgid "2×Back without Back" +msgstr "" diff -Nru pybik-1.1/po/uk.po pybik-1.1.1/po/uk.po --- pybik-1.1/po/uk.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/uk.po 2014-02-11 16:04:02.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" "PO-Revision-Date: 2013-06-02 05:44+0000\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" @@ -18,8 +18,8 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Launchpad-Export-Date: 2013-06-11 05:58+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-03 05:24+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" @@ -232,27 +232,27 @@ "Під час спроби читання параметрів сталася помилка:\n" "{error_message}" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" msgstr "Цеглинка" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" msgstr "Цеглинка-{0}×{1}×{2}" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" msgstr "Башта" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" msgstr "Башта-{0}×{1}" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" msgstr "Куб" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" msgstr "Куб-{0}×{0}×{0}" @@ -264,32 +264,37 @@ msgid "This algorithm only works for:\n" msgstr "Цей алгоритм працює лише для таких випадків:\n" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" msgstr "вимкнено" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" msgstr "слабке" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" msgstr "низьке" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" msgstr "середнє" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" msgstr "значне" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" msgstr "потужне" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" msgstr "Не вдалося записати параметри до файла: {error_message}" @@ -558,7 +563,7 @@ msgid "Background:" msgstr "Тло:" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;cube;puzzle;magic;рубік;кубик;головоломка;загадка;гра;" @@ -872,8 +877,8 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" msgstr "Бібліотека" @@ -931,15 +936,16 @@ msgid "Up and Down" msgstr "Згори і знизу" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" msgstr "Інше" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" msgstr "Назад без повертання" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" msgstr "Подвійний назад без повертання" diff -Nru pybik-1.1/po/uz.po pybik-1.1.1/po/uz.po --- pybik-1.1/po/uz.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/uz.po 2014-02-11 16:04:02.000000000 +0000 @@ -7,16 +7,16 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" -"PO-Revision-Date: 2013-06-02 00:46+0000\n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" +"PO-Revision-Date: 2014-02-08 14:11+0000\n" "Last-Translator: Akmal Xushvaqov \n" "Language-Team: Uzbek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Launchpad-Export-Date: 2013-06-11 05:58+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-09 06:23+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" @@ -64,6 +64,12 @@ "collection of various moves. The cube can be manipulated with the mouse or " "keyboard. You can change the colors or images on the faces of the cube." msgstr "" +"Pybik- Ernő Rubik tomonidan yaratilgan interaktiv, grafik va bitta inson " +"o‘ynay oladigan boshqotirmadir. Kubikdan tashqari dasturda minoralar va " +"g‘ishtlar ham qurish mumkin (kubik boshqotirmalari emas). \"Pybik\"da " +"javoblar, ajoyib namunalar va turli yurishlar jamlanmasi mavjud. Kubikni " +"sichqoncha yoki klaviatura bilan o‘ynash mumkin. Ranglar yoki rasmlarni " +"kubik yuzidan o‘zgartirishingiz mumkin." #: ../pybiklib/config.py:75 msgid "" @@ -77,6 +83,15 @@ "FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for " "more details." msgstr "" +"Ushbu dastur erkin va ochiq kodli dastur: siz uni tarqatishingiz yoki \"Free " +"Software Foundation\" tomonidan e’lon qilingan \"GNU General Public " +"License\" litsenziyasi (3ta versiyasi yoki xohishingiz bo‘yicha so‘nggi " +"versiyalari) shartlari ostida o‘zgartirishingiz mumkin.\n" +"\n" +"Ushbu dastur boshqalarga foydali bo‘ladi degan umidda tekin tarqatiladi, " +"ammo SAVDO yoki SHAXSIY MAQSADLARDA FOYDALANISHDA HECH QANDAY KAFOLAY " +"BERILMAYDI. Batafsil ma’lumot uchun \"GNU General Public License\" bilan " +"tanishib chiqing." #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. @@ -85,12 +100,17 @@ "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" +"GNU General Public License<|> matnini to‘liq o‘qing " +"yoki ni ko‘ring." #: ../pybiklib/config.py:90 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" +"Siz GNU General Public License'ning nusxasini ushbu dastur bilan birga qabul " +"qilgan bo‘lishingiz kerak. Agar bunday bo‘lmasa, ushbu saytni ko‘ring: " +"." #. "Wishlist" is used on Launchpad for Importance, so this word should probably not be translated #: ../pybiklib/config.py:96 @@ -99,6 +119,10 @@ "please submit a <{CONTACT_FILEBUG}|>bug report<|>. In the latter case you " "can mark the bug report as \"Wishlist\"." msgstr "" +"\"Pybik\" da birorta nosozlik topsangiz yoki yaxshilash uchun " +"tavsiyalaringiz bo‘lsa, marhamat, <{CONTACT_FILEBUG}|>nosizlikni xabar " +"berish<|>ni to‘ldiring va jo‘nating. So‘nggi holatda nosozlikni " +"\"Xohlaganlar ro‘yxati\" sifatida belgilang." #: ../pybiklib/config.py:102 msgid "" @@ -114,14 +138,26 @@ "\"Starting to " "translate\"<|>." msgstr "" +"Tarjimalar Launchpad tarjima guruhi<|> tomonidan nazorat qilinadi.\n" +"\n" +"Agar \"Pybic\"ni ona tilingizga tarjima qilishga yordam bermoqchi " +"bo‘lsangiz, veb interfys<|> " +"orqali amalga oshirishingiz mumkin.\n" +"\n" +"\"Launchpad yordamida tarjima " +"qilish\"<|> va " +"\"Tarjimani " +"boshlash\"<|> haqida ko‘proq o‘qing." #: ../pybiklib/dialogs.py:168 msgid "Press a key …" -msgstr "" +msgstr "Tugmani bosing:" #: ../pybiklib/dialogs.py:263 msgid "The program needs to be restarted for the changes to take effect." msgstr "" +"O‘zgarishlar kuchga kirishi uchun dasturni qaytadan ishga tushirish kerak." #. Only a single color, no picture or pattern #: ../pybiklib/dialogs.py:296 @@ -130,322 +166,330 @@ #: ../pybiklib/dialogs.py:301 msgid "select …" -msgstr "" +msgstr "tanlash..." #: ../pybiklib/dialogs.py:313 msgid "Up" -msgstr "" +msgstr "Yuqoriga" #: ../pybiklib/dialogs.py:313 msgid "Down" -msgstr "" +msgstr "Pastga" #: ../pybiklib/dialogs.py:313 msgid "Left" -msgstr "" +msgstr "Chapga" #: ../pybiklib/dialogs.py:313 msgid "Right" -msgstr "" +msgstr "O‘ngga" #: ../pybiklib/dialogs.py:313 msgid "Front" -msgstr "" +msgstr "Oldinga" #: ../pybiklib/dialogs.py:313 msgid "Back" -msgstr "" +msgstr "Orqaga" #: ../pybiklib/dialogs.py:331 msgid "Move" -msgstr "" +msgstr "Ko‘chirish" #: ../pybiklib/dialogs.py:332 msgid "Key" -msgstr "" +msgstr "Tugma" #: ../pybiklib/dialogs.py:481 msgid "Open Image" -msgstr "" +msgstr "Rasmni ochish" #: ../pybiklib/dialogs.py:533 ../pybiklib/ui/model.py:13 msgid "Size:" -msgstr "" +msgstr "Hajmi:" #: ../pybiklib/dialogs.py:533 msgid "Basis:" -msgstr "" +msgstr "Asosiy:" #: ../pybiklib/dialogs.py:533 msgid "Width:" -msgstr "" +msgstr "Eni:" #: ../pybiklib/dialogs.py:562 msgid "Canceling operation, please wait" -msgstr "" +msgstr "Jarayon bekor qilindi, kutib turing" #: ../pybiklib/dialogs.py:634 msgid "Pybik project website" -msgstr "" +msgstr "Pybik loyihasi sayti" #: ../pybiklib/main.py:230 msgid "" "An error occurred while reading the settings:\n" "{error_message}" msgstr "" +"Sozlamalar o‘qilyotganda xato yuz berdi:\n" +"{error_message}" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" -msgstr "" +msgstr "G‘isht" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" -msgstr "" +msgstr "{0}×{1}×{2}-g‘isht" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" -msgstr "" +msgstr "Minora" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" -msgstr "" +msgstr "{0}×{1}-minora" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" -msgstr "" +msgstr "Kubik" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" -msgstr "" +msgstr "{0}×{0}×{0}-kubik" #: ../pybiklib/plugins.py:92 msgid "This algorithm does not work for any model.\n" -msgstr "" +msgstr "Ushbu algoritm birorta ham model uchun ishlamaydi.\n" #: ../pybiklib/plugins.py:94 ../pybiklib/plugins.py:97 msgid "This algorithm only works for:\n" -msgstr "" +msgstr "Ushbu algoritm faqat quyidagi uchun ishlaydi:\n" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" -msgstr "" +msgstr "o‘chirilgan" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" -msgstr "" +msgstr "xunuk" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" -msgstr "" +msgstr "past" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" -msgstr "" +msgstr "o‘rtacha" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" -msgstr "" +msgstr "yuqori" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" -msgstr "" +msgstr "yuqoriroq" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" -msgstr "" +msgstr "Sozlashlarni faylga yozib bo‘lmaydi: {error_message}" #: ../pybiklib/ui/about.py:14 msgid "About Pybik" -msgstr "" +msgstr "Pybik haqida" #: ../pybiklib/ui/about.py:15 msgid "About" -msgstr "" +msgstr "Haqida" #: ../pybiklib/ui/about.py:16 msgid "Translators:" -msgstr "" +msgstr "Tarjimonlar:" #: ../pybiklib/ui/about.py:17 msgid "Feedback" -msgstr "" +msgstr "Mulohaza" #: ../pybiklib/ui/about.py:18 msgid "Translate" -msgstr "" +msgstr "Tarjima qilish" #: ../pybiklib/ui/about.py:19 msgid "License" -msgstr "" +msgstr "Litsenziya" #: ../pybiklib/ui/main.py:35 msgid "&Game" -msgstr "" +msgstr "&O‘yin" #: ../pybiklib/ui/main.py:36 msgid "&Edit" -msgstr "" +msgstr "&Tahrirlash" #: ../pybiklib/ui/main.py:37 msgid "&View" -msgstr "" +msgstr "&Ko‘rinishi" #: ../pybiklib/ui/main.py:38 msgid "&Help" -msgstr "" +msgstr "&Yordam" #: ../pybiklib/ui/main.py:39 msgid "&New Random" -msgstr "" +msgstr "&Yangi tasodifiy" #: ../pybiklib/ui/main.py:40 msgid "Ne&w Solved" -msgstr "" +msgstr "Ya&ngi bajarilgan" #: ../pybiklib/ui/main.py:41 msgid "&Quit" -msgstr "" +msgstr "Chi&qish" #: ../pybiklib/ui/main.py:42 msgid "&Select Model …" -msgstr "" +msgstr "Modelni tanla&sh" #: ../pybiklib/ui/main.py:43 msgid "&Set as Initial State" -msgstr "" +msgstr "Boshlang‘ich holat sifatida o‘rnati&sh" #: ../pybiklib/ui/main.py:44 msgid "&Reset Rotation" -msgstr "" +msgstr "Bu&rishni bekor qilish" #: ../pybiklib/ui/main.py:45 msgid "&Invert Moves" -msgstr "" +msgstr "&Orqaga qaytarish" #: ../pybiklib/ui/main.py:46 msgid "Reload Plugins" -msgstr "" +msgstr "Plaginlarni qayta yuklash" #: ../pybiklib/ui/main.py:47 msgid "&Preferences …" -msgstr "" +msgstr "&Sozlamalar" #: ../pybiklib/ui/main.py:48 msgid "&Toolbar" -msgstr "" +msgstr "&Asboblar paneli" #: ../pybiklib/ui/main.py:49 msgid "&Status Bar" -msgstr "" +msgstr "&Holat paneli" #: ../pybiklib/ui/main.py:50 msgid "&Info …" -msgstr "" +msgstr "&Ma’lumot …" #: ../pybiklib/ui/main.py:51 msgid "Rewind" -msgstr "" +msgstr "Orqaga" #: ../pybiklib/ui/main.py:52 msgid "Go to the previous mark (or the beginning) of the sequence of moves" msgstr "" +"Ko‘chirishlar natijalarining oldingi (yoki boshlanishi) belgilanishiga o‘tish" #: ../pybiklib/ui/main.py:53 msgid "Previous" -msgstr "" +msgstr "Oldingi" #: ../pybiklib/ui/main.py:54 msgid "Make one step backwards" -msgstr "" +msgstr "Bir qadam orqaga qaytarish" #: ../pybiklib/ui/main.py:55 msgid "Stop" -msgstr "" +msgstr "To‘xtatish" #: ../pybiklib/ui/main.py:56 msgid "Stop running the sequence of moves" -msgstr "" +msgstr "Yurishlar natijalarini bajarishni to‘xtatish" #: ../pybiklib/ui/main.py:57 msgid "Play" -msgstr "" +msgstr "O‘yinni boshlash" #: ../pybiklib/ui/main.py:58 msgid "Run forward through the sequence of moves" -msgstr "" +msgstr "Yurishlar ichiga bir bosqich o‘tish" #: ../pybiklib/ui/main.py:59 msgid "Next" -msgstr "" +msgstr "Keyingi" #: ../pybiklib/ui/main.py:60 msgid "Make one step forwards" -msgstr "" +msgstr "Bir bosqich oldinga o‘tish" #: ../pybiklib/ui/main.py:61 msgid "Forward" -msgstr "" +msgstr "Oldinga" #: ../pybiklib/ui/main.py:62 msgid "Go to the next mark (or the end) of the sequence of moves" -msgstr "" +msgstr "Yurishlardagi keyingi (yoki oxirgi) belgilashga o‘tish" #: ../pybiklib/ui/main.py:63 msgid "Add Mark" -msgstr "" +msgstr "Belgilashni qo‘shish" #: ../pybiklib/ui/main.py:64 msgid "Mark the current place in the sequence of moves" -msgstr "" +msgstr "Yurishlardagi joriy joyni belgilash" #: ../pybiklib/ui/main.py:65 msgid "Remove Mark" -msgstr "" +msgstr "Belgilashni olib tashlash" #: ../pybiklib/ui/main.py:66 msgid "Remove the mark at the current place in the sequence of moves" -msgstr "" +msgstr "Yurishlardagi joriy joyni belgilashni olib tashlash" #: ../pybiklib/ui/main.py:67 msgid "&Edit Bar" -msgstr "" +msgstr "&Tahrirlash paneli" #: ../pybiklib/ui/main.py:68 msgid "Normalize Cube Rotations" -msgstr "" +msgstr "Kubkini burishni me’yorlashtirish" #: ../pybiklib/ui/model.py:12 msgid "Select Model" -msgstr "" +msgstr "Modelni tanlang" #: ../pybiklib/ui/model.py:14 msgid "Height:" -msgstr "" +msgstr "Bo‘yi:" #: ../pybiklib/ui/model.py:15 msgid "Depth:" -msgstr "" +msgstr "Chuqurligi:" #: ../pybiklib/ui/preferences.py:27 msgid "Preferences" -msgstr "" +msgstr "Parametrlar" #: ../pybiklib/ui/preferences.py:28 msgid "Graphic" -msgstr "" +msgstr "Grafik" #: ../pybiklib/ui/preferences.py:29 msgid "Animation Speed:" -msgstr "" +msgstr "Animatsiya tezligi:" #: ../pybiklib/ui/preferences.py:30 msgid "Lighting" -msgstr "" +msgstr "Yoritish" #: ../pybiklib/ui/preferences.py:31 msgid "Mirror Distance:" -msgstr "" +msgstr "Oyna uzoqligi:" #: ../pybiklib/ui/preferences.py:32 msgid "" @@ -461,62 +505,64 @@ #: ../pybiklib/ui/preferences.py:34 msgid "Mouse" -msgstr "" +msgstr "Sichqoncha" #: ../pybiklib/ui/preferences.py:35 msgid "Four directions" -msgstr "" +msgstr "To‘rt yo‘nalishda" #: ../pybiklib/ui/preferences.py:36 msgid "" "Simplified,\n" "right button inverts move" msgstr "" +"Soddalashtirilgan,\n" +"o‘ng tugma yurishni orqaga qaytaradi" #: ../pybiklib/ui/preferences.py:37 msgid "Keys" -msgstr "" +msgstr "Tugmalar" #: ../pybiklib/ui/preferences.py:38 ../pybiklib/ui/preferences.py:39 msgid "Add" -msgstr "" +msgstr "Qo‘shish" #: ../pybiklib/ui/preferences.py:40 ../pybiklib/ui/preferences.py:41 msgid "Remove" -msgstr "" +msgstr "Olib tashlash" #: ../pybiklib/ui/preferences.py:42 ../pybiklib/ui/preferences.py:43 msgid "Reset" -msgstr "" +msgstr "Bekor qilish" #: ../pybiklib/ui/preferences.py:44 msgid "Appearance" -msgstr "" +msgstr "Ko‘rinishi" #: ../pybiklib/ui/preferences.py:45 msgid "Color:" -msgstr "" +msgstr "Rangi:" #: ../pybiklib/ui/preferences.py:46 msgid "Image File:" -msgstr "" +msgstr "Rasm fayli:" #: ../pybiklib/ui/preferences.py:47 msgid "Tiled" -msgstr "" +msgstr "Plitkali" #: ../pybiklib/ui/preferences.py:48 msgid "Mosaic" -msgstr "" +msgstr "Mozayka" #: ../pybiklib/ui/preferences.py:49 msgid "Background:" -msgstr "" +msgstr "Orqa fon:" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" -msgstr "" +msgstr "rubik;kubik;boshqotirma;sehrli;" #: ../data/plugins/01-challenges.algorithm.py:19 #: ../data/plugins/01-challenges.algorithm.py:22 @@ -530,51 +576,51 @@ #: ../data/plugins/01-challenges.algorithm.py:46 #: ../data/plugins/01-challenges.algorithm.py:49 msgid "Challenges" -msgstr "" +msgstr "Muammolar" #: ../data/plugins/01-challenges.algorithm.py:20 msgid "Solve random cube" -msgstr "" +msgstr "Tasodifiy kubikni hal qilish" #: ../data/plugins/01-challenges.algorithm.py:23 msgid "Solve in 1 move" -msgstr "" +msgstr "1 yurishda hal qilish" #: ../data/plugins/01-challenges.algorithm.py:26 msgid "Solve in 2 moves" -msgstr "" +msgstr "2 yurishda hal qilish" #: ../data/plugins/01-challenges.algorithm.py:29 msgid "Solve in 3 moves" -msgstr "" +msgstr "3 yurishda hal qilish" #: ../data/plugins/01-challenges.algorithm.py:32 msgid "Solve in 4 moves" -msgstr "" +msgstr "4 yurishda hal qilish" #: ../data/plugins/01-challenges.algorithm.py:35 msgid "Solve in 5 moves" -msgstr "" +msgstr "5 yurishda hal qilish" #: ../data/plugins/01-challenges.algorithm.py:38 msgid "Solve in 6 moves" -msgstr "" +msgstr "6 yurishda hal qilish" #: ../data/plugins/01-challenges.algorithm.py:41 msgid "Solve in 7 moves" -msgstr "" +msgstr "7 yurishda hal qilish" #: ../data/plugins/01-challenges.algorithm.py:44 msgid "Solve in 8 moves" -msgstr "" +msgstr "8 yurishda hal qilish" #: ../data/plugins/01-challenges.algorithm.py:47 msgid "Solve in 9 moves" -msgstr "" +msgstr "9 yurishda hal qilish" #: ../data/plugins/01-challenges.algorithm.py:50 msgid "Solve in 10 moves" -msgstr "" +msgstr "10 yurishda hal qilish" #: ../data/plugins/10-spiegel.algorithm.py:35 #: ../data/plugins/10-spiegel.algorithm.py:38 @@ -605,7 +651,7 @@ #: ../data/plugins/20-2x2x2.algorithm.py:41 #: ../data/plugins/20-2x2x2.algorithm.py:61 msgid "Solvers" -msgstr "" +msgstr "Yechimlar" #. Spiegel is the name of a solution method #: ../data/plugins/10-spiegel.algorithm.py:37 @@ -617,51 +663,51 @@ #: ../data/plugins/10-spiegel.algorithm.py:134 #: ../data/plugins/10-spiegel.algorithm.py:145 msgid "Spiegel" -msgstr "" +msgstr "Spiegel" #: ../data/plugins/10-spiegel.algorithm.py:40 #: ../data/plugins/11-spiegel-improved.algorithm.py:40 #: ../data/plugins/12-lbl-leyan.algorithm.py:27 msgid "Top edges" -msgstr "" +msgstr "Yuqori chegaralar" #: ../data/plugins/10-spiegel.algorithm.py:69 #: ../data/plugins/11-spiegel-improved.algorithm.py:85 #: ../data/plugins/12-lbl-leyan.algorithm.py:56 msgid "Top corners" -msgstr "" +msgstr "Yuqori burchaklar" #: ../data/plugins/10-spiegel.algorithm.py:90 #: ../data/plugins/11-spiegel-improved.algorithm.py:124 #: ../data/plugins/12-lbl-leyan.algorithm.py:77 msgid "Middle slice" -msgstr "" +msgstr "O‘rtadagi qism" #: ../data/plugins/10-spiegel.algorithm.py:105 #: ../data/plugins/11-spiegel-improved.algorithm.py:156 #: ../data/plugins/12-lbl-leyan.algorithm.py:173 msgid "Bottom edge place" -msgstr "" +msgstr "Pastgi chegara joyi" #: ../data/plugins/10-spiegel.algorithm.py:118 #: ../data/plugins/11-spiegel-improved.algorithm.py:182 #: ../data/plugins/12-lbl-leyan.algorithm.py:93 msgid "Bottom edge orient" -msgstr "" +msgstr "Pastgi chegara hududi" #: ../data/plugins/10-spiegel.algorithm.py:135 #: ../data/plugins/11-spiegel-improved.algorithm.py:200 #: ../data/plugins/12-lbl-leyan.algorithm.py:110 #: ../data/plugins/20-2x2x2.algorithm.py:43 msgid "Bottom corner place" -msgstr "" +msgstr "Pastgi burchak joyi" #: ../data/plugins/10-spiegel.algorithm.py:146 #: ../data/plugins/11-spiegel-improved.algorithm.py:214 #: ../data/plugins/12-lbl-leyan.algorithm.py:132 #: ../data/plugins/20-2x2x2.algorithm.py:63 msgid "Bottom corner orient" -msgstr "" +msgstr "Pastgi burchak hududi" #. Spiegel is the name of a solution method #: ../data/plugins/11-spiegel-improved.algorithm.py:37 @@ -673,7 +719,7 @@ #: ../data/plugins/11-spiegel-improved.algorithm.py:199 #: ../data/plugins/11-spiegel-improved.algorithm.py:213 msgid "Spiegel improved" -msgstr "" +msgstr "Shpigel yaxshilandi" #. Leyan Lo is the inventor of the solution method #: ../data/plugins/12-lbl-leyan.algorithm.py:24 @@ -685,18 +731,18 @@ #: ../data/plugins/12-lbl-leyan.algorithm.py:131 #: ../data/plugins/12-lbl-leyan.algorithm.py:172 msgid "Layer Method (Leyan Lo)" -msgstr "" +msgstr "Qatlam uslubi (Leyan Lo)" #: ../data/plugins/20-2x2x2.algorithm.py:20 #: ../data/plugins/20-2x2x2.algorithm.py:23 #: ../data/plugins/20-2x2x2.algorithm.py:42 #: ../data/plugins/20-2x2x2.algorithm.py:62 msgid "2×2×2" -msgstr "" +msgstr "2×2×2" #: ../data/plugins/20-2x2x2.algorithm.py:24 msgid "Top slice" -msgstr "" +msgstr "Yuqori qism" #: ../data/plugins/80-pretty-patterns.algorithm.py:18 #: ../data/plugins/80-pretty-patterns.algorithm.py:22 @@ -729,7 +775,7 @@ #: ../data/plugins/80-pretty-patterns.algorithm.py:137 #: ../data/plugins/80-pretty-patterns.algorithm.py:141 msgid "Pretty patterns" -msgstr "" +msgstr "Ajoyib namunalar" #: ../data/plugins/80-pretty-patterns.algorithm.py:19 #: ../data/plugins/80-pretty-patterns.algorithm.py:23 @@ -739,36 +785,36 @@ #: ../data/plugins/80-pretty-patterns.algorithm.py:40 #: ../data/plugins/80-pretty-patterns.algorithm.py:44 msgid "Stripes" -msgstr "" +msgstr "Yo‘laklar" #: ../data/plugins/80-pretty-patterns.algorithm.py:49 #: ../data/plugins/80-pretty-patterns.algorithm.py:53 msgid "Criss-Cross" -msgstr "" +msgstr "Criss-Cross" #: ../data/plugins/80-pretty-patterns.algorithm.py:57 msgid "Fried Eggs" -msgstr "" +msgstr "Qovurilgan tuxumlar" #: ../data/plugins/80-pretty-patterns.algorithm.py:61 msgid "Big Fried Eggs" -msgstr "" +msgstr "Katta qovurilgan tuxumlar" #: ../data/plugins/80-pretty-patterns.algorithm.py:65 msgid "4 Fried Eggs" -msgstr "" +msgstr "4 ta qovurilgan tuxumlar" #: ../data/plugins/80-pretty-patterns.algorithm.py:69 msgid "Chessboard" -msgstr "" +msgstr "Shaxmat" #: ../data/plugins/80-pretty-patterns.algorithm.py:75 msgid "Cross" -msgstr "" +msgstr "Plus" #: ../data/plugins/80-pretty-patterns.algorithm.py:79 msgid "Zig Zag" -msgstr "" +msgstr "Zig Zag" #. T is the shape formed by the cube labels #: ../data/plugins/80-pretty-patterns.algorithm.py:85 @@ -778,24 +824,24 @@ #: ../data/plugins/80-pretty-patterns.algorithm.py:100 #: ../data/plugins/80-pretty-patterns.algorithm.py:104 msgid "T-Time" -msgstr "" +msgstr "T-Time" #. C is the shape formed by the cube labels #: ../data/plugins/80-pretty-patterns.algorithm.py:110 msgid "C" -msgstr "" +msgstr "C" #: ../data/plugins/80-pretty-patterns.algorithm.py:113 msgid "Cube in a Cube" -msgstr "" +msgstr "Kubikdagi kubik" #: ../data/plugins/80-pretty-patterns.algorithm.py:117 msgid "Striped Cube in a Cube" -msgstr "" +msgstr "Kubikdagi chiziqchali kubik" #: ../data/plugins/80-pretty-patterns.algorithm.py:121 msgid "Six Square Cuboids" -msgstr "" +msgstr "Olti kvadratli kubikchalar" #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: ../data/plugins/80-pretty-patterns.algorithm.py:127 @@ -808,15 +854,15 @@ #: ../data/plugins/80-pretty-patterns.algorithm.py:134 msgid "Green Mamba" -msgstr "" +msgstr "Yashil mamba" #: ../data/plugins/80-pretty-patterns.algorithm.py:138 msgid "Anaconda" -msgstr "" +msgstr "Anakonda" #: ../data/plugins/80-pretty-patterns.algorithm.py:142 msgid "Duck Feet" -msgstr "" +msgstr "O‘rdak oyog‘i" #: ../data/plugins/90-library.algorithm.py:20 #: ../data/plugins/90-library.algorithm.py:23 @@ -827,38 +873,38 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" -msgstr "" +msgstr "Kutubxona" #: ../data/plugins/90-library.algorithm.py:21 #: ../data/plugins/90-library.algorithm.py:24 msgid "Middle Layer" -msgstr "" +msgstr "O‘rta qatlam" #: ../data/plugins/90-library.algorithm.py:22 msgid "Front to Right" -msgstr "" +msgstr "Oldindan o‘ngga" #: ../data/plugins/90-library.algorithm.py:25 msgid "Front to Left" -msgstr "" +msgstr "Oldindan chapga" #: ../data/plugins/90-library.algorithm.py:27 #: ../data/plugins/90-library.algorithm.py:30 #: ../data/plugins/90-library.algorithm.py:33 #: ../data/plugins/90-library.algorithm.py:36 msgid "Last Layer" -msgstr "" +msgstr "So‘nggi qatlam" #: ../data/plugins/90-library.algorithm.py:28 msgid "Swap Edges" -msgstr "" +msgstr "Chetlarini almashtirish" #: ../data/plugins/90-library.algorithm.py:31 msgid "Flip Edges" -msgstr "" +msgstr "Chetlarini burish" #: ../data/plugins/90-library.algorithm.py:34 msgid "Swap Corners" @@ -866,35 +912,36 @@ #: ../data/plugins/90-library.algorithm.py:37 msgid "Rotate Corners" -msgstr "" +msgstr "Burchaklarini burish" #: ../data/plugins/90-library.algorithm.py:39 #: ../data/plugins/90-library.algorithm.py:42 #: ../data/plugins/90-library.algorithm.py:45 msgid "Rotate Center" -msgstr "" +msgstr "Markazga burish" #: ../data/plugins/90-library.algorithm.py:40 msgid "2×Up" -msgstr "" +msgstr "2×yuqoriga" #: ../data/plugins/90-library.algorithm.py:43 msgid "Up and Front" -msgstr "" +msgstr "Yuqoriga va oldinga" #: ../data/plugins/90-library.algorithm.py:46 msgid "Up and Down" msgstr "" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" msgstr "" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" msgstr "" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" msgstr "" diff -Nru pybik-1.1/po/zh_CN.po pybik-1.1.1/po/zh_CN.po --- pybik-1.1/po/zh_CN.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/zh_CN.po 2014-02-11 16:04:02.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" "PO-Revision-Date: 2013-06-15 13:51+0000\n" "Last-Translator: Xiaoxing Ye \n" "Language-Team: Chinese (Simplified) \n" @@ -15,8 +15,8 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Launchpad-Export-Date: 2013-06-16 04:40+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-03 05:24+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" @@ -207,27 +207,27 @@ "在读取设置时发生错误:\n" "{error_message}" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" msgstr "砖块" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-砖块" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" msgstr "塔" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" msgstr "{0}×{1}-塔" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" msgstr "立方体" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-立方体" @@ -239,32 +239,37 @@ msgid "This algorithm only works for:\n" msgstr "" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" msgstr "" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" msgstr "" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" msgstr "" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" msgstr "" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" msgstr "" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" msgstr "" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" msgstr "" @@ -526,7 +531,7 @@ msgid "Background:" msgstr "" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" msgstr "" @@ -840,8 +845,8 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" msgstr "" @@ -899,15 +904,16 @@ msgid "Up and Down" msgstr "" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" msgstr "" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" msgstr "" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" msgstr "" diff -Nru pybik-1.1/po/zh_TW.po pybik-1.1.1/po/zh_TW.po --- pybik-1.1/po/zh_TW.po 2013-06-16 15:08:26.000000000 +0000 +++ pybik-1.1.1/po/zh_TW.po 2014-02-11 16:04:02.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2013-06-10 23:50+0200\n" +"POT-Creation-Date: 2014-02-02 13:48+0100\n" "PO-Revision-Date: 2013-06-15 13:53+0000\n" "Last-Translator: Po-Chun Huang \n" "Language-Team: Chinese (Traditional) \n" @@ -15,8 +15,8 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Launchpad-Export-Date: 2013-06-16 04:40+0000\n" -"X-Generator: Launchpad (build 16667)\n" +"X-Launchpad-Export-Date: 2014-02-03 05:24+0000\n" +"X-Generator: Launchpad (build 16916)\n" #: ../pybiklib/application.py:343 msgid "Press the Esc key to exit Edit Mode" @@ -197,27 +197,27 @@ "讀取設定時發生錯誤:\n" "{error_message}" -#: ../pybiklib/model.py:205 +#: ../pybiklib/model.py:206 msgid "Brick" msgstr "磚塊" -#: ../pybiklib/model.py:206 +#: ../pybiklib/model.py:207 msgid "{0}×{1}×{2}-Brick" msgstr "" -#: ../pybiklib/model.py:852 +#: ../pybiklib/model.py:855 msgid "Tower" msgstr "塔" -#: ../pybiklib/model.py:853 +#: ../pybiklib/model.py:856 msgid "{0}×{1}-Tower" msgstr "" -#: ../pybiklib/model.py:867 +#: ../pybiklib/model.py:870 msgid "Cube" msgstr "立方體" -#: ../pybiklib/model.py:868 +#: ../pybiklib/model.py:871 msgid "{0}×{0}×{0}-Cube" msgstr "" @@ -229,32 +229,37 @@ msgid "This algorithm only works for:\n" msgstr "此演算法僅適用於:\n" -#. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:90 msgid "disabled" msgstr "停用" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:92 msgid "ugly" msgstr "劣" -#: ../pybiklib/settings.py:89 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:94 msgid "low" msgstr "低" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:96 msgid "medium" msgstr "中" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:98 msgid "high" msgstr "高" -#: ../pybiklib/settings.py:90 +#. 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher +#: ../pybiklib/settings.py:100 msgid "higher" msgstr "更高" -#: ../pybiklib/settings.py:241 +#: ../pybiklib/settings.py:251 msgid "Settings can not be written to file: {error_message}" msgstr "" @@ -516,7 +521,7 @@ msgid "Background:" msgstr "背景:" -#. Add whatever keywords you want in your language, separated by semicolons. These keywords are used when searching for applications in dashes, etc. (Unity, GNOME Shell) +#. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: ../data/applications/pybik.desktop.in.h:4 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;cube;puzzle;magic;魔術;方塊;立方體;拼圖;" @@ -830,8 +835,8 @@ #: ../data/plugins/90-library.algorithm.py:38 #: ../data/plugins/90-library.algorithm.py:41 #: ../data/plugins/90-library.algorithm.py:44 -#: ../data/plugins/90-library.algorithm.py:47 -#: ../data/plugins/90-library.algorithm.py:50 +#: ../data/plugins/90-library.algorithm.py:48 +#: ../data/plugins/90-library.algorithm.py:52 msgid "Library" msgstr "" @@ -889,15 +894,16 @@ msgid "Up and Down" msgstr "" -#: ../data/plugins/90-library.algorithm.py:48 -#: ../data/plugins/90-library.algorithm.py:51 +#: ../data/plugins/90-library.algorithm.py:49 +#: ../data/plugins/90-library.algorithm.py:53 msgid "Misc" msgstr "" -#: ../data/plugins/90-library.algorithm.py:49 +#. Back without Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer +#: ../data/plugins/90-library.algorithm.py:51 msgid "Back without Back" msgstr "" -#: ../data/plugins/90-library.algorithm.py:52 +#: ../data/plugins/90-library.algorithm.py:54 msgid "2×Back without Back" msgstr "" diff -Nru pybik-1.1/pybiklib/config.py pybik-1.1.1/pybiklib/config.py --- pybik-1.1/pybiklib/config.py 2013-06-16 21:04:36.000000000 +0000 +++ pybik-1.1.1/pybiklib/config.py 2014-02-11 16:07:21.000000000 +0000 @@ -1,7 +1,7 @@ #-*- coding:utf-8 -*- # Pybik -- A 3 dimensional magic cube game. -# Copyright © 2009, 2011-2013 B. Clausius +# Copyright © 2009, 2011-2014 B. Clausius # # 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 @@ -24,12 +24,12 @@ AUTHOR = 'B. Clausius' CONTACT_EMAIL = 'barcc@gmx.de' -COPYRIGHT = 'Copyright © 2009-2013, B. Clausius' +COPYRIGHT = 'Copyright © 2009-2014, B. Clausius' LICENSE_NAME = 'GPL-3+' PACKAGE = 'pybik' # Name of the application, probably should not be translated. APPNAME = N_('Pybik') -VERSION = '1.1' +VERSION = '1.1.1' WEBSITE = 'https://launchpad.net/pybik/' DOWNLOADS = 'https://launchpad.net/pybik/+download' CONTACT_FILEBUG = 'https://bugs.launchpad.net/pybik/+filebug' diff -Nru pybik-1.1/pybiklib/cubestate.py pybik-1.1.1/pybiklib/cubestate.py --- pybik-1.1/pybiklib/cubestate.py 2013-04-28 10:54:05.000000000 +0000 +++ pybik-1.1.1/pybiklib/cubestate.py 2014-01-28 17:45:29.000000000 +0000 @@ -1,7 +1,7 @@ #-*- coding:utf-8 -*- # Pybik -- A 3 dimensional magic cube game. -# Copyright © 2009-2013 B. Clausius +# Copyright © 2009-2014 B. Clausius # # 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 @@ -92,7 +92,7 @@ for index, (pos, rot) in enumerate(self._blocksn): if rot != allrot: return False # Cubie rotated - block = self.model.rotated_position[index, rot] + block = self.model.rotated_position[rot][index] if pos != block: return False # Cubie at wrong place return True diff -Nru pybik-1.1/pybiklib/model.py pybik-1.1.1/pybiklib/model.py --- pybik-1.1/pybiklib/model.py 2013-05-30 13:01:06.000000000 +0000 +++ pybik-1.1.1/pybiklib/model.py 2014-01-28 17:45:40.000000000 +0000 @@ -1,7 +1,7 @@ #!/usr/bin/python3 # -*- coding: utf-8 -*- -# Copyright © 2012-2013 B. Clausius +# Copyright © 2012-2014 B. Clausius # # 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 @@ -143,9 +143,10 @@ self.inplace_rotations = [] def init_inplace_rotations(self, model): - for (blocknum, rotsym), blocknum2 in model.rotated_position.items(): - if blocknum == blocknum2 == self.index and rotsym: - self.inplace_rotations.append(rotsym) + for rotsym, blocknum_blocknum2 in model.rotated_position.items(): + for blocknum, blocknum2 in enumerate(blocknum_blocknum2): + if blocknum == blocknum2 == self.index and rotsym: + self.inplace_rotations.append(rotsym) self.inplace_rotations = sorted(self.inplace_rotations, key=len)[:2] def __repr__(self): @@ -376,7 +377,9 @@ coords = (np.matrix([block.coords]) * rotation).A.tolist()[0] for p, pos in enumerate(self.blocks): if pos.coords == coords: - rotated_position[b, sym] = p + if sym not in rotated_position: + rotated_position[sym] = [0 for block in self.blocks] + rotated_position[sym][b] = p break else: assert False, 'not a permutation' @@ -385,10 +388,10 @@ @classmethod def get_datafilename(cls, sizes): x, y, unused_z = sizes - if x <= 2: - return 'mdata_01-02' + if x <= 3: + return 'mdata_01-03' else: - return 'mdata_{:02}_{}'.format(x, 0 if x<=5 else y%2 if x<=8 else y%3) + return 'mdata_{:02}_{}'.format(x, 0 if x<=6 else y%2 if x<=10 else y%3) def get_savedata(self): self.calc_data() @@ -466,7 +469,7 @@ def rotate_symbolic(self, axis, rdir, block, sym): rsym = (self.symbols if not rdir else self.symbolsI)[axis] - block = self.rotated_position[block, rsym] + block = self.rotated_position[rsym][block] sym = self.norm_symbol(sym + rsym) return block, sym diff -Nru pybik-1.1/pybiklib/settings.py pybik-1.1.1/pybiklib/settings.py --- pybik-1.1/pybiklib/settings.py 2013-06-10 17:58:16.000000000 +0000 +++ pybik-1.1.1/pybiklib/settings.py 2014-02-10 19:45:32.000000000 +0000 @@ -1,7 +1,7 @@ #-*- coding:utf-8 -*- # Pybik -- A 3 dimensional magic cube game. -# Copyright © 2009, 2011-2013 B. Clausius +# Copyright © 2009, 2011-2014 B. Clausius # # 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 @@ -85,9 +85,19 @@ ('F', 'Ctrl+KP+5'), ('B', 'Ctrl+KP+0'), ], lambda v: type(v) is list), 'draw.zoom': (1.0, (0.1, 100.0)), - # The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher - 'draw.samples': (3, [N_('disabled'), N_('ugly'), N_('low'), - N_('medium'), N_('high'), N_('higher')]), + 'draw.samples': (3, [ + # 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher + N_('disabled'), + # 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher + N_('ugly'), + # 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher + N_('low'), + # 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher + N_('medium'), + # 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher + N_('high'), + # 6 Levels for antialiasing quality: disabled, ugly, low, medium, high, higher + N_('higher')]), 'draw.mirror_faces': (False, lambda v: type(v) is bool), 'draw.mirror_distance': (2.1, (0.1, 10.0)), 'action.edit_moves': ('Ctrl+L', lambda v: type(v) is str), diff -Nru pybik-1.1/pybiklib/translators.py pybik-1.1.1/pybiklib/translators.py --- pybik-1.1/pybiklib/translators.py 2013-06-16 15:03:02.000000000 +0000 +++ pybik-1.1.1/pybiklib/translators.py 2014-02-11 16:03:35.000000000 +0000 @@ -16,23 +16,32 @@ ('Fábio Nogueira', 'https://launchpad.net/~fnogueira'), ('Rafael Neri', 'https://launchpad.net/~rafepel'), ]), + ('Bulgarian', 'bg', [ + ('Atanas Kovachki', 'https://launchpad.net/~zdar'), + ]), ('Chinese (Simplified)', 'zh_CN', [ ('Xiaoxing Ye', 'https://launchpad.net/~xiaoxing'), ]), ('Chinese (Traditional)', 'zh_TW', [ ('Po-Chun Huang', 'https://launchpad.net/~aphroteus'), ]), + ('Czech', 'cs', [ + ('Tadeáš Pařík', 'https://launchpad.net/~pariktadeas'), + ]), ('English (United Kingdom)', 'en_GB', [ ('Andi Chandler', 'https://launchpad.net/~bing'), ('Anthony Harrington', 'https://launchpad.net/~untaintableangel'), ('B Clausius', 'https://launchpad.net/~barcc'), ]), + ('Finnish', 'fi', [ + ('Jiri Grönroos', 'https://launchpad.net/~jiri-gronroos'), + ]), ('French', 'fr', [ ('Aurélien Ribeiro', 'https://launchpad.net/~aurel-koala'), ('Baptiste Fontaine', 'https://launchpad.net/~bfontaine'), ('Célestin Taramarcaz', 'https://launchpad.net/~celestin'), - ('Havok Novak', 'https://launchpad.net/~havok-novak'), ('Nicolas Delvaux', 'https://launchpad.net/~malizor'), + ('Pierre Soulat', 'https://launchpad.net/~pierre-soulat'), ('Sylvie Gallet', 'https://launchpad.net/~sylvie-gallet'), ('lann', 'https://launchpad.net/~lann'), ]), @@ -56,6 +65,7 @@ ('Alfio Missaglia', 'https://launchpad.net/~missaglialfio'), ('Claudio Arseni', 'https://launchpad.net/~claudio.arseni'), ('Francesco Muriana', 'https://launchpad.net/~f-muriana'), + ('Gianfranco Frisani', 'https://launchpad.net/~gfrisani'), ]), ('Japanese', 'ja', [ ('epii', 'https://launchpad.net/~epii'), @@ -67,21 +77,30 @@ ('abuyop', 'https://launchpad.net/~abuyop'), ]), ('Polish', 'pl', [ - ('Mike08', 'https://launchpad.net/~micou8'), + ('Michał Rzepiński', 'https://launchpad.net/~micou8'), ('Szymon Nieznański', 'https://launchpad.net/~isamu715'), ]), ('Russian', 'ru', [ + ('Aleksey Kabanov', 'https://launchpad.net/~ak099'), ('Oleg Koptev', 'https://launchpad.net/~koptev-oleg'), + ('Rashid Aliyev', 'https://launchpad.net/~rashid'), ('scientistnik', 'https://launchpad.net/~nozdrin-plotnitsky'), ]), ('Serbian', 'sr', [ ('Мирослав Николић', 'https://launchpad.net/~lipek'), ]), ('Spanish', 'es', [ - ('Adolfo Jayme Barrientos', 'https://launchpad.net/~fitoschido'), + ('Aaron Farias', 'https://launchpad.net/~timido'), + ('Adolfo Jayme', 'https://launchpad.net/~fitoschido'), ('Dante Díaz', 'https://launchpad.net/~dante'), ('Eduardo Alberto Calvo', 'https://launchpad.net/~edu5800'), ]), + ('Telugu', 'te', [ + ('Praveen Illa', 'https://launchpad.net/~telugulinux'), + ]), + ('Turkish', 'tr', [ + ('Şâkir Aşçı', 'https://launchpad.net/~sakirasci'), + ]), ('Ukrainian', 'uk', [ ('Yuri Chornoivan', 'https://launchpad.net/~yurchor-gmail'), ]), diff -Nru pybik-1.1/pybiktest/testrunner.py pybik-1.1.1/pybiktest/testrunner.py --- pybik-1.1/pybiktest/testrunner.py 2013-06-16 09:29:09.000000000 +0000 +++ pybik-1.1.1/pybiktest/testrunner.py 2014-01-28 17:46:07.000000000 +0000 @@ -1,7 +1,7 @@ #!/usr/bin/python3 # -*- coding: utf-8 -*- -# Copyright © 2013 B. Clausius +# Copyright © 2013-2014 B. Clausius # # 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 @@ -97,6 +97,7 @@ def mkState(fields): _State = namedtuple('_State', fields) class State(_State): # pylint: disable=W0232 + __slots__ = () def tostr(self, other=None): def field_tostr(i): if self[i] is matchall: diff -Nru pybik-1.1/README pybik-1.1.1/README --- pybik-1.1/README 2013-06-16 21:06:43.000000000 +0000 +++ pybik-1.1.1/README 2014-02-11 16:08:44.000000000 +0000 @@ -1,6 +1,6 @@ -About Pybik 1.1 -=============== +About Pybik 1.1.1 +================= Pybik is an interactive, graphical, single player puzzle about the cube invented by Ernő Rubik. Besides the cube the program can handle towers and diff -Nru pybik-1.1/setup.py pybik-1.1.1/setup.py --- pybik-1.1/setup.py 2013-06-16 20:09:57.000000000 +0000 +++ pybik-1.1.1/setup.py 2014-01-28 17:42:41.000000000 +0000 @@ -1,7 +1,7 @@ #!/usr/bin/python3 # -*- coding: utf-8 -*- -# Copyright © 2009, 2011-2013 B. Clausius +# Copyright © 2009, 2011-2014 B. Clausius # # 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 @@ -48,6 +48,10 @@ #from Cython.Distutils import build_ext +# the clean command should leave a clean tree +sys.dont_write_bytecode = True +os.environ['PYTHONDONTWRITEBYTECODE'] = '1' + from tools.po_isempty import po_isempty from pybiklib import config @@ -69,6 +73,7 @@ ('arch-only', None, 'Build only architecture dependent files'), ('indep-only', None, 'Build only architecture independent files'), ('fast', None, 'Build models without optimization'), + ('pickle-protocol=', None, 'Pickle protocol for modeldata (default: highest protocol)'), ] boolean_options = distutils.command.build.build.boolean_options + [ 'inplace', 'use-generated-code', 'arch-only', 'indep-only', 'fast', @@ -97,6 +102,7 @@ self.arch_only = False self.indep_only = False self.fast = False + self.pickle_protocol = '-1' def finalize_options(self): distutils.command.build.build.finalize_options(self) @@ -375,6 +381,7 @@ ('force', 'f', 'forcibly build everything (ignore file timestamps)'), ('parallel=', None,'Build in parallel with the given number of processes or "auto"'), ('fast', None,'Build models without optimization'), + ('pickle-protocol=', None, 'Pickle protocol for modeldata (default: highest protocol)'), ] boolean_options = ['inplace', 'force', 'fast'] @@ -384,6 +391,7 @@ self.force = None self.parallel = None self.fast = None + self.pickle_protocol = '-1' def finalize_options(self): self.set_undefined_options('build', @@ -392,6 +400,7 @@ ('force', 'force'), ('parallel', 'parallel'), ('fast', 'fast'), + ('pickle_protocol', 'pickle_protocol'), ) if self.parallel is None: self.parallel = 1 @@ -400,6 +409,7 @@ self.parallel = multiprocessing.cpu_count() else: self.parallel = int(self.parallel) + self.pickle_protocol = int(self.pickle_protocol) def run(self): from tools import modeldata @@ -410,7 +420,7 @@ filename = os.path.join(modeldir, filename) os.remove(filename) def create_modeldata(directory, testfunc): - modeldata.create_modeldata(directory, testfunc, self.parallel, self.fast) + modeldata.create_modeldata(directory, testfunc, self.parallel, self.fast, self.pickle_protocol) if self.force: testfunc = None else: diff -Nru pybik-1.1/tools/modeldata.py pybik-1.1.1/tools/modeldata.py --- pybik-1.1/tools/modeldata.py 2013-05-27 17:50:44.000000000 +0000 +++ pybik-1.1.1/tools/modeldata.py 2014-01-28 17:46:16.000000000 +0000 @@ -1,7 +1,7 @@ #!/usr/bin/python3 # -*- coding: utf-8 -*- -# Copyright © 2012-2013 B. Clausius +# Copyright © 2012-2014 B. Clausius # # 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 @@ -20,7 +20,7 @@ import sys, os sys.path.insert(0, '.') -import pickle as pickle +import pickle, pickletools from multiprocessing import Pool, cpu_count from pybiklib import model @@ -118,25 +118,32 @@ return savedata def pool_create_modelfile(args): - filename, fast = args + filename, fast, pickle_protocol = args sizes_list = pool_enum_modelfile(filename) savedata = pool_create_modelfiledata(sizes_list) if not fast: dedup_reset() savedata = pool_dedup(0, savedata) + savedata = pickle.dumps(savedata, pickle_protocol) + datasize = ['{:.1f} kb'.format(len(savedata) / 1000), '---'] + if not fast: + savedata = pickletools.optimize(savedata) + datasize[1] = '{:.1f} kb'.format(len(savedata) / 1000) with open(filename, 'wb') as datafile: - pickle.dump(savedata, datafile, -1) + datafile.write(savedata) vals = ['%6s' % v for v in cnt_values] dups = ['%6s' % d for d in cnt_dups] - return 'generated {} with {} models\n vals: {}\n dups: {}'.format( - filename, len(sizes_list), ' '.join(vals), ' '.join(dups)) + return 'generated {} with {} models ({}, {})\n vals: {}\n dups: {}'.format( + filename, len(sizes_list), + datasize[0], datasize[1], + ' '.join(vals), ' '.join(dups)) -def create_modeldata(dirname, testfunc=None, parallel=1, fast=False): +def create_modeldata(dirname, testfunc=None, parallel=1, fast=False, pickle_protocol=-1): if testfunc is None: testfunc = lambda arg: True imap_model = pool_functions(parallel) modelfiles = enum_modelfiles(dirname, testfunc) - for lines in imap_model(pool_create_modelfile, [(m, fast) for m in modelfiles]): + for lines in imap_model(pool_create_modelfile, [(m, fast, pickle_protocol) for m in modelfiles]): print(lines) sys.stdout.flush()