python. no more guile. python.
This commit is contained in:
parent
5a139f7263
commit
bf49e76420
9 changed files with 16037 additions and 45 deletions
112
configure.ac
112
configure.ac
|
@ -16,9 +16,9 @@ AC_PROG_INSTALL
|
||||||
ALL_LINGUAS=""
|
ALL_LINGUAS=""
|
||||||
AM_GNU_GETTEXT
|
AM_GNU_GETTEXT
|
||||||
|
|
||||||
dnl AC_LANG(C++)
|
# AC_LANG(C++)
|
||||||
|
|
||||||
dnl Check what compiler we are using
|
# Check what compiler we are using
|
||||||
AC_MSG_CHECKING([for GCC])
|
AC_MSG_CHECKING([for GCC])
|
||||||
if test "$GCC" = "yes"; then
|
if test "$GCC" = "yes"; then
|
||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
|
@ -42,17 +42,17 @@ else
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl Determine if maintainer portions of the Makefiles should be included.
|
# Determine if maintainer portions of the Makefiles should be included.
|
||||||
AM_MAINTAINER_MODE
|
AM_MAINTAINER_MODE
|
||||||
|
|
||||||
dnl Check for system header files
|
# Check for system header files
|
||||||
AC_CHECK_HEADERS(ctype.h dirent.h fcntl.h libgen.h locale.h nl_types.h process.h signal.h stdarg.h stdio.h stdlib.h string.h time.h unistd.h sys/param.h sys/select.h sys/signal.h sys/stat.h sys/time.h sys/types.h sys/wait.h)
|
AC_CHECK_HEADERS(ctype.h dirent.h fcntl.h libgen.h locale.h nl_types.h process.h signal.h stdarg.h stdio.h stdlib.h string.h time.h unistd.h sys/param.h sys/select.h sys/signal.h sys/stat.h sys/time.h sys/types.h sys/wait.h)
|
||||||
AC_HEADER_TIME
|
AC_HEADER_TIME
|
||||||
|
|
||||||
dnl Determine the return type of signal handlers
|
# Determine the return type of signal handlers
|
||||||
AC_TYPE_SIGNAL
|
AC_TYPE_SIGNAL
|
||||||
|
|
||||||
dnl Check whether to include debugging code
|
# Check whether to include debugging code
|
||||||
DEBUG=""
|
DEBUG=""
|
||||||
AC_MSG_CHECKING([whether to include verbose debugging code])
|
AC_MSG_CHECKING([whether to include verbose debugging code])
|
||||||
AC_ARG_ENABLE([debug],
|
AC_ARG_ENABLE([debug],
|
||||||
|
@ -73,26 +73,78 @@ AC_ARG_ENABLE([debug],
|
||||||
)
|
)
|
||||||
CFLAGS="$CFLAGS $DEBUG"
|
CFLAGS="$CFLAGS $DEBUG"
|
||||||
|
|
||||||
dnl Check for Python
|
# Check for Python
|
||||||
AC_CHECK_HEADER([python2.2/Python.h],
|
AC_ARG_WITH([python],
|
||||||
,
|
[ --with-python=path Set location of Python executable],
|
||||||
AC_MSG_ERROR([Openbox requires the use of Python 2.2. This is its secret special formula for extreme sexiness.
|
[PYTHON="$withval"],
|
||||||
|
[PYTHON=])
|
||||||
|
|
||||||
|
# Find the python bin
|
||||||
|
if ! test "$PYTHON"; then
|
||||||
|
AC_CHECK_PROGS(PYTHON, $prefix/bin/python python python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5 python1.4)
|
||||||
|
fi
|
||||||
|
if ! test "$PYTHON"; then
|
||||||
|
AC_MSG_ERROR([Openbox requires the use of Python. This is its secret special formula for extreme sexiness.
|
||||||
See http://www.python.org
|
See http://www.python.org
|
||||||
]))
|
])
|
||||||
AC_CHECK_LIB([python2.2], [Py_Initialize],
|
fi
|
||||||
PYTHON_LDFLAGS="-lpython2.2",
|
|
||||||
dnl -Xlinker -export-dynamic",
|
# Find our python paths
|
||||||
AC_MSG_ERROR([Openbox requires the use of Python 2.2. This is its secret special formula for extreme sexiness.
|
AC_MSG_CHECKING([for Python version])
|
||||||
See http://www.python.org
|
# Need to do this hack since autoconf replaces __file__ with the name of the configure file
|
||||||
]))
|
filehack="file__"
|
||||||
PYTHON_CFLAGS="-I/usr/include/python2.2 -I/usr/gwar/include/python2.2"
|
PYVERSION=`($PYTHON -c "import string,operator; print operator.getitem(string.split(string.__$filehack,'/'),-2)")`
|
||||||
|
AC_MSG_RESULT([$PYVERSION])
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for Python prefix])
|
||||||
|
PYPREFIX=`($PYTHON -c "import sys; print sys.prefix") 2>/dev/null`
|
||||||
|
AC_MSG_RESULT([$PYPREFIX])
|
||||||
|
AC_MSG_CHECKING([for Python exec-prefix])
|
||||||
|
PYEPREFIX=`($PYTHON -c "import sys; print sys.exec_prefix") 2>/dev/null`
|
||||||
|
AC_MSG_RESULT([$PYEPREFIX])
|
||||||
|
|
||||||
|
# Find the include directory
|
||||||
|
AC_MSG_CHECKING([for Python header files])
|
||||||
|
if test -r "$PYPREFIX/include/$PYVERSION/Python.h"; then
|
||||||
|
PYTHON_CFLAGS="-I$PYPREFIX/include/$PYVERSION"
|
||||||
|
fi
|
||||||
|
if test -z "$PYTHON_CFLAGS"; then
|
||||||
|
if test -r "$PYPREFIX/include/Py/Python.h"; then
|
||||||
|
PYTHON_CFLAGS="-I$PYPREFIX/include/Py"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if ! test "$PYTHON_CFLAGS"; then
|
||||||
|
AC_MSG_ERROR([Not found])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([$PYTHON_CFLAGS])
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set the library directory blindly. This probably won't work with older versions
|
||||||
|
AC_MSG_CHECKING([for Python library])
|
||||||
|
dirs="$PYVERSION/config $PYVERSION/lib python/lib"
|
||||||
|
for i in $dirs; do
|
||||||
|
if test -d "$PYEPREFIX/lib/$i"; then
|
||||||
|
PYLIB="$PYEPREFIX/lib/$i"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if ! test "$PYLIB"; then
|
||||||
|
AC_MSG_ERROR([Not found])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([$PYLIB])
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for really old versions
|
||||||
|
if test -r "$PYLIB/libPython.a"; then
|
||||||
|
PYTHON_LIBS="-L$PYLIB -lModules -lPython -lObjects -lParser"
|
||||||
|
else
|
||||||
|
PYTHON_LIBS="-L$PYLIB -l$PYVERSION"
|
||||||
|
fi
|
||||||
|
|
||||||
AC_SUBST([PYTHON_CFLAGS])
|
AC_SUBST([PYTHON_CFLAGS])
|
||||||
AC_SUBST([PYTHON_LDFLAGS])
|
AC_SUBST([PYTHON_LIBS])
|
||||||
|
|
||||||
dnl Check for guile
|
# Check for X headers and libraries
|
||||||
GUILE_FLAGS
|
|
||||||
|
|
||||||
dnl Check for X headers and libraries
|
|
||||||
AC_PATH_X
|
AC_PATH_X
|
||||||
AC_PATH_XTRA
|
AC_PATH_XTRA
|
||||||
test "$no_x" = "yes" && AC_MSG_ERROR([No Xlibs found.])
|
test "$no_x" = "yes" && AC_MSG_ERROR([No Xlibs found.])
|
||||||
|
@ -103,14 +155,14 @@ CFLAGS="$CFLAGS $X_CFLAGS"
|
||||||
LIBS="$LIBS $X_LIBS $X_EXTRA_LIBS"
|
LIBS="$LIBS $X_LIBS $X_EXTRA_LIBS"
|
||||||
LDFLAGS="$LDFLAGS $X_PRE_LIBS $LIBS $X_EXTRA_LIBS"
|
LDFLAGS="$LDFLAGS $X_PRE_LIBS $LIBS $X_EXTRA_LIBS"
|
||||||
|
|
||||||
dnl Check for required functions in -lX11
|
# Check for required functions in -lX11
|
||||||
AC_CHECK_LIB([X11], [XOpenDisplay],
|
AC_CHECK_LIB([X11], [XOpenDisplay],
|
||||||
,
|
,
|
||||||
AC_MSG_ERROR([Could not find XOpenDisplay in -lX11.])
|
AC_MSG_ERROR([Could not find XOpenDisplay in -lX11.])
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
dnl Check for Xft >= 2
|
# Check for Xft >= 2
|
||||||
XFT_MIN_MAJOR=2
|
XFT_MIN_MAJOR=2
|
||||||
XFT_MIN_MINOR=0
|
XFT_MIN_MINOR=0
|
||||||
XFT_MIN_REVISION=0
|
XFT_MIN_REVISION=0
|
||||||
|
@ -125,14 +177,14 @@ fi
|
||||||
|
|
||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
|
|
||||||
dnl Store these
|
# Store these
|
||||||
OLDLIBS=$LIBS
|
OLDLIBS=$LIBS
|
||||||
OLDCFLAGS=$CFLAGS
|
OLDCFLAGS=$CFLAGS
|
||||||
|
|
||||||
XFT_CFLAGS="`pkg-config --cflags xft`"
|
XFT_CFLAGS="`pkg-config --cflags xft`"
|
||||||
XFT_LIBS="`pkg-config --libs xft`"
|
XFT_LIBS="`pkg-config --libs xft`"
|
||||||
|
|
||||||
dnl Set these for checking with the tests below. They'll be restored after
|
# Set these for checking with the tests below. They'll be restored after
|
||||||
LIBS="$LIBS $XFT_LIBS"
|
LIBS="$LIBS $XFT_LIBS"
|
||||||
CFLAGS="$XFT_CFLAGS $CFLAGS"
|
CFLAGS="$XFT_CFLAGS $CFLAGS"
|
||||||
|
|
||||||
|
@ -197,14 +249,14 @@ See http://www.fontconfig.org/
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
dnl Restore the old values. Use XFT_CFLAGS and XFT_LIBS in the Makefile.am's
|
# Restore the old values. Use XFT_CFLAGS and XFT_LIBS in the Makefile.am's
|
||||||
LIBS=$OLDLIBS
|
LIBS=$OLDLIBS
|
||||||
CFLAGS=$OLDCFLAGS
|
CFLAGS=$OLDCFLAGS
|
||||||
|
|
||||||
AC_SUBST([XFT_CFLAGS])
|
AC_SUBST([XFT_CFLAGS])
|
||||||
AC_SUBST([XFT_LIBS])
|
AC_SUBST([XFT_LIBS])
|
||||||
|
|
||||||
dnl Check for XShape extension support
|
# Check for XShape extension support
|
||||||
AC_CHECK_LIB([Xext], [XShapeCombineShape],
|
AC_CHECK_LIB([Xext], [XShapeCombineShape],
|
||||||
AC_MSG_CHECKING([for X11/extensions/shape.h])
|
AC_MSG_CHECKING([for X11/extensions/shape.h])
|
||||||
AC_TRY_LINK(
|
AC_TRY_LINK(
|
||||||
|
@ -235,7 +287,7 @@ else
|
||||||
AC_MSG_RESULT([no])
|
AC_MSG_RESULT([no])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl Check for Xinerama extension support
|
# Check for Xinerama extension support
|
||||||
AC_MSG_CHECKING([whether to build support for the Xinerama extension])
|
AC_MSG_CHECKING([whether to build support for the Xinerama extension])
|
||||||
XINERAMA="no"
|
XINERAMA="no"
|
||||||
AC_ARG_ENABLE([xinerama],
|
AC_ARG_ENABLE([xinerama],
|
||||||
|
|
|
@ -2,9 +2,10 @@ CPPFLAGS=$(XFT_CFLAGS) $(PYTHON_CFLAGS) @CPPFLAGS@
|
||||||
|
|
||||||
INCLUDES= -I../src
|
INCLUDES= -I../src
|
||||||
|
|
||||||
noinst_LIBRARIES=libotk.a
|
#noinst_LIBRARIES=libotk.a
|
||||||
|
noinst_LTLIBRARIES=libotk.la
|
||||||
|
|
||||||
libotk_a_SOURCES= color.cc display.cc font.cc gccache.cc image.cc \
|
libotk_la_SOURCES= color.cc display.cc font.cc gccache.cc image.cc \
|
||||||
property.cc imagecontrol.cc rect.cc screeninfo.cc \
|
property.cc imagecontrol.cc rect.cc screeninfo.cc \
|
||||||
texture.cc timer.cc timerqueuemanager.cc style.cc \
|
texture.cc timer.cc timerqueuemanager.cc style.cc \
|
||||||
configuration.cc util.cc widget.cc focuswidget.cc \
|
configuration.cc util.cc widget.cc focuswidget.cc \
|
||||||
|
@ -12,7 +13,7 @@ libotk_a_SOURCES= color.cc display.cc font.cc gccache.cc image.cc \
|
||||||
label.cc focuslabel.cc application.cc appwidget.cc \
|
label.cc focuslabel.cc application.cc appwidget.cc \
|
||||||
otk_wrap.cc
|
otk_wrap.cc
|
||||||
|
|
||||||
#libotk_a_LDFLAGS = $(PYTHON_LDFLAGS)
|
libotk_la_LDFLAGS = $(XFT_LIBS) $(PYTHON_LIBS)
|
||||||
|
|
||||||
MAINTAINERCLEANFILES= Makefile.in
|
MAINTAINERCLEANFILES= Makefile.in
|
||||||
|
|
||||||
|
|
20
otk/otk.i
20
otk/otk.i
|
@ -50,6 +50,26 @@ namespace otk {
|
||||||
%rename(itostring_unsigned) itostring(unsigned int);
|
%rename(itostring_unsigned) itostring(unsigned int);
|
||||||
%rename(itostring_long) itostring(long);
|
%rename(itostring_long) itostring(long);
|
||||||
%rename(itostring_unsigned_long) itostring(unsigned long);
|
%rename(itostring_unsigned_long) itostring(unsigned long);
|
||||||
|
|
||||||
|
// these are needed for guile, but not needed for python!
|
||||||
|
%rename(equals) BColor::operator==;
|
||||||
|
%rename(equals) Rect::operator==;
|
||||||
|
%rename(equals) BTexture::operator==;
|
||||||
|
%ignore BColor::operator!=;
|
||||||
|
%ignore BTexture::operator!=;
|
||||||
|
%ignore Rect::operator!=;
|
||||||
|
%ignore Rect::operator|;
|
||||||
|
%ignore Rect::operator|=;
|
||||||
|
%ignore Rect::operator&;
|
||||||
|
%ignore Rect::operator&=;
|
||||||
|
%ignore OBTimer::operator<;
|
||||||
|
%ignore TimerLessThan;
|
||||||
|
|
||||||
|
/*
|
||||||
|
%rename(set_multi) OtkProperty::set(Window, Atoms, Atoms, unsigned long[], int);
|
||||||
|
%rename(set_string) OtkProperty::set(Window, Atoms, StringType, const std::string &);
|
||||||
|
%rename(set_string_multi) OtkProperty::set(Window, Atoms, StringType, const StringVect &);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
%include "eventdispatcher.hh"
|
%include "eventdispatcher.hh"
|
||||||
|
|
13388
otk/otk_wrap.cc
Normal file
13388
otk/otk_wrap.cc
Normal file
File diff suppressed because it is too large
Load diff
|
@ -125,10 +125,10 @@ public:
|
||||||
inline TextJustify textJustify(void) { return justify; }
|
inline TextJustify textJustify(void) { return justify; }
|
||||||
inline BulletType bulletType(void) { return bullet_type; }
|
inline BulletType bulletType(void) { return bullet_type; }
|
||||||
|
|
||||||
inline const BColor &getBorderColor() const { return border_color; }
|
inline const BColor *getBorderColor() const { return &border_color; }
|
||||||
|
|
||||||
inline const BTexture &getFrameFocus() const { return f_focus; }
|
inline const BTexture *getFrameFocus() const { return &f_focus; }
|
||||||
inline const BTexture &getFrameUnfocus() const { return f_unfocus; }
|
inline const BTexture *getFrameUnfocus() const { return &f_unfocus; }
|
||||||
|
|
||||||
inline void setImageControl(BImageControl *c) {
|
inline void setImageControl(BImageControl *c) {
|
||||||
image_control = c;
|
image_control = c;
|
||||||
|
|
|
@ -2,18 +2,18 @@ localedir=$(datadir)/locale
|
||||||
DEFAULT_MENU=$(pkgdatadir)/menu
|
DEFAULT_MENU=$(pkgdatadir)/menu
|
||||||
DEFAULT_STYLE=$(pkgdatadir)/styles/mbdtex
|
DEFAULT_STYLE=$(pkgdatadir)/styles/mbdtex
|
||||||
|
|
||||||
CPPFLAGS=$(XFT_CFLAGS) $(GUILE_CFLAGS) $(PYTHON_CFLAGS) @CPPFLAGS@ \
|
CPPFLAGS=$(XFT_CFLAGS) $(PYTHON_CFLAGS) @CPPFLAGS@ \
|
||||||
-DDEFAULTMENU=\"$(DEFAULT_MENU)\" \
|
-DDEFAULTMENU=\"$(DEFAULT_MENU)\" \
|
||||||
-DDEFAULTSTYLE=\"$(DEFAULT_STYLE)\" \
|
-DDEFAULTSTYLE=\"$(DEFAULT_STYLE)\" \
|
||||||
-DLOCALEDIR=\"$(localedir)\"
|
-DLOCALEDIR=\"$(localedir)\"
|
||||||
|
|
||||||
LIBS=$(XFT_LIBS) $(GUILE_LDFLAGS) $(PYTHON_LDFLAGS) @LIBS@
|
LIBS=$(XFT_LIBS) $(PYTHON_LIBS) @LIBS@
|
||||||
|
|
||||||
INCLUDES= -I../otk
|
INCLUDES= -I../otk
|
||||||
|
|
||||||
bin_PROGRAMS= openbox3
|
bin_PROGRAMS= openbox3
|
||||||
|
|
||||||
openbox3_LDADD=../otk/libotk.a @LIBINTL@
|
openbox3_LDADD=-L../otk -lotk @LIBINTL@
|
||||||
|
|
||||||
openbox3_SOURCES= actions.cc client.cc frame.cc openbox.cc screen.cc \
|
openbox3_SOURCES= actions.cc client.cc frame.cc openbox.cc screen.cc \
|
||||||
main.cc rootwindow.cc backgroundwidget.cc labelwidget.cc \
|
main.cc rootwindow.cc backgroundwidget.cc labelwidget.cc \
|
||||||
|
@ -26,10 +26,9 @@ distclean-local:
|
||||||
rm -f *\~ *.orig *.rej .\#*
|
rm -f *\~ *.orig *.rej .\#*
|
||||||
|
|
||||||
openbox.i: openbox.hh screen.hh client.hh
|
openbox.i: openbox.hh screen.hh client.hh
|
||||||
touch openbox.i
|
touch $@
|
||||||
|
|
||||||
openbox_wrap.cc: openbox.i
|
openbox_wrap.cc: openbox.i
|
||||||
swig -python -c++ -nodefault -o openbox_wrap.cc openbox.i
|
swig -python -c++ -nodefault -o $@ $<
|
||||||
# swig -guile -c++ -nodefault -o openbox_wrap.cc openbox.i
|
|
||||||
|
|
||||||
# local dependencies
|
# local dependencies
|
||||||
|
|
|
@ -44,10 +44,14 @@ extern "C" {
|
||||||
|
|
||||||
//#include <guile/gh.h>
|
//#include <guile/gh.h>
|
||||||
|
|
||||||
|
//extern void SWIG_init();
|
||||||
|
|
||||||
#include <Python.h>
|
#include <Python.h>
|
||||||
|
|
||||||
// The initializer in openbox_wrap.cc
|
// The initializer in openbox_wrap.cc
|
||||||
extern void init_openbox(void);
|
extern void init_openbox(void);
|
||||||
|
// The initializer in otk_wrap.cc
|
||||||
|
extern void init_otk(void);
|
||||||
|
|
||||||
#include "gettext.h"
|
#include "gettext.h"
|
||||||
#define _(str) gettext(str)
|
#define _(str) gettext(str)
|
||||||
|
@ -157,7 +161,7 @@ Openbox::Openbox(int argc, char **argv)
|
||||||
::exit(1);
|
::exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// make our guile interfaces exist
|
// make our guile interfaces exist
|
||||||
SWIG_init();
|
SWIG_init();
|
||||||
|
|
||||||
|
@ -169,12 +173,14 @@ Openbox::Openbox(int argc, char **argv)
|
||||||
fclose(rcpyfd);
|
fclose(rcpyfd);
|
||||||
gh_load("/home/natas/.openbox/user.scm");
|
gh_load("/home/natas/.openbox/user.scm");
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Py_SetProgramName(argv[0]);
|
Py_SetProgramName(argv[0]);
|
||||||
Py_Initialize();
|
Py_Initialize();
|
||||||
//initopenbox(); // initialize the static 'openbox' module
|
init_otk();
|
||||||
init_openbox();
|
init_openbox();
|
||||||
|
PyRun_String("from _otk import *; from _openbox import *;", Py_file_input,
|
||||||
|
PyEval_GetGlobals(), PyEval_GetGlobals());
|
||||||
FILE *rcpyfd = fopen("/home/natas/.openbox/user.py", "r");
|
FILE *rcpyfd = fopen("/home/natas/.openbox/user.py", "r");
|
||||||
if (!rcpyfd) {
|
if (!rcpyfd) {
|
||||||
printf("failed to load python file /home/natas/.openbox/user.py\n");
|
printf("failed to load python file /home/natas/.openbox/user.py\n");
|
||||||
|
|
|
@ -20,6 +20,10 @@
|
||||||
%ignore ob::Openbox::instance;
|
%ignore ob::Openbox::instance;
|
||||||
%ignore ob::OBScreen::clients;
|
%ignore ob::OBScreen::clients;
|
||||||
|
|
||||||
|
%import "../otk/eventdispatcher.hh"
|
||||||
|
%import "../otk/eventhandler.hh"
|
||||||
|
%import "widget.hh"
|
||||||
|
|
||||||
%include "openbox.hh"
|
%include "openbox.hh"
|
||||||
%include "screen.hh"
|
%include "screen.hh"
|
||||||
%include "client.hh"
|
%include "client.hh"
|
||||||
|
|
2522
src/openbox_wrap.cc
Normal file
2522
src/openbox_wrap.cc
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue