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=""
|
||||
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])
|
||||
if test "$GCC" = "yes"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
|
@ -42,17 +42,17 @@ else
|
|||
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
|
||||
|
||||
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_HEADER_TIME
|
||||
|
||||
dnl Determine the return type of signal handlers
|
||||
# Determine the return type of signal handlers
|
||||
AC_TYPE_SIGNAL
|
||||
|
||||
dnl Check whether to include debugging code
|
||||
# Check whether to include debugging code
|
||||
DEBUG=""
|
||||
AC_MSG_CHECKING([whether to include verbose debugging code])
|
||||
AC_ARG_ENABLE([debug],
|
||||
|
@ -73,26 +73,78 @@ AC_ARG_ENABLE([debug],
|
|||
)
|
||||
CFLAGS="$CFLAGS $DEBUG"
|
||||
|
||||
dnl Check for Python
|
||||
AC_CHECK_HEADER([python2.2/Python.h],
|
||||
,
|
||||
AC_MSG_ERROR([Openbox requires the use of Python 2.2. This is its secret special formula for extreme sexiness.
|
||||
# Check for Python
|
||||
AC_ARG_WITH([python],
|
||||
[ --with-python=path Set location of Python executable],
|
||||
[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
|
||||
]))
|
||||
AC_CHECK_LIB([python2.2], [Py_Initialize],
|
||||
PYTHON_LDFLAGS="-lpython2.2",
|
||||
dnl -Xlinker -export-dynamic",
|
||||
AC_MSG_ERROR([Openbox requires the use of Python 2.2. This is its secret special formula for extreme sexiness.
|
||||
See http://www.python.org
|
||||
]))
|
||||
PYTHON_CFLAGS="-I/usr/include/python2.2 -I/usr/gwar/include/python2.2"
|
||||
])
|
||||
fi
|
||||
|
||||
# Find our python paths
|
||||
AC_MSG_CHECKING([for Python version])
|
||||
# Need to do this hack since autoconf replaces __file__ with the name of the configure file
|
||||
filehack="file__"
|
||||
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_LDFLAGS])
|
||||
AC_SUBST([PYTHON_LIBS])
|
||||
|
||||
dnl Check for guile
|
||||
GUILE_FLAGS
|
||||
|
||||
dnl Check for X headers and libraries
|
||||
# Check for X headers and libraries
|
||||
AC_PATH_X
|
||||
AC_PATH_XTRA
|
||||
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"
|
||||
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_MSG_ERROR([Could not find XOpenDisplay in -lX11.])
|
||||
)
|
||||
|
||||
|
||||
dnl Check for Xft >= 2
|
||||
# Check for Xft >= 2
|
||||
XFT_MIN_MAJOR=2
|
||||
XFT_MIN_MINOR=0
|
||||
XFT_MIN_REVISION=0
|
||||
|
@ -125,14 +177,14 @@ fi
|
|||
|
||||
AC_MSG_RESULT([yes])
|
||||
|
||||
dnl Store these
|
||||
# Store these
|
||||
OLDLIBS=$LIBS
|
||||
OLDCFLAGS=$CFLAGS
|
||||
|
||||
XFT_CFLAGS="`pkg-config --cflags 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"
|
||||
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
|
||||
CFLAGS=$OLDCFLAGS
|
||||
|
||||
AC_SUBST([XFT_CFLAGS])
|
||||
AC_SUBST([XFT_LIBS])
|
||||
|
||||
dnl Check for XShape extension support
|
||||
# Check for XShape extension support
|
||||
AC_CHECK_LIB([Xext], [XShapeCombineShape],
|
||||
AC_MSG_CHECKING([for X11/extensions/shape.h])
|
||||
AC_TRY_LINK(
|
||||
|
@ -235,7 +287,7 @@ else
|
|||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
|
||||
dnl Check for Xinerama extension support
|
||||
# Check for Xinerama extension support
|
||||
AC_MSG_CHECKING([whether to build support for the Xinerama extension])
|
||||
XINERAMA="no"
|
||||
AC_ARG_ENABLE([xinerama],
|
||||
|
|
|
@ -2,9 +2,10 @@ CPPFLAGS=$(XFT_CFLAGS) $(PYTHON_CFLAGS) @CPPFLAGS@
|
|||
|
||||
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 \
|
||||
texture.cc timer.cc timerqueuemanager.cc style.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 \
|
||||
otk_wrap.cc
|
||||
|
||||
#libotk_a_LDFLAGS = $(PYTHON_LDFLAGS)
|
||||
libotk_la_LDFLAGS = $(XFT_LIBS) $(PYTHON_LIBS)
|
||||
|
||||
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_long) itostring(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"
|
||||
|
|
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 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 &getFrameUnfocus() const { return f_unfocus; }
|
||||
inline const BTexture *getFrameFocus() const { return &f_focus; }
|
||||
inline const BTexture *getFrameUnfocus() const { return &f_unfocus; }
|
||||
|
||||
inline void setImageControl(BImageControl *c) {
|
||||
image_control = c;
|
||||
|
|
|
@ -2,18 +2,18 @@ localedir=$(datadir)/locale
|
|||
DEFAULT_MENU=$(pkgdatadir)/menu
|
||||
DEFAULT_STYLE=$(pkgdatadir)/styles/mbdtex
|
||||
|
||||
CPPFLAGS=$(XFT_CFLAGS) $(GUILE_CFLAGS) $(PYTHON_CFLAGS) @CPPFLAGS@ \
|
||||
CPPFLAGS=$(XFT_CFLAGS) $(PYTHON_CFLAGS) @CPPFLAGS@ \
|
||||
-DDEFAULTMENU=\"$(DEFAULT_MENU)\" \
|
||||
-DDEFAULTSTYLE=\"$(DEFAULT_STYLE)\" \
|
||||
-DLOCALEDIR=\"$(localedir)\"
|
||||
|
||||
LIBS=$(XFT_LIBS) $(GUILE_LDFLAGS) $(PYTHON_LDFLAGS) @LIBS@
|
||||
LIBS=$(XFT_LIBS) $(PYTHON_LIBS) @LIBS@
|
||||
|
||||
INCLUDES= -I../otk
|
||||
|
||||
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 \
|
||||
main.cc rootwindow.cc backgroundwidget.cc labelwidget.cc \
|
||||
|
@ -26,10 +26,9 @@ distclean-local:
|
|||
rm -f *\~ *.orig *.rej .\#*
|
||||
|
||||
openbox.i: openbox.hh screen.hh client.hh
|
||||
touch openbox.i
|
||||
touch $@
|
||||
|
||||
openbox_wrap.cc: openbox.i
|
||||
swig -python -c++ -nodefault -o openbox_wrap.cc openbox.i
|
||||
# swig -guile -c++ -nodefault -o openbox_wrap.cc openbox.i
|
||||
swig -python -c++ -nodefault -o $@ $<
|
||||
|
||||
# local dependencies
|
||||
|
|
|
@ -44,10 +44,14 @@ extern "C" {
|
|||
|
||||
//#include <guile/gh.h>
|
||||
|
||||
//extern void SWIG_init();
|
||||
|
||||
#include <Python.h>
|
||||
|
||||
// The initializer in openbox_wrap.cc
|
||||
extern void init_openbox(void);
|
||||
// The initializer in otk_wrap.cc
|
||||
extern void init_otk(void);
|
||||
|
||||
#include "gettext.h"
|
||||
#define _(str) gettext(str)
|
||||
|
@ -157,7 +161,7 @@ Openbox::Openbox(int argc, char **argv)
|
|||
::exit(1);
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
// make our guile interfaces exist
|
||||
SWIG_init();
|
||||
|
||||
|
@ -169,12 +173,14 @@ Openbox::Openbox(int argc, char **argv)
|
|||
fclose(rcpyfd);
|
||||
gh_load("/home/natas/.openbox/user.scm");
|
||||
}
|
||||
*/
|
||||
*/
|
||||
|
||||
Py_SetProgramName(argv[0]);
|
||||
Py_Initialize();
|
||||
//initopenbox(); // initialize the static 'openbox' module
|
||||
init_otk();
|
||||
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");
|
||||
if (!rcpyfd) {
|
||||
printf("failed to load python file /home/natas/.openbox/user.py\n");
|
||||
|
|
|
@ -20,6 +20,10 @@
|
|||
%ignore ob::Openbox::instance;
|
||||
%ignore ob::OBScreen::clients;
|
||||
|
||||
%import "../otk/eventdispatcher.hh"
|
||||
%import "../otk/eventhandler.hh"
|
||||
%import "widget.hh"
|
||||
|
||||
%include "openbox.hh"
|
||||
%include "screen.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