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:
authorWillian Padovani Germano <wpgermano@gmail.com>2003-12-14 04:18:09 +0300
committerWillian Padovani Germano <wpgermano@gmail.com>2003-12-14 04:18:09 +0300
commit49021f7ec4bfc1313c6cdfeae1f9c32e98cc9cdc (patch)
tree44e7c4c38bc8c26b5efe0b52b846402589a4ca9a /source/blender/src/drawscript.c
parent6653af79142aa929eb3d131f8fced363b2c4b828 (diff)
BPython - first step for better integration of Python in Blender:
- add a new space: Space Script - add a new dna struct: Script - add these two properly everywhere they are meant to It's not a tiny commit, but most of it is ground work for what is still to be done. Right now the benefits should be: freeing the Text Editor to be used in a window even while a script w/ gui in "on" and letting more than one currently running script w/ gui be accessible from each window Some files are added, so some build systems (not autotools) will need updates
Diffstat (limited to 'source/blender/src/drawscript.c')
-rw-r--r--source/blender/src/drawscript.c155
1 files changed, 155 insertions, 0 deletions
diff --git a/source/blender/src/drawscript.c b/source/blender/src/drawscript.c
new file mode 100644
index 00000000000..c633d0528eb
--- /dev/null
+++ b/source/blender/src/drawscript.c
@@ -0,0 +1,155 @@
+/**
+ * $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: drawtext.c.
+ *
+ * Contributor(s): Willian Padovani Germano.
+ *
+ * ***** END GPL/BL DUAL LICENSE BLOCK *****
+ */
+
+#include <stdlib.h>
+#include <math.h>
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifndef _WIN32
+#include <unistd.h>
+#else
+#include <io.h>
+#include "BLI_winstuff.h"
+#endif
+#include "MEM_guardedalloc.h"
+#include "PIL_time.h"
+
+#include "BMF_Api.h"
+
+#include "BLI_blenlib.h"
+
+#include "DNA_script_types.h"
+#include "DNA_space_types.h"
+#include "DNA_screen_types.h"
+#include "DNA_userdef_types.h"
+
+#include "BKE_utildefines.h"
+#include "BKE_text.h"
+#include "BKE_global.h"
+#include "BKE_main.h"
+
+#include "BPY_extern.h"
+
+#include "BIF_gl.h"
+#include "BIF_keyval.h"
+#include "BIF_interface.h"
+#include "BIF_drawscript.h"
+#include "BIF_editfont.h"
+#include "BIF_spacetypes.h"
+#include "BIF_usiblender.h"
+#include "BIF_screen.h"
+#include "BIF_toolbox.h"
+#include "BIF_space.h"
+#include "BIF_mywindow.h"
+
+#include "BSE_filesel.h"
+
+#include "mydevice.h"
+#include "blendef.h"
+#include "interface.h"
+
+void drawscriptspace(ScrArea *sa, void *spacedata);
+void winqreadscriptspace(struct ScrArea *sa, void *spacedata, struct BWinEvent *evt);
+
+void drawscriptspace(ScrArea *sa, void *spacedata)
+{
+ SpaceScript *sc = curarea->spacedata.first;
+
+ glClearColor(0.6, 0.6, 0.6, 1.0);
+ glClear(GL_COLOR_BUFFER_BIT);
+ myortho2(-0.5, curarea->winrct.xmax-curarea->winrct.xmin-0.5, -0.5, curarea->winrct.ymax-curarea->winrct.ymin-0.5);
+
+ if(!sc->script) {
+ if (G.main->script.first)
+ sc->script = G.main->script.first;
+ else
+ return;
+ }
+
+ BPY_spacescript_do_pywin_draw(sc);
+}
+
+void winqreadscriptspace(struct ScrArea *sa, void *spacedata, struct BWinEvent *evt)
+{
+ unsigned short event = evt->event;
+ short val = evt->val;
+ SpaceScript *sc = curarea->spacedata.first;
+ Script *script = sc->script;
+
+ if (script) {
+ BPY_spacescript_do_pywin_event(sc, event, val);
+
+ if (!script->flags) /* finished with this script, let's free it */
+ BPY_free_finished_script(script);
+ }
+ else {
+ if (event == QKEY)
+ if (val && okee("QUIT BLENDER")) exit_usiblender();
+ }
+
+ return;
+}
+
+void free_scriptspace (SpaceScript *sc)
+{
+ if (!sc) return;
+
+ sc->script = NULL;
+}
+
+void unlink_script(Script *script)
+{ /* copied from unlink_text in drawtext.c */
+ bScreen *scr;
+ ScrArea *area;
+ SpaceLink *sl;
+
+ for (scr= G.main->screen.first; scr; scr= scr->id.next) {
+ for (area= scr->areabase.first; area; area= area->next) {
+ for (sl= area->spacedata.first; sl; sl= sl->next) {
+ if (sl->spacetype==SPACE_SCRIPT) {
+ SpaceScript *sc= (SpaceScript*) sl;
+
+ if (sc->script==script) {
+ sc->script= NULL;
+
+ if (sc==area->spacedata.first) {
+ scrarea_queue_redraw(area);
+ }
+ }
+ }
+ }
+ }
+ }
+}