Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/bpython/intern/opy_window.c')
-rw-r--r--source/blender/bpython/intern/opy_window.c194
1 files changed, 194 insertions, 0 deletions
diff --git a/source/blender/bpython/intern/opy_window.c b/source/blender/bpython/intern/opy_window.c
new file mode 100644
index 00000000000..8aa976382a9
--- /dev/null
+++ b/source/blender/bpython/intern/opy_window.c
@@ -0,0 +1,194 @@
+
+/*
+ * Python Blender Window module
+ *
+ * $Id$
+ *
+ * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version. The Blender
+ * Foundation also sells licenses for use in proprietary software under
+ * the Blender License. See http://www.blender.org/BL/ for information
+ * about this.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL/BL DUAL LICENSE BLOCK *****
+ */
+
+
+#include "Python.h"
+#include "BPY_macros.h"
+#include "b_interface.h"
+#include "BPY_tools.h"
+#include "BPY_main.h"
+#include "BPY_window.h"
+
+#include "BSE_headerbuttons.h"
+
+#include "BIF_screen.h" // curarea
+#include "BIF_space.h" // allqueue()
+#include "BIF_drawtext.h" // pop_space_text
+#include "mydevice.h" // for all the event constants
+
+#include "opy_datablock.h"
+#include "opy_nmesh.h"
+
+#include "DNA_view3d_types.h"
+#include "DNA_space_types.h"
+
+
+/*********************************/
+/* helper routines */
+
+
+/** update current camera view */
+
+void window_update_curCamera(Object *camera)
+{
+ copy_view3d_lock(REDRAW);
+}
+
+char Windowmodule_QRedrawAll_doc[]= "() - Redraw all windows by queue event";
+
+/* hack to flag that window redraw has happened inside slider callback: */
+int g_window_redrawn = 0;
+
+static PyObject *Windowmodule_QRedrawAll(PyObject *self, PyObject *args)
+{
+ int wintype = 0;
+ BPY_TRY(PyArg_ParseTuple(args, "|i", &wintype));
+
+ allqueue(REDRAWALL, 0);
+ RETURN_INC(Py_None);
+}
+char Windowmodule_Redraw_doc[]= "() - Force a redraw of a specific Window Type; see Window.Const";
+
+PyObject *Windowmodule_Redraw(PyObject *self, PyObject *args)
+{
+ ScrArea *tempsa, *sa;
+ SpaceText *st;
+ int wintype = SPACE_VIEW3D;
+ short redraw_all = 0;
+
+ BPY_TRY(PyArg_ParseTuple(args, "|i", &wintype));
+
+ g_window_redrawn = 1;
+
+ if (wintype < 0)
+ redraw_all = 1;
+ if (!during_script()) {
+ tempsa= curarea;
+ sa= getGlobal()->curscreen->areabase.first;
+ while(sa) {
+
+ if (sa->spacetype== wintype || redraw_all) {
+ /* don't force-redraw Text window (Python GUI) when
+ redraw is called out of a slider update */
+ if (sa->spacetype == SPACE_TEXT) {
+ st = sa->spacedata.first;
+ if (st->text->flags & TXT_FOLLOW) // follow cursor display
+ pop_space_text(st);
+ if (disable_force_draw) {
+ scrarea_queue_redraw(sa);
+ }
+
+
+ } else {
+ scrarea_do_windraw(sa);
+ if (sa->headwin) scrarea_do_headdraw(sa);
+ }
+ }
+
+ sa= sa->next;
+ }
+ if(curarea!=tempsa) areawinset(tempsa->win);
+
+ if (curarea->headwin) scrarea_do_headdraw(curarea);
+ screen_swapbuffers();
+ }
+
+ RETURN_INC(Py_None);
+}
+
+char Windowmodule_RedrawAll_doc[]= "() - Redraw all windows";
+static PyObject *Windowmodule_RedrawAll(PyObject *self, PyObject *args)
+{
+ return Windowmodule_Redraw(self, Py_BuildValue("(i)", -1));
+}
+
+char Windowmodule_draw_progressbar_doc[]= "(done, text) - Draw a progressbar.\n\
+'done' is a float value <= 1.0, 'text' contains info about what is currently\n\
+being done";
+
+static PyObject *Windowmodule_draw_progressbar(PyObject *self, PyObject *args)
+{
+ float done;
+ char *info = 0;
+ int retval;
+
+ BPY_TRY(PyArg_ParseTuple(args, "fs", &done, &info));
+ retval = progress_bar(done, info);
+ return Py_BuildValue("i", retval);
+}
+
+#undef METHODDEF
+#define METHODDEF(func) {#func, Windowmodule_##func, METH_VARARGS, Windowmodule_##func##_doc}
+
+static struct PyMethodDef Windowmodule_methods[] = {
+ METHODDEF(Redraw),
+ METHODDEF(QRedrawAll),
+ METHODDEF(RedrawAll),
+ METHODDEF(draw_progressbar),
+
+ {NULL, NULL}
+};
+
+
+#undef BPY_ADDCONST
+#define BPY_ADDCONST(dict, name) insertConst(dict, #name, PyInt_FromLong(SPACE_##name))
+
+PyObject *INITMODULE(Window)(void)
+{
+ PyObject *d;
+ PyObject *mod= Py_InitModule(SUBMODULE(Window), Windowmodule_methods);
+ PyObject *dict= PyModule_GetDict(mod);
+
+/* from DNA_screen.types.h */
+ d = ConstObject_New();
+ PyDict_SetItemString(dict, "Types" , d);
+
+ BPY_ADDCONST(d, VIEW3D);
+ BPY_ADDCONST(d, IPO);
+ BPY_ADDCONST(d, OOPS);
+ BPY_ADDCONST(d, BUTS);
+ BPY_ADDCONST(d, FILE);
+ BPY_ADDCONST(d, IMAGE);
+ BPY_ADDCONST(d, INFO);
+ BPY_ADDCONST(d, SEQ);
+ BPY_ADDCONST(d, IMASEL);
+ BPY_ADDCONST(d, SOUND);
+ BPY_ADDCONST(d, ACTION);
+ BPY_ADDCONST(d, TEXT);
+ BPY_ADDCONST(d, NLA);
+/* BPY_ADDCONST(d, LOGIC); */
+
+ return mod;
+}