forked from enlightenment/enlightenment
parent
aeac895ef7
commit
63e20e7f14
|
@ -1,6 +1,6 @@
|
|||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
SUBDIRS = intl po src lib client tools doc
|
||||
SUBDIRS = po src lib client tools doc
|
||||
|
||||
MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.guess \
|
||||
config.h.in config.sub configure install-sh \
|
||||
|
|
12
README
12
README
|
@ -1,3 +1,15 @@
|
|||
Additional notes
|
||||
|
||||
todo
|
||||
entry.c - check 'todo' entries (although nobody uses entries except for
|
||||
me in med, do they?)
|
||||
guides.c - imlib parts that aren't converted yet.
|
||||
text.c
|
||||
menu.c
|
||||
menubuild.c - e_observer_init() call.
|
||||
border.c - use e_evas_new_all in place of the inlined code. cleanup.
|
||||
|
||||
|
||||
+-----------------------------------------------------------------------------+
|
||||
| Enlightenment 0.17.pre CVS Code.... |
|
||||
+-----------------------------------------------------------------------------+
|
||||
|
|
|
@ -111,7 +111,7 @@ do
|
|||
echo "Creating $dr/aclocal.m4 ..."
|
||||
test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
|
||||
echo "Running gettextize... Ignore non-fatal messages."
|
||||
echo "no" | gettextize --force --copy || abort "gettextize"
|
||||
echo "no" | setup-gettext.sh
|
||||
echo "Making $dr/aclocal.m4 writable ..."
|
||||
test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
|
||||
fi
|
||||
|
@ -120,7 +120,7 @@ do
|
|||
echo "Creating $dr/aclocal.m4 ..."
|
||||
test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
|
||||
echo "Running gettextize... Ignore non-fatal messages."
|
||||
echo "no" | gettextize --force --copy || abort "gettextize"
|
||||
echo "no" | setup-gettext.sh
|
||||
echo "Making $dr/aclocal.m4 writable ..."
|
||||
test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
|
||||
fi
|
||||
|
|
|
@ -234,7 +234,6 @@ Makefile
|
|||
src/Makefile
|
||||
lib/Makefile
|
||||
client/Makefile
|
||||
intl/Makefile
|
||||
po/Makefile.in
|
||||
tools/Makefile
|
||||
doc/Makefile
|
||||
|
|
|
@ -233,7 +233,6 @@ Makefile
|
|||
src/Makefile
|
||||
lib/Makefile
|
||||
client/Makefile
|
||||
intl/Makefile
|
||||
po/Makefile.in
|
||||
tools/Makefile
|
||||
doc/Makefile
|
||||
|
|
Binary file not shown.
|
@ -27,11 +27,26 @@ WINDOW_MODE_BORDER=1
|
|||
WINDOW_MODE_BOX=2
|
||||
WINDOW_MODE_TECHNICAL=3
|
||||
|
||||
WINDOW_PLACE_MANUAL=0
|
||||
WINDOW_PLACE_SMART=1
|
||||
WINDOW_PLACE_MIDDLE=2
|
||||
WINDOW_PLACE_CASCADE=3
|
||||
WINDOW_PLACE_RANDOM=4
|
||||
|
||||
DESKTOP_COUNT=8
|
||||
DESKTOP_SCROLL=0
|
||||
DESKTOP_SCROLL_STICKY=0
|
||||
DESKTOP_RESIST=3
|
||||
DESKTOP_SPEED=30
|
||||
DESKTOP_WIDTH=2
|
||||
DESKTOP_HEIGHT=2
|
||||
|
||||
GUIDES_LOC_WIN=0
|
||||
GUIDES_LOC_SCR=1
|
||||
|
||||
DB="./behavior.db"
|
||||
|
||||
# actions defining how to react to things
|
||||
DB="./actions.db"
|
||||
NUM=0
|
||||
edb_ed $DB add "/actions/"$NUM"/name" str "Title_Bar"
|
||||
edb_ed $DB add "/actions/"$NUM"/action" str "Window_Raise"
|
||||
|
@ -337,26 +352,41 @@ edb_ed $DB add "/actions/"$NUM"/button" int 0
|
|||
edb_ed $DB add "/actions/"$NUM"/key" str "Insert"
|
||||
edb_ed $DB add "/actions/"$NUM"/modifiers" int $MOD_CTRL_ALT
|
||||
NUM=$[ $NUM + 1 ];
|
||||
edb_ed $DB add "/actions/"$NUM"/name" str "Key_Binding"
|
||||
edb_ed $DB add "/actions/"$NUM"/action" str "Window_Next"
|
||||
edb_ed $DB add "/actions/"$NUM"/params" str ""
|
||||
edb_ed $DB add "/actions/"$NUM"/event" int $ACT_KEY_DOWN
|
||||
edb_ed $DB add "/actions/"$NUM"/button" int 0
|
||||
edb_ed $DB add "/actions/"$NUM"/key" str "Tab"
|
||||
edb_ed $DB add "/actions/"$NUM"/modifiers" int $MOD_ALT
|
||||
NUM=$[ $NUM + 1 ];
|
||||
edb_ed $DB add "/actions/count" int $NUM
|
||||
|
||||
edb_ed $DB add "/desktops/count" int $DESKTOP_COUNT
|
||||
edb_ed $DB add "/desktops/scroll" int $DESKTOP_SCROLL
|
||||
edb_ed $DB add "/desktops/scroll_sticky" int $DESKTOP_SCROLL_STICKY
|
||||
edb_ed $DB add "/desktops/resist" int $DESKTOP_RESIST
|
||||
edb_ed $DB add "/desktops/speed" int $DESKTOP_SPEED
|
||||
edb_ed $DB add "/desktops/width" int $DESKTOP_WIDTH
|
||||
edb_ed $DB add "/desktops/height" int $DESKTOP_HEIGHT
|
||||
|
||||
# basic settings
|
||||
DB="./settings.db"
|
||||
edb_ed $DB add "/focus/mode " int $FOCUS_POINTER
|
||||
edb_ed $DB add "/move/resist" int 1
|
||||
edb_ed $DB add "/move/resist/desk" int 24
|
||||
edb_ed $DB add "/move/resist/win" int 12
|
||||
edb_ed $DB add "/menu/scroll/resist" int 5
|
||||
edb_ed $DB add "/menu/scroll/speed" int 12
|
||||
edb_ed $DB add "/window/focus/mode" int $FOCUS_POINTER
|
||||
edb_ed $DB add "/window/raise/auto" int 0
|
||||
edb_ed $DB add "/window/raise/delay" float 0.5
|
||||
edb_ed $DB add "/window/move/mode" int $WINDOW_MODE_OPAQUE
|
||||
edb_ed $DB add "/window/resize/mode" int $WINDOW_MODE_BOX
|
||||
edb_ed $DB add "/window/place/mode" int $WINDOW_PLACE_SMART
|
||||
edb_ed $DB add "/guides/display/x" float 0.5
|
||||
edb_ed $DB add "/guides/display/y" float 0.5
|
||||
edb_ed $DB add "/guides/display/location" int $GUIDES_LOC_SCR
|
||||
|
||||
# what events on windows are "grabbed" by the window manager
|
||||
DB="./grabs.db"
|
||||
NUM=0
|
||||
edb_ed $DB add "/grabs/"$NUM"/button" int 1
|
||||
edb_ed $DB add "/grabs/"$NUM"/modifiers" int $MOD_ALT
|
||||
|
|
27
po/ChangeLog
27
po/ChangeLog
|
@ -98,32 +98,6 @@
|
|||
|
||||
* Makefile.in.in: Upgrade to gettext-0.10.39.
|
||||
|
||||
<<<<<<< ChangeLog
|
||||
2001-10-08 gettextize <bug-gnu-utils@gnu.org>
|
||||
|
||||
* Makefile.in.in: Upgrade to gettext-0.10.39.
|
||||
|
||||
2001-10-08 gettextize <bug-gnu-utils@gnu.org>
|
||||
|
||||
* Makefile.in.in: Upgrade to gettext-0.10.39.
|
||||
|
||||
2001-09-25 gettextize <bug-gnu-utils@gnu.org>
|
||||
|
||||
* Makefile.in.in: Upgrade to gettext-0.10.39.
|
||||
|
||||
2001-09-25 gettextize <bug-gnu-utils@gnu.org>
|
||||
|
||||
* Makefile.in.in: Upgrade to gettext-0.10.39.
|
||||
|
||||
2001-09-10 gettextize <bug-gnu-utils@gnu.org>
|
||||
|
||||
* Makefile.in.in: Upgrade to gettext-0.10.39.
|
||||
|
||||
2001-09-10 gettextize <bug-gnu-utils@gnu.org>
|
||||
|
||||
* Makefile.in.in: Upgrade to gettext-0.10.39.
|
||||
|
||||
=======
|
||||
2001-10-09 gettextize <bug-gnu-utils@gnu.org>
|
||||
|
||||
* Makefile.in.in: Upgrade to gettext-0.10.40.
|
||||
|
@ -132,7 +106,6 @@
|
|||
|
||||
* Makefile.in.in: Upgrade to gettext-0.10.40.
|
||||
|
||||
>>>>>>> 1.6
|
||||
2001-08-31 gettextize <bug-gnu-utils@gnu.org>
|
||||
|
||||
* Makefile.in.in: Upgrade to gettext-0.10.39.
|
||||
|
|
|
@ -0,0 +1,202 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# setup-gettext - Provides compatibility with versions of gettext
|
||||
# from the 0.10.x series and 0.11.x.
|
||||
#
|
||||
# Copyright (C) 2002 Christian Hammond.
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# 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
|
||||
#
|
||||
|
||||
VERSION=0.1.3
|
||||
|
||||
VERBOSE=0
|
||||
|
||||
parse_gettext_version() {
|
||||
GETTEXT_VERSION=`$GETTEXT_TOOL --version | sed -n 's/^.*\([0-9]\+\)\.\([0-9]\+\)\.\([0-9]\+\).*$/\1.\2.\3/p'`
|
||||
GETTEXT_MAJOR_VERSION=`echo $GETTEXT_VERSION | sed -n 's/^\([0-9]\+\).*/\1/p'`
|
||||
GETTEXT_MINOR_VERSION=`echo $GETTEXT_VERSION | sed -n 's/^[0-9]\+\.\([0-9]\+\).*/\1/p'`
|
||||
GETTEXT_MICRO_VERSION=`echo $GETTEXT_VERSION | sed -n 's/^[0-9]\+\.[0-9]\+\.\([0-9]\+\).*/\1/p'`
|
||||
}
|
||||
|
||||
find_gettext() {
|
||||
GETTEXT_TOOL=autopoint
|
||||
|
||||
(autopoint --version) < /dev/null > /dev/null 2>&1 || {
|
||||
GETTEXT_TOOL=gettextize
|
||||
|
||||
(gettextize --version) < /dev/null > /dev/null 2>&1 || {
|
||||
GETTEXT_TOOL=
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
install() {
|
||||
[ -f configure.in ] && {
|
||||
cp configure.in .tmp-configure.in
|
||||
sed -e 's/^AM_GNU_GETTEXT\(.*\)$/AM_GNU_GETTEXT\1\
|
||||
AM_GNU_GETTEXT_VERSION(0.10.40)/' < .tmp-configure.in > configure.in
|
||||
rm .tmp-configure.in
|
||||
}
|
||||
|
||||
[ -f configure.ac ] && {
|
||||
cp configure.ac .tmp-configure.ac
|
||||
sed -e 's/^AM_GNU_GETTEXT\(.*\)$/AM_GNU_GETTEXT\1\
|
||||
AM_GNU_GETTEXT_VERSION(0.10.40)/' < .tmp-configure.ac > configure.ac
|
||||
rm .tmp-configure.ac
|
||||
}
|
||||
|
||||
[ -f autogen.sh ] && {
|
||||
cp autogen.sh .tmp-autogen.sh
|
||||
sed -e 's/\(gettextize\|autopoint\) --version/.\/setup-gettext --gettext-tool/1' -e 's/^\(echo.*|[\t ]*\)\?\(gettextize\|autopoint\) -.*$/.\/setup-gettext/1' < .tmp-autogen.sh > autogen.sh
|
||||
rm .tmp-autogen.sh
|
||||
}
|
||||
|
||||
echo 'AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])' >> acinclude.m4
|
||||
}
|
||||
|
||||
backup_m4() {
|
||||
[ -d m4 ] && mv m4 m4~
|
||||
}
|
||||
|
||||
restore_m4() {
|
||||
[ -d m4~ ] && {
|
||||
rm -rf m4
|
||||
mv m4~ m4
|
||||
}
|
||||
}
|
||||
|
||||
restore_files() {
|
||||
[ -f configure.in~ ] && mv -f configure.in~ configure.in
|
||||
[ -f configure.ac~ ] && mv -f configure.ac~ configure.ac
|
||||
[ -f Makefile.am~ ] && mv -f Makefile.am~ Makefile.am
|
||||
}
|
||||
|
||||
abort() {
|
||||
restore_files
|
||||
restore_m4
|
||||
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Main code
|
||||
|
||||
find_gettext
|
||||
|
||||
# See if a version of gettext and its tools are installed.
|
||||
if [ x$GETTEXT_TOOL = x ]; then
|
||||
echo
|
||||
echo "You do not have a version of gettext installed."
|
||||
echo "Please download one from your local package repository or"
|
||||
echo "from ftp://ftp.gnu.org/pub/gnu/gettext/"
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
|
||||
parse_gettext_version
|
||||
|
||||
NUMVAR=$#
|
||||
|
||||
if [ $NUMVAR -gt 0 ]; then
|
||||
if [ $NUMVAR -gt 1 ]; then
|
||||
echo "Only one option at a time!"
|
||||
exit 1
|
||||
|
||||
elif [ $1 = "--gettext-tool" ]; then
|
||||
echo $GETTEXT_TOOL
|
||||
exit 0
|
||||
|
||||
elif [ $1 = "--help" ]; then
|
||||
echo "setup-gettext v$VERSION"
|
||||
echo "Usage:"
|
||||
echo " --gettext-tool Returns gettextize or autopoint, depending"
|
||||
echo " on the version of gettext installed."
|
||||
echo " --gettext-version Returns the version of gettext installed."
|
||||
echo " --gettext-major-version Returns the major version of gettext installed."
|
||||
echo " --gettext-minor-version Returns the minor version of gettext installed."
|
||||
echo " --gettext-micro-version Returns the micro version of gettext installed."
|
||||
echo " --help Displays this help screen."
|
||||
echo
|
||||
exit 0
|
||||
|
||||
elif [ $1 = "--version" ]; then
|
||||
echo $VERSION
|
||||
exit 0
|
||||
|
||||
elif [ $1 = "--gettext-version" ]; then
|
||||
echo $GETTEXT_VERSION
|
||||
exit 0
|
||||
|
||||
elif [ $1 = "--gettext-major-version" ]; then
|
||||
echo $GETTEXT_MAJOR_VERSION
|
||||
exit 0
|
||||
|
||||
elif [ $1 = "--gettext-minor-version" ]; then
|
||||
echo $GETTEXT_MINOR_VERSION
|
||||
exit 0
|
||||
|
||||
elif [ $1 = "--gettext-micro-version" ]; then
|
||||
echo $GETTEXT_MICRO_VERSION
|
||||
exit 0
|
||||
|
||||
elif [ $1 = "--install" ]; then
|
||||
install
|
||||
echo "setup-gettext installed."
|
||||
exit 0
|
||||
|
||||
elif [ $1 = "--happy-url" ]; then
|
||||
echo http://gaim.sf.net/forkgettext.jpg
|
||||
exit 0
|
||||
|
||||
elif [ $1 = "--verbose" ]; then
|
||||
VERBOSE=1
|
||||
|
||||
else
|
||||
echo "Invalid option '$1'"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Okay, run the main stuff
|
||||
if [ "$GETTEXT_TOOL" = "autopoint" ]; then
|
||||
backup_m4
|
||||
[ $VERBOSE -eq 1 ] && echo " autopoint --force"
|
||||
echo n | autopoint --force || abort
|
||||
restore_m4
|
||||
else
|
||||
if [ $GETTEXT_MINOR_VERSION -eq 11 ]; then
|
||||
backup_m4
|
||||
|
||||
# Gettext is pure evil. It DEMANDS that we press Return no matter
|
||||
# what. This gets rid of their happy "feature" of doom.
|
||||
[ $VERBOSE -eq 1 ] && \
|
||||
echo " gettextize --copy --force --intl --no-changelog"
|
||||
|
||||
sed 's:read .*< /dev/tty::' `which gettextize` > .temp-gettextize
|
||||
chmod +x .temp-gettextize
|
||||
echo n | ./.temp-gettextize --copy --force --intl --no-changelog || abort
|
||||
rm .temp-gettextize
|
||||
|
||||
restore_files
|
||||
restore_m4
|
||||
|
||||
[ -f po/Makevars.template ] && mv po/Makevars.template po/Makevars
|
||||
else
|
||||
[ $VERBOSE -eq 1 ] && echo " gettextize --copy --force"
|
||||
echo n | gettextize --copy --force || exit;
|
||||
fi
|
||||
fi
|
||||
|
|
@ -9,15 +9,18 @@ INCLUDES = \
|
|||
-I$(top_srcdir)/intl \
|
||||
@evas_cflags@ @edb_cflags@ @ebits_cflags@ @ecore_cflags@ @efsd_cflags@ @ebg_cflags@ $(DEBUGFLAGS)
|
||||
|
||||
bin_PROGRAMS = enlightenment
|
||||
bin_PROGRAMS = enlightenment
|
||||
|
||||
enlightenment_SOURCES = \
|
||||
actions.h actions.c \
|
||||
block.c block.h \
|
||||
border.h border.c \
|
||||
bordermenu.h bordermenu.c \
|
||||
menu.h menu.c \
|
||||
menubuild.h menubuild.c \
|
||||
config.h config.c \
|
||||
cursors.c cursors.h \
|
||||
data.c data.h \
|
||||
debug.c debug.h \
|
||||
delayed.h delayed.c \
|
||||
desktops.h desktops.c \
|
||||
|
@ -30,14 +33,12 @@ enlightenment_SOURCES = \
|
|||
guides.h guides.c \
|
||||
globals.h globals.c \
|
||||
icccm.h icccm.c \
|
||||
iconbar.h iconbar.c\
|
||||
icons.h icons.c\
|
||||
iconbar.h iconbar.c \
|
||||
icons.h icons.c \
|
||||
ipc.h ipc.c \
|
||||
keys.h keys.c \
|
||||
main.c \
|
||||
match.c match.h \
|
||||
menu.h menu.c \
|
||||
menubuild.h menubuild.c \
|
||||
object.h object.c \
|
||||
observer.h observer.c\
|
||||
pack.c \
|
||||
|
@ -52,7 +53,7 @@ enlightenment_SOURCES = \
|
|||
e_dir.h e_dir.c \
|
||||
e_view_machine.h e_view_machine.c \
|
||||
view_layout.h view_layout.c \
|
||||
e_view_look.h e_view_look.c \
|
||||
e_view_look.h e_view_look.c \
|
||||
e.h
|
||||
|
||||
enlightenment_LDADD = @evas_libs@ @edb_libs@ @ebits_libs@ @ecore_libs@ @efsd_libs@ @ebg_libs@ -lm $(INTLLIBS)
|
||||
|
|
205
src/actions.c
205
src/actions.c
|
@ -6,21 +6,19 @@
|
|||
#include "exec.h"
|
||||
#include "icccm.h"
|
||||
#include "keys.h"
|
||||
#include "view.h"
|
||||
#include "e_view_machine.h"
|
||||
#include "util.h"
|
||||
#include "guides.h"
|
||||
#include "bordermenu.h"
|
||||
#include "block.h"
|
||||
|
||||
static Evas_List action_impls = NULL;
|
||||
static Evas_List current_actions = NULL;
|
||||
static Evas_List current_timers = NULL;
|
||||
static Evas_List * action_impls = NULL;
|
||||
static Evas_List * current_actions = NULL;
|
||||
static Evas_List * current_timers = NULL;
|
||||
|
||||
static void e_action_find(char *action, E_Action_Type act, int button,
|
||||
char *key, Ecore_Event_Key_Modifiers mods,
|
||||
E_Object * object);
|
||||
static void e_action_cleanup(E_Action * a);
|
||||
|
||||
static void e_act_move_start(E_Object * object, E_Action * a,
|
||||
void *data, int x, int y, int rx, int ry);
|
||||
|
@ -91,14 +89,14 @@ static void e_act_exec_start(E_Object * object, E_Action * a,
|
|||
|
||||
static void e_act_menu_start(E_Object * object, E_Action * a,
|
||||
void *data, int x, int y, int rx, int ry);
|
||||
|
||||
#if 0
|
||||
static void e_act_exit_start(E_Object * object, E_Action * a,
|
||||
void *data, int x, int y, int rx, int ry);
|
||||
|
||||
static void e_act_restart_start(E_Object * object, E_Action * a,
|
||||
void *data, int x, int y, int rx,
|
||||
int ry);
|
||||
|
||||
#endif
|
||||
static void e_act_stick_start(E_Object * object, E_Action * a,
|
||||
void *data, int x, int y, int rx, int ry);
|
||||
|
||||
|
@ -133,104 +131,16 @@ static void
|
|||
e_action_find(char *action, E_Action_Type act, int button,
|
||||
char *key, Ecore_Event_Key_Modifiers mods, E_Object * object)
|
||||
{
|
||||
char *actions_db;
|
||||
E_DB_File *db;
|
||||
int i, num;
|
||||
char *a_name = NULL;
|
||||
char *a_action = NULL;
|
||||
char *a_params = NULL;
|
||||
int a_event = 0;
|
||||
int a_button = 0;
|
||||
char *a_key = NULL;
|
||||
int a_modifiers = 0;
|
||||
Evas_List l;
|
||||
Evas_List *l;
|
||||
E_Action *a;
|
||||
static Evas_List actions = NULL;
|
||||
|
||||
E_CFG_FILE(cfg_actions, "actions");
|
||||
|
||||
D_ENTER;
|
||||
|
||||
E_CONFIG_CHECK_VALIDITY(cfg_actions, "actions");
|
||||
|
||||
/* if we had a previous list - nuke it */
|
||||
|
||||
/* FIXME: this has potential to segfault if reference
|
||||
* counting is actually used and those actions are
|
||||
* referenced in more than one place --cK.
|
||||
*/
|
||||
|
||||
if (actions)
|
||||
{
|
||||
for (l = actions; l; l = l->next)
|
||||
{
|
||||
a = l->data;
|
||||
if (a)
|
||||
e_action_cleanup(a);
|
||||
}
|
||||
actions = evas_list_free(actions);
|
||||
}
|
||||
/* now build the list again */
|
||||
actions_db = e_config_get("actions");
|
||||
db = e_db_open_read(actions_db);
|
||||
if (!db)
|
||||
D_RETURN;
|
||||
if (!e_db_int_get(db, "/actions/count", &num))
|
||||
goto error;
|
||||
for (i = 0; i < num; i++)
|
||||
{
|
||||
char buf[PATH_MAX];
|
||||
|
||||
snprintf(buf, PATH_MAX, "/actions/%i/name", i);
|
||||
a_name = e_db_str_get(db, buf);
|
||||
snprintf(buf, PATH_MAX, "/actions/%i/action", i);
|
||||
a_action = e_db_str_get(db, buf);
|
||||
snprintf(buf, PATH_MAX, "/actions/%i/params", i);
|
||||
a_params = e_db_str_get(db, buf);
|
||||
snprintf(buf, PATH_MAX, "/actions/%i/event", i);
|
||||
e_db_int_get(db, buf, &a_event);
|
||||
snprintf(buf, PATH_MAX, "/actions/%i/button", i);
|
||||
e_db_int_get(db, buf, &a_button);
|
||||
snprintf(buf, PATH_MAX, "/actions/%i/key", i);
|
||||
a_key = e_db_str_get(db, buf);
|
||||
snprintf(buf, PATH_MAX, "/actions/%i/modifiers", i);
|
||||
e_db_int_get(db, buf, &a_modifiers);
|
||||
|
||||
a = NEW(E_Action, 1);
|
||||
ZERO(a, E_Action, 1);
|
||||
|
||||
e_object_init(E_OBJECT(a), (E_Cleanup_Func) e_action_cleanup);
|
||||
|
||||
a->name = a_name;
|
||||
a->action = a_action;
|
||||
a->params = a_params;
|
||||
a->event = a_event;
|
||||
a->button = a_button;
|
||||
a->key = a_key;
|
||||
a->modifiers = a_modifiers;
|
||||
a->action_impl = NULL;
|
||||
a->object = NULL;
|
||||
a->started = 0;
|
||||
actions = evas_list_append(actions, a);
|
||||
/* it's a key? lets grab it! */
|
||||
if ((a->key) && (strlen(a->key) > 0))
|
||||
{
|
||||
if (a->modifiers == -1)
|
||||
e_keys_grab(a->key, ECORE_EVENT_KEY_MODIFIER_NONE, 1);
|
||||
else
|
||||
e_keys_grab(a->key, (Ecore_Event_Key_Modifiers) a->modifiers,
|
||||
0);
|
||||
a->grabbed = 1;
|
||||
}
|
||||
}
|
||||
error:
|
||||
e_db_close(db);
|
||||
E_CONFIG_CHECK_VALIDITY_END;
|
||||
/* run thru our actions list and match event, state and stuff with an */
|
||||
/* and action for it */
|
||||
for (l = actions; l; l = l->next)
|
||||
for (l = config_data->actions; l; l = l->next)
|
||||
{
|
||||
Evas_List ll;
|
||||
Evas_List * ll;
|
||||
|
||||
a = l->data;
|
||||
if (act != a->event)
|
||||
|
@ -288,7 +198,7 @@ e_action_find(char *action, E_Action_Type act, int button,
|
|||
D_RETURN;
|
||||
}
|
||||
|
||||
static void
|
||||
void
|
||||
e_action_cleanup(E_Action * a)
|
||||
{
|
||||
D_ENTER;
|
||||
|
@ -335,7 +245,7 @@ e_action_start(char *action, E_Action_Type act, int button,
|
|||
char *key, Ecore_Event_Key_Modifiers mods,
|
||||
E_Object * object, void *data, int x, int y, int rx, int ry)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
int started_long_action = 0;
|
||||
|
||||
D_ENTER;
|
||||
|
@ -375,7 +285,7 @@ e_action_stop(char *action, E_Action_Type act, int button,
|
|||
char *key, Ecore_Event_Key_Modifiers mods, E_Object * object,
|
||||
void *data, int x, int y, int rx, int ry)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -435,7 +345,7 @@ e_action_cont(char *action, E_Action_Type act, int button, char *key,
|
|||
Ecore_Event_Key_Modifiers mods, E_Object * object, void *data,
|
||||
int x, int y, int rx, int ry, int dx, int dy)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -461,7 +371,7 @@ void
|
|||
e_action_stop_by_object(E_Object * object, void *data, int x, int y, int rx,
|
||||
int ry)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -493,7 +403,7 @@ e_action_stop_by_object(E_Object * object, void *data, int x, int y, int rx,
|
|||
void
|
||||
e_action_stop_by_type(char *action)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -518,6 +428,7 @@ e_action_impl_cleanup(E_Action_Impl * eai)
|
|||
{
|
||||
D_ENTER;
|
||||
|
||||
IF_FREE(eai->action);
|
||||
e_object_cleanup(E_OBJECT(eai));
|
||||
|
||||
D_RETURN;
|
||||
|
@ -548,7 +459,7 @@ e_action_add_impl(char *action, E_Action_Start_Func func_start,
|
|||
void
|
||||
e_action_del_timer(E_Object * object, char *name)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -592,7 +503,7 @@ e_action_add_timer(E_Object * object, char *name)
|
|||
void
|
||||
e_action_del_timer_object(E_Object * object)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -677,23 +588,10 @@ e_act_move_start(E_Object * object, E_Action * a, void *data, int x, int y,
|
|||
double align_y = 0.5;
|
||||
E_Guides_Location display_loc = E_GUIDES_DISPLAY_LOCATION_WINDOW_MIDDLE;
|
||||
|
||||
E_CFG_INT(cfg_window_move_mode, "settings", "/window/move/mode",
|
||||
E_GUIDES_BOX);
|
||||
E_CFG_FLOAT(cfg_guides_display_x, "settings", "/guides/display/x", 0.5);
|
||||
E_CFG_FLOAT(cfg_guides_display_y, "settings", "/guides/display/y", 0.5);
|
||||
E_CFG_INT(cfg_guides_display_location, "settings",
|
||||
"/guides/display/location",
|
||||
E_GUIDES_DISPLAY_LOCATION_WINDOW_MIDDLE);
|
||||
|
||||
D_ENTER;
|
||||
|
||||
e_block_start("menus");
|
||||
|
||||
E_CONFIG_INT_GET(cfg_window_move_mode, move_mode);
|
||||
E_CONFIG_FLOAT_GET(cfg_guides_display_x, align_x);
|
||||
E_CONFIG_FLOAT_GET(cfg_guides_display_y, align_y);
|
||||
E_CONFIG_INT_GET(cfg_guides_display_location, display_loc);
|
||||
|
||||
b = (E_Border *) object;
|
||||
|
||||
if (!b)
|
||||
|
@ -705,6 +603,11 @@ e_act_move_start(E_Object * object, E_Action * a, void *data, int x, int y,
|
|||
if (b->client.fixed)
|
||||
D_RETURN;
|
||||
|
||||
move_mode = config_data->window->move_mode;
|
||||
display_loc = config_data->guides->location;
|
||||
align_x = config_data->guides->x;
|
||||
align_y = config_data->guides->y;
|
||||
|
||||
if (move_mode >= E_GUIDES_BOX)
|
||||
b->hold_changes = 1; /* if non opaque */
|
||||
b->mode.move = 1;
|
||||
|
@ -839,22 +742,10 @@ e_act_resize_start(E_Object * object, E_Action * a, void *data, int x, int y,
|
|||
double align_y = 0.5;
|
||||
E_Guides_Location display_loc = E_GUIDES_DISPLAY_LOCATION_WINDOW_MIDDLE;
|
||||
|
||||
E_CFG_INT(cfg_window_resize_mode, "settings", "/window/resize/mode",
|
||||
E_GUIDES_BOX);
|
||||
E_CFG_FLOAT(cfg_guides_display_x, "settings", "/guides/display/x", 0.5);
|
||||
E_CFG_FLOAT(cfg_guides_display_y, "settings", "/guides/display/y", 0.5);
|
||||
E_CFG_INT(cfg_guides_display_location, "settings",
|
||||
"/guides/display/location",
|
||||
E_GUIDES_DISPLAY_LOCATION_WINDOW_MIDDLE);
|
||||
|
||||
D_ENTER;
|
||||
|
||||
e_block_start("menus");
|
||||
|
||||
E_CONFIG_INT_GET(cfg_window_resize_mode, resize_mode);
|
||||
E_CONFIG_FLOAT_GET(cfg_guides_display_x, align_x);
|
||||
E_CONFIG_FLOAT_GET(cfg_guides_display_y, align_y);
|
||||
E_CONFIG_INT_GET(cfg_guides_display_location, display_loc);
|
||||
b = (E_Border *) object;
|
||||
if (!b)
|
||||
b = e_border_current_focused();
|
||||
|
@ -866,6 +757,12 @@ e_act_resize_start(E_Object * object, E_Action * a, void *data, int x, int y,
|
|||
D_RETURN;
|
||||
if (b->current.shaded != 0)
|
||||
D_RETURN;
|
||||
|
||||
resize_mode = config_data->window->resize_mode;
|
||||
display_loc = config_data->guides->location;
|
||||
align_x = config_data->guides->x;
|
||||
align_y = config_data->guides->y;
|
||||
|
||||
if (resize_mode >= E_GUIDES_BOX)
|
||||
b->hold_changes = 1; /* if non opaque */
|
||||
ecore_window_gravity_set(b->win.client, StaticGravity);
|
||||
|
@ -1043,22 +940,10 @@ e_act_resize_h_start(E_Object * object, E_Action * a, void *data, int x, int y,
|
|||
double align_y = 0.5;
|
||||
E_Guides_Location display_loc = E_GUIDES_DISPLAY_LOCATION_WINDOW_MIDDLE;
|
||||
|
||||
E_CFG_INT(cfg_window_resize_mode, "settings", "/window/resize/mode",
|
||||
E_GUIDES_BOX);
|
||||
E_CFG_FLOAT(cfg_guides_display_x, "settings", "/guides/display/x", 0.5);
|
||||
E_CFG_FLOAT(cfg_guides_display_y, "settings", "/guides/display/y", 0.5);
|
||||
E_CFG_INT(cfg_guides_display_location, "settings",
|
||||
"/guides/display/location",
|
||||
E_GUIDES_DISPLAY_LOCATION_WINDOW_MIDDLE);
|
||||
|
||||
D_ENTER;
|
||||
|
||||
e_block_start("menus");
|
||||
|
||||
E_CONFIG_INT_GET(cfg_window_resize_mode, resize_mode);
|
||||
E_CONFIG_FLOAT_GET(cfg_guides_display_x, align_x);
|
||||
E_CONFIG_FLOAT_GET(cfg_guides_display_y, align_y);
|
||||
E_CONFIG_INT_GET(cfg_guides_display_location, display_loc);
|
||||
b = (E_Border *) object;
|
||||
if (!b)
|
||||
b = e_border_current_focused();
|
||||
|
@ -1068,6 +953,12 @@ e_act_resize_h_start(E_Object * object, E_Action * a, void *data, int x, int y,
|
|||
D_RETURN;
|
||||
if (b->current.shaded != 0)
|
||||
D_RETURN;
|
||||
|
||||
resize_mode = config_data->window->resize_mode;
|
||||
display_loc = config_data->guides->location;
|
||||
align_x = config_data->guides->x;
|
||||
align_y = config_data->guides->y;
|
||||
|
||||
if (resize_mode >= E_GUIDES_BOX)
|
||||
b->hold_changes = 1; /* if non opaque */
|
||||
ecore_window_gravity_set(b->win.client, StaticGravity);
|
||||
|
@ -1205,22 +1096,10 @@ e_act_resize_v_start(E_Object * object, E_Action * a, void *data, int x, int y,
|
|||
double align_y = 0.5;
|
||||
E_Guides_Location display_loc = E_GUIDES_DISPLAY_LOCATION_WINDOW_MIDDLE;
|
||||
|
||||
E_CFG_INT(cfg_window_resize_mode, "settings", "/window/resize/mode",
|
||||
E_GUIDES_BOX);
|
||||
E_CFG_FLOAT(cfg_guides_display_x, "settings", "/guides/display/x", 0.5);
|
||||
E_CFG_FLOAT(cfg_guides_display_y, "settings", "/guides/display/y", 0.5);
|
||||
E_CFG_INT(cfg_guides_display_location, "settings",
|
||||
"/guides/display/location",
|
||||
E_GUIDES_DISPLAY_LOCATION_WINDOW_MIDDLE);
|
||||
|
||||
D_ENTER;
|
||||
|
||||
e_block_start("menus");
|
||||
|
||||
E_CONFIG_INT_GET(cfg_window_resize_mode, resize_mode);
|
||||
E_CONFIG_FLOAT_GET(cfg_guides_display_x, align_x);
|
||||
E_CONFIG_FLOAT_GET(cfg_guides_display_y, align_y);
|
||||
E_CONFIG_INT_GET(cfg_guides_display_location, display_loc);
|
||||
b = (E_Border *) object;
|
||||
if (!b)
|
||||
b = e_border_current_focused();
|
||||
|
@ -1230,6 +1109,12 @@ e_act_resize_v_start(E_Object * object, E_Action * a, void *data, int x, int y,
|
|||
D_RETURN;
|
||||
if (b->current.shaded != 0)
|
||||
D_RETURN;
|
||||
|
||||
resize_mode = config_data->window->resize_mode;
|
||||
display_loc = config_data->guides->location;
|
||||
align_x = config_data->guides->x;
|
||||
align_y = config_data->guides->y;
|
||||
|
||||
if (resize_mode >= E_GUIDES_BOX)
|
||||
b->hold_changes = 1; /* if non opaque */
|
||||
ecore_window_gravity_set(b->win.client, StaticGravity);
|
||||
|
@ -1667,7 +1552,7 @@ e_act_menu_start(E_Object * object, E_Action * a, void *data, int x, int y,
|
|||
UN(ry);
|
||||
}
|
||||
|
||||
static void
|
||||
void
|
||||
e_act_exit_start(E_Object * object, E_Action * a, void *data, int x, int y,
|
||||
int rx, int ry)
|
||||
{
|
||||
|
@ -1692,7 +1577,7 @@ e_act_exit_start(E_Object * object, E_Action * a, void *data, int x, int y,
|
|||
UN(ry);
|
||||
}
|
||||
|
||||
static void
|
||||
void
|
||||
e_act_restart_start(E_Object * object, E_Action * a, void *data, int x, int y,
|
||||
int rx, int ry)
|
||||
{
|
||||
|
@ -1967,9 +1852,13 @@ static void
|
|||
e_act_raise_next_start(E_Object * object, E_Action * a, void *data, int x,
|
||||
int y, int rx, int ry)
|
||||
{
|
||||
E_Border *current = NULL;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
e_border_raise_next();
|
||||
current = e_desktop_raise_next_border();
|
||||
if (current)
|
||||
e_border_send_pointer(current);
|
||||
|
||||
D_RETURN;
|
||||
UN(object);
|
||||
|
|
|
@ -73,6 +73,7 @@ struct _E_Action_Impl
|
|||
* i.e. the way E performs actions.
|
||||
*/
|
||||
void e_action_init(void);
|
||||
void e_action_cleanup(E_Action *a);
|
||||
|
||||
int e_action_start(char *action, E_Action_Type act, int button,
|
||||
char *key, Ecore_Event_Key_Modifiers mods,
|
||||
|
@ -97,4 +98,10 @@ void e_action_del_timer(E_Object * object, char *name);
|
|||
void e_action_add_timer(E_Object * object, char *name);
|
||||
void e_action_del_timer_object(E_Object * object);
|
||||
|
||||
|
||||
void e_act_exit_start(E_Object * object, E_Action * a, void *data, int x, int y,
|
||||
int rx, int ry);
|
||||
void e_act_restart_start(E_Object * object, E_Action * a, void *data, int x, int y,
|
||||
int rx, int ry);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
static void
|
||||
e_background_cleanup(E_Background * bg)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -22,7 +22,7 @@ e_background_cleanup(E_Background * bg)
|
|||
if (bl->file)
|
||||
FREE(bl->file);
|
||||
if (bl->obj)
|
||||
evas_del_object(bg->evas, bl->obj);
|
||||
evas_object_del(bl->obj);
|
||||
FREE(bl);
|
||||
}
|
||||
evas_list_free(bg->layers);
|
||||
|
@ -30,7 +30,7 @@ e_background_cleanup(E_Background * bg)
|
|||
if (bg->file)
|
||||
FREE(bg->file);
|
||||
if (bg->base_obj)
|
||||
evas_del_object(bg->evas, bg->base_obj);
|
||||
evas_object_del(bg->base_obj);
|
||||
|
||||
e_object_cleanup(E_OBJECT(bg));
|
||||
|
||||
|
@ -149,9 +149,9 @@ e_background_load(char *file)
|
|||
}
|
||||
|
||||
void
|
||||
e_background_realize(E_Background * bg, Evas evas)
|
||||
e_background_realize(E_Background * bg, Evas * evas)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
int ww, hh, count;
|
||||
|
||||
D_ENTER;
|
||||
|
@ -168,9 +168,10 @@ e_background_realize(E_Background * bg, Evas evas)
|
|||
bl = l->data;
|
||||
if (bl->type == E_BACKGROUND_TYPE_IMAGE)
|
||||
{
|
||||
bl->obj = evas_add_image_from_file(bg->evas, bl->file);
|
||||
evas_set_layer(bg->evas, bl->obj, 0);
|
||||
evas_show(bg->evas, bl->obj);
|
||||
bl->obj = evas_object_image_add(bg->evas);
|
||||
evas_object_image_file_set(bl->obj, bl->file, NULL);
|
||||
evas_object_layer_set(bl->obj, 0);
|
||||
evas_object_show(bl->obj);
|
||||
#if 0 /* dont need this... do we? */
|
||||
if (evas_get_image_alpha(bg->evas, bl->obj))
|
||||
{
|
||||
|
@ -203,7 +204,7 @@ e_background_realize(E_Background * bg, Evas evas)
|
|||
void
|
||||
e_background_set_scroll(E_Background * bg, int sx, int sy)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -220,7 +221,7 @@ e_background_set_scroll(E_Background * bg, int sx, int sy)
|
|||
bl = l->data;
|
||||
if (bl->type == E_BACKGROUND_TYPE_IMAGE)
|
||||
{
|
||||
evas_set_image_fill(bg->evas, bl->obj,
|
||||
evas_object_image_fill_set(bl->obj,
|
||||
(double)bg->geom.sx * bl->scroll.x,
|
||||
(double)bg->geom.sy * bl->scroll.y,
|
||||
bl->fw, bl->fh);
|
||||
|
@ -232,7 +233,7 @@ e_background_set_scroll(E_Background * bg, int sx, int sy)
|
|||
void
|
||||
e_background_set_size(E_Background * bg, int w, int h)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -250,7 +251,7 @@ e_background_set_size(E_Background * bg, int w, int h)
|
|||
iw = 0;
|
||||
ih = 0;
|
||||
if (bg->evas)
|
||||
evas_get_image_size(bg->evas, bl->obj, &iw, &ih);
|
||||
evas_object_image_size_get(bl->obj, &iw, &ih);
|
||||
w = bl->size.w * (double)bg->geom.w;
|
||||
h = bl->size.h * (double)bg->geom.h;
|
||||
if (bl->size.orig.w)
|
||||
|
@ -277,18 +278,18 @@ e_background_set_size(E_Background * bg, int w, int h)
|
|||
bl->fh = fh;
|
||||
if (bg->evas)
|
||||
{
|
||||
evas_move(bg->evas, bl->obj, bl->x, bl->y);
|
||||
evas_resize(bg->evas, bl->obj, bl->w, bl->h);
|
||||
evas_object_move(bl->obj, bl->x, bl->y);
|
||||
evas_object_resize(bl->obj, bl->w, bl->h);
|
||||
if (bl->type == E_BACKGROUND_TYPE_IMAGE)
|
||||
{
|
||||
evas_set_image_fill(bg->evas, bl->obj,
|
||||
evas_object_image_fill_set(bl->obj,
|
||||
(double)bg->geom.sx * bl->scroll.x,
|
||||
(double)bg->geom.sy * bl->scroll.y,
|
||||
bl->fw, bl->fh);
|
||||
}
|
||||
else if (bl->type == E_BACKGROUND_TYPE_GRADIENT)
|
||||
{
|
||||
evas_set_angle(bg->evas, bl->obj, bl->angle);
|
||||
evas_object_angle_set(bl->obj, bl->angle);
|
||||
}
|
||||
else if (bl->type == E_BACKGROUND_TYPE_SOLID)
|
||||
{
|
||||
|
@ -302,7 +303,7 @@ void
|
|||
e_background_set_color_class(E_Background * bg, char *cc, int r, int g, int b,
|
||||
int a)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -316,9 +317,9 @@ e_background_set_color_class(E_Background * bg, char *cc, int r, int g, int b,
|
|||
if (bg->evas)
|
||||
{
|
||||
if ((l == bg->layers) && (bg->base_obj))
|
||||
evas_set_color(bg->evas, bl->obj, r, g, b, 255);
|
||||
evas_object_color_set(bl->obj, r, g, b, 255);
|
||||
else
|
||||
evas_set_color(bg->evas, bl->obj, r, g, b, a);
|
||||
evas_object_color_set(bl->obj, r, g, b, a);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ struct _E_Background
|
|||
{
|
||||
E_Object o;
|
||||
|
||||
Evas evas;
|
||||
Evas * evas;
|
||||
char *file;
|
||||
|
||||
struct
|
||||
|
@ -28,9 +28,9 @@ struct _E_Background
|
|||
}
|
||||
geom;
|
||||
|
||||
Evas_List layers;
|
||||
Evas_List * layers;
|
||||
|
||||
Evas_Object base_obj;
|
||||
Evas_Object * base_obj;
|
||||
};
|
||||
|
||||
struct _E_Background_Layer
|
||||
|
@ -68,13 +68,13 @@ struct _E_Background_Layer
|
|||
|
||||
double x, y, w, h, fw, fh;
|
||||
|
||||
Evas_Object obj;
|
||||
Evas_Object * obj;
|
||||
};
|
||||
|
||||
E_Background *e_background_new(void);
|
||||
E_Background *e_background_load(char *file);
|
||||
|
||||
void e_background_realize(E_Background * bg, Evas evas);
|
||||
void e_background_realize(E_Background * bg, Evas * evas);
|
||||
void e_background_set_scroll(E_Background * bg, int sx, int sy);
|
||||
void e_background_set_size(E_Background * bg, int w, int h);
|
||||
void e_background_set_color_class(E_Background * bg, char *cc,
|
||||
|
|
|
@ -10,14 +10,14 @@ struct _e_block
|
|||
int refs;
|
||||
};
|
||||
|
||||
static Evas_List blocks = NULL;
|
||||
static Evas_List * blocks = NULL;
|
||||
|
||||
static E_Block *e_block_find(char *name);
|
||||
|
||||
static E_Block *
|
||||
e_block_find(char *name)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
for (l = blocks; l; l = l->next)
|
||||
|
|
872
src/border.c
872
src/border.c
File diff suppressed because it is too large
Load Diff
18
src/border.h
18
src/border.h
|
@ -36,18 +36,17 @@ struct _E_Border
|
|||
Window client;
|
||||
}
|
||||
win;
|
||||
Evas evas;
|
||||
Evas *evas;
|
||||
struct
|
||||
{
|
||||
E_Text *title;
|
||||
Evas_Object title_clip;
|
||||
Evas_Object *title_clip;
|
||||
}
|
||||
obj;
|
||||
Pixmap pixmap;
|
||||
Evas_List *windows;
|
||||
struct
|
||||
{
|
||||
int new;
|
||||
char *file;
|
||||
Ebits_Object b;
|
||||
}
|
||||
bits;
|
||||
|
@ -198,7 +197,6 @@ struct _E_Border
|
|||
int shape_changed;
|
||||
int placed;
|
||||
|
||||
Evas_List grabs;
|
||||
E_Grab *click_grab;
|
||||
E_Desktop *desk;
|
||||
|
||||
|
@ -209,8 +207,6 @@ struct _E_Border
|
|||
|
||||
int hold_changes;
|
||||
|
||||
Evas_List menus;
|
||||
|
||||
int changed;
|
||||
};
|
||||
|
||||
|
@ -225,6 +221,9 @@ void e_border_init(void);
|
|||
E_Border *e_border_new(void);
|
||||
|
||||
void e_border_update_borders(void);
|
||||
void e_border_redraw_region(E_Border *b, int x, int y,
|
||||
int w, int h);
|
||||
void e_border_update_render(E_Border * b);
|
||||
void e_border_apply_border(E_Border * b);
|
||||
void e_border_reshape(E_Border * b);
|
||||
void e_border_release(E_Border * b);
|
||||
|
@ -251,11 +250,12 @@ void e_border_raise_above(E_Border * b, E_Border * above);
|
|||
void e_border_lower_below(E_Border * b, E_Border * below);
|
||||
E_Border *e_border_current_focused(void);
|
||||
void e_border_focus_grab_ended(void);
|
||||
void e_border_raise_next(void);
|
||||
void e_border_send_pointer(E_Border * b);
|
||||
int e_border_viewable(E_Border * b);
|
||||
void e_border_print_pos(char *buf, E_Border * b);
|
||||
void e_border_print_size(char *buf, E_Border * b);
|
||||
void e_border_set_gravity(E_Border * b, int gravity);
|
||||
Evas_List e_border_get_borders_list();
|
||||
Evas_List *e_border_get_borders_list();
|
||||
void e_borders_scroll_list(Evas_List *borders,
|
||||
int dx, int dy);
|
||||
#endif
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
#include "icccm.h"
|
||||
#include "bordermenu.h"
|
||||
|
||||
static E_Menu *bordermenu = NULL;
|
||||
|
||||
static void e_bordermenu_cb_close(E_Menu * m, E_Menu_Item * mi,
|
||||
void *data);
|
||||
static void e_bordermenu_cb_kill(E_Menu * m, E_Menu_Item * mi,
|
||||
|
@ -37,7 +39,8 @@ static void e_bordermenu_cb_remember_prog_location_ignore(E_Menu * m,
|
|||
E_Menu_Item *
|
||||
mi,
|
||||
void *data);
|
||||
static void e_bordermenu_cb_menu_hide(E_Menu * m, void *data);
|
||||
static void e_bordermenu_cb_to_desktop(E_Menu * m, E_Menu_Item * mi,
|
||||
void *data);
|
||||
|
||||
static void
|
||||
e_bordermenu_cb_close(E_Menu * m, E_Menu_Item * mi, void *data)
|
||||
|
@ -331,20 +334,32 @@ e_bordermenu_cb_remember_prog_location_ignore(E_Menu * m, E_Menu_Item * mi,
|
|||
}
|
||||
|
||||
static void
|
||||
e_bordermenu_cb_menu_hide(E_Menu * m, void *data)
|
||||
e_bordermenu_cb_to_desktop(E_Menu * m, E_Menu_Item * mi, void *data)
|
||||
{
|
||||
int d = 0;
|
||||
E_Border *b;
|
||||
E_Desktop *desk;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
b = data;
|
||||
if (b->client.sticky)
|
||||
D_RETURN;
|
||||
|
||||
while (b->menus)
|
||||
{
|
||||
m = b->menus->data;
|
||||
m->delete_me = 1;
|
||||
b->menus = evas_list_remove(b->menus, m);
|
||||
}
|
||||
e_desktops_del_border(b->desk, b);
|
||||
|
||||
sscanf(mi->str, "Desktop %d", &d);
|
||||
desk = e_desktops_get(d);
|
||||
if (!desk)
|
||||
desk = e_desktops_get(e_desktops_get_current());
|
||||
D("Sending border %p to desk %d\n", b, d);
|
||||
|
||||
e_desktops_add_border(desk, b);
|
||||
b->client.desk = d;
|
||||
|
||||
b->current.requested.visible = 0;
|
||||
b->changed = 1;
|
||||
e_border_update_borders();
|
||||
|
||||
D_RETURN;
|
||||
UN(m);
|
||||
|
@ -353,18 +368,19 @@ e_bordermenu_cb_menu_hide(E_Menu * m, void *data)
|
|||
void
|
||||
e_bordermenu_do(E_Border * b)
|
||||
{
|
||||
int i;
|
||||
char label[PATH_MAX];
|
||||
E_Menu *menu;
|
||||
E_Menu *menu2;
|
||||
E_Menu_Item *menuitem;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
if (!b->menus)
|
||||
if (!bordermenu)
|
||||
{
|
||||
menu = e_menu_new();
|
||||
b->menus = evas_list_append(b->menus, menu);
|
||||
e_menu_set_padding_icon(menu, 2);
|
||||
e_menu_set_padding_state(menu, 2);
|
||||
e_menu_hide_callback(menu, e_bordermenu_cb_menu_hide, b);
|
||||
|
||||
menuitem = e_menu_item_new("Close");
|
||||
/* e_menu_item_set_icon(menuitem, icon); */
|
||||
|
@ -451,6 +467,24 @@ e_bordermenu_do(E_Border * b)
|
|||
b);
|
||||
e_menu_add_item(menu, menuitem);
|
||||
e_menu_set_state(menu, menuitem);
|
||||
|
||||
menu2 = e_menu_new();
|
||||
e_menu_set_padding_icon(menu2, 2);
|
||||
e_menu_set_padding_state(menu2, 2);
|
||||
|
||||
for (i = 0; i < e_desktops_get_num(); i++)
|
||||
{
|
||||
snprintf(label, PATH_MAX, "Desktop %d", i);
|
||||
menuitem = e_menu_item_new(label);
|
||||
e_menu_item_set_callback(menuitem, e_bordermenu_cb_to_desktop, b);
|
||||
e_menu_add_item(menu2, menuitem);
|
||||
}
|
||||
|
||||
menuitem = e_menu_item_new("Goto Desktop...");
|
||||
e_menu_item_set_submenu(menuitem, menu2);
|
||||
e_menu_add_item(menu, menuitem);
|
||||
|
||||
bordermenu = menu;
|
||||
}
|
||||
|
||||
{
|
||||
|
@ -458,7 +492,7 @@ e_bordermenu_do(E_Border * b)
|
|||
int crx, cry, crw, crh;
|
||||
int mx, my;
|
||||
|
||||
menu = b->menus->data;
|
||||
menu = bordermenu;
|
||||
pl = pr = pt = pb = 0;
|
||||
if (b->bits.b)
|
||||
ebits_get_insets(b->bits.b, &pl, &pr, &pt, &pb);
|
||||
|
@ -480,3 +514,10 @@ e_bordermenu_do(E_Border * b)
|
|||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
void
|
||||
e_bordermenu_hide(void)
|
||||
{
|
||||
if (bordermenu)
|
||||
e_menu_hide(bordermenu);
|
||||
}
|
||||
|
|
|
@ -4,5 +4,6 @@
|
|||
#include "e.h"
|
||||
|
||||
void e_bordermenu_do(E_Border * b);
|
||||
void e_bordermenu_hide(void);
|
||||
|
||||
#endif
|
||||
|
|
507
src/config.c
507
src/config.c
|
@ -1,6 +1,12 @@
|
|||
#include "debug.h"
|
||||
#include "actions.h"
|
||||
#include "border.h"
|
||||
#include "config.h"
|
||||
#include "data.h"
|
||||
#include "e_dir.h"
|
||||
#include "file.h"
|
||||
#include "keys.h"
|
||||
#include "observer.h"
|
||||
#include "util.h"
|
||||
|
||||
static char cfg_root[] = "";
|
||||
|
@ -24,6 +30,24 @@ static char cfg_fonts_dir[PATH_MAX] = "";
|
|||
static char cfg_epplets_dir[PATH_MAX] = "";
|
||||
static char cfg_layout_dir[PATH_MAX] = "";
|
||||
|
||||
static E_Observer *behavior_dir = NULL;
|
||||
E_Config *config_data;
|
||||
|
||||
E_Data_Base_Type *cfg_actions = NULL;
|
||||
E_Data_Base_Type *cfg_config = NULL;
|
||||
E_Data_Base_Type *cfg_desktops = NULL;
|
||||
E_Data_Base_Type *cfg_grabs = NULL;
|
||||
E_Data_Base_Type *cfg_guides = NULL;
|
||||
E_Data_Base_Type *cfg_match = NULL;
|
||||
E_Data_Base_Type *cfg_menu = NULL;
|
||||
E_Data_Base_Type *cfg_move = NULL;
|
||||
E_Data_Base_Type *cfg_window = NULL;
|
||||
|
||||
void e_config_behavior_changed(E_Observer * observer,
|
||||
E_Observee * observee,
|
||||
E_Event_Type event, void *data);
|
||||
void e_config_settings_reload(char *buf);
|
||||
|
||||
char *
|
||||
e_config_get(char *type)
|
||||
{
|
||||
|
@ -74,25 +98,159 @@ e_config_get(char *type)
|
|||
E_CONF("images", cfg_images_dir, PACKAGE_DATA_DIR "/data/images/");
|
||||
E_CONF("cursors", cfg_cursors_dir, PACKAGE_DATA_DIR "/data/cursors/");
|
||||
E_CONF("backgrounds", cfg_backgrounds_dir,
|
||||
PACKAGE_DATA_DIR"/data/backgrounds/");
|
||||
E_CONF("fonts", cfg_fonts_dir,
|
||||
PACKAGE_DATA_DIR"/data/fonts/");
|
||||
E_CONF("epplets", cfg_epplets_dir,
|
||||
PACKAGE_DATA_DIR"/data/epplets/");
|
||||
E_CONF("layout", cfg_layout_dir,
|
||||
PACKAGE_DATA_DIR"/data/layout/");
|
||||
PACKAGE_DATA_DIR "/data/backgrounds/");
|
||||
E_CONF("fonts", cfg_fonts_dir, PACKAGE_DATA_DIR "/data/fonts/");
|
||||
E_CONF("epplets", cfg_epplets_dir, PACKAGE_DATA_DIR "/data/epplets/");
|
||||
E_CONF("layout", cfg_layout_dir, PACKAGE_DATA_DIR "/data/layout/");
|
||||
|
||||
D_RETURN_("");
|
||||
}
|
||||
|
||||
void
|
||||
e_config_actions_init()
|
||||
{
|
||||
D_ENTER;
|
||||
|
||||
/*
|
||||
* Define the data type for the E_Actions struct.
|
||||
*/
|
||||
cfg_actions = e_data_type_new();
|
||||
E_DATA_NODE(cfg_actions, "name", E_DATA_TYPE_STR, NULL, E_Action, name,
|
||||
(E_Data_Value) "");
|
||||
E_DATA_NODE(cfg_actions, "action", E_DATA_TYPE_STR, NULL, E_Action, action,
|
||||
(E_Data_Value) "");
|
||||
E_DATA_NODE(cfg_actions, "params", E_DATA_TYPE_STR, NULL, E_Action,
|
||||
params, (E_Data_Value) "");
|
||||
E_DATA_NODE(cfg_actions, "event", E_DATA_TYPE_INT, NULL, E_Action, event,
|
||||
(E_Data_Value) 0);
|
||||
E_DATA_NODE(cfg_actions, "button", E_DATA_TYPE_INT, NULL, E_Action, button,
|
||||
(E_Data_Value) 0);
|
||||
E_DATA_NODE(cfg_actions, "key", E_DATA_TYPE_STR, NULL, E_Action, key,
|
||||
(E_Data_Value) 0);
|
||||
E_DATA_NODE(cfg_actions, "modifiers", E_DATA_TYPE_INT, NULL, E_Action,
|
||||
modifiers, (E_Data_Value) 0);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
void
|
||||
e_config_desktops_init()
|
||||
{
|
||||
cfg_desktops = e_data_type_new();
|
||||
E_DATA_NODE(cfg_desktops, "count", E_DATA_TYPE_INT, NULL, E_Config_Desktops,
|
||||
count, (E_Data_Value) 8);
|
||||
E_DATA_NODE(cfg_desktops, "scroll", E_DATA_TYPE_INT, NULL, E_Config_Desktops,
|
||||
scroll, (E_Data_Value) 1);
|
||||
E_DATA_NODE(cfg_desktops, "scroll_sticky", E_DATA_TYPE_INT, NULL, E_Config_Desktops,
|
||||
scroll_sticky, (E_Data_Value) 1);
|
||||
E_DATA_NODE(cfg_desktops, "resist", E_DATA_TYPE_INT, NULL, E_Config_Desktops,
|
||||
resist, (E_Data_Value) 5);
|
||||
E_DATA_NODE(cfg_desktops, "speed", E_DATA_TYPE_INT, NULL, E_Config_Desktops,
|
||||
speed, (E_Data_Value) 30);
|
||||
E_DATA_NODE(cfg_desktops, "width", E_DATA_TYPE_INT, NULL, E_Config_Desktops,
|
||||
width, (E_Data_Value) 1);
|
||||
E_DATA_NODE(cfg_desktops, "height", E_DATA_TYPE_INT, NULL, E_Config_Desktops,
|
||||
height, (E_Data_Value) 1);
|
||||
}
|
||||
|
||||
void
|
||||
e_config_grabs_init()
|
||||
{
|
||||
cfg_grabs = e_data_type_new();
|
||||
E_DATA_NODE(cfg_grabs, "button", E_DATA_TYPE_INT, NULL, E_Grab, button,
|
||||
(E_Data_Value) 0);
|
||||
E_DATA_NODE(cfg_grabs, "modifiers", E_DATA_TYPE_INT, NULL, E_Grab, mods,
|
||||
(E_Data_Value) 0);
|
||||
}
|
||||
|
||||
void
|
||||
e_config_guides_init()
|
||||
{
|
||||
cfg_guides = e_data_type_new();
|
||||
E_DATA_NODE(cfg_guides, "display/location", E_DATA_TYPE_INT, NULL,
|
||||
E_Config_Guides, location, (E_Data_Value) 0);
|
||||
E_DATA_NODE(cfg_guides, "display/x", E_DATA_TYPE_FLOAT, NULL,
|
||||
E_Config_Guides, x, (E_Data_Value) 0);
|
||||
E_DATA_NODE(cfg_guides, "display/y", E_DATA_TYPE_FLOAT, NULL,
|
||||
E_Config_Guides, y, (E_Data_Value) 0);
|
||||
}
|
||||
|
||||
void
|
||||
e_config_menu_init()
|
||||
{
|
||||
cfg_menu = e_data_type_new();
|
||||
E_DATA_NODE(cfg_menu, "scroll/resist", E_DATA_TYPE_INT, NULL,
|
||||
E_Config_Menu, resist, (E_Data_Value) 5);
|
||||
E_DATA_NODE(cfg_menu, "scroll/speed", E_DATA_TYPE_INT, NULL,
|
||||
E_Config_Menu, speed, (E_Data_Value) 12);
|
||||
}
|
||||
|
||||
void
|
||||
e_config_move_init()
|
||||
{
|
||||
cfg_move = e_data_type_new();
|
||||
E_DATA_NODE(cfg_move, "resist", E_DATA_TYPE_INT, NULL,
|
||||
E_Config_Move, resist, (E_Data_Value) 0);
|
||||
E_DATA_NODE(cfg_move, "resist/win", E_DATA_TYPE_INT, NULL,
|
||||
E_Config_Move, win_resist, (E_Data_Value) 0);
|
||||
E_DATA_NODE(cfg_move, "resist/desk", E_DATA_TYPE_INT, NULL,
|
||||
E_Config_Move, desk_resist, (E_Data_Value) 0);
|
||||
}
|
||||
|
||||
void
|
||||
e_config_window_init()
|
||||
{
|
||||
cfg_window = e_data_type_new();
|
||||
E_DATA_NODE(cfg_window, "resize/mode", E_DATA_TYPE_INT, NULL,
|
||||
E_Config_Window, resize_mode, (E_Data_Value) 0);
|
||||
E_DATA_NODE(cfg_window, "move/mode", E_DATA_TYPE_INT, NULL,
|
||||
E_Config_Window, move_mode, (E_Data_Value) 0);
|
||||
E_DATA_NODE(cfg_window, "focus/mode", E_DATA_TYPE_INT, NULL, E_Config_Window,
|
||||
focus_mode, (E_Data_Value) 0);
|
||||
E_DATA_NODE(cfg_window, "raise/auto", E_DATA_TYPE_INT, NULL,
|
||||
E_Config_Window, auto_raise, (E_Data_Value) 0);
|
||||
E_DATA_NODE(cfg_window, "raise/delay", E_DATA_TYPE_FLOAT, NULL,
|
||||
E_Config_Window, raise_delay, (E_Data_Value) (float)0.6);
|
||||
E_DATA_NODE(cfg_window, "place/mode", E_DATA_TYPE_INT, NULL,
|
||||
E_Config_Window, place_mode, (E_Data_Value) 0);
|
||||
}
|
||||
|
||||
void
|
||||
e_config_init(void)
|
||||
{
|
||||
char buf[PATH_MAX];
|
||||
E_Dir *dir;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
#if 1 /* for now don't do this. i think a cp -r will be needed later anyway */
|
||||
/* Start by initializing the data loading structures */
|
||||
e_config_actions_init();
|
||||
e_config_desktops_init();
|
||||
e_config_grabs_init();
|
||||
e_config_guides_init();
|
||||
e_config_menu_init();
|
||||
e_config_move_init();
|
||||
e_config_window_init();
|
||||
|
||||
/* Then place the data structures within the config description */
|
||||
cfg_config = e_data_type_new();
|
||||
E_DATA_NODE(cfg_config, "actions", E_DATA_TYPE_LIST, cfg_actions,
|
||||
E_Config, actions, (E_Data_Value) 0);
|
||||
E_DATA_NODE(cfg_config, "grabs", E_DATA_TYPE_LIST, cfg_grabs,
|
||||
E_Config, grabs, (E_Data_Value) 0);
|
||||
|
||||
E_DATA_NODE(cfg_config, "desktops", E_DATA_TYPE_PTR, cfg_desktops,
|
||||
E_Config, desktops, (E_Data_Value) 0);
|
||||
E_DATA_NODE(cfg_config, "guides", E_DATA_TYPE_PTR, cfg_guides,
|
||||
E_Config, guides, (E_Data_Value) 0);
|
||||
E_DATA_NODE(cfg_config, "menu", E_DATA_TYPE_PTR, cfg_menu,
|
||||
E_Config, menu, (E_Data_Value) 0);
|
||||
E_DATA_NODE(cfg_config, "move", E_DATA_TYPE_PTR, cfg_move,
|
||||
E_Config, move, (E_Data_Value) 0);
|
||||
E_DATA_NODE(cfg_config, "window", E_DATA_TYPE_PTR, cfg_window,
|
||||
E_Config, window, (E_Data_Value) 0);
|
||||
|
||||
/* Create directories as needed */
|
||||
if (!e_file_is_dir(e_config_user_dir()))
|
||||
e_file_mkdir(e_config_user_dir());
|
||||
snprintf(buf, PATH_MAX, "%sappearance", e_config_user_dir());
|
||||
|
@ -104,6 +262,8 @@ e_config_init(void)
|
|||
snprintf(buf, PATH_MAX, "%sbehavior", e_config_user_dir());
|
||||
if (!e_file_is_dir(buf))
|
||||
e_file_mkdir(buf);
|
||||
|
||||
/* With the directories created, create files if needed and load config */
|
||||
snprintf(buf, PATH_MAX, "%sbehavior/grabs.db", e_config_user_dir());
|
||||
if (!e_file_exists(buf))
|
||||
e_file_cp(PACKAGE_DATA_DIR "/data/config/behavior/default/grabs.db", buf);
|
||||
|
@ -119,22 +279,74 @@ e_config_init(void)
|
|||
if (!e_file_exists(buf))
|
||||
e_file_cp(PACKAGE_DATA_DIR "/data/config/behavior/default/apps_menu.db",
|
||||
buf);
|
||||
snprintf(buf, PATH_MAX, "%sappearance/borders/border.bits.db",
|
||||
e_config_user_dir());
|
||||
#endif
|
||||
#if 0
|
||||
ts();
|
||||
#endif
|
||||
snprintf(buf, PATH_MAX, "%sbehavior/behavior.db", e_config_user_dir());
|
||||
if (!e_file_exists(buf))
|
||||
e_file_cp(PACKAGE_DATA_DIR "/data/config/behavior/default/behavior.db",
|
||||
buf);
|
||||
|
||||
/* Load config data and begin monitoring it with efsd */
|
||||
e_config_behavior_changed(NULL, NULL, 0, NULL);
|
||||
|
||||
snprintf(buf, PATH_MAX, "%sbehavior", e_config_user_dir());
|
||||
dir = e_dir_new();
|
||||
e_dir_set_dir(dir, buf);
|
||||
|
||||
behavior_dir = NEW(E_Observer, 1);
|
||||
ZERO(behavior_dir, sizeof(E_Observer), 1);
|
||||
e_observer_init(behavior_dir, E_EVENT_FILE_CHANGE,
|
||||
e_config_behavior_changed, free);
|
||||
e_observer_register_observee(behavior_dir, E_OBSERVEE(dir));
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
void
|
||||
e_config_behavior_changed(E_Observer * observer, E_Observee * observee,
|
||||
E_Event_Type event, void *data)
|
||||
{
|
||||
char buf[PATH_MAX];
|
||||
Evas_List *l;
|
||||
|
||||
if (config_data)
|
||||
{
|
||||
e_data_free(cfg_config, (char *)config_data);
|
||||
FREE(config_data);
|
||||
}
|
||||
|
||||
snprintf(buf, PATH_MAX, "%sbehavior/behavior.db", e_config_user_dir());
|
||||
config_data = e_data_load(buf, "", cfg_config);
|
||||
|
||||
/* FIXME: this should probably be a function in actions.c */
|
||||
for (l = config_data->actions; l; l = l->next)
|
||||
{
|
||||
E_Action *a;
|
||||
|
||||
a = l->data;
|
||||
e_object_init(E_OBJECT(a), (E_Cleanup_Func) e_action_cleanup);
|
||||
if ((a->key) && (strlen(a->key) > 0))
|
||||
{
|
||||
if (a->modifiers == -1)
|
||||
e_keys_grab(a->key, ECORE_EVENT_KEY_MODIFIER_NONE, 1);
|
||||
else
|
||||
e_keys_grab(a->key, (Ecore_Event_Key_Modifiers) a->modifiers,
|
||||
0);
|
||||
a->grabbed = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
UN(observer);
|
||||
UN(observee);
|
||||
UN(event);
|
||||
UN(data);
|
||||
}
|
||||
|
||||
void
|
||||
e_config_set_user_dir(char *dir)
|
||||
{
|
||||
D_ENTER;
|
||||
|
||||
strcpy(cfg_root, dir);
|
||||
STRNCPY(cfg_root, dir, PATH_MAX);
|
||||
/* reset the cached dir paths */
|
||||
cfg_grabs_db[0] = 0;
|
||||
cfg_settings_db[0] = 0;
|
||||
|
@ -163,272 +375,11 @@ e_config_user_dir(void)
|
|||
{
|
||||
D_ENTER;
|
||||
|
||||
/* We copy the config files to the user's home dir, no need to fall back */
|
||||
if (cfg_user_dir[0])
|
||||
D_RETURN_(cfg_user_dir);
|
||||
if (cfg_root[0])
|
||||
D_RETURN_(cfg_root);
|
||||
#if 1 /* disabled for now - use system ones only */
|
||||
|
||||
snprintf(cfg_user_dir, PATH_MAX, "%s/.e/", e_util_get_user_home());
|
||||
#else
|
||||
snprintf(cfg_user_dir, PATH_MAX, PACKAGE_DATA_DIR "/data/config/");
|
||||
#endif
|
||||
|
||||
D_RETURN_(cfg_user_dir);
|
||||
}
|
||||
|
||||
typedef struct _e_config_file_entry E_Config_File_Entry;
|
||||
|
||||
struct _e_config_file_entry
|
||||
{
|
||||
char *name;
|
||||
struct
|
||||
{
|
||||
char *path;
|
||||
time_t last_mod;
|
||||
}
|
||||
user , system;
|
||||
Evas_List hash[256];
|
||||
};
|
||||
|
||||
void
|
||||
e_config_add_change_cb(char *file, void (*func) (void *_data), void *data)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
e_config_del_change_cb(char *file, void (*func) (void *_data))
|
||||
{
|
||||
}
|
||||
|
||||
int
|
||||
e_config_val_int_get(char *file, char *key, int def)
|
||||
{
|
||||
}
|
||||
|
||||
float
|
||||
e_config_val_float_get(char *file, char *key, float def)
|
||||
{
|
||||
}
|
||||
|
||||
char *
|
||||
e_config_val_str_get(char *file, char *key, char *def)
|
||||
{
|
||||
}
|
||||
|
||||
char *
|
||||
e_config_val_key_get(char *file, char *key, char *def)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
e_config_type_add_node(E_Config_Base_Type * base, char *prefix,
|
||||
E_Config_Datatype type, E_Config_Base_Type * list_type,
|
||||
int offset, int def_int, float def_float, char *def_str)
|
||||
{
|
||||
E_Config_Node *cfg_node;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
cfg_node = NEW(E_Config_Node, 1);
|
||||
ZERO(cfg_node, E_Config_Node, 1);
|
||||
|
||||
cfg_node->prefix = strdup(prefix);
|
||||
cfg_node->type = type;
|
||||
cfg_node->sub_type = list_type;
|
||||
cfg_node->offset = offset;
|
||||
cfg_node->def_int = def_int;
|
||||
cfg_node->def_float = def_float;
|
||||
if (cfg_node->def_str)
|
||||
{
|
||||
e_strdup(cfg_node->def_str, def_str);
|
||||
}
|
||||
base->nodes = evas_list_append(base->nodes, cfg_node);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
E_Config_Base_Type *
|
||||
e_config_type_new(void)
|
||||
{
|
||||
E_Config_Base_Type *t;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
t = NEW(E_Config_Base_Type, 1);
|
||||
ZERO(t, E_Config_Base_Type, 1);
|
||||
|
||||
D_RETURN_(t);
|
||||
}
|
||||
|
||||
void *
|
||||
e_config_load(char *file, char *prefix, E_Config_Base_Type * type)
|
||||
{
|
||||
E_DB_File *db;
|
||||
char buf[PATH_MAX];
|
||||
Evas_List l;
|
||||
char *data;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
if (!e_file_exists(file))
|
||||
D_RETURN_(NULL);
|
||||
db = e_db_open_read(file);
|
||||
|
||||
if (!db)
|
||||
D_RETURN_(NULL);
|
||||
|
||||
data = NEW(char, type->size);
|
||||
ZERO(data, char, type->size);
|
||||
|
||||
for (l = type->nodes; l; l = l->next)
|
||||
{
|
||||
E_Config_Node *node;
|
||||
|
||||
node = l->data;
|
||||
|
||||
switch (node->type)
|
||||
{
|
||||
case E_CFG_TYPE_INT:
|
||||
{
|
||||
int val;
|
||||
|
||||
val = 0;
|
||||
snprintf(buf, PATH_MAX, "%s/%s", prefix, node->prefix);
|
||||
if (e_db_int_get(db, buf, &val))
|
||||
(*((int *)(&(data[node->offset])))) = val;
|
||||
else
|
||||
(*((int *)(&(data[node->offset])))) = node->def_int;
|
||||
}
|
||||
break;
|
||||
case E_CFG_TYPE_STR:
|
||||
{
|
||||
char *val;
|
||||
|
||||
snprintf(buf, PATH_MAX, "%s/%s", prefix, node->prefix);
|
||||
if ((val = e_db_str_get(db, buf)))
|
||||
(*((char **)(&(data[node->offset])))) = val;
|
||||
else
|
||||
e_strdup((*((char **)(&(data[node->offset])))),
|
||||
node->def_str);
|
||||
}
|
||||
break;
|
||||
case E_CFG_TYPE_FLOAT:
|
||||
{
|
||||
float val;
|
||||
|
||||
val = 0;
|
||||
snprintf(buf, PATH_MAX, "%s/%s", prefix, node->prefix);
|
||||
if (e_db_float_get(db, buf, &val))
|
||||
(*((float *)(&(data[node->offset])))) = val;
|
||||
else
|
||||
(*((float *)(&(data[node->offset])))) = node->def_float;
|
||||
}
|
||||
break;
|
||||
case E_CFG_TYPE_LIST:
|
||||
{
|
||||
Evas_List l2;
|
||||
int i, count;
|
||||
|
||||
l2 = NULL;
|
||||
snprintf(buf, PATH_MAX, "%s/%s/count", prefix, node->prefix);
|
||||
count = 0;
|
||||
e_db_int_get(db, buf, &count);
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
void *data2;
|
||||
|
||||
snprintf(buf, PATH_MAX, "%s/%s/%i", prefix, node->prefix,
|
||||
i);
|
||||
data2 = e_config_load(file, buf, node->sub_type);
|
||||
l2 = evas_list_append(l2, data2);
|
||||
}
|
||||
(*((Evas_List *) (&(data[node->offset])))) = l2;
|
||||
}
|
||||
break;
|
||||
case E_CFG_TYPE_KEY:
|
||||
{
|
||||
snprintf(buf, PATH_MAX, "%s/%s", prefix, node->prefix);
|
||||
(*((char **)(&(data[node->offset])))) = strdup(buf);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
e_db_close(db);
|
||||
|
||||
D_RETURN_(data);
|
||||
}
|
||||
|
||||
#if 0
|
||||
typedef struct _list_base List_Base;
|
||||
typedef struct _list_element List_Element;
|
||||
|
||||
struct _list_base
|
||||
{
|
||||
Evas_List elements;
|
||||
};
|
||||
|
||||
struct _list_element
|
||||
{
|
||||
char *name;
|
||||
int size;
|
||||
float perc;
|
||||
};
|
||||
|
||||
/* eg: */
|
||||
void
|
||||
ts(void)
|
||||
{
|
||||
/* define the different config types and structs to the config engine */
|
||||
E_Config_Base_Type *cf_list;
|
||||
E_Config_Base_Type *cf_element;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
cf_element = e_config_type_new();
|
||||
E_CONFIG_NODE(cf_element, "name", E_CFG_TYPE_STR, NULL, List_Element, name,
|
||||
0, 0, "DEFAULT_NAME");
|
||||
E_CONFIG_NODE(cf_element, "size", E_CFG_TYPE_INT, NULL, List_Element, size,
|
||||
777, 0, NULL);
|
||||
E_CONFIG_NODE(cf_element, "perc", E_CFG_TYPE_FLOAT, NULL, List_Element, perc,
|
||||
0, 3.1415, NULL);
|
||||
|
||||
cf_list = e_config_type_new();
|
||||
E_CONFIG_NODE(cf_list, "list", E_CFG_TYPE_LIST, cf_element, List_Base,
|
||||
elements, 0, 0, NULL);
|
||||
|
||||
/* now test it */
|
||||
{
|
||||
List_Base *cfg_data;
|
||||
|
||||
/* load the base data type from the base of the test db file */
|
||||
cfg_data = e_config_load("test.db", "", cf_list);
|
||||
/* no data file? */
|
||||
if (!cfg_data)
|
||||
{
|
||||
D("no load!\n");
|
||||
}
|
||||
/* got data */
|
||||
else
|
||||
{
|
||||
Evas_List l;
|
||||
|
||||
for (l = cfg_data->elements; l; l = l->next)
|
||||
{
|
||||
List_Element *cfg_element;
|
||||
|
||||
D("element\n");
|
||||
cfg_element = l->data;
|
||||
D("... name %s\n", cfg_element->name);
|
||||
D("... size %i\n", cfg_element->size);
|
||||
D("... perc %3.3f\n", cfg_element->perc);
|
||||
}
|
||||
}
|
||||
exit(0);
|
||||
}
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
249
src/config.h
249
src/config.h
|
@ -3,218 +3,75 @@
|
|||
|
||||
#include "e.h"
|
||||
|
||||
typedef struct _E_Config_File E_Config_File;
|
||||
typedef struct _E_Config_Element E_Config_Element;
|
||||
|
||||
/* something to check validity of config files where we get data from */
|
||||
/* for now its just a 5 second timout so it will only invalidate */
|
||||
/* if we havent looked for 5 seconds... BUT later when efsd is more solid */
|
||||
/* we should use that to tell us when its invalid */
|
||||
struct _E_Config_File
|
||||
/*
|
||||
* Define small subsets of the whole config for defining data types for
|
||||
* loading from the databases.
|
||||
*/
|
||||
typedef struct _E_Config_Desktops E_Config_Desktops;
|
||||
struct _E_Config_Desktops
|
||||
{
|
||||
char *src;
|
||||
double last_fetch;
|
||||
int count;
|
||||
int scroll;
|
||||
int scroll_sticky;
|
||||
int resist;
|
||||
int speed;
|
||||
int width;
|
||||
int height;
|
||||
};
|
||||
|
||||
struct _E_Config_Element
|
||||
typedef struct _E_Config_Guides E_Config_Guides;
|
||||
struct _E_Config_Guides
|
||||
{
|
||||
char *src;
|
||||
char *key;
|
||||
double last_fetch;
|
||||
int type;
|
||||
int def_int_val;
|
||||
float def_float_val;
|
||||
char *def_str_val;
|
||||
void *def_data_val;
|
||||
int def_data_val_size;
|
||||
int cur_int_val;
|
||||
float cur_float_val;
|
||||
char *cur_str_val;
|
||||
void *cur_data_val;
|
||||
int cur_data_val_size;
|
||||
float x;
|
||||
float y;
|
||||
int location;
|
||||
};
|
||||
|
||||
#define E_CFG_FILE(_var, _src) \
|
||||
static E_Config_File _var = {_src, 0.0}
|
||||
#define E_CONFIG_CHECK_VALIDITY(_var, _src) \
|
||||
{ \
|
||||
double __time; \
|
||||
__time = ecore_get_time(); \
|
||||
if (_var.last_fetch < (__time - 5.0)) { \
|
||||
_var.last_fetch = __time;
|
||||
#define E_CONFIG_CHECK_VALIDITY_END \
|
||||
} \
|
||||
}
|
||||
|
||||
typedef enum e_config_type
|
||||
typedef struct _E_Config_Menu E_Config_Menu;
|
||||
struct _E_Config_Menu
|
||||
{
|
||||
E_CFG_INT_T,
|
||||
E_CFG_FLOAT_T,
|
||||
E_CFG_STR_T,
|
||||
E_CFG_DATA_T,
|
||||
}
|
||||
E_Config_Type;
|
||||
int resist;
|
||||
int speed;
|
||||
};
|
||||
|
||||
#define E_CFG_INT(_var, _src, _key, _default) \
|
||||
static E_Config_Element _var = { _src, _key, 0.0, E_CFG_INT_T, \
|
||||
_default, 0.0, NULL, NULL, 0, \
|
||||
0, 0.0, NULL, NULL, 0, \
|
||||
}
|
||||
typedef struct _E_Config_Move E_Config_Move;
|
||||
struct _E_Config_Move
|
||||
{
|
||||
int resist;
|
||||
int win_resist;
|
||||
int desk_resist;
|
||||
};
|
||||
|
||||
#define E_CFG_FLOAT(_var, _src, _key, _default) \
|
||||
static E_Config_Element _var = { _src, _key, 0.0, E_CFG_FLOAT_T, \
|
||||
0, _default, NULL, NULL, 0, \
|
||||
0, 0.0, NULL, NULL, 0, \
|
||||
}
|
||||
typedef struct _E_Config_Window E_Config_Window;
|
||||
struct _E_Config_Window
|
||||
{
|
||||
int move_mode;
|
||||
int focus_mode;
|
||||
int auto_raise;
|
||||
float raise_delay;
|
||||
int resize_mode;
|
||||
int place_mode;
|
||||
};
|
||||
|
||||
#define E_CFG_STR(_var, _src, _key, _default) \
|
||||
static E_Config_Element _var = { _src, _key, 0.0, E_CFG_STR_T, \
|
||||
0, 0.0, _default, NULL, 0, \
|
||||
0, 0.0, NULL, NULL, 0, \
|
||||
}
|
||||
typedef struct _E_Config E_Config;
|
||||
struct _E_Config
|
||||
{
|
||||
Evas_List *actions;
|
||||
Evas_List *grabs;
|
||||
Evas_List *match;
|
||||
|
||||
#define E_CFG_DATA(_var, _src, _key, _default, _default_size) \
|
||||
static E_Config_Element _var = { _src, _key, 0.0, E_CFG_DATAT_T, \
|
||||
0, 0.0, NULL, _default, _default_size, \
|
||||
0, 0.0, NULL, NULL, 0, \
|
||||
}
|
||||
E_Config_Desktops *desktops;
|
||||
E_Config_Guides *guides;
|
||||
E_Config_Menu *menu;
|
||||
E_Config_Move *move;
|
||||
E_Config_Window *window;
|
||||
};
|
||||
|
||||
/* yes for now it only fetches them every 5 seconds - in the end i need a */
|
||||
/* validity flag for the database file to know if it changed and only then */
|
||||
/* get the value again. this is waiting for efsd to become more solid */
|
||||
#define E_CFG_VALIDITY_CHECK(_var) \
|
||||
{ \
|
||||
double __time; \
|
||||
__time = ecore_get_time(); \
|
||||
if (_var.last_fetch < (__time - 5.0)) { \
|
||||
int __cfg_ok = 0; \
|
||||
_var.last_fetch = __time;
|
||||
|
||||
#define E_CFG_END_VALIDITY_CHECK \
|
||||
} \
|
||||
}
|
||||
|
||||
#define E_CONFIG_INT_GET(_var, _val) \
|
||||
{{ \
|
||||
E_CFG_VALIDITY_CHECK(_var) \
|
||||
E_DB_INT_GET(e_config_get(_var.src), _var.key, _var.cur_int_val, __cfg_ok); \
|
||||
if (!__cfg_ok) _var.cur_int_val = _var.def_int_val; \
|
||||
E_CFG_END_VALIDITY_CHECK \
|
||||
} \
|
||||
_val = _var.cur_int_val;}
|
||||
|
||||
#define E_CONFIG_FLOAT_GET(_var, _val) \
|
||||
{{ \
|
||||
E_CFG_VALIDITY_CHECK(_var) \
|
||||
E_DB_FLOAT_GET(e_config_get(_var.src), _var.key, _var.cur_float_val, __cfg_ok); \
|
||||
if (!__cfg_ok) _var.cur_float_val = _var.def_float_val; \
|
||||
E_CFG_END_VALIDITY_CHECK \
|
||||
} \
|
||||
_val = _var.cur_float_val;}
|
||||
|
||||
#define E_CONFIG_STR_GET(_var, _val) \
|
||||
{{ \
|
||||
E_CFG_VALIDITY_CHECK(_var) \
|
||||
if (_var.cur_str_val) free(_var.cur_str_val); \
|
||||
_var.cur_str_val = NULL; \
|
||||
E_DB_STR_GET(e_config_get(_var.src), _var.key, _var.cur_str_val, __cfg_ok); \
|
||||
if (!__cfg_ok) _var.cur_str_val = _var.def_str_val \
|
||||
E_CFG_END_VALIDITY_CHECK \
|
||||
} \
|
||||
_val = _var.cur_str_val;}
|
||||
|
||||
#define E_CONFIG_DATA_GET(_var, _val, _size) \
|
||||
{{ \
|
||||
E_CFG_VALIDITY_CHECK(_var) \
|
||||
if (_var.cur_data_val) free(_var.cur_data_val); \
|
||||
_var.cur_data_val = NULL; \
|
||||
_var.cur_data_size = 0; \
|
||||
{ E_DB_File *__db; \
|
||||
__db = e_db_open_read(e_config_get(_var.src)); \
|
||||
if (__db) { \
|
||||
_var.cur_data_val = e_db_data_get(__db, _var.key, &(_var.cur_data_size)); \
|
||||
if (_var.cur_data_val) __cfg_ok = 1; \
|
||||
e_db_close(__db); \
|
||||
} \
|
||||
} \
|
||||
if (!__cfg_ok) { \
|
||||
_var.cur_data_val = e_memdup(_var.def_data_val, _var.def_data_size); \
|
||||
_var.cur_data_size = _var.def_data_size; \
|
||||
} \
|
||||
E_CFG_END_VALIDITY_CHECK \
|
||||
} \
|
||||
_val = _var.cur_data_val; \
|
||||
_size = _var.cur_data_size;}
|
||||
extern E_Config *config_data;
|
||||
|
||||
char *e_config_get(char *type);
|
||||
void e_config_init(void);
|
||||
void e_config_set_user_dir(char *dir);
|
||||
char *e_config_user_dir(void);
|
||||
|
||||
typedef struct _e_config_base_type E_Config_Base_Type;
|
||||
typedef struct _e_config_node E_Config_Node;
|
||||
typedef struct _e_config_value E_Config_Value;
|
||||
typedef enum _e_config_datatype E_Config_Datatype;
|
||||
|
||||
enum _e_config_datatype
|
||||
{
|
||||
E_CFG_TYPE_INT,
|
||||
E_CFG_TYPE_STR,
|
||||
E_CFG_TYPE_FLOAT,
|
||||
E_CFG_TYPE_LIST,
|
||||
E_CFG_TYPE_KEY
|
||||
};
|
||||
|
||||
struct _e_config_base_type
|
||||
{
|
||||
int size;
|
||||
Evas_List nodes;
|
||||
};
|
||||
|
||||
struct _e_config_node
|
||||
{
|
||||
char *prefix;
|
||||
E_Config_Datatype type;
|
||||
int offset;
|
||||
E_Config_Base_Type *sub_type;
|
||||
int def_int;
|
||||
float def_float;
|
||||
char *def_str;
|
||||
};
|
||||
|
||||
#define E_CONFIG_NODE(var, prefix, type, sub, struct_type, struct_member, def_int, def_float, def_str) \
|
||||
{ \
|
||||
struct_type _cfg_dummy; \
|
||||
char *_cfg_p1, *_cfg_p2; \
|
||||
int _cfg_offset; \
|
||||
\
|
||||
_cfg_p1 = (char *)(&(_cfg_dummy)); \
|
||||
_cfg_p2 = (char *)(&(_cfg_dummy.struct_member)); \
|
||||
_cfg_offset = (int)(_cfg_p2 - _cfg_p1); \
|
||||
\
|
||||
e_config_type_add_node(var, prefix, type, sub, _cfg_offset, def_int, def_float, def_str); \
|
||||
var->size = sizeof(struct_type); \
|
||||
}
|
||||
|
||||
E_Config_Value *e_config_value_get_int(E_Config_Value * handle, char *file,
|
||||
char *prefix, char *key,
|
||||
int *val_ret, int default_val);
|
||||
E_Config_Value *e_config_value_get_str(E_Config_Value * handle, char *file,
|
||||
char *prefix, char *key,
|
||||
char **val_ret, char *default_val);
|
||||
E_Config_Value *e_config_value_get_float(E_Config_Value * handle,
|
||||
char *file, char *prefix,
|
||||
char *key, float *val_ret,
|
||||
float default_val);
|
||||
E_Config_Base_Type *e_config_type_new(void);
|
||||
void e_config_type_add_node(E_Config_Base_Type * base,
|
||||
char *prefix,
|
||||
E_Config_Datatype type,
|
||||
E_Config_Base_Type * list_type,
|
||||
int offset,
|
||||
int def_int,
|
||||
float def_float, char *def_str);
|
||||
void *e_config_load(char *file,
|
||||
char *prefix, E_Config_Base_Type * type);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -16,7 +16,7 @@ struct _e_cursor
|
|||
static int cursor_change = 0;
|
||||
static char *cur_cursor = NULL;
|
||||
static char *prev_cursor = NULL;
|
||||
static Evas_List cursors = NULL;
|
||||
static Evas_List * cursors = NULL;
|
||||
|
||||
static void e_cursors_idle(void *data);
|
||||
static void e_cursors_set(char *type);
|
||||
|
@ -62,7 +62,7 @@ e_cursors_set(char *type)
|
|||
static E_Cursor *
|
||||
e_cursors_find(char *type)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
|
|
@ -0,0 +1,220 @@
|
|||
#include "debug.h"
|
||||
#include "e.h"
|
||||
#include "data.h"
|
||||
#include "file.h"
|
||||
#include "util.h"
|
||||
|
||||
void
|
||||
e_data_type_add_node(E_Data_Base_Type * base, char *prefix,
|
||||
E_Data_Datatype type,
|
||||
E_Data_Base_Type * list_type,
|
||||
int offset, E_Data_Value def_val)
|
||||
{
|
||||
E_Data_Node *data_node;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
data_node = NEW(E_Data_Node, 1);
|
||||
ZERO(data_node, E_Data_Node, 1);
|
||||
|
||||
data_node->prefix = strdup(prefix);
|
||||
data_node->type = type;
|
||||
data_node->sub_type = list_type;
|
||||
data_node->offset = offset;
|
||||
switch (type)
|
||||
{
|
||||
case E_DATA_TYPE_INT:
|
||||
data_node->def_val.int_val = def_val.int_val;
|
||||
break;
|
||||
case E_DATA_TYPE_FLOAT:
|
||||
data_node->def_val.float_val = def_val.float_val;
|
||||
break;
|
||||
case E_DATA_TYPE_STR:
|
||||
if (data_node->def_val.str_val)
|
||||
{
|
||||
e_strdup(data_node->def_val.str_val, def_val.str_val);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
base->nodes = evas_list_append(base->nodes, data_node);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
E_Data_Base_Type *
|
||||
e_data_type_new(void)
|
||||
{
|
||||
E_Data_Base_Type *t;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
t = NEW(E_Data_Base_Type, 1);
|
||||
ZERO(t, E_Data_Base_Type, 1);
|
||||
|
||||
D_RETURN_(t);
|
||||
}
|
||||
|
||||
void *
|
||||
e_data_load(char *file, char *prefix, E_Data_Base_Type * type)
|
||||
{
|
||||
E_DB_File *db;
|
||||
char buf[PATH_MAX];
|
||||
Evas_List *l;
|
||||
char *data;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
if (!e_file_exists(file))
|
||||
D_RETURN_(NULL);
|
||||
db = e_db_open_read(file);
|
||||
|
||||
if (!db)
|
||||
D_RETURN_(NULL);
|
||||
|
||||
data = NEW(char, type->size);
|
||||
ZERO(data, char, type->size);
|
||||
|
||||
for (l = type->nodes; l; l = l->next)
|
||||
{
|
||||
E_Data_Node *node;
|
||||
|
||||
node = l->data;
|
||||
switch (node->type)
|
||||
{
|
||||
case E_DATA_TYPE_INT:
|
||||
{
|
||||
int val;
|
||||
|
||||
val = 0;
|
||||
snprintf(buf, PATH_MAX, "%s/%s", prefix, node->prefix);
|
||||
if (e_db_int_get(db, buf, &val))
|
||||
(*((int *)(&(data[node->offset])))) = val;
|
||||
else
|
||||
(*((int *)(&(data[node->offset])))) = node->def_val.int_val;
|
||||
}
|
||||
break;
|
||||
case E_DATA_TYPE_STR:
|
||||
{
|
||||
char *val;
|
||||
|
||||
snprintf(buf, PATH_MAX, "%s/%s", prefix, node->prefix);
|
||||
if ((val = e_db_str_get(db, buf)))
|
||||
(*((char **)(&(data[node->offset])))) = val;
|
||||
else
|
||||
e_strdup((*((char **)(&(data[node->offset])))),
|
||||
node->def_val.str_val);
|
||||
}
|
||||
break;
|
||||
case E_DATA_TYPE_PTR:
|
||||
{
|
||||
snprintf(buf, PATH_MAX, "%s/%s", prefix, node->prefix);
|
||||
(*((void **)(&(data[node->offset])))) = e_data_load(file, buf,
|
||||
node->
|
||||
sub_type);
|
||||
}
|
||||
break;
|
||||
case E_DATA_TYPE_FLOAT:
|
||||
{
|
||||
float val;
|
||||
|
||||
val = 0;
|
||||
snprintf(buf, PATH_MAX, "%s/%s", prefix, node->prefix);
|
||||
if (e_db_float_get(db, buf, &val))
|
||||
(*((float *)(&(data[node->offset])))) = val;
|
||||
else
|
||||
(*((float *)(&(data[node->offset])))) =
|
||||
node->def_val.float_val;
|
||||
}
|
||||
break;
|
||||
case E_DATA_TYPE_LIST:
|
||||
{
|
||||
Evas_List *l2;
|
||||
int i, count;
|
||||
|
||||
l2 = NULL;
|
||||
snprintf(buf, PATH_MAX, "%s/%s/count", prefix, node->prefix);
|
||||
count = 0;
|
||||
e_db_int_get(db, buf, &count);
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
void *data2;
|
||||
|
||||
snprintf(buf, PATH_MAX, "%s/%s/%i", prefix, node->prefix,
|
||||
i);
|
||||
data2 = e_data_load(file, buf, node->sub_type);
|
||||
l2 = evas_list_append(l2, data2);
|
||||
}
|
||||
(*((Evas_List **) (&(data[node->offset])))) = l2;
|
||||
}
|
||||
break;
|
||||
case E_DATA_TYPE_KEY:
|
||||
{
|
||||
snprintf(buf, PATH_MAX, "%s/%s", prefix, node->prefix);
|
||||
(*((char **)(&(data[node->offset])))) = strdup(buf);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
e_db_close(db);
|
||||
D_RETURN_(data);
|
||||
}
|
||||
|
||||
void
|
||||
e_data_free(E_Data_Base_Type * type, char *data)
|
||||
{
|
||||
Evas_List *l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
for (l = type->nodes; l; l = l->next)
|
||||
{
|
||||
E_Data_Node *node;
|
||||
|
||||
node = l->data;
|
||||
switch (node->type)
|
||||
{
|
||||
case E_DATA_TYPE_LIST:
|
||||
{
|
||||
Evas_List *l2;
|
||||
|
||||
l2 = (*((Evas_List **) (&(data[node->offset]))));
|
||||
while (l2)
|
||||
{
|
||||
char *data2;
|
||||
|
||||
data2 = l2->data;
|
||||
l2 = evas_list_remove(l2, data2);
|
||||
e_data_free(node->sub_type, (char *)data2);
|
||||
FREE(data2);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case E_DATA_TYPE_STR:
|
||||
case E_DATA_TYPE_KEY:
|
||||
{
|
||||
IF_FREE((*((char **)(&(data[node->offset])))));
|
||||
}
|
||||
break;
|
||||
case E_DATA_TYPE_PTR:
|
||||
{
|
||||
e_data_free(node->sub_type,
|
||||
(*((void **)(&(data[node->offset])))));
|
||||
FREE((*((void **)(&(data[node->offset])))));
|
||||
}
|
||||
break;
|
||||
case E_DATA_TYPE_INT:
|
||||
case E_DATA_TYPE_FLOAT:
|
||||
break;
|
||||
default:
|
||||
D("DATA WARNING: Data node %p corrupted!!!\n", node);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
D_RETURN;
|
||||
}
|
|
@ -0,0 +1,97 @@
|
|||
#ifndef _DB_H
|
||||
#define _DB_H
|
||||
|
||||
/*
|
||||
* The API described in this file is used to map data from a database into a
|
||||
* struct. TODO: Arbitrary cleanup function for handling fields not described
|
||||
* by the base type, ie. not read in from the database.
|
||||
*/
|
||||
|
||||
typedef struct _e_data_base_type E_Data_Base_Type;
|
||||
typedef union _e_data_value E_Data_Value;
|
||||
typedef struct _e_data_node E_Data_Node;
|
||||
typedef enum _e_data_datatype E_Data_Datatype;
|
||||
|
||||
enum _e_data_datatype
|
||||
{
|
||||
E_DATA_TYPE_INT,
|
||||
E_DATA_TYPE_STR,
|
||||
E_DATA_TYPE_PTR,
|
||||
E_DATA_TYPE_FLOAT,
|
||||
E_DATA_TYPE_LIST,
|
||||
E_DATA_TYPE_KEY
|
||||
};
|
||||
|
||||
struct _e_data_base_type
|
||||
{
|
||||
int size;
|
||||
Evas_List *nodes;
|
||||
};
|
||||
|
||||
union _e_data_value
|
||||
{
|
||||
int int_val;
|
||||
float float_val;
|
||||
char *str_val;
|
||||
};
|
||||
|
||||
struct _e_data_node
|
||||
{
|
||||
char *prefix;
|
||||
E_Data_Datatype type;
|
||||
int offset;
|
||||
E_Data_Base_Type *sub_type;
|
||||
E_Data_Value def_val;
|
||||
};
|
||||
|
||||
#define E_DATA_NODE(var, prefix, type, sub, struct_type, struct_member, def_val) \
|
||||
{ \
|
||||
struct_type _cfg_dummy; \
|
||||
char *_cfg_p1, *_cfg_p2; \
|
||||
int _cfg_offset; \
|
||||
\
|
||||
_cfg_p1 = (char *)(&(_cfg_dummy)); \
|
||||
_cfg_p2 = (char *)(&(_cfg_dummy.struct_member)); \
|
||||
_cfg_offset = (int)(_cfg_p2 - _cfg_p1); \
|
||||
\
|
||||
e_data_type_add_node(var, prefix, type, sub, _cfg_offset, def_val); \
|
||||
var->size = sizeof(struct_type); \
|
||||
}
|
||||
|
||||
/**
|
||||
* e_data_type_new - create the basis for a new datatype description
|
||||
*
|
||||
* Returns a pointer to base type for tracking the elements of a data type.
|
||||
*/
|
||||
E_Data_Base_Type *e_data_type_new(void);
|
||||
|
||||
/**
|
||||
* e_data_type_add_node - add a type node to the base data type
|
||||
*
|
||||
* Add the necessary information for setting a data field in the base struct.
|
||||
*/
|
||||
void e_data_type_add_node(E_Data_Base_Type * base,
|
||||
char *prefix,
|
||||
E_Data_Datatype type,
|
||||
E_Data_Base_Type * list_type,
|
||||
int offset, E_Data_Value def_val);
|
||||
|
||||
/**
|
||||
* e_data_load - allocate and assign the data of the base type
|
||||
*
|
||||
* Returns a newly allocated struct of the base type, with data filled from
|
||||
* the database file with keys prefixed by prefix.
|
||||
*/
|
||||
void *e_data_load(char *file, char *prefix,
|
||||
E_Data_Base_Type * type);
|
||||
|
||||
/**
|
||||
* e_data_free - free the data allocated by e_data_load
|
||||
*
|
||||
* The data assigned by e_data_load is freed, but the struct itself is not,
|
||||
* since the programmer may have other fields in the struct that were not
|
||||
* allocated by e_data_load.
|
||||
*/
|
||||
void e_data_free(E_Data_Base_Type * type, char *data);
|
||||
|
||||
#endif
|
|
@ -33,7 +33,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
|
||||
#include "debug.h"
|
||||
|
||||
static int do_print = 0;
|
||||
static int do_print = 1;
|
||||
static int calldepth = 0;
|
||||
|
||||
static void debug_whitespace(int calldepth);
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include <string.h>
|
||||
#include "debug.h"
|
||||
#include "delayed.h"
|
||||
#include "util.h"
|
||||
|
||||
static void
|
||||
e_delayed_action_cleanup(E_Delayed_Action * eda)
|
||||
|
@ -14,7 +15,8 @@ e_delayed_action_cleanup(E_Delayed_Action * eda)
|
|||
}
|
||||
|
||||
E_Delayed_Action *
|
||||
e_delayed_action_new(E_Event_Type event, double delay, E_Delay_Func delay_func)
|
||||
e_delayed_action_new(E_Event_Type event, E_Delay_Val delay,
|
||||
E_Delay_Func delay_func)
|
||||
{
|
||||
E_Delayed_Action *eda = NULL;
|
||||
|
||||
|
@ -41,9 +43,11 @@ e_delayed_action_start(E_Observer * obs, E_Observee * obj, E_Event_Type event, v
|
|||
D_ENTER;
|
||||
|
||||
snprintf(event_name, PATH_MAX, "_e_delayed_action_notify(%d)", obs->event);
|
||||
ecore_add_event_timer(event_name, eda->delay, eda->delay_func, 0, obj);
|
||||
ecore_add_event_timer(event_name, eda->delay(), eda->delay_func, 0, obj);
|
||||
|
||||
D_RETURN;
|
||||
UN(event);
|
||||
UN(data);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -5,19 +5,21 @@
|
|||
#include "observer.h"
|
||||
|
||||
typedef void (*E_Delay_Func) (int val, void *obj);
|
||||
typedef float (*E_Delay_Val) ();
|
||||
|
||||
typedef struct _e_delayed_action
|
||||
{
|
||||
E_Observer obs;
|
||||
|
||||
double delay;
|
||||
E_Delay_Val delay;
|
||||
E_Delay_Func delay_func;
|
||||
|
||||
}
|
||||
E_Delayed_Action;
|
||||
|
||||
E_Delayed_Action *e_delayed_action_new(E_Event_Type event,
|
||||
double delay, E_Delay_Func delay_func);
|
||||
E_Delay_Val delay,
|
||||
E_Delay_Func delay_func);
|
||||
|
||||
void e_delayed_action_start(E_Observer * obs, E_Observee * obj,
|
||||
E_Event_Type event, void *data);
|
||||
|
|
894
src/desktops.c
894
src/desktops.c
File diff suppressed because it is too large
Load Diff
|
@ -2,7 +2,6 @@
|
|||
#define E_DESKTOPS_H
|
||||
|
||||
#include "e.h"
|
||||
#include "view.h"
|
||||
#include "border.h"
|
||||
#include "object.h"
|
||||
|
||||
|
@ -11,25 +10,31 @@
|
|||
typedef struct _E_Desktop E_Desktop;
|
||||
#endif
|
||||
|
||||
#include "view_layout.h"
|
||||
|
||||
#ifndef E_DESKTOPS_ADAPTOR_TYPEDEF
|
||||
#define E_DESKTOPS_ADAPTOR_TYPEDEF
|
||||
typedef struct _E_Desktop_Adaptor E_Desktop_Adaptor;
|
||||
#endif
|
||||
|
||||
struct _E_Desktop
|
||||
{
|
||||
E_Observee obs;
|
||||
|
||||
char *name;
|
||||
char *dir;
|
||||
struct
|
||||
/* struct
|
||||
{
|
||||
Window main;
|
||||
Window container;
|
||||
}
|
||||
win;
|
||||
win; */
|
||||
int x, y;
|
||||
struct
|
||||
{
|
||||
int w, h;
|
||||
}
|
||||
real , virt;
|
||||
Evas_List windows;
|
||||
Evas_List * windows;
|
||||
struct
|
||||
{
|
||||
int desk;
|
||||
|
@ -40,8 +45,19 @@ struct _E_Desktop
|
|||
area;
|
||||
}
|
||||
desk;
|
||||
E_View *view;
|
||||
int changed;
|
||||
E_Desktop_Adaptor *adaptor;
|
||||
Evas *evas;
|
||||
E_View_Layout *layout;
|
||||
E_View_Look *look;
|
||||
E_Background bg;
|
||||
E_Iconbar *iconbar;
|
||||
/* int changed; */
|
||||
};
|
||||
|
||||
struct _E_Desktop_Adaptor
|
||||
{
|
||||
E_Observer obsvr;
|
||||
E_Desktop *desktop;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -57,17 +73,9 @@ void e_desktops_init(void);
|
|||
void e_desktops_scroll(E_Desktop * desk, int dx, int dy);
|
||||
void e_desktops_free(E_Desktop * desk);
|
||||
|
||||
/**
|
||||
* e_desktops_init_file_display - Loads desktop graphics information
|
||||
* @desk: The desktop for which the graphics are loaded
|
||||
*
|
||||
* This function loads the desktop's graphics from the user's desktop
|
||||
* file definition, which lives in ~/.e/desktop/default/.e_background.bg.db.
|
||||
*/
|
||||
void e_desktops_init_file_display(E_Desktop * desk);
|
||||
|
||||
E_Desktop *e_desktops_new(void);
|
||||
E_Desktop *e_desktops_new(int i);
|
||||
void e_desktops_add_border(E_Desktop * d, E_Border * b);
|
||||
void e_desktops_add_sticky(E_Border *b);
|
||||
void e_desktops_del_border(E_Desktop * d, E_Border * b);
|
||||
void e_desktops_delete(E_Desktop * d);
|
||||
void e_desktops_show(E_Desktop * d);
|
||||
|
@ -91,6 +99,11 @@ E_Desktop *e_desktops_get(int d);
|
|||
int e_desktops_get_current(void);
|
||||
void e_desktops_goto_desk(int d);
|
||||
void e_desktops_goto(int d, int ax, int ay);
|
||||
Evas_List e_desktops_get_desktops_list();
|
||||
Evas_List *e_desktops_get_desktops_list();
|
||||
void e_desktop_bg_reload(E_Desktop * d);
|
||||
void e_desktop_ib_reload(E_Desktop * d);
|
||||
void e_desktop_update(E_Desktop *d);
|
||||
E_Border *e_desktop_raise_next_border(void);
|
||||
Window e_desktop_window();
|
||||
|
||||
#endif
|
||||
|
|
7
src/e.h
7
src/e.h
|
@ -22,6 +22,7 @@
|
|||
#endif
|
||||
#include <Imlib2.h>
|
||||
#include <Evas.h>
|
||||
#include <Evas_Engine_Software_X11.h>
|
||||
#include <Ebits.h>
|
||||
#include <Ecore.h>
|
||||
#include <Edb.h>
|
||||
|
@ -44,7 +45,7 @@ backtrace_symbols_fd(__BT_array, __BT_n, fileno(stdout)); \
|
|||
/* macros for allowing sections of code to be runtime profiled */
|
||||
#define E_PROF 1
|
||||
#ifdef E_PROF
|
||||
extern Evas_List __e_profiles;
|
||||
extern Evas_List * __e_profiles;
|
||||
|
||||
typedef struct _e_prof
|
||||
{
|
||||
|
@ -57,7 +58,7 @@ E_Prof;
|
|||
#define E_PROF_START(_prof_func) \
|
||||
{ \
|
||||
E_Prof __p, *__pp; \
|
||||
Evas_List __pl; \
|
||||
Evas_List * __pl; \
|
||||
__p.func = _prof_func; \
|
||||
__p.total = 0.0; \
|
||||
__p.t1 = ecore_get_time(); \
|
||||
|
@ -86,7 +87,7 @@ __e_profiles = evas_list_append(__e_profiles, __pp); \
|
|||
}
|
||||
#define E_PROF_DUMP \
|
||||
{ \
|
||||
Evas_List __pl; \
|
||||
Evas_List * __pl; \
|
||||
for (__pl = __e_profiles; __pl; __pl = __pl->next) \
|
||||
{ \
|
||||
E_Prof *__p; \
|
||||
|
|
86
src/e_dir.c
86
src/e_dir.c
|
@ -1,4 +1,5 @@
|
|||
#include "file.h"
|
||||
#include "desktops.h"
|
||||
#include "e_dir.h"
|
||||
#include "e_view_machine.h"
|
||||
#include "view.h"
|
||||
|
@ -65,39 +66,47 @@ e_dir_new(void)
|
|||
}
|
||||
|
||||
static void
|
||||
e_dir_handle_fs_restart(void *data)
|
||||
{
|
||||
e_dir_handle_fs_restart(void *data) {
|
||||
E_Dir *d;
|
||||
|
||||
D_ENTER;
|
||||
d = data;
|
||||
|
||||
D("e_dir_handle_fs_restart\n");
|
||||
if (e_fs_get_connection())
|
||||
{
|
||||
EfsdOptions *ops;
|
||||
|
||||
/* FIXME restart with metadata pending for views */
|
||||
if((d = data)) {
|
||||
if(d->dir&&*(d->dir)) {
|
||||
if (e_fs_get_connection()) {
|
||||
EfsdOptions *ops;
|
||||
|
||||
ops = efsd_ops(3,
|
||||
efsd_op_get_stat(),
|
||||
efsd_op_get_filetype(), efsd_op_list_all());
|
||||
d->monitor_id = efsd_start_monitor(e_fs_get_connection(), d->dir,
|
||||
ops, TRUE);
|
||||
/* FIXME restart with metadata pending for views */
|
||||
|
||||
}
|
||||
D("restarted monitor id (connection = %p), %i for %s\n",
|
||||
e_fs_get_connection(), d->monitor_id, d->dir);
|
||||
ops = efsd_ops(3,
|
||||
efsd_op_get_stat(),
|
||||
efsd_op_get_filetype(), efsd_op_list_all());
|
||||
if((d->monitor_id=efsd_start_monitor(e_fs_get_connection(), d->dir,
|
||||
ops, TRUE))<0) {
|
||||
D("could not restart monitor (connx %p) for \"%s\" => %i\n",
|
||||
e_fs_get_connection(), d->dir, d->monitor_id); }
|
||||
else {
|
||||
D("restarted monitor (connx %p) for \"%s\" => ID %i...\n",
|
||||
e_fs_get_connection(), d->dir, d->monitor_id); }}
|
||||
else {
|
||||
D("could not restart, connection refused\n"); }}
|
||||
else {
|
||||
D("could not restart, no dir given!?\n"); }}
|
||||
else {
|
||||
D("could not restart, no data\n"); }
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
D_RETURN; }
|
||||
|
||||
void
|
||||
e_dir_set_dir(E_Dir * d, char *dir)
|
||||
{
|
||||
D_ENTER;
|
||||
|
||||
if (!d)
|
||||
D_RETURN;
|
||||
if (!d) {
|
||||
D("e_dir_set_dir -- no E_Dir!\n");
|
||||
D_RETURN; }
|
||||
|
||||
/* stop monitoring old dir */
|
||||
if ((d->dir) && (d->monitor_id))
|
||||
|
@ -106,8 +115,29 @@ e_dir_set_dir(E_Dir * d, char *dir)
|
|||
d->monitor_id = 0;
|
||||
}
|
||||
IF_FREE(d->dir);
|
||||
|
||||
if(!dir||!*dir) {
|
||||
D("e_dir_set_dir -- no dir!\n");
|
||||
D_RETURN; }
|
||||
|
||||
d->dir = e_file_realpath(dir);
|
||||
|
||||
|
||||
if(!d->dir||!*(d->dir)) {
|
||||
/* realpath failed. this would mean that we tried to set a monitor
|
||||
on a non-existent (or inacessible) file. this may mean that the
|
||||
programmer really meant "...and if it doesn't exist YET, tell me
|
||||
if and when it is created", so rather than failing right here and
|
||||
now, we'll forget about the realpath, stick in the path they
|
||||
requested in the first place, and hope the backend actually supports
|
||||
watching something it cannot determine an inode for... we'll still
|
||||
throw a warning though, just for good measure. Azundris 2003/01/11 */
|
||||
D("e_dir_set_dir -- e_file_realpath(\"%s\") failed...\n",dir);
|
||||
if(d->dir)
|
||||
free(d->dir);
|
||||
if(!(d->dir=strdup(dir))) {
|
||||
D("e_dir_set_dir: OOM\n");
|
||||
D_RETURN; }}
|
||||
|
||||
/* start monitoring new dir */
|
||||
d->restarter = e_fs_add_restart_handler(e_dir_handle_fs_restart, d);
|
||||
if (e_fs_get_connection())
|
||||
|
@ -119,7 +149,7 @@ e_dir_set_dir(E_Dir * d, char *dir)
|
|||
efsd_op_get_filetype(), efsd_op_list_all());
|
||||
d->monitor_id = efsd_start_monitor(e_fs_get_connection(), d->dir,
|
||||
ops, TRUE);
|
||||
D("monitor id for %s = %i\n", d->dir, d->monitor_id);
|
||||
D("monitor id for \"%s\" = %i\n", d->dir, d->monitor_id);
|
||||
}
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -205,14 +235,14 @@ e_dir_handle_efsd_event_reply_getfiletype(EfsdEvent * ev)
|
|||
p = strchr(m, '/');
|
||||
if (p)
|
||||
{
|
||||
strcpy(base, m);
|
||||
strcpy(mime, p + 1);
|
||||
STRNCPY(base, m, PATH_MAX);
|
||||
STRNCPY(mime, p + 1, PATH_MAX);
|
||||
p = strchr(base, '/');
|
||||
*p = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy(base, m);
|
||||
STRNCPY(base, m, PATH_MAX);
|
||||
strcpy(mime, "unknown");
|
||||
}
|
||||
e_file_set_mime(f, base, mime);
|
||||
|
@ -282,7 +312,7 @@ e_dir_handle_efsd_event_reply_readlink(EfsdEvent * ev)
|
|||
static void
|
||||
e_dir_handle_efsd_event_reply_getmeta(EfsdEvent * ev)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
EfsdCmdId cmd;
|
||||
|
||||
D_ENTER;
|
||||
|
@ -428,7 +458,7 @@ e_dir_file_added(int id, char *file)
|
|||
E_File *f;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
||||
/* if we get a path - ignore it - its not a file in the dir */
|
||||
if (!file || file[0] == '/')
|
||||
D_RETURN;
|
||||
|
@ -479,7 +509,7 @@ e_dir_file_changed(int id, char *file)
|
|||
f = e_file_get_by_name(d->files, file);
|
||||
if (file[0] != '.')
|
||||
{
|
||||
e_observee_notify_observers(E_OBSERVEE(d), E_EVENT_FILE_DELETE, f);
|
||||
e_observee_notify_observers(E_OBSERVEE(d), E_EVENT_FILE_CHANGE, f);
|
||||
}
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -501,7 +531,7 @@ E_Dir *
|
|||
e_dir_find_by_monitor_id(int id)
|
||||
{
|
||||
E_Dir *d;
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ struct _E_Dir
|
|||
/* The realpath of the view's directory */
|
||||
char *dir;
|
||||
|
||||
Evas_List files;
|
||||
Evas_List * files;
|
||||
|
||||
/*
|
||||
* Evas_Object obj_bg;
|
||||
|
|
|
@ -1,76 +0,0 @@
|
|||
/*#include "debug.h"*/
|
||||
#include "e_ferite.h"
|
||||
#include "e_ferite_gen_header.h"
|
||||
#include "debug.h"
|
||||
|
||||
#if 0
|
||||
#ifdef D /* until ferite doesn't pullte the D(ebug) macro */
|
||||
# undef D
|
||||
# define D(x,...)
|
||||
# define D_ENTER
|
||||
# define D_RETURN
|
||||
# define D_RETURN_(x)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
void
|
||||
e_ferite_init(void)
|
||||
{
|
||||
D_ENTER;
|
||||
|
||||
D("Initialising ferite....\n");
|
||||
ferite_init(0, NULL);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
void
|
||||
e_ferite_deinit(void)
|
||||
{
|
||||
D_ENTER;
|
||||
|
||||
D("Deinitialising ferite....\n");
|
||||
ferite_deinit();
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
int
|
||||
e_ferite_script_error(FeriteScript * script, char *errmsg, int val)
|
||||
{
|
||||
D_ENTER;
|
||||
|
||||
fprintf(stderr, "e17: ferite error: %s\n", errmsg);
|
||||
|
||||
D_RETURN_(1);
|
||||
}
|
||||
|
||||
int
|
||||
e_ferite_script_warning(FeriteScript * script, char *warnmsg)
|
||||
{
|
||||
D_ENTER;
|
||||
|
||||
fprintf(stderr, "e17: ferite warning: %s\n", warnmsg);
|
||||
|
||||
D_RETURN_(1);
|
||||
}
|
||||
|
||||
void
|
||||
e_ferite_run(char *txt)
|
||||
{
|
||||
FeriteScript *script = NULL;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
D("Ferite: Compiling script `%s'\n", txt);
|
||||
script = __ferite_compile_string(txt);
|
||||
e_ferite_register(script, script->mainns);
|
||||
script->error_cb = e_ferite_script_error;
|
||||
script->warning_cb = e_ferite_script_warning;
|
||||
D("Ferite: executing script.\n");
|
||||
ferite_script_execute(script);
|
||||
D("Ferite: Cleaning up.\n");
|
||||
ferite_script_delete(script);
|
||||
|
||||
D_RETURN;
|
||||
}
|
170
src/e_ferite.fec
170
src/e_ferite.fec
|
@ -1,170 +0,0 @@
|
|||
header %{
|
||||
|
||||
#include "Ecore.h"
|
||||
#include "Ebits.h"
|
||||
#include "ferite.h"
|
||||
|
||||
#include "desktops.h"
|
||||
#include "border.h"
|
||||
#include "debug.h"
|
||||
#include "observer.h"
|
||||
#include "file.h"
|
||||
|
||||
#define BorderObj ((E_Border *)(self->odata))
|
||||
|
||||
%}
|
||||
|
||||
class Border {
|
||||
|
||||
function Border()
|
||||
%{
|
||||
%}
|
||||
|
||||
function get_name()
|
||||
%{
|
||||
if(BorderObj)
|
||||
FE_RETURN_STR(BorderObj->client.name, 0);
|
||||
%}
|
||||
|
||||
function get_title()
|
||||
%{
|
||||
if(BorderObj)
|
||||
FE_RETURN_STR(BorderObj->client.title, 0);
|
||||
%}
|
||||
|
||||
function get_class()
|
||||
%{
|
||||
if(BorderObj)
|
||||
FE_RETURN_STR(BorderObj->client.class, 0);
|
||||
%}
|
||||
|
||||
function get_x()
|
||||
%{
|
||||
if(BorderObj)
|
||||
FE_RETURN_LONG(BorderObj->current.x);
|
||||
%}
|
||||
|
||||
function get_y()
|
||||
%{
|
||||
if(BorderObj)
|
||||
FE_RETURN_LONG(BorderObj->current.y);
|
||||
%}
|
||||
|
||||
function get_width()
|
||||
%{
|
||||
if(BorderObj)
|
||||
FE_RETURN_LONG(BorderObj->current.w);
|
||||
%}
|
||||
|
||||
function get_height()
|
||||
%{
|
||||
if(BorderObj)
|
||||
FE_RETURN_LONG(BorderObj->current.h);
|
||||
%}
|
||||
|
||||
|
||||
function move( number x, number y );
|
||||
function resize( number width, number height );
|
||||
|
||||
function show();
|
||||
function hide();
|
||||
function is_visible()
|
||||
%{
|
||||
if(BorderObj)
|
||||
{
|
||||
if (BorderObj->current.visible) { FE_RETURN_TRUE; }
|
||||
else { FE_RETURN_FALSE; }
|
||||
}
|
||||
%}
|
||||
|
||||
|
||||
function shade();
|
||||
function unshade();
|
||||
function is_shaded();
|
||||
|
||||
function iconify()
|
||||
%{
|
||||
e_border_iconify(BorderObj);
|
||||
%}
|
||||
|
||||
function uniconify()
|
||||
%{
|
||||
e_border_uniconify(BorderObj);
|
||||
%}
|
||||
|
||||
function is_iconic()
|
||||
%{
|
||||
if (BorderObj->client.iconified) { FE_RETURN_TRUE }
|
||||
else { FE_RETURN_FALSE }
|
||||
%}
|
||||
|
||||
function is_mapped();
|
||||
function is_transient();
|
||||
function is_shaped();
|
||||
|
||||
function raise()
|
||||
%{
|
||||
%}
|
||||
|
||||
function lower()
|
||||
%{
|
||||
%}
|
||||
|
||||
|
||||
function delete();
|
||||
function kill();
|
||||
|
||||
}
|
||||
|
||||
|
||||
namespace e {
|
||||
|
||||
function flip_to_desktop( number desk )
|
||||
%{
|
||||
e_desktops_goto_desk( (long)desk );
|
||||
%}
|
||||
|
||||
function get_current_desktop()
|
||||
%{
|
||||
int retval = e_desktops_get_current();
|
||||
FE_RETURN_LONG( retval );
|
||||
%}
|
||||
|
||||
function get_desktop_count()
|
||||
%{
|
||||
int retval = e_desktops_get_num();
|
||||
printf("desktop_count: %i\n", retval);
|
||||
FE_RETURN_LONG( retval );
|
||||
%}
|
||||
|
||||
function get_width();
|
||||
function get_height();
|
||||
|
||||
// shutdown enlightenment
|
||||
function shutdown()
|
||||
%{
|
||||
ecore_event_loop_quit();
|
||||
%}
|
||||
|
||||
function restart()
|
||||
%{
|
||||
e_exec_restart();
|
||||
%}
|
||||
|
||||
function dataCopy(object from, object to)
|
||||
%{
|
||||
to->odata = from->odata;
|
||||
%}
|
||||
|
||||
function dataCmp(object from, object to)
|
||||
%{
|
||||
if (to->odata == from->odata) {FE_RETURN_TRUE;}
|
||||
else {FE_RETURN_FALSE;}
|
||||
%}
|
||||
|
||||
function getTime()
|
||||
%{
|
||||
FE_RETURN_DOUBLE(ecore_get_time());
|
||||
%}
|
||||
}
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
#ifndef E_FERITE_H
|
||||
#define E_FERITE_H
|
||||
|
||||
#include <config.h>
|
||||
#ifdef USE_FERITE
|
||||
|
||||
#include <ferite.h>
|
||||
|
||||
#else
|
||||
|
||||
#define FeriteScript void
|
||||
#define FeriteNamespace void
|
||||
#define FeriteVariable void
|
||||
#define FeriteFunction void
|
||||
#define FeriteObject void
|
||||
#define FeriteNamespaceBucket void
|
||||
|
||||
#endif
|
||||
|
||||
void e_ferite_init(void);
|
||||
void e_ferite_deinit(void);
|
||||
void e_ferite_run(char *script);
|
||||
void e_ferite_register(FeriteScript * script,
|
||||
FeriteNamespace * ns);
|
||||
int e_ferite_script_error(FeriteScript * script, char *errmsg,
|
||||
int val);
|
||||
int e_ferite_script_warning(FeriteScript * script,
|
||||
char *warnmsg);
|
||||
|
||||
#endif /* E_FERITE_H */
|
|
@ -11,7 +11,8 @@ e_file_cleanup(E_File * f)
|
|||
D_ENTER;
|
||||
|
||||
IF_FREE(f->info.icon);
|
||||
IF_FREE(f->info.link) IF_FREE(f->info.custom_icon);
|
||||
IF_FREE(f->info.link);
|
||||
IF_FREE(f->info.custom_icon);
|
||||
IF_FREE(f->info.mime.base);
|
||||
IF_FREE(f->info.mime.type);
|
||||
IF_FREE(f->file);
|
||||
|
@ -45,9 +46,9 @@ e_file_new(char *file)
|
|||
}
|
||||
|
||||
E_File *
|
||||
e_file_get_by_name(Evas_List l, char *file)
|
||||
e_file_get_by_name(Evas_List * l, char *file)
|
||||
{
|
||||
Evas_List ll;
|
||||
Evas_List * ll;
|
||||
E_File *f;
|
||||
|
||||
D_ENTER;
|
||||
|
@ -106,7 +107,7 @@ e_file_set_mime(E_File * f, char *base, char *mime)
|
|||
*/
|
||||
|
||||
/* find an icon */
|
||||
strcpy(type, f->info.mime.type);
|
||||
STRNCPY(type, f->info.mime.type, PATH_MAX);
|
||||
p = type;
|
||||
do
|
||||
{
|
||||
|
|
|
@ -27,7 +27,7 @@ struct _E_File
|
|||
};
|
||||
|
||||
E_File *e_file_new(char *file);
|
||||
E_File *e_file_get_by_name(Evas_List l, char *file);
|
||||
E_File *e_file_get_by_name(Evas_List * l, char *file);
|
||||
void e_file_set_mime(E_File * f, char *base, char *mime);
|
||||
void e_file_set_link(E_File * f, char *link);
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "e_view_look.h"
|
||||
#include "util.h"
|
||||
#include "desktops.h"
|
||||
#include "e_view_look.h"
|
||||
#include "view.h"
|
||||
#include "observer.h"
|
||||
#include "e_file.h"
|
||||
|
@ -99,7 +100,7 @@ e_view_look_set_dir(E_View_Look *l, char *dir)
|
|||
if (d)
|
||||
{
|
||||
l->dir = d;
|
||||
e_observer_register_observee(E_OBSERVER(l), E_OBSERVEE(d));
|
||||
e_observer_register_observee(E_OBSERVER(l), E_OBSERVEE(l->dir));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -117,25 +118,25 @@ e_view_look_file_change(E_View_Look *l, E_File *f)
|
|||
char buf[PATH_MAX];
|
||||
D_ENTER;
|
||||
snprintf(buf, PATH_MAX, "%s/%s", l->dir->dir, f->file);
|
||||
if (!strcmp(f->file, "background.db"))
|
||||
if (!strncmp(f->file, "background.db", PATH_MAX))
|
||||
{
|
||||
IF_FREE(l->obj->bg);
|
||||
l->obj->bg = strdup(buf);
|
||||
e_observee_notify_observers(E_OBSERVEE(l->obj), E_EVENT_BG_CHANGED, f);
|
||||
}
|
||||
else if (!strcmp(f->file, "iconbar.db"))
|
||||
else if (!strncmp(f->file, "iconbar.db", PATH_MAX))
|
||||
{
|
||||
IF_FREE(l->obj->icb);
|
||||
l->obj->icb = strdup(buf);
|
||||
e_observee_notify_observers(E_OBSERVEE(l->obj), E_EVENT_ICB_CHANGED, f);
|
||||
}
|
||||
else if (!strcmp(f->file, "iconbar.bits.db"))
|
||||
else if (!strncmp(f->file, "iconbar.bits.db", PATH_MAX))
|
||||
{
|
||||
IF_FREE(l->obj->icb_bits);
|
||||
l->obj->icb_bits = strdup(buf);
|
||||
e_observee_notify_observers(E_OBSERVEE(l->obj), E_EVENT_ICB_CHANGED, f);
|
||||
}
|
||||
else if (!strcmp(f->file, "layout.db"))
|
||||
else if (!strncmp(f->file, "layout.db", PATH_MAX))
|
||||
{
|
||||
IF_FREE(l->obj->layout);
|
||||
l->obj->layout = strdup(buf);
|
||||
|
@ -148,7 +149,7 @@ static void
|
|||
e_view_look_file_delete(E_View_Look *l, E_File *f)
|
||||
{
|
||||
D_ENTER;
|
||||
|
||||
|
||||
if (!strcmp(f->file, "background.db"))
|
||||
{
|
||||
IF_FREE(l->obj->bg);
|
||||
|
|
|
@ -75,7 +75,7 @@ e_view_machine_unregister_look(E_View_Look * l)
|
|||
void
|
||||
e_view_machine_close_all_views(void)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
/* Copy the list of views and unregister them */
|
||||
|
@ -92,7 +92,7 @@ E_Dir *
|
|||
e_view_machine_dir_lookup(char *path)
|
||||
{
|
||||
E_Dir *d;
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
char *realpath = NULL;
|
||||
|
||||
D_ENTER;
|
||||
|
@ -122,7 +122,7 @@ E_View_Look *
|
|||
e_view_machine_look_lookup(char *path)
|
||||
{
|
||||
E_View_Look *vl;
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
char *realpath = NULL;
|
||||
|
||||
D_ENTER;
|
||||
|
@ -152,7 +152,7 @@ e_view_machine_look_lookup(char *path)
|
|||
E_View *
|
||||
e_view_machine_get_view_by_main_window(Window win)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
for (l = VM->views; l; l = l->next)
|
||||
|
@ -168,7 +168,7 @@ e_view_machine_get_view_by_main_window(Window win)
|
|||
E_View *
|
||||
e_view_machine_get_view_by_base_window(Window win)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
for (l = VM->views; l; l = l->next)
|
||||
|
@ -180,5 +180,3 @@ e_view_machine_get_view_by_base_window(Window win)
|
|||
}
|
||||
D_RETURN_(NULL);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
#include "view.h"
|
||||
struct _e_view_machine
|
||||
{
|
||||
Evas_List views;
|
||||
Evas_List dirs;
|
||||
Evas_List looks;
|
||||
Evas_List * views;
|
||||
Evas_List * dirs;
|
||||
Evas_List * looks;
|
||||
|
||||
};
|
||||
typedef struct _e_view_machine E_View_Machine;
|
||||
|
|
64
src/embed.c
64
src/embed.c
|
@ -7,9 +7,9 @@ typedef struct _Embed Embed_Private;
|
|||
struct _Embed
|
||||
{
|
||||
Ebits_Object o;
|
||||
Evas evas;
|
||||
Evas_Object image_obj;
|
||||
Evas_Object clip_obj;
|
||||
Evas * evas;
|
||||
Evas_Object * image_obj;
|
||||
Evas_Object * clip_obj;
|
||||
int clip_x, clip_y;
|
||||
E_Text *text_obj;
|
||||
};
|
||||
|
@ -23,7 +23,7 @@ e_embed_text_func_show(void *_data)
|
|||
|
||||
em = _data;
|
||||
if (em->clip_obj)
|
||||
evas_show(em->evas, em->clip_obj);
|
||||
evas_object_show(em->clip_obj);
|
||||
e_text_show(em->text_obj);
|
||||
|
||||
D_RETURN;
|
||||
|
@ -38,7 +38,7 @@ e_embed_text_func_hide(void *_data)
|
|||
|
||||
em = _data;
|
||||
if (em->clip_obj)
|
||||
evas_hide(em->evas, em->clip_obj);
|
||||
evas_object_hide(em->clip_obj);
|
||||
e_text_hide(em->text_obj);
|
||||
|
||||
D_RETURN;
|
||||
|
@ -53,7 +53,7 @@ e_embed_text_func_move(void *_data, double x, double y)
|
|||
|
||||
em = _data;
|
||||
if (em->clip_obj)
|
||||
evas_move(em->evas, em->clip_obj, x, y);
|
||||
evas_object_move(em->clip_obj, x, y);
|
||||
e_text_move(em->text_obj, x, y);
|
||||
|
||||
D_RETURN;
|
||||
|
@ -68,7 +68,7 @@ e_embed_text_func_resize(void *_data, double w, double h)
|
|||
|
||||
em = _data;
|
||||
if (em->clip_obj)
|
||||
evas_resize(em->evas, em->clip_obj, w, h);
|
||||
evas_object_resize(em->clip_obj, w, h);
|
||||
e_text_resize(em->text_obj, w, h);
|
||||
|
||||
D_RETURN;
|
||||
|
@ -83,7 +83,7 @@ e_embed_text_func_raise(void *_data)
|
|||
|
||||
em = _data;
|
||||
if (em->clip_obj)
|
||||
evas_raise(em->evas, em->clip_obj);
|
||||
evas_object_raise(em->clip_obj);
|
||||
e_text_raise(em->text_obj);
|
||||
|
||||
D_RETURN;
|
||||
|
@ -98,7 +98,7 @@ e_embed_text_func_lower(void *_data)
|
|||
|
||||
em = _data;
|
||||
if (em->clip_obj)
|
||||
evas_lower(em->evas, em->clip_obj);
|
||||
evas_object_lower(em->clip_obj);
|
||||
e_text_lower(em->text_obj);
|
||||
|
||||
D_RETURN;
|
||||
|
@ -113,14 +113,14 @@ e_embed_text_func_set_layer(void *_data, int l)
|
|||
|
||||
em = _data;
|
||||
if (em->clip_obj)
|
||||
evas_set_layer(em->evas, em->clip_obj, l);
|
||||
evas_object_layer_set(em->clip_obj, l);
|
||||
e_text_set_layer(em->text_obj, l);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
static void
|
||||
e_embed_text_func_set_clip(void *_data, Evas_Object clip)
|
||||
e_embed_text_func_set_clip(void *_data, Evas_Object * clip)
|
||||
{
|
||||
Embed_Private *em;
|
||||
|
||||
|
@ -198,7 +198,7 @@ e_embed_text_func_get_max_size(void *_data, double *w, double *h)
|
|||
/***/
|
||||
|
||||
Embed
|
||||
e_embed_text(Ebits_Object o, char *bit_name, Evas evas, E_Text * text_obj,
|
||||
e_embed_text(Ebits_Object o, char *bit_name, Evas * evas, E_Text * text_obj,
|
||||
int clip_x, int clip_y)
|
||||
{
|
||||
Embed_Private *em;
|
||||
|
@ -214,10 +214,10 @@ e_embed_text(Ebits_Object o, char *bit_name, Evas evas, E_Text * text_obj,
|
|||
em->clip_y = clip_y;
|
||||
if ((clip_x) || (clip_y))
|
||||
{
|
||||
em->clip_obj = evas_add_rectangle(em->evas);
|
||||
evas_set_color(em->evas, em->clip_obj, 255, 255, 255, 255);
|
||||
em->clip_obj = evas_object_rectangle_add(em->evas);
|
||||
evas_object_color_set(em->clip_obj, 255, 255, 255, 255);
|
||||
e_text_set_clip(em->text_obj, em->clip_obj);
|
||||
evas_show(em->evas, em->clip_obj);
|
||||
evas_object_show(em->clip_obj);
|
||||
}
|
||||
ebits_set_named_bit_replace(o, bit_name,
|
||||
e_embed_text_func_show,
|
||||
|
@ -244,7 +244,7 @@ e_embed_image_func_show(void *_data)
|
|||
D_ENTER;
|
||||
|
||||
em = _data;
|
||||
evas_show(em->evas, em->image_obj);
|
||||
evas_object_show(em->image_obj);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -257,7 +257,7 @@ e_embed_image_func_hide(void *_data)
|
|||
D_ENTER;
|
||||
|
||||
em = _data;
|
||||
evas_hide(em->evas, em->image_obj);
|
||||
evas_object_hide(em->image_obj);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -270,7 +270,7 @@ e_embed_image_func_move(void *_data, double x, double y)
|
|||
D_ENTER;
|
||||
|
||||
em = _data;
|
||||
evas_move(em->evas, em->image_obj, x, y);
|
||||
evas_object_move(em->image_obj, x, y);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -283,8 +283,8 @@ e_embed_image_func_resize(void *_data, double w, double h)
|
|||
D_ENTER;
|
||||
|
||||
em = _data;
|
||||
evas_resize(em->evas, em->image_obj, w, h);
|
||||
evas_set_image_fill(em->evas, em->image_obj, 0, 0, w, h);
|
||||
evas_object_resize(em->image_obj, w, h);
|
||||
evas_object_image_fill_set(em->image_obj, 0, 0, w, h);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -297,7 +297,7 @@ e_embed_image_func_raise(void *_data)
|
|||
D_ENTER;
|
||||
|
||||
em = _data;
|
||||
evas_raise(em->evas, em->image_obj);
|
||||
evas_object_raise(em->image_obj);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -310,7 +310,7 @@ e_embed_image_func_lower(void *_data)
|
|||
D_ENTER;
|
||||
|
||||
em = _data;
|
||||
evas_lower(em->evas, em->image_obj);
|
||||
evas_object_lower(em->image_obj);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -323,13 +323,13 @@ e_embed_image_func_set_layer(void *_data, int l)
|
|||
D_ENTER;
|
||||
|
||||
em = _data;
|
||||
evas_set_layer(em->evas, em->image_obj, l);
|
||||
evas_object_layer_set(em->image_obj, l);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
static void
|
||||
e_embed_image_func_set_clip(void *_data, Evas_Object clip)
|
||||
e_embed_image_func_set_clip(void *_data, Evas_Object * clip)
|
||||
{
|
||||
Embed_Private *em;
|
||||
|
||||
|
@ -337,9 +337,9 @@ e_embed_image_func_set_clip(void *_data, Evas_Object clip)
|
|||
|
||||
em = _data;
|
||||
if (clip)
|
||||
evas_set_clip(em->evas, em->image_obj, clip);
|
||||
evas_object_clip_set(em->image_obj, clip);
|
||||
else
|
||||
evas_unset_clip(em->evas, em->image_obj);
|
||||
evas_object_clip_unset(em->image_obj);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -354,7 +354,7 @@ e_embed_image_func_set_color_class(void *_data, char *cc, int r, int g, int b,
|
|||
|
||||
em = _data;
|
||||
if ((cc) && (!strcmp(cc, "icon")))
|
||||
evas_set_color(em->evas, em->image_obj, r, g, b, a);
|
||||
evas_object_color_set(em->image_obj, r, g, b, a);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -370,7 +370,7 @@ e_embed_image_func_get_min_size(void *_data, double *w, double *h)
|
|||
em = _data;
|
||||
iw = 0;
|
||||
ih = 0;
|
||||
evas_get_image_size(em->evas, em->image_obj, &iw, &ih);
|
||||
evas_object_image_size_get(em->image_obj, &iw, &ih);
|
||||
if (w)
|
||||
*w = iw;
|
||||
if (h)
|
||||
|
@ -388,7 +388,7 @@ e_embed_image_func_get_max_size(void *_data, double *w, double *h)
|
|||
D_ENTER;
|
||||
|
||||
em = _data;
|
||||
evas_get_image_size(em->evas, em->image_obj, &iw, &ih);
|
||||
evas_object_image_size_get(em->image_obj, &iw, &ih);
|
||||
if (w)
|
||||
*w = iw;
|
||||
if (h)
|
||||
|
@ -400,8 +400,8 @@ e_embed_image_func_get_max_size(void *_data, double *w, double *h)
|
|||
/***/
|
||||
|
||||
Embed
|
||||
e_embed_image_object(Ebits_Object o, char *bit_name, Evas evas,
|
||||
Evas_Object image_obj)
|
||||
e_embed_image_object(Ebits_Object o, char *bit_name, Evas * evas,
|
||||
Evas_Object * image_obj)
|
||||
{
|
||||
Embed_Private *em;
|
||||
|
||||
|
@ -438,7 +438,7 @@ e_embed_free(Embed emb)
|
|||
|
||||
em = emb;
|
||||
if (em->clip_obj)
|
||||
evas_del_object(em->evas, em->clip_obj);
|
||||
evas_object_del(em->clip_obj);
|
||||
FREE(em);
|
||||
|
||||
D_RETURN;
|
||||
|
|
|
@ -6,10 +6,10 @@
|
|||
|
||||
typedef void *Embed;
|
||||
|
||||
Embed e_embed_text(Ebits_Object o, char *bit_name, Evas evas,
|
||||
Embed e_embed_text(Ebits_Object o, char *bit_name, Evas * evas,
|
||||
E_Text * text_obj, int clip_x, int clip_y);
|
||||
Embed e_embed_image_object(Ebits_Object o, char *bit_name,
|
||||
Evas evas, Evas_Object image_obj);
|
||||
Evas * evas, Evas_Object * image_obj);
|
||||
void e_embed_free(Embed em);
|
||||
|
||||
#endif
|
||||
|
|
167
src/entry.c
167
src/entry.c
|
@ -3,16 +3,16 @@
|
|||
#include "config.h"
|
||||
#include "util.h"
|
||||
|
||||
static Evas_List entries;
|
||||
static Evas_List * entries;
|
||||
|
||||
static void e_clear_selection(Ecore_Event * ev);
|
||||
static void e_paste_request(Ecore_Event * ev);
|
||||
|
||||
static void e_entry_down_cb(void *_data, Evas _e, Evas_Object _o,
|
||||
static void e_entry_down_cb(void *_data, Evas * _e, Evas_Object * _o,
|
||||
int _b, int _x, int _y);
|
||||
static void e_entry_up_cb(void *_data, Evas _e, Evas_Object _o, int _b,
|
||||
static void e_entry_up_cb(void *_data, Evas * _e, Evas_Object * _o, int _b,
|
||||
int _x, int _y);
|
||||
static void e_entry_move_cb(void *_data, Evas _e, Evas_Object _o,
|
||||
static void e_entry_move_cb(void *_data, Evas * _e, Evas_Object * _o,
|
||||
int _b, int _x, int _y);
|
||||
static void e_entry_realize(E_Entry * entry);
|
||||
static void e_entry_unrealize(E_Entry * entry);
|
||||
|
@ -22,7 +22,7 @@ static void
|
|||
e_clear_selection(Ecore_Event * ev)
|
||||
{
|
||||
Ecore_Event_Clear_Selection *e;
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -49,7 +49,7 @@ static void
|
|||
e_paste_request(Ecore_Event * ev)
|
||||
{
|
||||
Ecore_Event_Paste_Request *e;
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -73,7 +73,7 @@ e_paste_request(Ecore_Event * ev)
|
|||
}
|
||||
|
||||
static void
|
||||
e_entry_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
||||
e_entry_down_cb(void *_data, Evas *_e, Evas_Object * _o, int _b, int _x, int _y)
|
||||
{
|
||||
E_Entry *entry;
|
||||
int pos;
|
||||
|
@ -90,13 +90,19 @@ e_entry_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
else if (!entry->mouse_down)
|
||||
{
|
||||
entry->focused = 1;
|
||||
/* checkme
|
||||
pos = evas_text_at_position(_e, entry->text, _x, _y,
|
||||
NULL, NULL, NULL, NULL);
|
||||
*/
|
||||
pos = evas_object_text_char_coords_get(entry->text, _x, _y,
|
||||
NULL, NULL, NULL, NULL);
|
||||
if (pos < 0)
|
||||
{
|
||||
int tw;
|
||||
|
||||
/* checkme todo
|
||||
tw = evas_get_text_width(_e, entry->text);
|
||||
*/
|
||||
if (_x > entry->x + tw)
|
||||
{
|
||||
entry->cursor_pos = strlen(entry->buffer);
|
||||
|
@ -116,11 +122,12 @@ e_entry_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
}
|
||||
|
||||
D_RETURN;
|
||||
UN(_e);
|
||||
UN(_o);
|
||||
}
|
||||
|
||||
static void
|
||||
e_entry_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
||||
e_entry_up_cb(void *_data, Evas * _e, Evas_Object * _o, int _b, int _x, int _y)
|
||||
{
|
||||
E_Entry *entry;
|
||||
|
||||
|
@ -141,7 +148,7 @@ e_entry_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
}
|
||||
|
||||
static void
|
||||
e_entry_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
||||
e_entry_move_cb(void *_data, Evas * _e, Evas_Object * _o, int _b, int _x, int _y)
|
||||
{
|
||||
E_Entry *entry;
|
||||
|
||||
|
@ -154,14 +161,20 @@ e_entry_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
double ty;
|
||||
|
||||
ppos = entry->cursor_pos;
|
||||
evas_get_geometry(entry->evas, entry->text, NULL, &ty, NULL, NULL);
|
||||
evas_object_geometry_get(entry->text, NULL, &ty, NULL, NULL);
|
||||
/* checkme
|
||||
pos = evas_text_at_position(_e, entry->text, _x, ty,
|
||||
NULL, NULL, NULL, NULL);
|
||||
*/
|
||||
pos = evas_object_text_char_coords_get(entry->text, _x, ty,
|
||||
NULL, NULL, NULL, NULL);
|
||||
if (pos < 0)
|
||||
{
|
||||
int tw;
|
||||
|
||||
/* checkme todo
|
||||
tw = evas_get_text_width(_e, entry->text);
|
||||
*/
|
||||
if (_x > entry->x + tw)
|
||||
{
|
||||
entry->cursor_pos = strlen(entry->buffer);
|
||||
|
@ -222,6 +235,7 @@ e_entry_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
}
|
||||
|
||||
D_RETURN;
|
||||
UN(_e);
|
||||
UN(_o);
|
||||
UN(_b);
|
||||
UN(_y);
|
||||
|
@ -258,24 +272,27 @@ e_entry_realize(E_Entry * entry)
|
|||
/* ebits_set_color_class(entry->obj_base, "Base FG", 100, 200, 255, 255);*/
|
||||
}
|
||||
|
||||
entry->clip_box = evas_add_rectangle(entry->evas);
|
||||
entry->text = evas_add_text(entry->evas, "borzoib", 8, "");
|
||||
entry->clip_box = evas_object_rectangle_add(entry->evas);
|
||||
entry->text = evas_object_text_add(entry->evas);
|
||||
evas_object_text_font_set(entry->text, "borzoib", 8);
|
||||
if (entry->obj_cursor)
|
||||
ebits_set_clip(entry->obj_cursor, entry->clip_box);
|
||||
if (entry->obj_selection)
|
||||
ebits_set_clip(entry->obj_selection, entry->clip_box);
|
||||
entry->event_box = evas_add_rectangle(entry->evas);
|
||||
evas_set_color(entry->evas, entry->clip_box, 255, 255, 255, 255);
|
||||
evas_set_color(entry->evas, entry->event_box, 0, 0, 0, 0);
|
||||
evas_set_color(entry->evas, entry->text, 0, 0, 0, 255);
|
||||
evas_set_clip(entry->evas, entry->text, entry->clip_box);
|
||||
evas_set_clip(entry->evas, entry->event_box, entry->clip_box);
|
||||
evas_callback_add(entry->evas, entry->event_box, CALLBACK_MOUSE_DOWN,
|
||||
entry->event_box = evas_object_rectangle_add(entry->evas);
|
||||
evas_object_color_set(entry->clip_box, 255, 255, 255, 255);
|
||||
evas_object_color_set(entry->event_box, 0, 0, 0, 0);
|
||||
evas_object_color_set(entry->text, 0, 0, 0, 255);
|
||||
evas_object_clip_set(entry->text, entry->clip_box);
|
||||
evas_object_clip_set(entry->event_box, entry->clip_box);
|
||||
/* checkme todo
|
||||
evas_object_event_callback_add(entry->event_box, EVAS_CALLBACK_MOUSE_DOWN,
|
||||
e_entry_down_cb, entry);
|
||||
evas_callback_add(entry->evas, entry->event_box, CALLBACK_MOUSE_UP,
|
||||
evas_object_event_callback_add(entry->event_box, EVAS_CALLBACK_MOUSE_UP,
|
||||
e_entry_up_cb, entry);
|
||||
evas_callback_add(entry->evas, entry->event_box, CALLBACK_MOUSE_MOVE,
|
||||
evas_object_event_callback_add(entry->event_box, EVAS_CALLBACK_MOUSE_MOVE,
|
||||
e_entry_move_cb, entry);
|
||||
*/
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -286,11 +303,11 @@ e_entry_unrealize(E_Entry * entry)
|
|||
D_ENTER;
|
||||
|
||||
if (entry->event_box)
|
||||
evas_del_object(entry->evas, entry->event_box);
|
||||
evas_object_del(entry->event_box);
|
||||
if (entry->text)
|
||||
evas_del_object(entry->evas, entry->text);
|
||||
evas_object_del(entry->text);
|
||||
if (entry->clip_box)
|
||||
evas_del_object(entry->evas, entry->clip_box);
|
||||
evas_object_del(entry->clip_box);
|
||||
if (entry->obj_base)
|
||||
ebits_free(entry->obj_base);
|
||||
if (entry->obj_cursor)
|
||||
|
@ -330,12 +347,12 @@ e_entry_configure(E_Entry * entry)
|
|||
ebits_move(entry->obj_base, entry->x, entry->y);
|
||||
ebits_resize(entry->obj_base, entry->w, entry->h);
|
||||
}
|
||||
evas_move(entry->evas, entry->clip_box, entry->x + p1l, entry->y + p1t);
|
||||
evas_resize(entry->evas, entry->clip_box, entry->w - p1l - p1r,
|
||||
evas_object_move(entry->clip_box, entry->x + p1l, entry->y + p1t);
|
||||
evas_object_resize(entry->clip_box, entry->w - p1l - p1r,
|
||||
entry->h - p1t - p1b);
|
||||
evas_move(entry->evas, entry->event_box, entry->x + p1l + p2l,
|
||||
evas_object_move(entry->event_box, entry->x + p1l + p2l,
|
||||
entry->y + p1t + p2t);
|
||||
evas_resize(entry->evas, entry->event_box, entry->w - p1l - p1r - p2l - p2r,
|
||||
evas_object_resize(entry->event_box, entry->w - p1l - p1r - p2l - p2r,
|
||||
entry->h - p1t - p1b - p2t - p2b);
|
||||
if ((entry->buffer) && (entry->buffer[0] != 0) && (entry->focused))
|
||||
{
|
||||
|
@ -343,18 +360,30 @@ e_entry_configure(E_Entry * entry)
|
|||
|
||||
if (entry->cursor_pos < (int)strlen(entry->buffer))
|
||||
{
|
||||
/* checkme
|
||||
evas_text_at(entry->evas, entry->text, entry->cursor_pos, &tx, &ty,
|
||||
&tw, &th);
|
||||
*/
|
||||
evas_object_text_char_pos_get(entry->text, entry->cursor_pos, &tx, &ty,
|
||||
&tw, &th);
|
||||
}
|
||||
else
|
||||
{
|
||||
entry->cursor_pos = strlen(entry->buffer);
|
||||
/* checkme
|
||||
evas_text_at(entry->evas, entry->text, entry->cursor_pos - 1, &tx,
|
||||
&ty, &tw, &th);
|
||||
*/
|
||||
evas_object_text_char_pos_get(entry->text, entry->cursor_pos - 1, &tx,
|
||||
&ty, &tw, &th);
|
||||
tx += tw;
|
||||
tw = entry->end_width;
|
||||
}
|
||||
/* check me
|
||||
th = evas_get_text_height(entry->evas, entry->text);
|
||||
*/
|
||||
th = evas_object_text_ascent_get(entry->text)+
|
||||
evas_object_text_descent_get(entry->text);
|
||||
if (tx + tw + entry->scroll_pos > entry->w - p1l - p1r)
|
||||
entry->scroll_pos = entry->w - tx - tw - p1l - p1r - p1l - p2l;
|
||||
else if (tx + entry->scroll_pos < p1l)
|
||||
|
@ -375,7 +404,11 @@ e_entry_configure(E_Entry * entry)
|
|||
entry->scroll_pos = 0;
|
||||
tw = 4;
|
||||
tx = 0;
|
||||
/* checkme
|
||||
th = evas_get_text_height(entry->evas, entry->text);
|
||||
*/
|
||||
th = evas_object_text_ascent_get(entry->text)+
|
||||
evas_object_text_descent_get(entry->text);
|
||||
if (entry->obj_cursor)
|
||||
{
|
||||
ebits_move(entry->obj_cursor,
|
||||
|
@ -391,27 +424,45 @@ e_entry_configure(E_Entry * entry)
|
|||
if (entry->obj_cursor)
|
||||
ebits_hide(entry->obj_cursor);
|
||||
}
|
||||
evas_move(entry->evas, entry->text, entry->x + entry->scroll_pos + p1l + p2l,
|
||||
evas_object_move(entry->text, entry->x + entry->scroll_pos + p1l + p2l,
|
||||
entry->y + p1t + p2t);
|
||||
if (entry->select.start >= 0)
|
||||
{
|
||||
double x1, y1, x2, tw, th;
|
||||
|
||||
/* checkme
|
||||
evas_text_at(entry->evas, entry->text, entry->select.start, &x1, &y1,
|
||||
NULL, NULL);
|
||||
*/
|
||||
evas_object_text_char_pos_get(entry->text, entry->select.start, &x1, &y1,
|
||||
NULL, NULL);
|
||||
if (entry->select.start + entry->select.length <=
|
||||
(int)strlen(entry->buffer))
|
||||
{
|
||||
/* checkme
|
||||
evas_text_at(entry->evas, entry->text,
|
||||
entry->select.start + entry->select.length - 1, &x2,
|
||||
NULL, &tw, &th);
|
||||
*/
|
||||
evas_object_text_char_pos_get(entry->text,
|
||||
entry->select.start + entry->select.length - 1, &x2,
|
||||
NULL, &tw, &th);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* checkme
|
||||
evas_text_at(entry->evas, entry->text,
|
||||
entry->select.start + entry->select.length - 2, &x2,
|
||||
NULL, &tw, &th);
|
||||
*/
|
||||
evas_object_text_char_pos_get(entry->text,
|
||||
entry->select.start + entry->select.length - 2, &x2,
|
||||
NULL, &tw, &th);
|
||||
tw += entry->end_width;
|
||||
}
|
||||
/* checkme todo
|
||||
th = evas_get_text_height(entry->evas, entry->text);
|
||||
*/
|
||||
if (entry->obj_selection)
|
||||
{
|
||||
ebits_move(entry->obj_selection,
|
||||
|
@ -598,7 +649,7 @@ e_entry_handle_keypress(E_Entry * entry, Ecore_Event_Key_Down * e)
|
|||
}
|
||||
|
||||
void
|
||||
e_entry_set_evas(E_Entry * entry, Evas evas)
|
||||
e_entry_set_evas(E_Entry * entry, Evas * evas)
|
||||
{
|
||||
D_ENTER;
|
||||
|
||||
|
@ -632,9 +683,9 @@ e_entry_show(E_Entry * entry)
|
|||
ebits_show(entry->obj_cursor);
|
||||
if (entry->obj_selection)
|
||||
ebits_show(entry->obj_selection);
|
||||
evas_show(entry->evas, entry->event_box);
|
||||
evas_show(entry->evas, entry->clip_box);
|
||||
evas_show(entry->evas, entry->text);
|
||||
evas_object_show(entry->event_box);
|
||||
evas_object_show(entry->clip_box);
|
||||
evas_object_show(entry->text);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -655,9 +706,9 @@ e_entry_hide(E_Entry * entry)
|
|||
ebits_hide(entry->obj_cursor);
|
||||
if (entry->obj_selection)
|
||||
ebits_hide(entry->obj_selection);
|
||||
evas_hide(entry->evas, entry->event_box);
|
||||
evas_hide(entry->evas, entry->clip_box);
|
||||
evas_hide(entry->evas, entry->text);
|
||||
evas_object_hide(entry->event_box);
|
||||
evas_object_hide(entry->clip_box);
|
||||
evas_object_hide(entry->text);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -669,13 +720,13 @@ e_entry_raise(E_Entry * entry)
|
|||
|
||||
if (entry->obj_base)
|
||||
ebits_raise(entry->obj_base);
|
||||
evas_raise(entry->evas, entry->clip_box);
|
||||
evas_raise(entry->evas, entry->text);
|
||||
evas_object_raise(entry->clip_box);
|
||||
evas_object_raise(entry->text);
|
||||
if (entry->obj_selection)
|
||||
ebits_raise(entry->obj_selection);
|
||||
if (entry->obj_cursor)
|
||||
ebits_raise(entry->obj_cursor);
|
||||
evas_raise(entry->evas, entry->event_box);
|
||||
evas_object_raise(entry->event_box);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -685,13 +736,13 @@ e_entry_lower(E_Entry * entry)
|
|||
{
|
||||
D_ENTER;
|
||||
|
||||
evas_lower(entry->evas, entry->event_box);
|
||||
evas_object_lower(entry->event_box);
|
||||
if (entry->obj_cursor)
|
||||
ebits_lower(entry->obj_cursor);
|
||||
if (entry->obj_selection)
|
||||
ebits_lower(entry->obj_selection);
|
||||
evas_lower(entry->evas, entry->text);
|
||||
evas_lower(entry->evas, entry->clip_box);
|
||||
evas_object_lower(entry->text);
|
||||
evas_object_lower(entry->clip_box);
|
||||
if (entry->obj_base)
|
||||
ebits_lower(entry->obj_base);
|
||||
|
||||
|
@ -705,23 +756,23 @@ e_entry_set_layer(E_Entry * entry, int l)
|
|||
|
||||
if (entry->obj_base)
|
||||
ebits_set_layer(entry->obj_base, l);
|
||||
evas_set_layer(entry->evas, entry->clip_box, l);
|
||||
evas_set_layer(entry->evas, entry->text, l);
|
||||
evas_object_layer_set(entry->clip_box, l);
|
||||
evas_object_layer_set(entry->text, l);
|
||||
if (entry->obj_selection)
|
||||
ebits_set_layer(entry->obj_selection, l);
|
||||
if (entry->obj_cursor)
|
||||
ebits_set_layer(entry->obj_cursor, l);
|
||||
evas_set_layer(entry->evas, entry->event_box, l);
|
||||
evas_object_layer_set(entry->event_box, l);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
void
|
||||
e_entry_set_clip(E_Entry * entry, Evas_Object clip)
|
||||
e_entry_set_clip(E_Entry * entry, Evas_Object * clip)
|
||||
{
|
||||
D_ENTER;
|
||||
|
||||
evas_set_clip(entry->evas, entry->clip_box, clip);
|
||||
evas_object_clip_set(entry->clip_box, clip);
|
||||
if (entry->obj_base)
|
||||
ebits_set_clip(entry->obj_base, clip);
|
||||
|
||||
|
@ -733,7 +784,7 @@ e_entry_unset_clip(E_Entry * entry)
|
|||
{
|
||||
D_ENTER;
|
||||
|
||||
evas_unset_clip(entry->evas, entry->clip_box);
|
||||
evas_object_clip_unset(entry->clip_box);
|
||||
if (entry->obj_base)
|
||||
ebits_unset_clip(entry->obj_base);
|
||||
|
||||
|
@ -779,14 +830,18 @@ e_entry_query_max_size(E_Entry * entry, int *w, int *h)
|
|||
if (entry->obj_cursor)
|
||||
ebits_get_insets(entry->obj_cursor, &p2l, &p2r, &p2t, &p2b);
|
||||
|
||||
/* checkme todo
|
||||
if (w)
|
||||
*w =
|
||||
evas_get_text_width(entry->evas, entry->text) + p1l + p1r + p2l + p2r;
|
||||
if (h)
|
||||
*h =
|
||||
evas_get_text_height(entry->evas, entry->text) + p1t + p1b + p2t + p2b;
|
||||
*/
|
||||
|
||||
D_RETURN;
|
||||
UN(w);
|
||||
UN(h);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -805,11 +860,14 @@ e_entry_max_size(E_Entry * entry, int *w, int *h)
|
|||
ebits_get_insets(entry->obj_cursor, &p2l, &p2r, &p2t, &p2b);
|
||||
if (w)
|
||||
*w = 8000;
|
||||
/* checkme todo
|
||||
if (h)
|
||||
*h =
|
||||
evas_get_text_height(entry->evas, entry->text) + p1t + p1b + p2t + p2b;
|
||||
*/
|
||||
|
||||
D_RETURN;
|
||||
UN(h);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -828,11 +886,14 @@ e_entry_min_size(E_Entry * entry, int *w, int *h)
|
|||
ebits_get_insets(entry->obj_cursor, &p2l, &p2r, &p2t, &p2b);
|
||||
if (w)
|
||||
*w = p1l + p1r + p2l + p2r + entry->min_size;
|
||||
/* checkme todo
|
||||
if (h)
|
||||
*h =
|
||||
evas_get_text_height(entry->evas, entry->text) + p1t + p1b + p2t + p2b;
|
||||
*/
|
||||
|
||||
D_RETURN;
|
||||
UN(h);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -889,7 +950,7 @@ e_entry_set_text(E_Entry * entry, const char *text)
|
|||
|
||||
IF_FREE(entry->buffer);
|
||||
e_strdup(entry->buffer, text);
|
||||
evas_set_text(entry->evas, entry->text, entry->buffer);
|
||||
evas_object_text_text_set(entry->text, entry->buffer);
|
||||
if (entry->cursor_pos > (int)strlen(entry->buffer))
|
||||
entry->cursor_pos = strlen(entry->buffer);
|
||||
e_entry_configure(entry);
|
||||
|
@ -981,17 +1042,19 @@ e_entry_set_focus_out_callback(E_Entry * entry,
|
|||
void
|
||||
e_entry_insert_text(E_Entry * entry, char *text)
|
||||
{
|
||||
int size;
|
||||
char *str2;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
if (!text)
|
||||
D_RETURN;
|
||||
str2 = malloc(strlen(e_entry_get_text(entry)) + 1 + strlen(text));
|
||||
size = strlen(e_entry_get_text(entry)) + 1 + strlen(text);
|
||||
str2 = malloc(size);
|
||||
str2[0] = 0;
|
||||
strncat(str2, entry->buffer, entry->cursor_pos);
|
||||
strcat(str2, text);
|
||||
strcat(str2, &(entry->buffer[entry->cursor_pos]));
|
||||
strncat(str2, text, size);
|
||||
strncat(str2, &(entry->buffer[entry->cursor_pos]), size);
|
||||
e_entry_set_text(entry, str2);
|
||||
FREE(str2);
|
||||
entry->cursor_pos += strlen(text);
|
||||
|
|
12
src/entry.h
12
src/entry.h
|
@ -7,7 +7,7 @@ typedef struct _E_Entry E_Entry;
|
|||
|
||||
struct _E_Entry
|
||||
{
|
||||
Evas evas;
|
||||
Evas * evas;
|
||||
char *buffer;
|
||||
int cursor_pos;
|
||||
struct
|
||||
|
@ -24,9 +24,9 @@ struct _E_Entry
|
|||
Ebits_Object obj_base;
|
||||
Ebits_Object obj_cursor;
|
||||
Ebits_Object obj_selection;
|
||||
Evas_Object event_box;
|
||||
Evas_Object clip_box;
|
||||
Evas_Object text;
|
||||
Evas_Object * event_box;
|
||||
Evas_Object * clip_box;
|
||||
Evas_Object * text;
|
||||
Window paste_win;
|
||||
Window selection_win;
|
||||
int end_width;
|
||||
|
@ -52,13 +52,13 @@ void e_entry_free(E_Entry * entry);
|
|||
E_Entry *e_entry_new(void);
|
||||
void e_entry_handle_keypress(E_Entry * entry,
|
||||
Ecore_Event_Key_Down * e);
|
||||
void e_entry_set_evas(E_Entry * entry, Evas evas);
|
||||
void e_entry_set_evas(E_Entry * entry, Evas * evas);
|
||||
void e_entry_show(E_Entry * entry);
|
||||
void e_entry_hide(E_Entry * entry);
|
||||
void e_entry_raise(E_Entry * entry);
|
||||
void e_entry_lower(E_Entry * entry);
|
||||
void e_entry_set_layer(E_Entry * entry, int l);
|
||||
void e_entry_set_clip(E_Entry * entry, Evas_Object clip);
|
||||
void e_entry_set_clip(E_Entry * entry, Evas_Object * clip);
|
||||
void e_entry_unset_clip(E_Entry * entry);
|
||||
void e_entry_move(E_Entry * entry, int x, int y);
|
||||
void e_entry_resize(E_Entry * entry, int w, int h);
|
||||
|
|
821
src/epplet.c
821
src/epplet.c
|
@ -1,821 +0,0 @@
|
|||
#include "debug.h"
|
||||
#include "epplet.h"
|
||||
#include "file.h"
|
||||
#include "observer.h"
|
||||
#include "desktops.h"
|
||||
|
||||
#include "e_ferite.h"
|
||||
|
||||
static void e_epplet_cleanup(E_Epplet * epp);
|
||||
static void e_epplet_mouse_down_cb(void *_data, Ebits_Object _o,
|
||||
char *_c, int _b, int _x, int _y,
|
||||
int _ox, int _oy, int _ow, int _oh);
|
||||
|
||||
static void e_epplet_mouse_up_cb(void *_data, Ebits_Object _o,
|
||||
char *_c, int _b, int _x, int _y,
|
||||
int _ox, int _oy, int _ow, int _oh);
|
||||
|
||||
static void e_epplet_mouse_move_cb(void *_data, Ebits_Object _o,
|
||||
char *_c, int _b, int _x, int _y,
|
||||
int _ox, int _oy, int _ow, int _oh);
|
||||
|
||||
static void e_epplet_observer_cleanup(E_Object * o);
|
||||
|
||||
E_Epplet *
|
||||
e_epplet_new(void *scr)
|
||||
{
|
||||
#ifdef USE_FERITE
|
||||
E_Epplet *epp;
|
||||
FeriteScript *script;
|
||||
char buf[PATH_MAX];
|
||||
|
||||
D_ENTER;
|
||||
|
||||
script = (FeriteScript *) scr;
|
||||
|
||||
epp = NEW(E_Epplet, 1);
|
||||
ZERO(epp, E_Epplet, 1);
|
||||
|
||||
e_object_init(E_OBJECT(epp), (E_Cleanup_Func) e_epplet_cleanup);
|
||||
|
||||
epp->context = e_epplet_get_context_from_script(script);
|
||||
if (!(epp->context))
|
||||
{
|
||||
D("Error: epplet context not found\n");
|
||||
D_RETURN_(NULL);
|
||||
}
|
||||
|
||||
epp->view = epp->context->view;
|
||||
epp->name = strdup(epp->context->name);
|
||||
epp->current.x = epp->context->geom.x;
|
||||
epp->current.y = epp->context->geom.y;
|
||||
epp->current.w = epp->context->geom.w;
|
||||
epp->current.h = epp->context->geom.h;
|
||||
epp->context->epp = epp;
|
||||
|
||||
snprintf(buf, PATH_MAX, "%s/.e_epplets/%s/", epp->view->dir, epp->name);
|
||||
epp->dir = strdup(buf);
|
||||
|
||||
if (!(epp->view))
|
||||
{
|
||||
D("Error: no view found for epplet: %s\n", epp->name);
|
||||
e_object_unref(E_OBJECT(epp));
|
||||
D_RETURN_(NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
D_RETURN_(epp);
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
e_epplet_cleanup(E_Epplet * epp)
|
||||
{
|
||||
Evas_List l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
#ifdef USE_FERITE
|
||||
for (l = epp->ebits; l; l = l->next)
|
||||
{
|
||||
Ebits_Object o = l->data;
|
||||
|
||||
ebits_free(o);
|
||||
}
|
||||
|
||||
for (l = epp->evas_objects; l; l = l->next)
|
||||
{
|
||||
Evas_Object_Wrapper *o = l->data;
|
||||
|
||||
evas_del_object(o->evas, o->obj);
|
||||
|
||||
free(o);
|
||||
}
|
||||
|
||||
if (epp->layout)
|
||||
ebits_free(epp->layout);
|
||||
if (epp->ui)
|
||||
ebits_free(epp->ui);
|
||||
#endif
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
void
|
||||
e_epplet_load_from_layout(E_View * v)
|
||||
{
|
||||
char buf[PATH_MAX];
|
||||
Evas_List bit_names, l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
#ifdef USE_FERITE
|
||||
snprintf(buf, PATH_MAX, "%s/.e_epplets.bits.db", v->dir);
|
||||
v->epplet_layout = ebits_load(buf);
|
||||
if (!v->epplet_layout)
|
||||
D_RETURN;
|
||||
ebits_add_to_evas(v->epplet_layout, v->evas);
|
||||
ebits_resize(v->epplet_layout, v->size.w, v->size.h);
|
||||
ebits_move(v->epplet_layout, 0, 0);
|
||||
|
||||
bit_names = ebits_get_bit_names(v->epplet_layout);
|
||||
|
||||
for (l = bit_names; l; l = l->next)
|
||||
{
|
||||
double x, y, w, h;
|
||||
E_Epplet_Context *context;
|
||||
|
||||
context = NEW(E_Epplet_Context, 1);
|
||||
ZERO(context, E_Epplet_Context, 1);
|
||||
|
||||
context->name = l->data;
|
||||
|
||||
ebits_get_named_bit_geometry(v->epplet_layout, context->name, &x, &y,
|
||||
&w, &h);
|
||||
|
||||
context->geom.x = x;
|
||||
context->geom.y = y;
|
||||
context->geom.w = w;
|
||||
context->geom.h = h;
|
||||
context->view = v;
|
||||
D("epplet has following info:\n");
|
||||
D("x: %f, y: %f, w: %f, h: %f\n", x, y, w, h);
|
||||
|
||||
v->epplet_contexts = evas_list_append(v->epplet_contexts, context);
|
||||
|
||||
snprintf(buf, PATH_MAX, "%s/.e_epplets/%s/%s.fe", v->dir, context->name,
|
||||
context->name);
|
||||
if (e_file_exists(buf))
|
||||
e_epplet_script_load(context, buf);
|
||||
else
|
||||
D("Error: Can't find epplet `%s'\n", buf);
|
||||
}
|
||||
#endif
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
E_Epplet_Context *
|
||||
e_epplet_get_context_from_script(FeriteScript * script)
|
||||
{
|
||||
Evas_List l, ll;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
D("script address: %p\n", script);
|
||||
|
||||
#ifdef USE_FERITE
|
||||
for (l = views; l; l = l->next)
|
||||
{
|
||||
E_View *v;
|
||||
|
||||
v = l->data;
|
||||
D("searching view: %s\n", v->dir);
|
||||
|
||||
if (v->epplet_contexts == NULL)
|
||||
D("no scripts in view\n");
|
||||
for (ll = v->epplet_contexts; ll; ll = ll->next)
|
||||
{
|
||||
E_Epplet_Context *context = ll->data;
|
||||
|
||||
D("found script: %p\n", context->script);
|
||||
|
||||
if (context->script == script)
|
||||
D_RETURN_(context);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
D_RETURN_(NULL);
|
||||
}
|
||||
|
||||
void
|
||||
e_epplet_script_load(E_Epplet_Context * context, char *path)
|
||||
{
|
||||
FeriteScript *script = NULL;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
#ifdef USE_FERITE
|
||||
D("Ferite: Compiling epplet script `%s'\n", path);
|
||||
script = ferite_script_compile(path);
|
||||
|
||||
if (!script)
|
||||
{
|
||||
D("Error compiling script... aborting\n");
|
||||
D_RETURN;
|
||||
}
|
||||
context->script = script;
|
||||
e_ferite_register(script, script->mainns);
|
||||
script->error_cb = e_ferite_script_error;
|
||||
script->warning_cb = e_ferite_script_warning;
|
||||
D("Ferite: executing epplet.\n");
|
||||
|
||||
ferite_script_execute(script);
|
||||
D("Ferite: epplet executed.\n");
|
||||
/*ferite_script_delete(script); */
|
||||
#endif
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
void
|
||||
e_epplet_set_common_callbacks(E_Epplet * epp)
|
||||
{
|
||||
/*
|
||||
D ("setting callbacks\n");
|
||||
|
||||
#ifdef USE_FERITE
|
||||
if (!epp->bits)
|
||||
{
|
||||
D ("Error: no bits to set callbacks on\n");
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
ebits_set_classed_bit_callback (epp->bits, "Title_Bar",
|
||||
CALLBACK_MOUSE_DOWN, e_epplet_mouse_down_cb,
|
||||
epp);
|
||||
ebits_set_classed_bit_callback (epp->bits, "Title_Bar", CALLBACK_MOUSE_UP,
|
||||
e_epplet_mouse_up_cb, epp);
|
||||
ebits_set_classed_bit_callback (epp->bits, "Title_Bar", CALLBACK_MOUSE_MOVE,
|
||||
e_epplet_mouse_move_cb, epp);
|
||||
|
||||
ebits_set_classed_bit_callback (epp->bits, "Resize",
|
||||
CALLBACK_MOUSE_DOWN, e_epplet_mouse_down_cb,
|
||||
epp);
|
||||
ebits_set_classed_bit_callback (epp->bits, "Resize", CALLBACK_MOUSE_UP,
|
||||
e_epplet_mouse_up_cb, epp);
|
||||
ebits_set_classed_bit_callback (epp->bits, "Resize", CALLBACK_MOUSE_MOVE,
|
||||
e_epplet_mouse_move_cb, epp);
|
||||
|
||||
ebits_set_classed_bit_callback (epp->bits, "Resize_Vertical",
|
||||
CALLBACK_MOUSE_DOWN, e_epplet_mouse_down_cb,
|
||||
epp);
|
||||
ebits_set_classed_bit_callback (epp->bits, "Resize_Vertical",
|
||||
CALLBACK_MOUSE_UP, e_epplet_mouse_up_cb,
|
||||
epp);
|
||||
ebits_set_classed_bit_callback (epp->bits, "Resize_Vertical",
|
||||
CALLBACK_MOUSE_MOVE, e_epplet_mouse_move_cb,
|
||||
epp);
|
||||
|
||||
ebits_set_classed_bit_callback (epp->bits, "Resize_Horizontal",
|
||||
CALLBACK_MOUSE_DOWN, e_epplet_mouse_down_cb,
|
||||
epp);
|
||||
ebits_set_classed_bit_callback (epp->bits, "Resize_Horizontal",
|
||||
CALLBACK_MOUSE_UP, e_epplet_mouse_up_cb,
|
||||
epp);
|
||||
ebits_set_classed_bit_callback (epp->bits, "Resize_Horizontal",
|
||||
CALLBACK_MOUSE_MOVE, e_epplet_mouse_move_cb,
|
||||
epp);
|
||||
|
||||
#endif
|
||||
|
||||
D ("callbacks set\n");
|
||||
*/
|
||||
}
|
||||
|
||||
static void
|
||||
e_epplet_mouse_down_cb(void *_data, Ebits_Object _o,
|
||||
char *_c, int _b, int _x, int _y,
|
||||
int _ox, int _oy, int _ow, int _oh)
|
||||
{
|
||||
E_Epplet *epp;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
#ifdef USE_FERITE
|
||||
epp = _data;
|
||||
|
||||
if (!strcmp(_c, "Title_Bar"))
|
||||
{
|
||||
epp->state.moving = 1;
|
||||
epp->offset.x = _x - epp->current.x;
|
||||
epp->offset.y = _y - epp->current.y;
|
||||
}
|
||||
|
||||
if (!strcmp(_c, "Resize"))
|
||||
{
|
||||
if (_x < epp->current.x + (epp->current.w / 2))
|
||||
{
|
||||
epp->state.resizing.left = 1;
|
||||
epp->offset.x = epp->current.x - _x;
|
||||
}
|
||||
if (_x >= epp->current.x + (epp->current.w / 2))
|
||||
{
|
||||
epp->state.resizing.right = 1;
|
||||
epp->offset.x = epp->current.x + epp->current.w - _x;
|
||||
}
|
||||
if (_y < epp->current.y + (epp->current.h / 2))
|
||||
{
|
||||
epp->state.resizing.up = 1;
|
||||
epp->offset.y = epp->current.y - _y;
|
||||
}
|
||||
if (_y >= epp->current.y + (epp->current.h / 2))
|
||||
{
|
||||
epp->state.resizing.down = 1;
|
||||
epp->offset.y = epp->current.y + epp->current.h - _y;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!strcmp(_c, "Resize_Horizontal"))
|
||||
{
|
||||
if (_x < epp->current.x + (epp->current.w / 2))
|
||||
{
|
||||
epp->state.resizing.left = 1;
|
||||
epp->offset.x = epp->current.x - _x;
|
||||
}
|
||||
else
|
||||
{
|
||||
epp->state.resizing.right = 1;
|
||||
epp->offset.x = epp->current.x + epp->current.w - _x;
|
||||
}
|
||||
}
|
||||
|
||||
if (!strcmp(_c, "Resize_Vertical"))
|
||||
{
|
||||
if (_y < epp->current.y + (epp->current.h / 2))
|
||||
{
|
||||
epp->state.resizing.up = 1;
|
||||
epp->offset.y = epp->current.y - _y;
|
||||
}
|
||||
else
|
||||
{
|
||||
epp->state.resizing.down = 1;
|
||||
epp->offset.y = epp->current.y + epp->current.h - _y;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
static void
|
||||
e_epplet_mouse_up_cb(void *_data, Ebits_Object _o,
|
||||
char *_c, int _b, int _x, int _y,
|
||||
int _ox, int _oy, int _ow, int _oh)
|
||||
{
|
||||
E_Epplet *epp;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
#ifdef USE_FERITE
|
||||
epp = _data;
|
||||
|
||||
if (!strcmp(_c, "Title_Bar"))
|
||||
{
|
||||
epp->state.moving = 0;
|
||||
}
|
||||
|
||||
if (!strncmp(_c, "Resize", 6))
|
||||
{
|
||||
epp->state.resizing.up = 0;
|
||||
epp->state.resizing.down = 0;
|
||||
epp->state.resizing.left = 0;
|
||||
epp->state.resizing.right = 0;
|
||||
}
|
||||
#endif
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
static void
|
||||
e_epplet_mouse_move_cb(void *_data, Ebits_Object _o,
|
||||
char *_c, int _b, int _x, int _y,
|
||||
int _ox, int _oy, int _ow, int _oh)
|
||||
{
|
||||
E_Epplet *epp;
|
||||
double x, y;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
#ifdef USE_FERITE
|
||||
/* epp = _data;
|
||||
|
||||
if (epp->state.moving)
|
||||
{
|
||||
x = _x - epp->offset.x;
|
||||
y = _y - epp->offset.y;
|
||||
if (x < 0)
|
||||
x = 0;
|
||||
if (y < 0)
|
||||
y = 0;
|
||||
if (x > epp->view->size.w - epp->current.w)
|
||||
x = epp->view->size.w - epp->current.w;
|
||||
if (y > epp->view->size.h - epp->current.h)
|
||||
y = epp->view->size.h - epp->current.h;
|
||||
epp->current.x = x;
|
||||
epp->current.y = y;
|
||||
|
||||
ebits_move (epp->ui, epp->current.x, epp->current.y);
|
||||
}
|
||||
|
||||
if (epp->state.resizing.left || epp->state.resizing.right
|
||||
|| epp->state.resizing.up || epp->state.resizing.down)
|
||||
{
|
||||
int w, h, x, y;
|
||||
int mw, mh;
|
||||
|
||||
if (epp->state.resizing.left)
|
||||
{
|
||||
w = epp->current.x + epp->current.w - _x - epp->offset.x;
|
||||
x = _x + epp->offset.x;
|
||||
}
|
||||
else if (epp->state.resizing.right)
|
||||
{
|
||||
w = _x - epp->current.x + epp->offset.x;
|
||||
x = epp->current.x;
|
||||
}
|
||||
else
|
||||
{
|
||||
w = epp->current.w;
|
||||
x = epp->current.x;
|
||||
}
|
||||
|
||||
if (epp->state.resizing.up)
|
||||
{
|
||||
h = epp->current.h + epp->current.y - _y - epp->offset.y;
|
||||
y = _y + epp->offset.y;
|
||||
}
|
||||
|
||||
else if (epp->state.resizing.down)
|
||||
{
|
||||
h = _y - epp->current.y + epp->offset.y;
|
||||
y = epp->current.y;
|
||||
}
|
||||
else
|
||||
{
|
||||
h = epp->current.h;
|
||||
y = epp->current.y;
|
||||
}
|
||||
|
||||
ebits_get_max_size (epp->bits, &mw, &mh);
|
||||
if (w >= mw)
|
||||
{
|
||||
w = mw;
|
||||
x = epp->current.x;
|
||||
}
|
||||
if (h >= mh)
|
||||
{
|
||||
h = mh;
|
||||
y = epp->current.y;
|
||||
}
|
||||
|
||||
ebits_get_min_size (epp->bits, &mw, &mh);
|
||||
if (w < mw)
|
||||
{
|
||||
w = mw;
|
||||
x = epp->current.x;
|
||||
}
|
||||
if (h < mh)
|
||||
{
|
||||
h = mh;
|
||||
y = epp->current.y;
|
||||
}
|
||||
|
||||
epp->current.x = x;
|
||||
epp->current.y = y;
|
||||
epp->current.w = w;
|
||||
epp->current.h = h;
|
||||
|
||||
ebits_resize (epp->bits, epp->current.w, epp->current.h);
|
||||
ebits_move (epp->bits, epp->current.x, epp->current.y);
|
||||
|
||||
}
|
||||
*/
|
||||
#endif
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
E_Epplet_CB_Info *
|
||||
e_epplet_cb_new(FeriteScript * script, char *func_name, FeriteObject * data,
|
||||
FeriteObject * data2)
|
||||
{
|
||||
E_Epplet_CB_Info *cb;
|
||||
FeriteNamespaceBucket *nsb;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
#ifdef USE_FERITE
|
||||
cb = NEW(E_Epplet_CB_Info, 1);
|
||||
ZERO(cb, E_Epplet_CB_Info, 1);
|
||||
|
||||
nsb = __ferite_find_namespace(script, script->mainns, func_name, FENS_FNC);
|
||||
if (nsb != NULL)
|
||||
{
|
||||
cb->func = nsb->data;
|
||||
if (data)
|
||||
{
|
||||
cb->data = data;
|
||||
data->refcount++;
|
||||
}
|
||||
if (data2)
|
||||
{
|
||||
cb->data2 = data2;
|
||||
data2->refcount++;
|
||||
}
|
||||
cb->script = script;
|
||||
}
|
||||
#endif
|
||||
|
||||
D_RETURN_(cb);
|
||||
}
|
||||
|
||||
void
|
||||
e_epplet_cb_cleanup(E_Epplet_CB_Info * cb)
|
||||
{
|
||||
#ifdef USE_FERITE
|
||||
if (cb->data)
|
||||
{
|
||||
cb->data->refcount--;
|
||||
cb->data = NULL;
|
||||
}
|
||||
if (cb->data2)
|
||||
{
|
||||
cb->data2->refcount--;
|
||||
cb->data2 = NULL;
|
||||
}
|
||||
FREE(cb);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
e_epplet_bits_cb(void *_data, Ebits_Object _o,
|
||||
char *_c, int _b, int _x, int _y,
|
||||
int _ox, int _oy, int _ow, int _oh)
|
||||
{
|
||||
E_Epplet_CB_Info *cb;
|
||||
FeriteVariable **params;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
#ifdef USE_FERITE
|
||||
cb = _data;
|
||||
|
||||
if (cb->script)
|
||||
{
|
||||
D("creating params and calling func\n");
|
||||
params =
|
||||
__ferite_create_parameter_list_from_data(cb->script, "osnnnnnnn",
|
||||
cb->data, _c, _b, _x, _y,
|
||||
_ox, _oy, _ow, _oh);
|
||||
__ferite_variable_destroy(cb->script,
|
||||
__ferite_call_function(cb->script, cb->func,
|
||||
params));
|
||||
__ferite_delete_parameter_list(cb->script, params);
|
||||
D("func called, params deleted\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
D("ERROR: script does not exist\n");
|
||||
}
|
||||
/* e_epplet_cb_cleanup(cb); */
|
||||
#endif
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
void
|
||||
e_epplet_evas_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
||||
{
|
||||
E_Epplet_CB_Info *cb;
|
||||
FeriteVariable **params;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
#ifdef USE_FERITE
|
||||
cb = _data;
|
||||
|
||||
D("d1: %s, d2: %s\n", cb->data->name, cb->data2->name);
|
||||
|
||||
if (cb->script)
|
||||
{
|
||||
D("creating params\n");
|
||||
params = __ferite_create_parameter_list_from_data(cb->script, "oonnn",
|
||||
cb->data, cb->data2,
|
||||
(double)_b,
|
||||
(double)_x,
|
||||
(double)_y);
|
||||
D("calling func: %s\n", cb->func->name);
|
||||
__ferite_variable_destroy(cb->script,
|
||||
__ferite_call_function(cb->script, cb->func,
|
||||
params));
|
||||
__ferite_delete_parameter_list(cb->script, params);
|
||||
D("func called, params deleted\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
D("ERROR: script does not exist\n");
|
||||
}
|
||||
/* e_epplet_cb_cleanup(cb); */
|
||||
#endif
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
void
|
||||
e_epplet_timer_func(int val, void *data)
|
||||
{
|
||||
E_Epplet_CB_Info *cb;
|
||||
FeriteVariable **params;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
#ifdef USE_FERITE
|
||||
/* D("in timer func\n"); */
|
||||
cb = data;
|
||||
|
||||
if (cb->script)
|
||||
{
|
||||
/* D("creating params\n"); */
|
||||
params = __ferite_create_parameter_list_from_data(cb->script, "on",
|
||||
cb->data, (float)val);
|
||||
/* D("calling func\n"); */
|
||||
__ferite_variable_destroy(cb->script,
|
||||
__ferite_call_function(cb->script, cb->func,
|
||||
params));
|
||||
__ferite_delete_parameter_list(cb->script, params);
|
||||
/* D("func called, params deleted\n"); */
|
||||
}
|
||||
else
|
||||
{
|
||||
D("ERROR: script does not exist\n");
|
||||
}
|
||||
|
||||
/* e_epplet_cb_cleanup(cb); */
|
||||
#endif
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
E_Epplet_Observer *
|
||||
e_epplet_observer_new(FeriteScript * script, char *func_name,
|
||||
FeriteObject * data, char *event_type)
|
||||
{
|
||||
E_Epplet_Observer *obs = NULL;
|
||||
FeriteNamespaceBucket *nsb;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
#ifdef USE_FERITE
|
||||
obs = NEW(E_Epplet_Observer, 1);
|
||||
memset(obs, 0, sizeof(E_Epplet_Observer));
|
||||
|
||||
if (!strcmp(event_type, "DESKTOP_SWITCH"))
|
||||
e_observer_init(E_OBSERVER(obs), E_EVENT_DESKTOP_SWITCH,
|
||||
e_epplet_desktop_observer_func,
|
||||
(E_Cleanup_Func) e_epplet_observer_cleanup);
|
||||
#if 0
|
||||
else if (!strcmp(event_type, "ICONIFY"))
|
||||
e_observer_init(E_OBSERVER(obs), E_EVENT_BORDER_ICONIFY,
|
||||
e_epplet_border_observer_func,
|
||||
(E_Cleanup_Func) e_epplet_observer_cleanup);
|
||||
else if (!strcmp(event_type, "UNICONIFY"))
|
||||
e_observer_init(E_OBSERVER(obs), E_EVENT_BORDER_UNICONIFY,
|
||||
e_epplet_border_observer_func,
|
||||
(E_Cleanup_Func) e_epplet_observer_cleanup);
|
||||
else
|
||||
e_observer_init(E_OBSERVER(obs), E_EVENT_MAX,
|
||||
e_epplet_desktop_observer_func,
|
||||
(E_Cleanup_Func) e_epplet_observer_cleanup);
|
||||
#endif
|
||||
|
||||
nsb = __ferite_find_namespace(script, script->mainns, func_name, FENS_FNC);
|
||||
if (nsb != NULL)
|
||||
{
|
||||
obs->script = script;
|
||||
obs->func = nsb->data;
|
||||
if (data)
|
||||
{
|
||||
((E_Epplet_Observer *) obs)->data = data;
|
||||
data->refcount++;
|
||||
}
|
||||
}
|
||||
D("returning, event: %i\n", E_OBSERVER(obs)->event);
|
||||
#endif
|
||||
D_RETURN_(obs);
|
||||
}
|
||||
|
||||
static void
|
||||
e_epplet_observer_cleanup(E_Object * o)
|
||||
{
|
||||
#ifdef USE_FERITE
|
||||
/*FIXME: we need something here!!! Leeeeaky! */
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
e_epplet_observer_register_desktops(E_Epplet_Observer * obs)
|
||||
{
|
||||
Evas_List l;
|
||||
|
||||
D_ENTER;
|
||||
#ifdef USE_FERITE
|
||||
D("odeskregister, bserver func: %s\n", obs->func->name);
|
||||
D("register each desktop in list\n");
|
||||
for (l = e_desktops_get_desktops_list(); l; l = l->next)
|
||||
{
|
||||
E_Desktop *d = l->data;
|
||||
|
||||
D("registering desktop...\n")
|
||||
e_observer_register_observee(E_OBSERVER(obs), E_OBSERVEE(d));
|
||||
D("desktop registered\n")}
|
||||
#endif
|
||||
D_RETURN;
|
||||
}
|
||||
#if 0
|
||||
void
|
||||
e_epplet_observer_register_borders(E_Epplet_Observer * obs)
|
||||
{
|
||||
Evas_List l;
|
||||
|
||||
D_ENTER;
|
||||
#ifdef USE_FERITE
|
||||
for (l = e_border_get_borders_list(); l; l = l->next)
|
||||
{
|
||||
E_Border *b = l->data;
|
||||
|
||||
D("registering desktop...\n")
|
||||
e_observer_register_observee(E_OBSERVER(obs), E_OBSERVEE(b));
|
||||
D("desktop registered\n")}
|
||||
#endif
|
||||
D_RETURN;
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
e_epplet_desktop_observer_func(E_Observer * observer, E_Observee * observee,
|
||||
E_Event_Type event)
|
||||
{
|
||||
E_Epplet_Observer *obs;
|
||||
E_Desktop *desk;
|
||||
FeriteVariable **params;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
#ifdef USE_FERITE
|
||||
obs = (E_Epplet_Observer *) observer;
|
||||
desk = (E_Desktop *) observee;
|
||||
|
||||
D("desktop: %i\n", desk->desk.desk);
|
||||
D("current: %i\n", e_desktops_get_current());
|
||||
if (obs->script)
|
||||
{
|
||||
D("creating params\n");
|
||||
|
||||
params = __ferite_create_parameter_list_from_data(obs->script, "on",
|
||||
obs->data,
|
||||
(float)(desk->desk.
|
||||
desk));
|
||||
D("calling func: %s\n", obs->func->name);
|
||||
__ferite_variable_destroy(obs->script,
|
||||
__ferite_call_function(obs->script, obs->func,
|
||||
params));
|
||||
D("function called\n");
|
||||
__ferite_delete_parameter_list(obs->script, params);
|
||||
D("func called, params deleted\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
D("ERROR: script does not exist\n");
|
||||
}
|
||||
#endif
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
#if 0 /* don't use this, its currently broken */
|
||||
void
|
||||
e_epplet_border_observer_func(E_Observer * observer, E_Observee * observee)
|
||||
{
|
||||
E_Epplet_Observer *obs;
|
||||
E_Border *b;
|
||||
FeriteVariable **params;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
#ifdef USE_FERITE
|
||||
obs = (E_Epplet_Observer *) observer;
|
||||
b = (E_Border *) observee;
|
||||
|
||||
obs->data->odata = b;
|
||||
|
||||
if (obs->script)
|
||||
{
|
||||
/*D("creating params\n"); */
|
||||
|
||||
params = __ferite_create_parameter_list_from_data(obs->script, "o",
|
||||
obs->data);
|
||||
/*D("calling func: %s\n", obs->func->name); */
|
||||
__ferite_variable_destroy(obs->script,
|
||||
__ferite_call_function(obs->script, obs->func,
|
||||
params));
|
||||
/*D("function called\n"); */
|
||||
__ferite_delete_parameter_list(obs->script, params);
|
||||
/*D("func called, params deleted\n"); */
|
||||
}
|
||||
else
|
||||
{
|
||||
D("ERROR: script does not exist\n");
|
||||
}
|
||||
#endif
|
||||
D_RETURN;
|
||||
}
|
||||
#endif
|
123
src/epplet.h
123
src/epplet.h
|
@ -1,123 +0,0 @@
|
|||
#ifndef E_EPPLET_H
|
||||
#define E_EPPLET_H
|
||||
|
||||
#include "e.h"
|
||||
#include "view.h"
|
||||
#include "observer.h"
|
||||
#include "e_ferite.h"
|
||||
|
||||
typedef struct _E_Epplet E_Epplet;
|
||||
typedef struct _E_Epplet_Context E_Epplet_Context;
|
||||
typedef struct _E_Epplet_CB_Info E_Epplet_CB_Info;
|
||||
typedef struct _Evas_Object_Wrapper Evas_Object_Wrapper;
|
||||
typedef struct _E_Epplet_Observer E_Epplet_Observer;
|
||||
|
||||
struct _E_Epplet_Observer
|
||||
{
|
||||
E_Observer o;
|
||||
|
||||
FeriteScript *script;
|
||||
FeriteFunction *func;
|
||||
FeriteObject *data;
|
||||
};
|
||||
|
||||
struct _E_Epplet_CB_Info
|
||||
{
|
||||
FeriteScript *script;
|
||||
FeriteFunction *func;
|
||||
FeriteObject *data;
|
||||
FeriteObject *data2;
|
||||
};
|
||||
|
||||
struct _E_Epplet_Context
|
||||
{
|
||||
char *name;
|
||||
E_View *view;
|
||||
FeriteScript *script;
|
||||
|
||||
E_Epplet *epp;
|
||||
|
||||
struct
|
||||
{
|
||||
double x, y;
|
||||
double w, h;
|
||||
}
|
||||
geom;
|
||||
};
|
||||
|
||||
struct _E_Epplet
|
||||
{
|
||||
E_Object o;
|
||||
|
||||
E_Epplet_Context *context;
|
||||
|
||||
char *name;
|
||||
E_View *view;
|
||||
char *dir;
|
||||
Ebits_Object layout;
|
||||
Ebits_Object ui;
|
||||
|
||||
struct
|
||||
{
|
||||
double x, y;
|
||||
double w, h;
|
||||
}
|
||||
current , requested, offset;
|
||||
|
||||
struct
|
||||
{
|
||||
int changed;
|
||||
int moving;
|
||||
struct
|
||||
{
|
||||
int up, down, left, right;
|
||||
}
|
||||
resizing;
|
||||
}
|
||||
state;
|
||||
|
||||
Evas_List evas_objects;
|
||||
Evas_List ebits;
|
||||
};
|
||||
|
||||
struct _Evas_Object_Wrapper
|
||||
{
|
||||
Evas evas;
|
||||
Evas_Object obj;
|
||||
E_Epplet *epp;
|
||||
};
|
||||
|
||||
/* epplet loading / cleanup */
|
||||
E_Epplet *e_epplet_new();
|
||||
void e_epplet_load_from_layout(E_View * v);
|
||||
void e_epplet_script_load(E_Epplet_Context * v,
|
||||
char *script_path);
|
||||
E_Epplet_Context *e_epplet_get_context_from_script(FeriteScript * script);
|
||||
|
||||
/* probably won't use this... */
|
||||
void e_epplet_set_common_callbacks(E_Epplet * epp);
|
||||
|
||||
/* callbacks */
|
||||
E_Epplet_CB_Info *e_epplet_cb_new(FeriteScript * script, char *func_name,
|
||||
FeriteObject * data, FeriteObject * data2);
|
||||
void e_epplet_cb_cleanup(E_Epplet_CB_Info * cb);
|
||||
void e_epplet_bits_cb(void *_data, Ebits_Object _o, char *_c,
|
||||
int _b, int _x, int _y, int _ox, int _oy,
|
||||
int _ow, int _oh);
|
||||
void e_epplet_evas_cb(void *_data, Evas _e, Evas_Object _o,
|
||||
int _b, int _x, int _y);
|
||||
/* timers */
|
||||
void e_epplet_timer_func(int val, void *data);
|
||||
|
||||
/* Observers */
|
||||
E_Epplet_Observer *e_epplet_observer_new(FeriteScript * script,
|
||||
char *func_name, FeriteObject * data,
|
||||
char *event_type);
|
||||
void e_epplet_observer_register_desktops(E_Epplet_Observer *
|
||||
obs);
|
||||
void e_epplet_desktop_observer_func(E_Observer * observer,
|
||||
E_Observee * observee,
|
||||
E_Event_Type event);
|
||||
/*void e_epplet_border_observer_func(E_Observer *observer, E_Observee *observee);*/
|
||||
|
||||
#endif
|
|
@ -15,7 +15,7 @@ struct _e_hack_found_cb
|
|||
void *func_data;
|
||||
};
|
||||
|
||||
static Evas_List hack_found_cb = NULL;
|
||||
static Evas_List * hack_found_cb = NULL;
|
||||
|
||||
void *
|
||||
e_exec_broadcast_cb_add(void (*func) (Window win, void *_data), void *data)
|
||||
|
@ -42,7 +42,7 @@ e_exec_broadcast_cb_del(void *cbp)
|
|||
void
|
||||
e_exec_broadcast_e_hack_found(Window win)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
for (l = hack_found_cb; l; l = l->next)
|
||||
{
|
||||
|
@ -108,7 +108,7 @@ e_exec_restart(void)
|
|||
exe[0] = 0;
|
||||
for (i = 0; i < e_argc; i++)
|
||||
{
|
||||
strcat(exe, e_argv[i]);
|
||||
strncat(exe, e_argv[i], PATH_MAX);
|
||||
strcat(exe, " ");
|
||||
}
|
||||
execl("/bin/sh", "/bin/sh", "-c", exe, NULL);
|
||||
|
|
|
@ -126,7 +126,7 @@ e_file_get_dir(char *file)
|
|||
|
||||
D_ENTER;
|
||||
|
||||
strcpy(buf, file);
|
||||
STRNCPY(buf, file, PATH_MAX);
|
||||
p = strrchr(buf, '/');
|
||||
if (!p)
|
||||
{
|
||||
|
@ -193,12 +193,12 @@ e_file_readlink(char *link)
|
|||
D_RETURN_(f);
|
||||
}
|
||||
|
||||
Evas_List
|
||||
Evas_List *
|
||||
e_file_ls(char *dir)
|
||||
{
|
||||
DIR *dirp;
|
||||
struct dirent *dp;
|
||||
Evas_List list;
|
||||
Evas_List * list;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -210,7 +210,7 @@ e_file_ls(char *dir)
|
|||
{
|
||||
if ((strcmp(dp->d_name, ".")) && (strcmp(dp->d_name, "..")))
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
char *f;
|
||||
|
||||
/* insertion sort */
|
||||
|
|
|
@ -35,6 +35,6 @@ char *e_file_get_dir(char *path);
|
|||
|
||||
int e_file_can_exec(struct stat *st);
|
||||
char *e_file_readlink(char *link);
|
||||
Evas_List e_file_ls(char *dir);
|
||||
Evas_List * e_file_ls(char *dir);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#include "e.h"
|
||||
#include "util.h"
|
||||
|
||||
static Evas_List focus_list = NULL;
|
||||
static Evas_List * focus_list = NULL;
|
||||
|
||||
void
|
||||
e_focus_set_focus(E_Border * b)
|
||||
|
|
8
src/fs.c
8
src/fs.c
|
@ -4,8 +4,8 @@
|
|||
#include "util.h"
|
||||
|
||||
static EfsdConnection *ec = NULL;
|
||||
static Evas_List fs_handlers = NULL;
|
||||
static Evas_List fs_restart_handlers = NULL;
|
||||
static Evas_List * fs_handlers = NULL;
|
||||
static Evas_List * fs_restart_handlers = NULL;
|
||||
static pid_t efsd_pid = 0;
|
||||
|
||||
static void e_fs_child_handle(Ecore_Event * ev);
|
||||
|
@ -80,7 +80,7 @@ e_fs_fd_handle(int fd)
|
|||
|
||||
if (efsd_next_event(ec, &ev) >= 0)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
for (l = fs_handlers; l; l = l->next)
|
||||
{
|
||||
|
@ -136,7 +136,7 @@ e_fs_restarter(int val, void *data)
|
|||
}
|
||||
if (ec)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
ecore_add_event_fd(efsd_get_connection_fd(ec), e_fs_fd_handle);
|
||||
for (l = fs_restart_handlers; l; l = l->next)
|
||||
|
|
103
src/guides.c
103
src/guides.c
|
@ -4,6 +4,7 @@
|
|||
#include "config.h"
|
||||
#include "embed.h"
|
||||
#include "util.h"
|
||||
#include <Imlib2.h>
|
||||
|
||||
static struct
|
||||
{
|
||||
|
@ -37,10 +38,10 @@ static struct
|
|||
win;
|
||||
struct
|
||||
{
|
||||
Evas evas;
|
||||
Evas * evas;
|
||||
Ebits_Object bg;
|
||||
E_Text *text;
|
||||
Evas_Object icon;
|
||||
Evas_Object * icon;
|
||||
Imlib_Image image;
|
||||
}
|
||||
disp;
|
||||
|
@ -103,19 +104,49 @@ e_guides_update(void)
|
|||
{
|
||||
font_dir = e_config_get("fonts");
|
||||
guides.disp.evas = evas_new();
|
||||
evas_set_output_method(guides.disp.evas, RENDER_METHOD_IMAGE);
|
||||
evas_output_method_set(guides.disp.evas,
|
||||
evas_render_method_lookup("software_x11"));
|
||||
evas_object_font_path_append(guides.disp.evas, font_dir);
|
||||
evas_output_size_set(guides.disp.evas, 1, 1);
|
||||
evas_output_viewport_set(guides.disp.evas, 0, 0, 1, 1);
|
||||
evas_object_font_cache_set(guides.disp.evas, font_cache);
|
||||
evas_object_image_cache_set(guides.disp.evas, image_cache);
|
||||
|
||||
{
|
||||
Evas_Engine_Info_Software_X11 *einfo;
|
||||
XSetWindowAttributes att;
|
||||
/*Window window;*/
|
||||
|
||||
Pixmap pmap, mask;
|
||||
|
||||
pmap = ecore_pixmap_new(guides.win.display, 100, 100, 0);
|
||||
mask = ecore_pixmap_new(guides.win.display, 100, 100, 1);
|
||||
|
||||
einfo = (Evas_Engine_Info_Software_X11 *) evas_engine_info_get(guides.disp.evas);
|
||||
|
||||
/* the following is specific to the engine */
|
||||
einfo->info.display = ecore_display_get();
|
||||
einfo->info.visual = DefaultVisual(einfo->info.display, DefaultScreen(einfo->info.display));
|
||||
einfo->info.colormap = DefaultColormap(einfo->info.display, DefaultScreen(einfo->info.display));
|
||||
|
||||
att.background_pixmap = None;
|
||||
att.colormap = /*colormap*/ DefaultColormap(einfo->info.display, DefaultScreen(einfo->info.display));
|
||||
att.border_pixel = 0;
|
||||
att.event_mask = 0;
|
||||
einfo->info.drawable = pmap;
|
||||
einfo->info.mask = mask;
|
||||
|
||||
einfo->info.depth = DefaultDepth(einfo->info.display, DefaultScreen(einfo->info.display));
|
||||
einfo->info.rotation = 0;
|
||||
einfo->info.debug = 0;
|
||||
evas_engine_info_set(guides.disp.evas, (Evas_Engine_Info *) einfo);
|
||||
|
||||
/* And setup for Imlib2 */
|
||||
imlib_context_set_display(einfo->info.display);
|
||||
imlib_context_set_visual(DefaultVisual(einfo->info.display, DefaultScreen(einfo->info.display)));
|
||||
}
|
||||
|
||||
guides.disp.image = imlib_create_image(1, 1);
|
||||
imlib_context_set_image(guides.disp.image);
|
||||
imlib_image_set_has_alpha(1);
|
||||
imlib_image_clear();
|
||||
|
||||
evas_set_output_image(guides.disp.evas, guides.disp.image);
|
||||
evas_font_add_path(guides.disp.evas, font_dir);
|
||||
evas_set_output_size(guides.disp.evas, 1, 1);
|
||||
evas_set_output_viewport(guides.disp.evas, 0, 0, 1, 1);
|
||||
evas_set_font_cache(guides.disp.evas, font_cache);
|
||||
evas_set_image_cache(guides.disp.evas, image_cache);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -195,19 +226,20 @@ e_guides_update(void)
|
|||
}
|
||||
if ((!guides.current.display.icon) && (guides.disp.icon))
|
||||
{
|
||||
evas_del_object(guides.disp.evas, guides.disp.icon);
|
||||
evas_object_del(guides.disp.icon);
|
||||
guides.disp.icon = NULL;
|
||||
}
|
||||
if ((guides.current.display.icon) && (!guides.disp.icon))
|
||||
{
|
||||
guides.disp.icon =
|
||||
evas_add_image_from_file(guides.disp.evas,
|
||||
guides.current.display.icon);
|
||||
evas_show(guides.disp.evas, guides.disp.icon);
|
||||
evas_object_image_add(guides.disp.evas);
|
||||
evas_object_image_file_set(guides.disp.icon,
|
||||
guides.current.display.icon, NULL);
|
||||
evas_object_show(guides.disp.icon);
|
||||
}
|
||||
if (guides.disp.icon)
|
||||
evas_set_image_file(guides.disp.evas, guides.disp.icon,
|
||||
guides.current.display.icon);
|
||||
evas_object_image_file_set(guides.disp.icon,
|
||||
guides.current.display.icon, NULL);
|
||||
e_text_set_text(guides.disp.text, guides.current.display.text);
|
||||
if (!guides.disp.bg)
|
||||
{
|
||||
|
@ -284,37 +316,18 @@ e_guides_update(void)
|
|||
guides.disp.image = NULL;
|
||||
}
|
||||
|
||||
guides.disp.image = imlib_create_image(dw, dh);
|
||||
imlib_context_set_image(guides.disp.image);
|
||||
imlib_image_set_has_alpha(1);
|
||||
imlib_image_clear();
|
||||
|
||||
evas_set_output_image(guides.disp.evas, guides.disp.image);
|
||||
evas_set_output_size(guides.disp.evas, dw, dh);
|
||||
evas_set_output_viewport(guides.disp.evas, 0, 0, dw, dh);
|
||||
evas_update_rect(guides.disp.evas, 0, 0, dw, dh);
|
||||
evas_output_size_set(guides.disp.evas, dw, dh);
|
||||
evas_output_viewport_set(guides.disp.evas, 0, 0, dw, dh);
|
||||
evas_damage_rectangle_add(guides.disp.evas, 0, 0, dw, dh);
|
||||
evas_render(guides.disp.evas);
|
||||
{
|
||||
Pixmap pmap, mask;
|
||||
Evas_Engine_Info_Software_X11 *einfo;
|
||||
einfo = (Evas_Engine_Info_Software_X11 *) evas_engine_info_get(guides.disp.evas);
|
||||
|
||||
pmap = ecore_pixmap_new(guides.win.display, dw, dh, 0);
|
||||
mask = ecore_pixmap_new(guides.win.display, dw, dh, 1);
|
||||
|
||||
imlib_context_set_image(guides.disp.image);
|
||||
|
||||
imlib_context_set_dither_mask(1);
|
||||
imlib_context_set_dither(1);
|
||||
imlib_context_set_drawable(pmap);
|
||||
imlib_context_set_mask(mask);
|
||||
imlib_context_set_blend(0);
|
||||
imlib_context_set_color_modifier(NULL);
|
||||
|
||||
imlib_render_image_on_drawable(0, 0);
|
||||
ecore_window_set_background_pixmap(guides.win.display, pmap);
|
||||
ecore_window_set_shape_mask(guides.win.display, mask);
|
||||
ecore_window_set_background_pixmap(guides.win.display, einfo->info.drawable);
|
||||
ecore_window_set_shape_mask(guides.win.display, einfo->info.mask);
|
||||
ecore_window_clear(guides.win.display);
|
||||
ecore_pixmap_free(pmap);
|
||||
ecore_pixmap_free(mask);
|
||||
}
|
||||
ecore_window_move(guides.win.display, dx, dy);
|
||||
ecore_window_resize(guides.win.display, dw, dh);
|
||||
|
|
456
src/iconbar.c
456
src/iconbar.c
File diff suppressed because it is too large
Load Diff
|
@ -24,10 +24,10 @@ struct _E_Iconbar
|
|||
{
|
||||
E_Object o;
|
||||
|
||||
E_View *view;
|
||||
Evas_List icons;
|
||||
E_Desktop *desktop;
|
||||
Evas_List *icons;
|
||||
|
||||
Evas_Object clip;
|
||||
Evas_Object *clip;
|
||||
|
||||
int has_been_scrolled;
|
||||
int changed;
|
||||
|
@ -54,7 +54,7 @@ struct _E_Iconbar_Icon
|
|||
|
||||
E_Iconbar *iconbar;
|
||||
|
||||
Evas_Object image;
|
||||
Evas_Object * image;
|
||||
Imlib_Image imlib_image;
|
||||
|
||||
char *image_path;
|
||||
|
@ -63,7 +63,7 @@ struct _E_Iconbar_Icon
|
|||
int hilited;
|
||||
struct
|
||||
{
|
||||
Evas_Object image;
|
||||
Evas_Object * image;
|
||||
char *timer;
|
||||
double start;
|
||||
}
|
||||
|
@ -94,7 +94,7 @@ struct _E_Iconbar_Icon
|
|||
};
|
||||
|
||||
void e_iconbar_init(void);
|
||||
E_Iconbar *e_iconbar_new(E_View * v);
|
||||
E_Iconbar *e_iconbar_new(E_Desktop * d);
|
||||
void e_iconbar_icon_free(E_Iconbar_Icon *);
|
||||
void e_iconbar_realize(E_Iconbar * ib);
|
||||
void e_iconbar_fix(E_Iconbar * ib);
|
||||
|
@ -104,9 +104,8 @@ void e_iconbar_file_delete(E_View * v, char *file);
|
|||
void e_iconbar_file_change(E_View * v, char *file);
|
||||
void e_iconbar_save_out_final(E_Iconbar * ib);
|
||||
E_Rect *e_iconbar_get_resist_rect(E_Iconbar * ib);
|
||||
void e_iconbar_set_view_window_spacing(E_Iconbar * ib);
|
||||
void e_iconbar_icon_move(E_Iconbar_Icon * ic, int x, int y);
|
||||
void e_iconbar_dnd_add_files(E_View * v, E_View * source,
|
||||
void e_iconbar_dnd_add_files(E_Desktop * d, E_View * source,
|
||||
int num_files, char **dnd_files);
|
||||
|
||||
#endif
|
||||
|
|
177
src/icons.c
177
src/icons.c
|
@ -9,23 +9,19 @@
|
|||
#include "e_view_machine.h"
|
||||
#include "globals.h"
|
||||
|
||||
static void e_icon_down_cb(void *_data, Evas _e, Evas_Object _o, int _b,
|
||||
int _x, int _y);
|
||||
static void e_icon_up_cb(void *_data, Evas _e, Evas_Object _o, int _b,
|
||||
int _x, int _y);
|
||||
static void e_icon_in_cb(void *_data, Evas _e, Evas_Object _o, int _b,
|
||||
int _x, int _y);
|
||||
static void e_icon_out_cb(void *_data, Evas _e, Evas_Object _o, int _b,
|
||||
int _x, int _y);
|
||||
static void e_icon_move_cb(void *_data, Evas _e, Evas_Object _o, int _b,
|
||||
int _x, int _y);
|
||||
static void e_icon_down_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info);
|
||||
static void e_icon_up_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info);
|
||||
static void e_icon_in_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info);
|
||||
static void e_icon_out_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info);
|
||||
static void e_icon_move_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info);
|
||||
|
||||
static void
|
||||
e_icon_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
||||
e_icon_down_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info)
|
||||
{
|
||||
E_Icon *ic;
|
||||
Ecore_Event *ev;
|
||||
Ecore_Event_Mouse_Down *e;
|
||||
Evas_Event_Mouse_Down *ev_info = event_info;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -34,11 +30,11 @@ e_icon_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
D_RETURN;
|
||||
e = ev->event;
|
||||
ic = _data;
|
||||
ic->view->select.down.x = _x;
|
||||
ic->view->select.down.y = _y;
|
||||
ic->view->select.down.x = ev_info->output.x;
|
||||
ic->view->select.down.y = ev_info->output.y;
|
||||
ic->state.clicked = 1;
|
||||
e_icon_update_state(ic);
|
||||
if (_b == 1)
|
||||
if (ev_info->button == 1)
|
||||
{
|
||||
if (e->double_click)
|
||||
{
|
||||
|
@ -62,10 +58,10 @@ e_icon_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
}
|
||||
}
|
||||
}
|
||||
else if (_b == 2)
|
||||
else if (ev_info->button == 2)
|
||||
{
|
||||
}
|
||||
else if (_b == 3)
|
||||
else if (ev_info->button == 3)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -75,11 +71,12 @@ e_icon_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
}
|
||||
|
||||
static void
|
||||
e_icon_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
||||
e_icon_up_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info)
|
||||
{
|
||||
E_Icon *ic;
|
||||
Ecore_Event *ev;
|
||||
Ecore_Event_Mouse_Up *e;
|
||||
Evas_Event_Mouse_Up *ev_info = event_info;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -112,7 +109,7 @@ e_icon_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
ecore_window_dnd_finished();
|
||||
D_RETURN;
|
||||
}
|
||||
if (_b == 1)
|
||||
if (ev_info->button == 1)
|
||||
{
|
||||
if (ic->state.just_executed)
|
||||
{
|
||||
|
@ -139,12 +136,10 @@ e_icon_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
D_RETURN;
|
||||
UN(_e);
|
||||
UN(_o);
|
||||
UN(_x);
|
||||
UN(_y);
|
||||
}
|
||||
|
||||
static void
|
||||
e_icon_in_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
||||
e_icon_in_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info)
|
||||
{
|
||||
E_Icon *ic;
|
||||
|
||||
|
@ -156,13 +151,11 @@ e_icon_in_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
D_RETURN;
|
||||
UN(_e);
|
||||
UN(_o);
|
||||
UN(_b);
|
||||
UN(_x);
|
||||
UN(_y);
|
||||
UN(event_info);
|
||||
}
|
||||
|
||||
static void
|
||||
e_icon_out_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
||||
e_icon_out_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info)
|
||||
{
|
||||
E_Icon *ic;
|
||||
|
||||
|
@ -172,16 +165,14 @@ e_icon_out_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
D_RETURN;
|
||||
UN(_e);
|
||||
UN(_o);
|
||||
UN(_b);
|
||||
UN(_x);
|
||||
UN(_y);
|
||||
UN(event_info);
|
||||
}
|
||||
|
||||
static void
|
||||
_paint_selected_icons_onto_drag_window(E_View * v, Imlib_Image im, int wx,
|
||||
int wy)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -201,7 +192,7 @@ _paint_selected_icons_onto_drag_window(E_View * v, Imlib_Image im, int wx,
|
|||
if (!ic->state.selected)
|
||||
continue;
|
||||
|
||||
evas_get_geometry(ic->view->evas, ic->obj.icon, &ix, &iy, NULL, NULL);
|
||||
evas_object_geometry_get(ic->obj.icon, &ix, &iy, NULL, NULL);
|
||||
icx = ix + v->location.x - wx;
|
||||
icy = iy + v->location.y - wy;
|
||||
if (!ic->file->info.icon)
|
||||
|
@ -248,7 +239,7 @@ static void
|
|||
_start_drag(E_View * v, int _x, int _y)
|
||||
{
|
||||
Pixmap pmap, mask;
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
int x, y, xx, yy, rw, rh, downx, downy, wx, wy, ww, wh;
|
||||
int dx, dy;
|
||||
|
||||
|
@ -370,11 +361,12 @@ _start_drag(E_View * v, int _x, int _y)
|
|||
}
|
||||
|
||||
static void
|
||||
e_icon_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
||||
e_icon_move_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info)
|
||||
{
|
||||
E_Icon *ic;
|
||||
Ecore_Event *ev;
|
||||
Ecore_Event_Mouse_Move *e;
|
||||
Evas_Event_Mouse_Move *ev_info = event_info;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -390,14 +382,14 @@ e_icon_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
|
||||
if (!ic->view->drag.started)
|
||||
{
|
||||
_start_drag(ic->view, _x, _y);
|
||||
_start_drag(ic->view, ev_info->cur.output.x, ev_info->cur.output.y);
|
||||
}
|
||||
else if (ic->view->drag.started)
|
||||
{
|
||||
int x, y;
|
||||
|
||||
x = _x - ic->view->drag.offset.x;
|
||||
y = _y - ic->view->drag.offset.y;
|
||||
x = ev_info->cur.output.x - ic->view->drag.offset.x;
|
||||
y = ev_info->cur.output.y - ic->view->drag.offset.y;
|
||||
ic->view->drag.x = x;
|
||||
ic->view->drag.y = y;
|
||||
ic->view->drag.update = 1;
|
||||
|
@ -422,7 +414,6 @@ e_icon_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
D_RETURN;
|
||||
UN(_e);
|
||||
UN(_o);
|
||||
UN(_b);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -435,10 +426,16 @@ e_icon_cleanup(E_Icon * ic)
|
|||
|
||||
if (ic->obj.event1)
|
||||
{
|
||||
evas_del_object(ic->view->evas, ic->obj.event1);
|
||||
evas_del_object(ic->view->evas, ic->obj.event2);
|
||||
evas_object_del(ic->obj.event1);
|
||||
evas_object_del(ic->obj.event2);
|
||||
}
|
||||
|
||||
if (ic->obj.icon)
|
||||
evas_object_del(ic->obj.icon);
|
||||
|
||||
if (ic->obj.text)
|
||||
e_text_free(ic->obj.text);
|
||||
|
||||
if (ic->obj.sel.under.icon)
|
||||
ebits_free(ic->obj.sel.under.icon);
|
||||
if (ic->obj.sel.under.text)
|
||||
|
@ -471,7 +468,7 @@ e_icon_new(void)
|
|||
E_Icon *
|
||||
e_icon_find_by_file(E_View * view, char *file)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -495,42 +492,44 @@ e_icon_show(E_Icon * ic)
|
|||
if (ic->state.visible)
|
||||
D_RETURN;
|
||||
ic->state.visible = 1;
|
||||
|
||||
if (!ic->obj.event1)
|
||||
{
|
||||
ic->obj.event1 = evas_add_rectangle(ic->view->evas);
|
||||
ic->obj.event2 = evas_add_rectangle(ic->view->evas);
|
||||
evas_set_color(ic->view->evas, ic->obj.event1, 0, 0, 0, 0);
|
||||
evas_set_color(ic->view->evas, ic->obj.event2, 0, 0, 0, 0);
|
||||
evas_callback_add(ic->view->evas, ic->obj.event1, CALLBACK_MOUSE_DOWN,
|
||||
ic->obj.event1 = evas_object_rectangle_add(ic->view->evas);
|
||||
ic->obj.event2 = evas_object_rectangle_add(ic->view->evas);
|
||||
evas_object_color_set(ic->obj.event1, 0, 0, 0, 0);
|
||||
evas_object_color_set(ic->obj.event2, 0, 0, 0, 0);
|
||||
evas_object_event_callback_add(ic->obj.event1, EVAS_CALLBACK_MOUSE_DOWN,
|
||||
e_icon_down_cb, ic);
|
||||
evas_callback_add(ic->view->evas, ic->obj.event1, CALLBACK_MOUSE_UP,
|
||||
evas_object_event_callback_add(ic->obj.event1, EVAS_CALLBACK_MOUSE_UP,
|
||||
e_icon_up_cb, ic);
|
||||
evas_callback_add(ic->view->evas, ic->obj.event1, CALLBACK_MOUSE_IN,
|
||||
evas_object_event_callback_add(ic->obj.event1, EVAS_CALLBACK_MOUSE_IN,
|
||||
e_icon_in_cb, ic);
|
||||
evas_callback_add(ic->view->evas, ic->obj.event1, CALLBACK_MOUSE_OUT,
|
||||
evas_object_event_callback_add(ic->obj.event1, EVAS_CALLBACK_MOUSE_OUT,
|
||||
e_icon_out_cb, ic);
|
||||
evas_callback_add(ic->view->evas, ic->obj.event1, CALLBACK_MOUSE_MOVE,
|
||||
evas_object_event_callback_add(ic->obj.event1, EVAS_CALLBACK_MOUSE_MOVE,
|
||||
e_icon_move_cb, ic);
|
||||
evas_callback_add(ic->view->evas, ic->obj.event2, CALLBACK_MOUSE_DOWN,
|
||||
evas_object_event_callback_add(ic->obj.event2, EVAS_CALLBACK_MOUSE_DOWN,
|
||||
e_icon_down_cb, ic);
|
||||
evas_callback_add(ic->view->evas, ic->obj.event2, CALLBACK_MOUSE_UP,
|
||||
evas_object_event_callback_add(ic->obj.event2, EVAS_CALLBACK_MOUSE_UP,
|
||||
e_icon_up_cb, ic);
|
||||
evas_callback_add(ic->view->evas, ic->obj.event2, CALLBACK_MOUSE_IN,
|
||||
evas_object_event_callback_add(ic->obj.event2, EVAS_CALLBACK_MOUSE_IN,
|
||||
e_icon_in_cb, ic);
|
||||
evas_callback_add(ic->view->evas, ic->obj.event2, CALLBACK_MOUSE_OUT,
|
||||
evas_object_event_callback_add(ic->obj.event2, EVAS_CALLBACK_MOUSE_OUT,
|
||||
e_icon_out_cb, ic);
|
||||
evas_callback_add(ic->view->evas, ic->obj.event2, CALLBACK_MOUSE_MOVE,
|
||||
evas_object_event_callback_add(ic->obj.event2, EVAS_CALLBACK_MOUSE_MOVE,
|
||||
e_icon_move_cb, ic);
|
||||
}
|
||||
evas_set_layer(ic->view->evas, ic->obj.icon, 200);
|
||||
e_text_set_layer(ic->obj.text, 200);
|
||||
evas_set_layer(ic->view->evas, ic->obj.event1, 210);
|
||||
evas_set_layer(ic->view->evas, ic->obj.event2, 210);
|
||||
|
||||
evas_show(ic->view->evas, ic->obj.icon);
|
||||
}
|
||||
evas_object_layer_set(ic->obj.icon, 200);
|
||||
e_text_set_layer(ic->obj.text, 200);
|
||||
evas_object_layer_set(ic->obj.event1, 210);
|
||||
evas_object_layer_set(ic->obj.event2, 210);
|
||||
|
||||
evas_object_show(ic->obj.icon);
|
||||
e_text_show(ic->obj.text);
|
||||
evas_show(ic->view->evas, ic->obj.event1);
|
||||
evas_show(ic->view->evas, ic->obj.event2);
|
||||
evas_object_show(ic->obj.event1);
|
||||
evas_object_show(ic->obj.event2);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -543,10 +542,10 @@ e_icon_hide(E_Icon * ic)
|
|||
if (!ic->state.visible)
|
||||
D_RETURN;
|
||||
ic->state.visible = 0;
|
||||
evas_hide(ic->view->evas, ic->obj.icon);
|
||||
evas_object_hide(ic->obj.icon);
|
||||
e_text_hide(ic->obj.text);
|
||||
evas_hide(ic->view->evas, ic->obj.event1);
|
||||
evas_hide(ic->view->evas, ic->obj.event2);
|
||||
evas_object_hide(ic->obj.event1);
|
||||
evas_object_hide(ic->obj.event2);
|
||||
|
||||
/* Hide any selection in the view */
|
||||
if (ic->obj.sel.under.icon)
|
||||
|
@ -572,13 +571,13 @@ e_icon_hide_delete_pending(E_Icon * ic)
|
|||
{
|
||||
if (ic->view->drag.drop_mode == E_DND_MOVE)
|
||||
{
|
||||
evas_hide(ic->view->evas, ic->obj.icon);
|
||||
evas_object_hide(ic->obj.icon);
|
||||
ic->state.drag_delete = 1;
|
||||
}
|
||||
else
|
||||
/* copy... */
|
||||
{
|
||||
evas_show(ic->view->evas, ic->obj.icon);
|
||||
evas_object_show(ic->obj.icon);
|
||||
ic->state.drag_delete = 0;
|
||||
}
|
||||
}
|
||||
|
@ -600,7 +599,7 @@ e_icon_show_delete_end(E_Icon * ic, E_dnd_enum dnd_pending_mode)
|
|||
{
|
||||
ic->state.drag_delete = 0;
|
||||
if (dnd_pending_mode == E_DND_COPIED)
|
||||
evas_show(ic->view->evas, ic->obj.icon);
|
||||
evas_object_show(ic->obj.icon);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -623,20 +622,23 @@ e_icon_apply_xy(E_Icon * ic)
|
|||
ic->geom.w = ic->geom.icon.w;
|
||||
ic->geom.h = ic->geom.icon.h + ic->geom.text.h + ic->view->spacing.icon.g;
|
||||
|
||||
evas_resize(ic->view->evas, ic->obj.event1,
|
||||
if(ic->obj.event1)
|
||||
{
|
||||
evas_object_resize(ic->obj.event1,
|
||||
ic->geom.icon.w, ic->geom.icon.h);
|
||||
evas_resize(ic->view->evas, ic->obj.event2,
|
||||
evas_object_resize(ic->obj.event2,
|
||||
ic->geom.text.w, ic->geom.text.h);
|
||||
evas_move(ic->view->evas, ic->obj.event1,
|
||||
evas_object_move(ic->obj.event1,
|
||||
ic->view->scroll.x + ic->geom.x +
|
||||
((ic->geom.w - ic->geom.icon.w) / 2),
|
||||
ic->view->scroll.y + ic->geom.y);
|
||||
evas_move(ic->view->evas, ic->obj.event2,
|
||||
evas_object_move(ic->obj.event2,
|
||||
ic->view->scroll.x + ic->geom.x +
|
||||
((ic->geom.w - ic->geom.text.w) / 2),
|
||||
ic->view->scroll.y + ic->geom.y + ic->geom.icon.h +
|
||||
ic->view->spacing.icon.g);
|
||||
evas_move(ic->view->evas, ic->obj.icon,
|
||||
}
|
||||
evas_object_move(ic->obj.icon,
|
||||
ic->view->scroll.x + ic->geom.x +
|
||||
((ic->geom.w - ic->geom.icon.w) / 2),
|
||||
ic->view->scroll.y + ic->geom.y);
|
||||
|
@ -734,9 +736,9 @@ e_icon_check_permissions(E_Icon * ic)
|
|||
if (!strcmp(ic->file->info.mime.base, "dir"))
|
||||
{
|
||||
if (e_file_can_exec(&ic->file->stat))
|
||||
evas_set_color(ic->view->evas, ic->obj.icon, 255, 255, 255, 255);
|
||||
evas_object_color_set(ic->obj.icon, 255, 255, 255, 255);
|
||||
else
|
||||
evas_set_color(ic->view->evas, ic->obj.icon, 128, 128, 128, 128);
|
||||
evas_object_color_set(ic->obj.icon, 128, 128, 128, 128);
|
||||
}
|
||||
|
||||
D_RETURN;
|
||||
|
@ -752,7 +754,7 @@ e_icon_initial_show(E_Icon * ic)
|
|||
D_RETURN;
|
||||
|
||||
/* first. lets figure out the size of the icon */
|
||||
evas_get_image_size(ic->view->evas, ic->obj.icon,
|
||||
evas_object_image_size_get(ic->obj.icon,
|
||||
&(ic->geom.icon.w), &(ic->geom.icon.h));
|
||||
{
|
||||
double tw, th;
|
||||
|
@ -779,7 +781,7 @@ e_icon_initial_show(E_Icon * ic)
|
|||
void
|
||||
e_icon_update_state(E_Icon * ic)
|
||||
{
|
||||
char icon[PATH_MAX];
|
||||
char icon[PATH_MAX], key[PATH_MAX];
|
||||
int iw, ih;
|
||||
|
||||
D_ENTER;
|
||||
|
@ -791,15 +793,18 @@ e_icon_update_state(E_Icon * ic)
|
|||
}
|
||||
if (ic->state.clicked)
|
||||
{
|
||||
snprintf(icon, PATH_MAX, "%s:/icon/clicked", ic->file->info.icon);
|
||||
snprintf(icon, PATH_MAX, "%s", ic->file->info.icon);
|
||||
strcpy(key, "/icon/clicked");
|
||||
}
|
||||
else if (ic->state.selected)
|
||||
{
|
||||
snprintf(icon, PATH_MAX, "%s:/icon/selected", ic->file->info.icon);
|
||||
snprintf(icon, PATH_MAX, "%s", ic->file->info.icon);
|
||||
strcpy(key, "/icon/selected");
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(icon, PATH_MAX, "%s:/icon/normal", ic->file->info.icon);
|
||||
snprintf(icon, PATH_MAX, "%s", ic->file->info.icon);
|
||||
strcpy(key, "/icon/normal");
|
||||
}
|
||||
if ((ic->state.selected) &&
|
||||
(!ic->obj.sel.under.icon) && (!ic->obj.sel.over.icon))
|
||||
|
@ -856,8 +861,18 @@ e_icon_update_state(E_Icon * ic)
|
|||
/* This relies on the obj.icon having been allocated in view_file_add.
|
||||
* Maybe it would be better to allocate here, the first
|
||||
* time the icon is set? -- till */
|
||||
evas_set_image_file(ic->view->evas, ic->obj.icon, icon);
|
||||
evas_get_image_size(ic->view->evas, ic->obj.icon, &iw, &ih);
|
||||
evas_object_image_file_set(ic->obj.icon, icon, key);
|
||||
evas_object_image_size_get(ic->obj.icon, &iw, &ih);
|
||||
/* kjb cep */
|
||||
/* evas_object_image_size_set(ic->obj.icon, 30, 30);
|
||||
*/
|
||||
/* Hmm, this shouldn't be needed, should it? */
|
||||
|
||||
evas_object_resize(ic->obj.icon,
|
||||
iw, ih);
|
||||
evas_object_image_fill_set(ic->obj.icon,
|
||||
0, 0, iw, ih);
|
||||
|
||||
e_icon_check_permissions(ic);
|
||||
e_icon_apply_xy(ic);
|
||||
ic->view->changed = 1;
|
||||
|
|
|
@ -24,9 +24,9 @@ struct _E_Icon
|
|||
|
||||
struct
|
||||
{
|
||||
Evas_Object icon;
|
||||
Evas_Object event1;
|
||||
Evas_Object event2;
|
||||
Evas_Object * icon;
|
||||
Evas_Object * event1;
|
||||
Evas_Object * event2;
|
||||
E_Text *text;
|
||||
struct
|
||||
{
|
||||
|
|
43
src/main.c
43
src/main.c
|
@ -17,21 +17,30 @@
|
|||
#include "util.h"
|
||||
#include "e_view_machine.h"
|
||||
|
||||
#ifdef USE_FERITE
|
||||
# include "e_ferite.h"
|
||||
#endif
|
||||
|
||||
#include <time.h>
|
||||
#include <X11/Xproto.h>
|
||||
|
||||
#ifdef E_PROF
|
||||
Evas_List __e_profiles = NULL;
|
||||
Evas_List * __e_profiles = NULL;
|
||||
#endif
|
||||
|
||||
static void cb_exit(void);
|
||||
static void wm_running_error(Display * d, XErrorEvent * ev);
|
||||
static void setup(void);
|
||||
|
||||
static void ecore_idle(void *data);
|
||||
|
||||
static void
|
||||
ecore_idle(void *data)
|
||||
{
|
||||
D_ENTER;
|
||||
/* FIXME -- Raster, how is this related to the desktop code? */
|
||||
|
||||
e_db_runtime_flush();
|
||||
D_RETURN;
|
||||
UN(data);
|
||||
}
|
||||
|
||||
static void
|
||||
cb_exit(void)
|
||||
{
|
||||
|
@ -86,8 +95,6 @@ main(int argc, char **argv)
|
|||
atexit(cb_exit);
|
||||
e_exec_set_args(argc, argv);
|
||||
|
||||
e_config_init();
|
||||
|
||||
/* Check command line options here: */
|
||||
for (i = 1; i < argc; i++)
|
||||
{
|
||||
|
@ -133,39 +140,35 @@ main(int argc, char **argv)
|
|||
ecore_grab();
|
||||
ecore_sync();
|
||||
ecore_set_error_handler(wm_running_error);
|
||||
ecore_window_set_events(0, XEV_CHILD_REDIRECT | XEV_PROPERTY | XEV_COLORMAP);
|
||||
ecore_window_set_events(0, XEV_CHILD_REDIRECT | XEV_PROPERTY | XEV_COLORMAP |
|
||||
XEV_FOCUS | XEV_KEY | XEV_MOUSE_MOVE | XEV_BUTTON |
|
||||
XEV_IN_OUT);
|
||||
ecore_sync();
|
||||
ecore_reset_error_handler();
|
||||
ecore_ungrab();
|
||||
|
||||
/* Initialization for the various modules: */
|
||||
|
||||
e_view_machine_init();
|
||||
e_config_init();
|
||||
e_keys_init();
|
||||
e_fs_init();
|
||||
e_desktops_init();
|
||||
e_border_init();
|
||||
e_desktops_init();
|
||||
e_action_init();
|
||||
e_menu_init();
|
||||
e_view_machine_init();
|
||||
e_entry_init();
|
||||
e_keys_init();
|
||||
e_guides_init();
|
||||
e_place_init();
|
||||
e_cursors_init();
|
||||
e_iconbar_init();
|
||||
|
||||
#ifdef USE_FERITE
|
||||
e_ferite_init();
|
||||
#endif
|
||||
|
||||
e_desktops_init_file_display(e_desktops_get(0));
|
||||
ecore_event_filter_idle_handler_add(ecore_idle, NULL);
|
||||
e_desktops_show(e_desktops_get(0));
|
||||
|
||||
setup();
|
||||
|
||||
ecore_event_loop();
|
||||
|
||||
#ifdef USE_FERITE
|
||||
e_ferite_deinit();
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
197
src/menu.c
197
src/menu.c
|
@ -4,8 +4,8 @@
|
|||
#include "util.h"
|
||||
#include "math.h"
|
||||
|
||||
static Evas_List open_menus = NULL; /* List of all open menus */
|
||||
static Evas_List menus = NULL;
|
||||
static Evas_List * open_menus = NULL; /* List of all open menus */
|
||||
static Evas_List * menus = NULL;
|
||||
static E_Menu_Item *curr_selected_item = NULL; /* Currently selected item */
|
||||
static Window menu_event_win = 0; /* Window which originated event */
|
||||
static int screen_w, screen_h; /* Screen width and height */
|
||||
|
@ -28,22 +28,17 @@ static void e_menu_item_unselect(E_Menu_Item * mi);
|
|||
static void
|
||||
e_scroller_timer(int val, void *data)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
int ok = 0;
|
||||
int resist = 5;
|
||||
int scroll_speed = 12;
|
||||
static double last_time = 0.0;
|
||||
double t;
|
||||
|
||||
/* these two lines... */
|
||||
E_CFG_INT(cfg_resist, "settings", "/menu/scroll/resist", 5);
|
||||
E_CFG_INT(cfg_scroll_speed, "settings", "/menu/scroll/speed", 12);
|
||||
|
||||
D_ENTER;
|
||||
|
||||
/* and these 2 should do exactly what tom wants - see e.h */
|
||||
E_CONFIG_INT_GET(cfg_resist, resist);
|
||||
E_CONFIG_INT_GET(cfg_scroll_speed, scroll_speed);
|
||||
resist = config_data->menu->resist;
|
||||
scroll_speed = config_data->menu->speed;
|
||||
|
||||
t = ecore_get_time();
|
||||
if (val != 0)
|
||||
|
@ -142,7 +137,7 @@ e_scroller_timer(int val, void *data)
|
|||
static void
|
||||
e_idle(void *data)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -240,7 +235,7 @@ e_key_down(Ecore_Event * ev)
|
|||
ok = 1;
|
||||
else
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
for (l = open_menus; l; l = l->next)
|
||||
{
|
||||
|
@ -256,7 +251,7 @@ e_key_down(Ecore_Event * ev)
|
|||
}
|
||||
if (ok)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
E_Menu *m = NULL;
|
||||
E_Menu_Item *mi = NULL;
|
||||
|
||||
|
@ -386,7 +381,7 @@ e_mouse_up(Ecore_Event * ev)
|
|||
m = open_menus->data;
|
||||
if ((e->time - m->time) > 200)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
for (l = open_menus; l; l = l->next)
|
||||
{
|
||||
|
@ -398,7 +393,7 @@ e_mouse_up(Ecore_Event * ev)
|
|||
/* Get the dimensions of the selection for use in
|
||||
* the test */
|
||||
double s_x, s_y, s_w, s_h;
|
||||
evas_get_geometry(m->evas, m->selected->obj_entry,
|
||||
evas_object_geometry_get(m->selected->obj_entry,
|
||||
&s_x, &s_y, &s_w, &s_h);
|
||||
if (INTERSECTS(m->current.x + rint(s_x),
|
||||
m->current.y + rint(s_y),
|
||||
|
@ -443,7 +438,7 @@ e_mouse_move(Ecore_Event * ev)
|
|||
keyboard_nav = 0;
|
||||
if (e->win == menu_event_win)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
mouse_x = e->rx;
|
||||
mouse_y = e->ry;
|
||||
|
@ -452,13 +447,17 @@ e_mouse_move(Ecore_Event * ev)
|
|||
E_Menu *m;
|
||||
|
||||
m = l->data;
|
||||
evas_event_move(m->evas,
|
||||
/* checkme
|
||||
evas_event_move(m->evas,
|
||||
e->rx - m->current.x, e->ry - m->current.y);
|
||||
*/
|
||||
evas_event_feed_mouse_move(m->evas,
|
||||
e->rx - m->current.x, e->ry - m->current.y);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
mouse_x = e->rx;
|
||||
mouse_y = e->ry;
|
||||
|
@ -468,8 +467,12 @@ e_mouse_move(Ecore_Event * ev)
|
|||
|
||||
m = l->data;
|
||||
|
||||
/* checkme
|
||||
evas_event_move(m->evas,
|
||||
e->rx - m->current.x, e->ry - m->current.y);
|
||||
*/
|
||||
evas_event_feed_mouse_move(m->evas,
|
||||
e->rx - m->current.x, e->ry - m->current.y);
|
||||
}
|
||||
}
|
||||
e_scroller_timer(0, NULL);
|
||||
|
@ -517,7 +520,7 @@ e_mouse_out(Ecore_Event * ev)
|
|||
}
|
||||
else
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
for (l = open_menus; l; l = l->next)
|
||||
{
|
||||
|
@ -526,7 +529,7 @@ e_mouse_out(Ecore_Event * ev)
|
|||
m = l->data;
|
||||
if ((e->win == m->win.main) || (e->win == m->win.evas))
|
||||
{
|
||||
evas_event_move(m->evas, -99999999, -99999999);
|
||||
evas_event_feed_mouse_move(m->evas, -99999999, -99999999);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -548,7 +551,7 @@ e_window_expose(Ecore_Event * ev)
|
|||
|
||||
e = ev->event;
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
for (l = open_menus; l; l = l->next)
|
||||
{
|
||||
|
@ -558,9 +561,14 @@ e_window_expose(Ecore_Event * ev)
|
|||
if (e->win == m->win.evas)
|
||||
{
|
||||
m->first_expose = 1;
|
||||
/* checkme
|
||||
evas_update_rect(m->evas, e->x, e->y, e->w, e->h);
|
||||
*/
|
||||
evas_damage_rectangle_add(m->evas, e->x, e->y, e->w, e->h);
|
||||
break;
|
||||
}
|
||||
|
||||
e_menu_update_shape(m);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -625,9 +633,10 @@ e_menu_item_select(E_Menu_Item * mi)
|
|||
* @y: ?????
|
||||
*/
|
||||
static void
|
||||
e_menu_item_in_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
||||
e_menu_item_in_cb(void *_data, Evas * _e, Evas_Object * _o, void *ev_info)
|
||||
{
|
||||
E_Menu_Item *mi;
|
||||
Evas_Event_Mouse_In *event_info = ev_info;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -645,9 +654,7 @@ e_menu_item_in_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
D_RETURN;
|
||||
UN(_e);
|
||||
UN(_o);
|
||||
UN(_b);
|
||||
UN(_x);
|
||||
UN(_y);
|
||||
UN(event_info);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -662,9 +669,10 @@ e_menu_item_in_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
* @y: ?????
|
||||
*/
|
||||
static void
|
||||
e_menu_item_out_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
||||
e_menu_item_out_cb(void *_data, Evas * _e, Evas_Object * _o, void *ev_info)
|
||||
{
|
||||
E_Menu_Item *mi;
|
||||
Evas_Event_Mouse_Out *event_info = ev_info;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -674,9 +682,7 @@ e_menu_item_out_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
D_RETURN;
|
||||
UN(_e);
|
||||
UN(_o);
|
||||
UN(_b);
|
||||
UN(_x);
|
||||
UN(_y);
|
||||
UN(event_info);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -721,7 +727,7 @@ e_menu_item_set_callback(E_Menu_Item * mi,
|
|||
void
|
||||
e_menu_hide_submenus(E_Menu * menus_after)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -756,7 +762,7 @@ e_menu_hide_submenus(E_Menu * menus_after)
|
|||
void
|
||||
e_menu_select(int dx, int dy)
|
||||
{
|
||||
Evas_List l, ll;
|
||||
Evas_List *l, *ll;
|
||||
int done = 0;
|
||||
|
||||
D_ENTER;
|
||||
|
@ -852,7 +858,7 @@ e_menu_select(int dx, int dy)
|
|||
/* Moving out of a submenu: */
|
||||
if (dx < 0)
|
||||
{
|
||||
Evas_List ll;
|
||||
Evas_List * ll;
|
||||
|
||||
mm = l->prev->data;
|
||||
for (ll = mm->entries; (ll) && (!mi); ll = ll->next)
|
||||
|
@ -962,7 +968,7 @@ e_menu_event_win_show(void)
|
|||
ecore_window_raise(menu_event_win);
|
||||
if ((!ecore_grab_window_get()) || (!ecore_keyboard_grab_window_get()))
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
for (l = menus; l; l = l->next)
|
||||
{
|
||||
|
@ -1209,7 +1215,7 @@ e_menu_set_state(E_Menu * m, E_Menu_Item * mi)
|
|||
static void
|
||||
e_menu_cleanup(E_Menu * m)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -1242,9 +1248,6 @@ E_Menu *
|
|||
e_menu_new(void)
|
||||
{
|
||||
E_Menu *m;
|
||||
int max_colors = 216;
|
||||
int font_cache = 1024 * 1024;
|
||||
int image_cache = 8192 * 1024;
|
||||
char *font_dir;
|
||||
|
||||
D_ENTER;
|
||||
|
@ -1257,11 +1260,9 @@ e_menu_new(void)
|
|||
e_object_init(E_OBJECT(m), (E_Cleanup_Func) e_menu_cleanup);
|
||||
|
||||
m->win.main = ecore_window_override_new(0, 0, 0, 1, 1);
|
||||
m->evas = evas_new_all(ecore_display_get(),
|
||||
m->evas = e_evas_new_all(ecore_display_get(),
|
||||
m->win.main,
|
||||
0, 0, 1, 1,
|
||||
RENDER_METHOD_ALPHA_SOFTWARE,
|
||||
max_colors, font_cache, image_cache, font_dir);
|
||||
0, 0, 1, 1, font_dir);
|
||||
/* aaaaaaaaah. this makes building the menu fast - moves the mouse far */
|
||||
/* far far far far away so callbacks and events arent triggerd as we */
|
||||
/* create objects that ofter hang around 0,0 - the default place for */
|
||||
|
@ -1276,9 +1277,9 @@ e_menu_new(void)
|
|||
/* screen - an then re-render it all - but well.. it's an extreme and */
|
||||
/* for now i think people will just have to live with a maximum menu size */
|
||||
/* of 32768x32768... didums! */
|
||||
evas_event_move(m->evas, -999999999, -99999999);
|
||||
evas_event_feed_mouse_move(m->evas, -999999999, -99999999);
|
||||
|
||||
m->win.evas = evas_get_window(m->evas);
|
||||
m->win.evas = e_evas_get_window(m->evas);
|
||||
ecore_window_set_events(m->win.evas,
|
||||
XEV_EXPOSE | XEV_MOUSE_MOVE | XEV_BUTTON | XEV_IN_OUT
|
||||
| XEV_KEY);
|
||||
|
@ -1420,7 +1421,7 @@ e_menu_item_update(E_Menu * m, E_Menu_Item * mi)
|
|||
th = 0;
|
||||
if (mi->obj_text)
|
||||
{
|
||||
evas_get_geometry(m->evas, mi->obj_text, NULL, NULL, &dtw, &dth);
|
||||
evas_object_geometry_get(mi->obj_text, NULL, NULL, &dtw, &dth);
|
||||
tw = (int)dtw;
|
||||
th = (int)dth;
|
||||
}
|
||||
|
@ -1433,7 +1434,7 @@ e_menu_item_update(E_Menu * m, E_Menu_Item * mi)
|
|||
{
|
||||
int sh;
|
||||
|
||||
evas_get_image_size(m->evas, mi->obj_icon, &iw, &ih);
|
||||
evas_object_image_size_get(mi->obj_icon, &iw, &ih);
|
||||
sh = th;
|
||||
if (rh > th)
|
||||
sh = rh;
|
||||
|
@ -1446,10 +1447,10 @@ e_menu_item_update(E_Menu * m, E_Menu_Item * mi)
|
|||
ix = rx + m->size.state + m->pad.state;
|
||||
ix += ((m->size.icon - iw) / 2);
|
||||
iy = ((mi->size.h - ih) / 2);
|
||||
evas_move(m->evas, mi->obj_icon, m->sel_border.l + mi->x + ix,
|
||||
evas_object_move(mi->obj_icon, m->sel_border.l + mi->x + ix,
|
||||
m->sel_border.t + mi->y + iy);
|
||||
evas_resize(m->evas, mi->obj_icon, iw, ih);
|
||||
evas_set_image_fill(m->evas, mi->obj_icon, 0, 0, iw, ih);
|
||||
evas_object_resize(mi->obj_icon, iw, ih);
|
||||
evas_object_image_fill_set(mi->obj_icon, 0, 0, iw, ih);
|
||||
}
|
||||
|
||||
if (mi->obj_text)
|
||||
|
@ -1459,14 +1460,14 @@ e_menu_item_update(E_Menu * m, E_Menu_Item * mi)
|
|||
if (m->size.icon)
|
||||
tx += m->size.icon + m->pad.icon;
|
||||
ty = ((mi->size.h - th) / 2);
|
||||
evas_move(m->evas, mi->obj_text, m->sel_border.l + mi->x + tx,
|
||||
evas_object_move(mi->obj_text, m->sel_border.l + mi->x + tx,
|
||||
m->sel_border.t + mi->y + ty);
|
||||
}
|
||||
|
||||
if (mi->obj_entry)
|
||||
{
|
||||
evas_move(m->evas, mi->obj_entry, mi->x, mi->y);
|
||||
evas_resize(m->evas, mi->obj_entry,
|
||||
evas_object_move(mi->obj_entry, mi->x, mi->y);
|
||||
evas_object_resize(mi->obj_entry,
|
||||
mi->size.w + m->sel_border.l + m->sel_border.r,
|
||||
mi->size.h + m->sel_border.t + m->sel_border.b);
|
||||
}
|
||||
|
@ -1490,13 +1491,13 @@ e_menu_item_unrealize(E_Menu * m, E_Menu_Item * mi)
|
|||
IF_FREE(mi->bg_file);
|
||||
mi->bg_file = NULL;
|
||||
if (mi->obj_entry)
|
||||
evas_del_object(m->evas, mi->obj_entry);
|
||||
evas_object_del(mi->obj_entry);
|
||||
mi->obj_entry = NULL;
|
||||
if (mi->obj_text)
|
||||
evas_del_object(m->evas, mi->obj_text);
|
||||
evas_object_del(mi->obj_text);
|
||||
mi->obj_text = NULL;
|
||||
if (mi->obj_icon)
|
||||
evas_del_object(m->evas, mi->obj_icon);
|
||||
evas_object_del(mi->obj_icon);
|
||||
mi->obj_icon = NULL;
|
||||
if (mi->state)
|
||||
ebits_free(mi->state);
|
||||
|
@ -1510,6 +1511,7 @@ e_menu_item_unrealize(E_Menu * m, E_Menu_Item * mi)
|
|||
mi->sep_file = NULL;
|
||||
|
||||
D_RETURN;
|
||||
UN(m);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1528,29 +1530,32 @@ e_menu_item_realize(E_Menu * m, E_Menu_Item * mi)
|
|||
{
|
||||
if (mi->str)
|
||||
{
|
||||
mi->obj_text = evas_add_text(m->evas, "borzoib", 8, mi->str);
|
||||
evas_set_color(m->evas, mi->obj_text, 0, 0, 0, 255);
|
||||
evas_show(m->evas, mi->obj_text);
|
||||
evas_set_layer(m->evas, mi->obj_text, 10);
|
||||
mi->obj_text = evas_object_text_add(m->evas);
|
||||
evas_object_text_font_set(mi->obj_text, "borzoib", 8);
|
||||
evas_object_text_text_set(mi->obj_text, mi->str);
|
||||
evas_object_color_set(mi->obj_text, 0, 0, 0, 255);
|
||||
evas_object_show(mi->obj_text);
|
||||
evas_object_layer_set(mi->obj_text, 10);
|
||||
}
|
||||
if (mi->icon)
|
||||
{
|
||||
mi->obj_icon = evas_add_image_from_file(m->evas, mi->icon);
|
||||
evas_show(m->evas, mi->obj_icon);
|
||||
evas_set_layer(m->evas, mi->obj_icon, 10);
|
||||
mi->obj_icon = evas_object_image_add(m->evas);
|
||||
evas_object_image_file_set(mi->obj_icon, mi->icon, NULL);
|
||||
evas_object_show(mi->obj_icon);
|
||||
evas_object_layer_set(mi->obj_icon, 10);
|
||||
}
|
||||
mi->obj_entry = evas_add_rectangle(m->evas);
|
||||
evas_set_layer(m->evas, mi->obj_entry, 11);
|
||||
evas_set_color(m->evas, mi->obj_entry, 0, 0, 0, 0);
|
||||
evas_show(m->evas, mi->obj_entry);
|
||||
mi->obj_entry = evas_object_rectangle_add(m->evas);
|
||||
evas_object_layer_set(mi->obj_entry, 11);
|
||||
evas_object_color_set(mi->obj_entry, 0, 0, 0, 0);
|
||||
evas_object_show(mi->obj_entry);
|
||||
tw = 0;
|
||||
th = 0;
|
||||
if (mi->obj_text)
|
||||
evas_get_geometry(m->evas, mi->obj_text, NULL, NULL, &tw, &th);
|
||||
evas_object_geometry_get(mi->obj_text, NULL, NULL, &tw, &th);
|
||||
iw = 0;
|
||||
ih = 0;
|
||||
if (mi->obj_icon)
|
||||
evas_get_image_size(m->evas, mi->obj_icon, &iw, &ih);
|
||||
evas_object_image_size_get(mi->obj_icon, &iw, &ih);
|
||||
rw = 0;
|
||||
rh = 0;
|
||||
if (mi->state)
|
||||
|
@ -1561,9 +1566,10 @@ e_menu_item_realize(E_Menu * m, E_Menu_Item * mi)
|
|||
if (((!mi->scale_icon) && (ih > th)) || ((!mi->str) && (ih > th)))
|
||||
th = (double)ih;
|
||||
mi->size.min.h = (int)th;
|
||||
evas_callback_add(m->evas, mi->obj_entry, CALLBACK_MOUSE_IN,
|
||||
/* checkme todo */
|
||||
evas_object_event_callback_add(mi->obj_entry, EVAS_CALLBACK_MOUSE_IN,
|
||||
e_menu_item_in_cb, mi);
|
||||
evas_callback_add(m->evas, mi->obj_entry, CALLBACK_MOUSE_OUT,
|
||||
evas_object_event_callback_add(mi->obj_entry, EVAS_CALLBACK_MOUSE_OUT,
|
||||
e_menu_item_out_cb, mi);
|
||||
e_menu_set_sel(m, mi);
|
||||
if ((mi->radio) || (mi->check))
|
||||
|
@ -1595,17 +1601,17 @@ e_menu_obscure_outside_screen(E_Menu * m)
|
|||
D_ENTER;
|
||||
|
||||
/* obscure stuff outside the screen boundaries - optimizes rendering */
|
||||
evas_clear_obscured_rects(m->evas);
|
||||
evas_add_obscured_rect(m->evas,
|
||||
evas_obscured_clear(m->evas);
|
||||
evas_obscured_rectangle_add(m->evas,
|
||||
-m->current.x - 100000,
|
||||
-m->current.y - 100000, 200000 + screen_w, 100000);
|
||||
evas_add_obscured_rect(m->evas,
|
||||
evas_obscured_rectangle_add(m->evas,
|
||||
-m->current.x - 100000,
|
||||
-m->current.y - 100000, 100000, 200000 + screen_h);
|
||||
evas_add_obscured_rect(m->evas,
|
||||
evas_obscured_rectangle_add(m->evas,
|
||||
-m->current.x - 100000,
|
||||
screen_h - m->current.y, 200000 + screen_w, 100000);
|
||||
evas_add_obscured_rect(m->evas,
|
||||
evas_obscured_rectangle_add(m->evas,
|
||||
screen_w - m->current.x,
|
||||
-m->current.y - 100000, 100000, 200000 + screen_h);
|
||||
|
||||
|
@ -1615,7 +1621,7 @@ e_menu_obscure_outside_screen(E_Menu * m)
|
|||
void
|
||||
e_menu_scroll_all_by(int dx, int dy)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -1638,7 +1644,7 @@ e_menu_scroll_all_by(int dx, int dy)
|
|||
E_Menu *m;
|
||||
|
||||
m = l->data;
|
||||
evas_event_move(m->evas,
|
||||
evas_event_feed_mouse_move(m->evas,
|
||||
mouse_x - m->current.x, mouse_y - m->current.y);
|
||||
}
|
||||
}
|
||||
|
@ -1696,7 +1702,7 @@ e_menu_update_base(E_Menu * m)
|
|||
|
||||
if (m->recalc_entries)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
int max_w, max_h;
|
||||
int i;
|
||||
|
||||
|
@ -1725,12 +1731,12 @@ e_menu_update_base(E_Menu * m)
|
|||
tw = 0;
|
||||
th = 0;
|
||||
if (mi->obj_text)
|
||||
evas_get_geometry(m->evas, mi->obj_text, NULL, NULL, &tw,
|
||||
evas_object_geometry_get(mi->obj_text, NULL, NULL, &tw,
|
||||
&th);
|
||||
iw = 0;
|
||||
ih = 0;
|
||||
if (mi->obj_icon)
|
||||
evas_get_image_size(m->evas, mi->obj_icon, &iw, &ih);
|
||||
evas_object_image_size_get(mi->obj_icon, &iw, &ih);
|
||||
rw = 0;
|
||||
rh = 0;
|
||||
if (mi->state)
|
||||
|
@ -1791,7 +1797,7 @@ e_menu_update_base(E_Menu * m)
|
|||
}
|
||||
if (m->redo_sel)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
for (l = m->entries; l; l = l->next)
|
||||
{
|
||||
|
@ -1839,12 +1845,14 @@ e_menu_update_base(E_Menu * m)
|
|||
if (size_changed)
|
||||
{
|
||||
ecore_window_resize(m->win.evas, m->current.w, m->current.h);
|
||||
evas_set_output_size(m->evas, m->current.w, m->current.h);
|
||||
evas_set_output_viewport(m->evas, 0, 0, m->current.w, m->current.h);
|
||||
evas_output_size_set(m->evas, m->current.w, m->current.h);
|
||||
evas_output_viewport_set(m->evas, 0, 0, m->current.w, m->current.h);
|
||||
if (m->bg)
|
||||
ebits_resize(m->bg, m->current.w, m->current.h);
|
||||
}
|
||||
|
||||
e_menu_update_shape(m);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
|
@ -1881,6 +1889,8 @@ e_menu_update_shows(E_Menu * m)
|
|||
}
|
||||
}
|
||||
|
||||
e_menu_update_shape(m);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
|
@ -1928,9 +1938,32 @@ e_menu_update_hides(E_Menu * m)
|
|||
}
|
||||
}
|
||||
|
||||
e_menu_update_shape(m);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
void
|
||||
e_menu_update_shape(E_Menu *m)
|
||||
{
|
||||
Pixmap pmap, mask;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
pmap = ecore_pixmap_new(m->win.main, m->current.w, m->current.h, 0);
|
||||
mask = ecore_pixmap_new(m->win.main, m->current.w, m->current.h, 1);
|
||||
|
||||
e_evas_get_mask(m->evas, pmap, mask);
|
||||
ecore_window_set_background_pixmap(m->win.main, pmap);
|
||||
ecore_window_set_shape_mask(m->win.main, mask);
|
||||
ecore_window_clear(m->win.main);
|
||||
|
||||
ecore_pixmap_free(pmap);
|
||||
ecore_pixmap_free(mask);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
void
|
||||
e_menu_update(E_Menu * m)
|
||||
{
|
||||
|
|
13
src/menu.h
13
src/menu.h
|
@ -27,9 +27,9 @@ struct _E_Menu
|
|||
Window main, evas;
|
||||
}
|
||||
win;
|
||||
Evas evas;
|
||||
Ebits_Object bg;
|
||||
Evas_List entries;
|
||||
Evas * evas;
|
||||
Ebits_Object * bg;
|
||||
Evas_List * entries;
|
||||
char *bg_file;
|
||||
|
||||
int first_expose;
|
||||
|
@ -77,13 +77,13 @@ struct _E_Menu_Item
|
|||
char *bg_file;
|
||||
int selected;
|
||||
|
||||
Evas_Object obj_entry;
|
||||
Evas_Object * obj_entry;
|
||||
|
||||
char *str;
|
||||
Evas_Object obj_text;
|
||||
Evas_Object * obj_text;
|
||||
|
||||
char *icon;
|
||||
Evas_Object obj_icon;
|
||||
Evas_Object * obj_icon;
|
||||
int scale_icon;
|
||||
|
||||
Ebits_Object state;
|
||||
|
@ -149,6 +149,7 @@ void e_menu_update_base(E_Menu * m);
|
|||
void e_menu_update_finish(E_Menu * m);
|
||||
void e_menu_update_shows(E_Menu * m);
|
||||
void e_menu_update_hides(E_Menu * m);
|
||||
void e_menu_update_shape(E_Menu *m);
|
||||
void e_menu_update(E_Menu * m);
|
||||
void e_menu_item_set_icon(E_Menu_Item * mi, char *icon);
|
||||
void e_menu_item_set_text(E_Menu_Item * mi, char *text);
|
||||
|
|
|
@ -6,12 +6,9 @@
|
|||
#include "file.h"
|
||||
#include "border.h"
|
||||
#include "observer.h"
|
||||
#include "actions.h"
|
||||
|
||||
#ifdef USE_FERITE
|
||||
# include "e_ferite.h"
|
||||
#endif
|
||||
|
||||
Evas_List build_menus = NULL;
|
||||
Evas_List * build_menus = NULL;
|
||||
|
||||
static void e_build_menu_cb_exec(E_Menu * m, E_Menu_Item * mi,
|
||||
void *data);
|
||||
|
@ -33,7 +30,8 @@ static void e_build_menu_iconified_borders_changed(E_Observer *
|
|||
observer,
|
||||
E_Observee *
|
||||
observee,
|
||||
E_Event_Type event);
|
||||
E_Event_Type event,
|
||||
void *data);
|
||||
|
||||
/* ------------ various callbacks ---------------------- */
|
||||
static void
|
||||
|
@ -73,12 +71,13 @@ e_build_menu_cb_script(E_Menu * m, E_Menu_Item * mi, void *data)
|
|||
|
||||
D_ENTER;
|
||||
|
||||
#ifdef USE_FERITE
|
||||
script = data;
|
||||
e_ferite_run(script);
|
||||
#else
|
||||
D("No cookies for you. You will have to install ferite.\n");
|
||||
#endif
|
||||
|
||||
if(strstr(script, "e.shutdown"))
|
||||
e_act_exit_start(NULL,NULL,NULL,0,0,0,0);
|
||||
|
||||
if(strstr(script, "e.restart"))
|
||||
e_act_restart_start(NULL,NULL,NULL,0,0,0,0);
|
||||
|
||||
D_RETURN;
|
||||
UN(m);
|
||||
|
@ -92,7 +91,7 @@ e_build_menu_cb_script(E_Menu * m, E_Menu_Item * mi, void *data)
|
|||
static void
|
||||
e_build_menu_unbuild(E_Build_Menu * bm)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -282,7 +281,7 @@ static E_Menu *
|
|||
e_build_menu_gnome_apps_build_dir(E_Build_Menu * bm, char *dir)
|
||||
{
|
||||
E_Menu *menu = NULL;
|
||||
Evas_List l, entries = NULL;
|
||||
Evas_List *l, *entries = NULL;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -293,7 +292,7 @@ e_build_menu_gnome_apps_build_dir(E_Build_Menu * bm, char *dir)
|
|||
{
|
||||
FILE *f;
|
||||
char buf[PATH_MAX];
|
||||
Evas_List dirlist = NULL;
|
||||
Evas_List * dirlist = NULL;
|
||||
|
||||
/* read .order file */
|
||||
snprintf(buf, PATH_MAX, "%s/.order", dir);
|
||||
|
@ -324,7 +323,7 @@ e_build_menu_gnome_apps_build_dir(E_Build_Menu * bm, char *dir)
|
|||
/* if it isnt a "dot" file or dir */
|
||||
if (s[0] != '.')
|
||||
{
|
||||
Evas_List ll;
|
||||
Evas_List * ll;
|
||||
int have_it;
|
||||
|
||||
have_it = 0;
|
||||
|
@ -538,7 +537,7 @@ E_Build_Menu *
|
|||
e_build_menu_new_from_iconified_borders()
|
||||
{
|
||||
E_Build_Menu *bm;
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -546,10 +545,12 @@ e_build_menu_new_from_iconified_borders()
|
|||
ZERO(bm, E_Build_Menu, 1);
|
||||
|
||||
/* e_observer_init(E_OBSERVER(bm), E_EVENT_BORDER_ICONIFY | E_EVENT_BORDER_UNICONIFY | E_EVENT_BORDER_NEW, e_build_menu_iconified_borders_changed, (E_Cleanup_Func) e_build_menu_cleanup);*/
|
||||
|
||||
e_observer_init(E_OBSERVER(bm), E_EVENT_BORDER_ALL,
|
||||
e_build_menu_iconified_borders_changed,
|
||||
(E_Notify_Func) e_build_menu_iconified_borders_changed,
|
||||
(E_Cleanup_Func) e_build_menu_cleanup);
|
||||
|
||||
|
||||
for (l = e_border_get_borders_list(); l; l = l->next)
|
||||
{
|
||||
E_Border *b = l->data;
|
||||
|
@ -578,7 +579,7 @@ e_build_menu_iconified_borders_rebuild(E_Build_Menu * bm)
|
|||
static void
|
||||
e_build_menu_iconified_borders_changed(E_Observer * observer,
|
||||
E_Observee * observee,
|
||||
E_Event_Type event)
|
||||
E_Event_Type event, void *data)
|
||||
{
|
||||
E_Build_Menu *bm;
|
||||
|
||||
|
@ -604,13 +605,14 @@ e_build_menu_iconified_borders_changed(E_Observer * observer,
|
|||
bm->changed = 1;
|
||||
}
|
||||
D_RETURN;
|
||||
UN(data);
|
||||
}
|
||||
|
||||
static E_Menu *
|
||||
e_build_menu_iconified_borders_build(E_Build_Menu * bm)
|
||||
{
|
||||
E_Menu *menu = NULL;
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include "e.h"
|
||||
#include "object.h"
|
||||
#include "observer.h"
|
||||
#include "menu.h"
|
||||
|
||||
typedef struct _E_Build_Menu E_Build_Menu;
|
||||
|
||||
|
@ -16,8 +17,8 @@ struct _E_Build_Menu
|
|||
|
||||
E_Menu *menu;
|
||||
|
||||
Evas_List menus;
|
||||
Evas_List commands;
|
||||
Evas_List * menus;
|
||||
Evas_List * commands;
|
||||
|
||||
int changed;
|
||||
};
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#include "debug.h"
|
||||
#include "observer.h"
|
||||
|
||||
static Evas_List observers;
|
||||
static Evas_List * observers;
|
||||
|
||||
void
|
||||
e_observer_init(E_Observer * obs, E_Event_Type event,
|
||||
|
@ -97,18 +97,18 @@ e_observee_init(E_Observee * obs, E_Cleanup_Func cleanup_func)
|
|||
void
|
||||
e_observee_notify_observers(E_Observee * o, E_Event_Type event, void *data)
|
||||
{
|
||||
Evas_List obs_list = NULL;
|
||||
Evas_List * obs_list = NULL;
|
||||
E_Observer *obs = NULL;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
||||
if (!o)
|
||||
D_RETURN;
|
||||
|
||||
for (obs_list = o->observers; obs_list; obs_list = obs_list->next)
|
||||
{
|
||||
obs = E_OBSERVER(obs_list->data);
|
||||
|
||||
|
||||
/* check bit mask */
|
||||
if (obs->event & event)
|
||||
{
|
||||
|
@ -122,7 +122,7 @@ e_observee_notify_observers(E_Observee * o, E_Event_Type event, void *data)
|
|||
void
|
||||
e_observee_notify_all_observers(E_Observee * o, E_Event_Type event, void *data)
|
||||
{
|
||||
Evas_List obs_list = NULL;
|
||||
Evas_List * obs_list = NULL;
|
||||
E_Observer *obs = NULL;
|
||||
|
||||
D_ENTER;
|
||||
|
|
|
@ -18,25 +18,29 @@ typedef enum _e_event_type
|
|||
E_EVENT_BORDER_NEW = 1 << 0,
|
||||
E_EVENT_BORDER_DELETE = 1 << 1,
|
||||
E_EVENT_BORDER_FOCUS_IN = 1 << 2,
|
||||
E_EVENT_BORDER_ICONIFY = 1 << 3,
|
||||
E_EVENT_BORDER_UNICONIFY = 1 << 4,
|
||||
E_EVENT_BORDER_MAXIMIZE = 1 << 5,
|
||||
E_EVENT_BORDER_UNMAXIMIZE = 1 << 6,
|
||||
E_EVENT_BORDER_MOVE = 1 << 7,
|
||||
E_EVENT_BORDER_RESIZE = 1 << 8,
|
||||
E_EVENT_BORDER_FOCUS_OUT = 1 << 3,
|
||||
E_EVENT_BORDER_ICONIFY = 1 << 4,
|
||||
E_EVENT_BORDER_UNICONIFY = 1 << 5,
|
||||
E_EVENT_BORDER_MAXIMIZE = 1 << 6,
|
||||
E_EVENT_BORDER_UNMAXIMIZE = 1 << 7,
|
||||
E_EVENT_BORDER_MOVE = 1 << 8,
|
||||
E_EVENT_BORDER_RESIZE = 1 << 9,
|
||||
E_EVENT_BORDER_RAISE = 1 << 10,
|
||||
E_EVENT_BORDER_LOWER = 1 << 11,
|
||||
|
||||
E_EVENT_DESKTOP_NEW = 1 << 10,
|
||||
E_EVENT_DESKTOP_DELETE = 1 << 11,
|
||||
E_EVENT_DESKTOP_SWITCH = 1 << 12,
|
||||
E_EVENT_DESKTOP_NEW = 1 << 12,
|
||||
E_EVENT_DESKTOP_DELETE = 1 << 13,
|
||||
E_EVENT_DESKTOP_SWITCH = 1 << 14,
|
||||
E_EVENT_DESKTOP_SCROLL = 1 << 15,
|
||||
|
||||
E_EVENT_FILE_ADD = 1 << 13,
|
||||
E_EVENT_FILE_CHANGE = 1 << 14,
|
||||
E_EVENT_FILE_DELETE = 1 << 15,
|
||||
E_EVENT_FILE_INFO = 1 << 16,
|
||||
E_EVENT_FILE_ADD = 1 << 16,
|
||||
E_EVENT_FILE_CHANGE = 1 << 17,
|
||||
E_EVENT_FILE_DELETE = 1 << 18,
|
||||
E_EVENT_FILE_INFO = 1 << 19,
|
||||
|
||||
E_EVENT_BG_CHANGED = 1 << 17,
|
||||
E_EVENT_ICB_CHANGED = 1 << 18,
|
||||
E_EVENT_LAYOUT_CHANGED = 1 << 19,
|
||||
E_EVENT_BG_CHANGED = 1 << 20,
|
||||
E_EVENT_ICB_CHANGED = 1 << 21,
|
||||
E_EVENT_LAYOUT_CHANGED = 1 << 22,
|
||||
|
||||
/* meta event types */
|
||||
E_EVENT_BORDER_ALL = E_EVENT_BORDER_NEW |
|
||||
|
@ -60,7 +64,7 @@ struct _e_observer
|
|||
{
|
||||
E_Object obj;
|
||||
|
||||
Evas_List watched; /* list<E_Observee> */
|
||||
Evas_List * watched; /* list<E_Observee> */
|
||||
E_Event_Type event;
|
||||
E_Notify_Func notify_func;
|
||||
};
|
||||
|
@ -69,7 +73,7 @@ struct _e_observee
|
|||
{
|
||||
E_Object obj;
|
||||
|
||||
Evas_List observers; /* list<E_Observer> */
|
||||
Evas_List * observers; /* list<E_Observer> */
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
10
src/place.c
10
src/place.c
|
@ -71,12 +71,9 @@ e_place_manual(E_Border * b, E_Desktop * desk, int *x, int *y)
|
|||
int mx, my, rx, ry;
|
||||
int move_mode = E_GUIDES_BOX;
|
||||
|
||||
E_CFG_INT(cfg_window_move_mode, "settings", "/window/move/mode",
|
||||
E_GUIDES_BOX);
|
||||
|
||||
D_ENTER;
|
||||
|
||||
E_CONFIG_INT_GET(cfg_window_move_mode, move_mode);
|
||||
move_mode = config_data->window->move_mode;
|
||||
w = b->current.requested.w;
|
||||
h = b->current.requested.h;
|
||||
|
||||
|
@ -93,7 +90,8 @@ e_place_manual(E_Border * b, E_Desktop * desk, int *x, int *y)
|
|||
}
|
||||
|
||||
/* get mouse coords */
|
||||
ecore_pointer_xy(desk->win.main, &mx, &my);
|
||||
/* ecore_pointer_xy(desk->win.main, &mx, &my); */
|
||||
ecore_pointer_xy(0, &mx, &my);
|
||||
rx = mx;
|
||||
ry = my;
|
||||
prx = rx;
|
||||
|
@ -122,7 +120,7 @@ e_place_smart(E_Border * b, E_Desktop * desk, int *x, int *y)
|
|||
int w, h;
|
||||
int a_w = 0, a_h = 0;
|
||||
int *a_x = NULL, *a_y = NULL;
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
|
20
src/resist.c
20
src/resist.c
|
@ -14,18 +14,14 @@ e_resist_border(E_Border * b)
|
|||
/* int ok = 0; */
|
||||
int dx, dy, d;
|
||||
int resist_x = 0, resist_y = 0;
|
||||
Evas_List l, rects = NULL;
|
||||
Evas_List *l, *rects = NULL;
|
||||
E_Rect *r;
|
||||
|
||||
E_CFG_INT(cfg_resist, "settings", "/move/resist", 1);
|
||||
E_CFG_INT(cfg_desk_resist, "settings", "/move/resist/desk", 32);
|
||||
E_CFG_INT(cfg_win_resist, "settings", "/move/resist/win", 12);
|
||||
|
||||
D_ENTER;
|
||||
|
||||
E_CONFIG_INT_GET(cfg_resist, resist);
|
||||
E_CONFIG_INT_GET(cfg_desk_resist, desk_resist);
|
||||
E_CONFIG_INT_GET(cfg_win_resist, win_resist);
|
||||
resist = config_data->move->resist;
|
||||
desk_resist = config_data->move->desk_resist;
|
||||
win_resist = config_data->move->win_resist;
|
||||
if (!resist)
|
||||
{
|
||||
b->current.x = b->current.requested.x;
|
||||
|
@ -55,11 +51,11 @@ rects = evas_list_append(rects, r); \
|
|||
/* here if need be - ie xinerama middle between screens and panels etc. */
|
||||
|
||||
{
|
||||
if (b->desk->view->iconbar)
|
||||
evas_list_append(rects,
|
||||
e_iconbar_get_resist_rect(b->desk->view->iconbar));
|
||||
if (b->desk->iconbar)
|
||||
evas_list_append(rects,
|
||||
e_iconbar_get_resist_rect(b->desk->iconbar));
|
||||
}
|
||||
|
||||
|
||||
for (l = b->desk->windows; l; l = l->next)
|
||||
{
|
||||
E_Border *bd;
|
||||
|
|
|
@ -144,31 +144,31 @@ e_scrollbar_setup_bits(E_Scrollbar * sb)
|
|||
sb->h = h;
|
||||
|
||||
ebits_set_classed_bit_callback(sb->base, "Scrollbar_Trough",
|
||||
CALLBACK_MOUSE_DOWN, e_sb_base_down_cb,
|
||||
EVAS_CALLBACK_MOUSE_DOWN, e_sb_base_down_cb,
|
||||
sb);
|
||||
ebits_set_classed_bit_callback(sb->base, "Scrollbar_Trough",
|
||||
CALLBACK_MOUSE_UP, e_sb_base_up_cb, sb);
|
||||
EVAS_CALLBACK_MOUSE_UP, e_sb_base_up_cb, sb);
|
||||
ebits_set_classed_bit_callback(sb->base, "Scrollbar_Arrow1",
|
||||
CALLBACK_MOUSE_DOWN, e_sb_base_down_cb,
|
||||
EVAS_CALLBACK_MOUSE_DOWN, e_sb_base_down_cb,
|
||||
sb);
|
||||
ebits_set_classed_bit_callback(sb->base, "Scrollbar_Arrow1",
|
||||
CALLBACK_MOUSE_UP, e_sb_base_up_cb, sb);
|
||||
EVAS_CALLBACK_MOUSE_UP, e_sb_base_up_cb, sb);
|
||||
ebits_set_classed_bit_callback(sb->base, "Scrollbar_Arrow2",
|
||||
CALLBACK_MOUSE_DOWN, e_sb_base_down_cb,
|
||||
EVAS_CALLBACK_MOUSE_DOWN, e_sb_base_down_cb,
|
||||
sb);
|
||||
ebits_set_classed_bit_callback(sb->base, "Scrollbar_Arrow2",
|
||||
CALLBACK_MOUSE_UP, e_sb_base_up_cb, sb);
|
||||
EVAS_CALLBACK_MOUSE_UP, e_sb_base_up_cb, sb);
|
||||
}
|
||||
if (sb->bar)
|
||||
{
|
||||
ebits_add_to_evas(sb->bar, sb->evas);
|
||||
ebits_set_classed_bit_callback(sb->bar, "Scrollbar_Bar",
|
||||
CALLBACK_MOUSE_DOWN, e_sb_bar_down_cb,
|
||||
EVAS_CALLBACK_MOUSE_DOWN, e_sb_bar_down_cb,
|
||||
sb);
|
||||
ebits_set_classed_bit_callback(sb->bar, "Scrollbar_Bar",
|
||||
CALLBACK_MOUSE_UP, e_sb_bar_up_cb, sb);
|
||||
EVAS_CALLBACK_MOUSE_UP, e_sb_bar_up_cb, sb);
|
||||
ebits_set_classed_bit_callback(sb->bar, "Scrollbar_Bar",
|
||||
CALLBACK_MOUSE_MOVE, e_sb_bar_move_cb,
|
||||
EVAS_CALLBACK_MOUSE_MOVE, e_sb_bar_move_cb,
|
||||
sb);
|
||||
}
|
||||
|
||||
|
@ -568,7 +568,7 @@ e_scrollbar_cleanup(E_Scrollbar * sb)
|
|||
}
|
||||
|
||||
void
|
||||
e_scrollbar_add_to_evas(E_Scrollbar * sb, Evas evas)
|
||||
e_scrollbar_add_to_evas(E_Scrollbar * sb, Evas * evas)
|
||||
{
|
||||
D_ENTER;
|
||||
|
||||
|
@ -692,7 +692,7 @@ e_scrollbar_set_direction(E_Scrollbar * sb, int d)
|
|||
sb->direction = d;
|
||||
if (sb->evas)
|
||||
{
|
||||
Evas evas;
|
||||
Evas * evas;
|
||||
|
||||
if (sb->base)
|
||||
ebits_free(sb->base);
|
||||
|
|
|
@ -25,7 +25,7 @@ struct _E_Scrollbar
|
|||
double range;
|
||||
|
||||
E_View *view;
|
||||
Evas evas;
|
||||
Evas * evas;
|
||||
|
||||
Ebits_Object bar;
|
||||
Ebits_Object base;
|
||||
|
@ -59,7 +59,7 @@ struct _E_Scrollbar
|
|||
};
|
||||
|
||||
E_Scrollbar *e_scrollbar_new(E_View * v);
|
||||
void e_scrollbar_add_to_evas(E_Scrollbar * sb, Evas evas);
|
||||
void e_scrollbar_add_to_evas(E_Scrollbar * sb, Evas * evas);
|
||||
void e_scrollbar_show(E_Scrollbar * sb);
|
||||
void e_scrollbar_hide(E_Scrollbar * sb);
|
||||
void e_scrollbar_raise(E_Scrollbar * sb);
|
||||
|
|
173
src/text.c
173
src/text.c
|
@ -3,7 +3,7 @@
|
|||
#include "util.h"
|
||||
|
||||
E_Text *
|
||||
e_text_new(Evas evas, char *text, char *class)
|
||||
e_text_new(Evas * evas, char *text, char *class)
|
||||
{
|
||||
E_Text *t;
|
||||
|
||||
|
@ -21,32 +21,49 @@ e_text_new(Evas evas, char *text, char *class)
|
|||
else
|
||||
t->text = strdup("");
|
||||
t->evas = evas;
|
||||
t->obj.o1 = evas_add_text(t->evas, "borzoib", 8, t->text);
|
||||
t->obj.o2 = evas_add_text(t->evas, "borzoib", 8, t->text);
|
||||
t->obj.o3 = evas_add_text(t->evas, "borzoib", 8, t->text);
|
||||
t->obj.o4 = evas_add_text(t->evas, "borzoib", 8, t->text);
|
||||
t->obj.text = evas_add_text(t->evas, "borzoib", 8, t->text);
|
||||
evas_set_pass_events(t->evas, t->obj.o1, 1);
|
||||
evas_set_pass_events(t->evas, t->obj.o2, 1);
|
||||
evas_set_pass_events(t->evas, t->obj.o3, 1);
|
||||
evas_set_pass_events(t->evas, t->obj.o4, 1);
|
||||
evas_set_pass_events(t->evas, t->obj.text, 1);
|
||||
evas_set_color(t->evas, t->obj.o1, 0, 0, 0, 255);
|
||||
evas_set_color(t->evas, t->obj.o2, 0, 0, 0, 255);
|
||||
evas_set_color(t->evas, t->obj.o3, 0, 0, 0, 255);
|
||||
evas_set_color(t->evas, t->obj.o4, 0, 0, 0, 255);
|
||||
evas_set_color(t->evas, t->obj.text, 255, 255, 255, 255);
|
||||
evas_move(t->evas, t->obj.o1, t->x + 1, t->y);
|
||||
evas_move(t->evas, t->obj.o2, t->x, t->y + 1);
|
||||
evas_move(t->evas, t->obj.o3, t->x + 2, t->y + 1);
|
||||
evas_move(t->evas, t->obj.o4, t->x + 1, t->y + 2);
|
||||
evas_move(t->evas, t->obj.text, t->x + 1, t->y + 1);
|
||||
t->obj.o1 = evas_object_text_add(t->evas);
|
||||
evas_object_text_font_set(t->obj.o1, "borzoib", 8);
|
||||
evas_object_text_text_set(t->obj.o1, t->text);
|
||||
|
||||
t->obj.o2 = evas_object_text_add(t->evas);
|
||||
evas_object_text_font_set(t->obj.o2, "borzoib", 8);
|
||||
evas_object_text_text_set(t->obj.o2, t->text);
|
||||
|
||||
t->obj.o3 = evas_object_text_add(t->evas);
|
||||
evas_object_text_font_set(t->obj.o3, "borzoib", 8);
|
||||
evas_object_text_text_set(t->obj.o3, t->text);
|
||||
|
||||
t->obj.o4 = evas_object_text_add(t->evas);
|
||||
evas_object_text_font_set(t->obj.o4, "borzoib", 8);
|
||||
evas_object_text_text_set(t->obj.o4, t->text);
|
||||
|
||||
t->obj.text = evas_object_text_add(t->evas);
|
||||
evas_object_text_font_set(t->obj.text, "borzoib", 8);
|
||||
evas_object_text_text_set(t->obj.text, t->text);
|
||||
|
||||
evas_object_pass_events_set(t->obj.o1, 1);
|
||||
evas_object_pass_events_set(t->obj.o2, 1);
|
||||
evas_object_pass_events_set(t->obj.o3, 1);
|
||||
evas_object_pass_events_set(t->obj.o4, 1);
|
||||
evas_object_pass_events_set(t->obj.text, 1);
|
||||
evas_object_color_set(t->obj.o1, 0, 0, 0, 255);
|
||||
evas_object_color_set(t->obj.o2, 0, 0, 0, 255);
|
||||
evas_object_color_set(t->obj.o3, 0, 0, 0, 255);
|
||||
evas_object_color_set(t->obj.o4, 0, 0, 0, 255);
|
||||
evas_object_color_set(t->obj.text, 255, 255, 255, 255);
|
||||
evas_object_move(t->obj.o1, t->x + 1, t->y);
|
||||
evas_object_move(t->obj.o2, t->x, t->y + 1);
|
||||
evas_object_move(t->obj.o3, t->x + 2, t->y + 1);
|
||||
evas_object_move(t->obj.o4, t->x + 1, t->y + 2);
|
||||
evas_object_move(t->obj.text, t->x + 1, t->y + 1);
|
||||
t->color.r = 255;
|
||||
t->color.g = 255;
|
||||
t->color.b = 255;
|
||||
t->color.a = 255;
|
||||
t->w = evas_get_text_width(t->evas, t->obj.text) + 2;
|
||||
t->h = evas_get_text_height(t->evas, t->obj.text) + 2;
|
||||
evas_object_geometry_get(t->obj.text, NULL, NULL, &t->w, &t->h);
|
||||
t->w += 2;
|
||||
t->h += 2;
|
||||
|
||||
t->min.w = t->w + 2;
|
||||
t->min.h = t->h + 2;
|
||||
t->max.w = t->w + 2;
|
||||
|
@ -66,11 +83,11 @@ e_text_free(E_Text * t)
|
|||
|
||||
if ((t->evas) && (t->obj.text))
|
||||
{
|
||||
evas_del_object(t->evas, t->obj.o1);
|
||||
evas_del_object(t->evas, t->obj.o2);
|
||||
evas_del_object(t->evas, t->obj.o3);
|
||||
evas_del_object(t->evas, t->obj.o4);
|
||||
evas_del_object(t->evas, t->obj.text);
|
||||
evas_object_del(t->obj.o1);
|
||||
evas_object_del(t->obj.o2);
|
||||
evas_object_del(t->obj.o3);
|
||||
evas_object_del(t->obj.o4);
|
||||
evas_object_del(t->obj.text);
|
||||
}
|
||||
FREE(t);
|
||||
|
||||
|
@ -88,13 +105,15 @@ e_text_set_text(E_Text * t, char *text)
|
|||
D_RETURN;
|
||||
FREE(t->text);
|
||||
t->text = strdup(text);
|
||||
evas_set_text(t->evas, t->obj.o1, t->text);
|
||||
evas_set_text(t->evas, t->obj.o2, t->text);
|
||||
evas_set_text(t->evas, t->obj.o3, t->text);
|
||||
evas_set_text(t->evas, t->obj.o4, t->text);
|
||||
evas_set_text(t->evas, t->obj.text, t->text);
|
||||
t->w = evas_get_text_width(t->evas, t->obj.text) + 2;
|
||||
t->h = evas_get_text_height(t->evas, t->obj.text) + 2;
|
||||
evas_object_text_text_set(t->obj.o1, t->text);
|
||||
evas_object_text_text_set(t->obj.o2, t->text);
|
||||
evas_object_text_text_set(t->obj.o3, t->text);
|
||||
evas_object_text_text_set(t->obj.o4, t->text);
|
||||
evas_object_text_text_set(t->obj.text, t->text);
|
||||
evas_object_geometry_get(t->obj.text, NULL, NULL, &t->w, &t->h);
|
||||
t->w += 2;
|
||||
t->h += 2;
|
||||
|
||||
t->min.w = t->w + 2;
|
||||
t->min.h = t->h + 2;
|
||||
t->max.w = t->w + 2;
|
||||
|
@ -111,25 +130,25 @@ e_text_set_layer(E_Text * t, int l)
|
|||
if (t->layer == l)
|
||||
D_RETURN;
|
||||
t->layer = l;
|
||||
evas_set_layer(t->evas, t->obj.o1, t->layer);
|
||||
evas_set_layer(t->evas, t->obj.o2, t->layer);
|
||||
evas_set_layer(t->evas, t->obj.o3, t->layer);
|
||||
evas_set_layer(t->evas, t->obj.o4, t->layer);
|
||||
evas_set_layer(t->evas, t->obj.text, t->layer);
|
||||
evas_object_layer_set(t->obj.o1, t->layer);
|
||||
evas_object_layer_set(t->obj.o2, t->layer);
|
||||
evas_object_layer_set(t->obj.o3, t->layer);
|
||||
evas_object_layer_set(t->obj.o4, t->layer);
|
||||
evas_object_layer_set(t->obj.text, t->layer);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
void
|
||||
e_text_set_clip(E_Text * t, Evas_Object clip)
|
||||
e_text_set_clip(E_Text * t, Evas_Object * clip)
|
||||
{
|
||||
D_ENTER;
|
||||
|
||||
evas_set_clip(t->evas, t->obj.o1, clip);
|
||||
evas_set_clip(t->evas, t->obj.o2, clip);
|
||||
evas_set_clip(t->evas, t->obj.o3, clip);
|
||||
evas_set_clip(t->evas, t->obj.o4, clip);
|
||||
evas_set_clip(t->evas, t->obj.text, clip);
|
||||
evas_object_clip_set(t->obj.o1, clip);
|
||||
evas_object_clip_set(t->obj.o2, clip);
|
||||
evas_object_clip_set(t->obj.o3, clip);
|
||||
evas_object_clip_set(t->obj.o4, clip);
|
||||
evas_object_clip_set(t->obj.text, clip);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -139,11 +158,11 @@ e_text_unset_clip(E_Text * t)
|
|||
{
|
||||
D_ENTER;
|
||||
|
||||
evas_unset_clip(t->evas, t->obj.o1);
|
||||
evas_unset_clip(t->evas, t->obj.o2);
|
||||
evas_unset_clip(t->evas, t->obj.o3);
|
||||
evas_unset_clip(t->evas, t->obj.o4);
|
||||
evas_unset_clip(t->evas, t->obj.text);
|
||||
evas_object_clip_unset(t->obj.o1);
|
||||
evas_object_clip_unset(t->obj.o2);
|
||||
evas_object_clip_unset(t->obj.o3);
|
||||
evas_object_clip_unset(t->obj.o4);
|
||||
evas_object_clip_unset(t->obj.text);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -153,11 +172,11 @@ e_text_raise(E_Text * t)
|
|||
{
|
||||
D_ENTER;
|
||||
|
||||
evas_raise(t->evas, t->obj.o1);
|
||||
evas_raise(t->evas, t->obj.o2);
|
||||
evas_raise(t->evas, t->obj.o3);
|
||||
evas_raise(t->evas, t->obj.o4);
|
||||
evas_raise(t->evas, t->obj.text);
|
||||
evas_object_raise(t->obj.o1);
|
||||
evas_object_raise(t->obj.o2);
|
||||
evas_object_raise(t->obj.o3);
|
||||
evas_object_raise(t->obj.o4);
|
||||
evas_object_raise(t->obj.text);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -167,11 +186,11 @@ e_text_lower(E_Text * t)
|
|||
{
|
||||
D_ENTER;
|
||||
|
||||
evas_lower(t->evas, t->obj.text);
|
||||
evas_lower(t->evas, t->obj.o4);
|
||||
evas_lower(t->evas, t->obj.o3);
|
||||
evas_lower(t->evas, t->obj.o2);
|
||||
evas_lower(t->evas, t->obj.o1);
|
||||
evas_object_lower(t->obj.text);
|
||||
evas_object_lower(t->obj.o4);
|
||||
evas_object_lower(t->obj.o3);
|
||||
evas_object_lower(t->obj.o2);
|
||||
evas_object_lower(t->obj.o1);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -184,11 +203,11 @@ e_text_show(E_Text * t)
|
|||
if (t->visible)
|
||||
D_RETURN;
|
||||
t->visible = 1;
|
||||
evas_show(t->evas, t->obj.o1);
|
||||
evas_show(t->evas, t->obj.o2);
|
||||
evas_show(t->evas, t->obj.o3);
|
||||
evas_show(t->evas, t->obj.o4);
|
||||
evas_show(t->evas, t->obj.text);
|
||||
evas_object_show(t->obj.o1);
|
||||
evas_object_show(t->obj.o2);
|
||||
evas_object_show(t->obj.o3);
|
||||
evas_object_show(t->obj.o4);
|
||||
evas_object_show(t->obj.text);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -201,11 +220,11 @@ e_text_hide(E_Text * t)
|
|||
if (!t->visible)
|
||||
D_RETURN;
|
||||
t->visible = 0;
|
||||
evas_hide(t->evas, t->obj.o1);
|
||||
evas_hide(t->evas, t->obj.o2);
|
||||
evas_hide(t->evas, t->obj.o3);
|
||||
evas_hide(t->evas, t->obj.o4);
|
||||
evas_hide(t->evas, t->obj.text);
|
||||
evas_object_hide(t->obj.o1);
|
||||
evas_object_hide(t->obj.o2);
|
||||
evas_object_hide(t->obj.o3);
|
||||
evas_object_hide(t->obj.o4);
|
||||
evas_object_hide(t->obj.text);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -222,7 +241,7 @@ e_text_set_color(E_Text * t, int r, int g, int b, int a)
|
|||
t->color.g = g;
|
||||
t->color.b = b;
|
||||
t->color.a = a;
|
||||
evas_set_color(t->evas, t->obj.text, t->color.r, t->color.g, t->color.b,
|
||||
evas_object_color_set(t->obj.text, t->color.r, t->color.g, t->color.b,
|
||||
t->color.a);
|
||||
|
||||
D_RETURN;
|
||||
|
@ -237,11 +256,11 @@ e_text_move(E_Text * t, double x, double y)
|
|||
D_RETURN;
|
||||
t->x = x;
|
||||
t->y = y;
|
||||
evas_move(t->evas, t->obj.o1, t->x + 1, t->y);
|
||||
evas_move(t->evas, t->obj.o2, t->x, t->y + 1);
|
||||
evas_move(t->evas, t->obj.o3, t->x + 2, t->y + 1);
|
||||
evas_move(t->evas, t->obj.o4, t->x + 1, t->y + 2);
|
||||
evas_move(t->evas, t->obj.text, t->x + 1, t->y + 1);
|
||||
evas_object_move(t->obj.o1, t->x + 1, t->y);
|
||||
evas_object_move(t->obj.o2, t->x, t->y + 1);
|
||||
evas_object_move(t->obj.o3, t->x + 2, t->y + 1);
|
||||
evas_object_move(t->obj.o4, t->x + 1, t->y + 2);
|
||||
evas_object_move(t->obj.text, t->x + 1, t->y + 1);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
|
16
src/text.h
16
src/text.h
|
@ -25,23 +25,23 @@ struct _E_Text
|
|||
color;
|
||||
int layer;
|
||||
|
||||
Evas evas;
|
||||
Evas * evas;
|
||||
struct
|
||||
{
|
||||
Evas_Object text;
|
||||
Evas_Object o1;
|
||||
Evas_Object o2;
|
||||
Evas_Object o3;
|
||||
Evas_Object o4;
|
||||
Evas_Object * text;
|
||||
Evas_Object * o1;
|
||||
Evas_Object * o2;
|
||||
Evas_Object * o3;
|
||||
Evas_Object * o4;
|
||||
}
|
||||
obj;
|
||||
};
|
||||
|
||||
E_Text *e_text_new(Evas evas, char *text, char *class);
|
||||
E_Text *e_text_new(Evas * evas, char *text, char *class);
|
||||
void e_text_free(E_Text * t);
|
||||
void e_text_set_text(E_Text * t, char *text);
|
||||
void e_text_set_layer(E_Text * t, int l);
|
||||
void e_text_set_clip(E_Text * t, Evas_Object clip);
|
||||
void e_text_set_clip(E_Text * t, Evas_Object * clip);
|
||||
void e_text_unset_clip(E_Text * t);
|
||||
void e_text_raise(E_Text * t);
|
||||
void e_text_lower(E_Text * t);
|
||||
|
|
98
src/util.c
98
src/util.c
|
@ -1,5 +1,7 @@
|
|||
#include "debug.h"
|
||||
#include "util.h"
|
||||
#include "Evas.h"
|
||||
#include "Evas_Engine_Software_X11.h"
|
||||
|
||||
void
|
||||
e_util_set_env(char *variable, char *content)
|
||||
|
@ -102,3 +104,99 @@ e_util_de_url_and_verify(const char *fi)
|
|||
|
||||
D_RETURN_(wk);
|
||||
}
|
||||
|
||||
|
||||
Evas *
|
||||
e_evas_new_all(Display *disp, Window parent_window,
|
||||
int x, int y, int win_w, int win_h,
|
||||
char *font_dir)
|
||||
{
|
||||
Evas *e;
|
||||
|
||||
e = evas_new();
|
||||
evas_output_method_set(e, evas_render_method_lookup("software_x11"));
|
||||
evas_output_size_set(e, win_w, win_h);
|
||||
evas_output_viewport_set(e, 0, 0, win_w, win_h);
|
||||
{
|
||||
Evas_Engine_Info_Software_X11 *einfo;
|
||||
XSetWindowAttributes att;
|
||||
Window window;
|
||||
|
||||
einfo = (Evas_Engine_Info_Software_X11 *) evas_engine_info_get(e);
|
||||
|
||||
/* the following is specific to the engine */
|
||||
einfo->info.display = disp;
|
||||
einfo->info.visual = DefaultVisual(disp, DefaultScreen(disp));
|
||||
einfo->info.colormap = DefaultColormap(disp, DefaultScreen(disp));
|
||||
|
||||
att.background_pixmap = None;
|
||||
att.colormap = /*colormap*/ DefaultColormap(disp, DefaultScreen(disp));
|
||||
att.border_pixel = 0;
|
||||
att.event_mask = 0;
|
||||
window = XCreateWindow(disp,
|
||||
parent_window,
|
||||
x, y, win_w, win_h, 0,
|
||||
DefaultDepth(disp, DefaultScreen(disp)),
|
||||
/*imlib_get_visual_depth(display, visual),*/
|
||||
InputOutput,
|
||||
einfo->info.visual,
|
||||
CWColormap | CWBorderPixel | CWEventMask | CWBackPixmap,
|
||||
&att);
|
||||
|
||||
einfo->info.drawable = window /*win*/;
|
||||
einfo->info.depth = DefaultDepth(disp, DefaultScreen(disp));
|
||||
einfo->info.rotation = 0;
|
||||
einfo->info.debug = 0;
|
||||
evas_engine_info_set(e, (Evas_Engine_Info *) einfo);
|
||||
}
|
||||
|
||||
evas_object_image_cache_set(e, 0);
|
||||
evas_object_font_cache_set(e, 0);
|
||||
evas_object_font_path_append(e, font_dir);
|
||||
|
||||
return e;
|
||||
}
|
||||
|
||||
Evas_List *
|
||||
e_evas_get_mask(Evas *evas, Pixmap pmap, Pixmap mask)
|
||||
{
|
||||
int w, h;
|
||||
Pixmap old_pmap, old_mask;
|
||||
Evas_List *updates;
|
||||
Evas_Engine_Info_Software_X11 *info;
|
||||
|
||||
info = (Evas_Engine_Info_Software_X11 *) evas_engine_info_get(evas);
|
||||
|
||||
old_pmap = info->info.drawable;
|
||||
old_mask = info->info.mask;
|
||||
|
||||
info->info.drawable = pmap;
|
||||
info->info.mask = mask;
|
||||
|
||||
evas_engine_info_set(evas, (Evas_Engine_Info *) info);
|
||||
evas_output_size_get(evas, &w, &h);
|
||||
evas_damage_rectangle_add(evas, 0, 0, w, h);
|
||||
evas_render(evas);
|
||||
evas_damage_rectangle_add(evas, 0, 0, w, h);
|
||||
|
||||
info->info.drawable = old_pmap;
|
||||
info->info.mask = old_mask;
|
||||
evas_engine_info_set(evas, (Evas_Engine_Info *) info);
|
||||
|
||||
return updates;
|
||||
}
|
||||
|
||||
|
||||
Window
|
||||
e_evas_get_window(Evas *evas)
|
||||
{
|
||||
Window win;
|
||||
Evas_Engine_Info_Software_X11 *einfo;
|
||||
|
||||
einfo = (Evas_Engine_Info_Software_X11 *) evas_engine_info_get(evas);
|
||||
|
||||
/* the following is specific to the engine */
|
||||
win = einfo->info.drawable;
|
||||
|
||||
return win;
|
||||
}
|
||||
|
|
17
src/util.h
17
src/util.h
|
@ -8,6 +8,13 @@ char *e_util_get_user_home(void);
|
|||
void *e_util_memdup(void *data, int size);
|
||||
int e_util_glob_matches(char *str, char *glob);
|
||||
char *e_util_de_url_and_verify(const char *fi);
|
||||
Window e_evas_get_window(Evas *evas);
|
||||
Evas_List *e_evas_get_mask(Evas *evas, Pixmap pmap, Pixmap mask);
|
||||
Evas *e_evas_new_all(Display *disp, Window win,
|
||||
int x, int y, int win_w, int win_h,
|
||||
char *font_dir);
|
||||
|
||||
#define RENDER_METHOD_ALPHA_SOFTWARE 0
|
||||
|
||||
#define e_strdup(__dest, __var) \
|
||||
{ \
|
||||
|
@ -26,5 +33,15 @@ if (__dest) strcpy(__dest, __var); \
|
|||
#define SPANS_COMMON(x1, w1, x2, w2) \
|
||||
(!((((x2) + (w2)) <= (x1)) || ((x2) >= ((x1) + (w1)))))
|
||||
#define UN(_blah) _blah = 0
|
||||
#define MIN(v1, v2) (v1 < v2 ? v1 : v2)
|
||||
|
||||
#define STRNCPY(d, s, l) \
|
||||
do \
|
||||
{ \
|
||||
int __c; \
|
||||
for (__c = 0; (__c < (l)) && ((d)[__c] = (s)[__c]); __c++); \
|
||||
(d)[(l) - 1] = 0; \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
#endif
|
||||
|
|
410
src/view.c
410
src/view.c
|
@ -15,6 +15,7 @@
|
|||
#include "e_view_machine.h"
|
||||
#include "e_file.h"
|
||||
#include "globals.h"
|
||||
#include <Ebg.h>
|
||||
|
||||
static Ecore_Event *current_ev = NULL;
|
||||
|
||||
|
@ -23,12 +24,12 @@ static int dnd_num_files = 0;
|
|||
static E_dnd_enum dnd_pending_mode;
|
||||
static E_View *v_dnd_source;
|
||||
|
||||
static void e_bg_down_cb(void *_data, Evas _e, Evas_Object _o, int _b,
|
||||
int _x, int _y);
|
||||
static void e_bg_up_cb(void *_data, Evas _e, Evas_Object _o, int _b,
|
||||
int _x, int _y);
|
||||
static void e_bg_move_cb(void *_data, Evas _e, Evas_Object _o, int _b,
|
||||
int _x, int _y);
|
||||
static void e_bg_down_cb(void *_data, Evas * _e, Evas_Object * _o,
|
||||
void *event_info);
|
||||
static void e_bg_up_cb(void *_data, Evas * _e, Evas_Object * _o,
|
||||
void *event_info);
|
||||
static void e_bg_move_cb(void *_data, Evas * _e, Evas_Object * _o,
|
||||
void *event_info);
|
||||
static void e_idle(void *data);
|
||||
static void e_wheel(Ecore_Event * ev);
|
||||
static void e_key_down(Ecore_Event * ev);
|
||||
|
@ -68,7 +69,7 @@ static void
|
|||
e_view_write_icon_xy_timeout(int val, void *data)
|
||||
{
|
||||
E_View *v;
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
E_Icon *ic;
|
||||
double t_in;
|
||||
|
||||
|
@ -117,120 +118,106 @@ e_view_selection_update(E_View * v)
|
|||
|
||||
if ((v->select.on) && (!v->select.obj.middle))
|
||||
{
|
||||
Evas_Gradient grad;
|
||||
|
||||
/* create select objects */
|
||||
v->select.obj.middle = evas_add_rectangle(v->evas);
|
||||
evas_set_color(v->evas, v->select.obj.middle,
|
||||
v->select.obj.middle = evas_object_rectangle_add(v->evas);
|
||||
evas_object_color_set(v->select.obj.middle,
|
||||
v->select.config.middle.r,
|
||||
v->select.config.middle.g,
|
||||
v->select.config.middle.b, v->select.config.middle.a);
|
||||
evas_set_layer(v->evas, v->select.obj.middle, 300);
|
||||
v->select.obj.edge_l = evas_add_rectangle(v->evas);
|
||||
evas_set_color(v->evas, v->select.obj.edge_l,
|
||||
evas_object_layer_set(v->select.obj.middle, 300);
|
||||
v->select.obj.edge_l = evas_object_rectangle_add(v->evas);
|
||||
evas_object_color_set(v->select.obj.edge_l,
|
||||
v->select.config.edge_l.r,
|
||||
v->select.config.edge_l.g,
|
||||
v->select.config.edge_l.b, v->select.config.edge_l.a);
|
||||
evas_set_layer(v->evas, v->select.obj.edge_l, 300);
|
||||
v->select.obj.edge_r = evas_add_rectangle(v->evas);
|
||||
evas_set_color(v->evas, v->select.obj.edge_r,
|
||||
evas_object_layer_set(v->select.obj.edge_l, 300);
|
||||
v->select.obj.edge_r = evas_object_rectangle_add(v->evas);
|
||||
evas_object_color_set(v->select.obj.edge_r,
|
||||
v->select.config.edge_r.r,
|
||||
v->select.config.edge_r.g,
|
||||
v->select.config.edge_r.b, v->select.config.edge_r.a);
|
||||
evas_set_layer(v->evas, v->select.obj.edge_r, 300);
|
||||
v->select.obj.edge_t = evas_add_rectangle(v->evas);
|
||||
evas_set_color(v->evas, v->select.obj.edge_t,
|
||||
evas_object_layer_set(v->select.obj.edge_r, 300);
|
||||
v->select.obj.edge_t = evas_object_rectangle_add(v->evas);
|
||||
evas_object_color_set(v->select.obj.edge_t,
|
||||
v->select.config.edge_t.r,
|
||||
v->select.config.edge_t.g,
|
||||
v->select.config.edge_t.b, v->select.config.edge_t.a);
|
||||
evas_set_layer(v->evas, v->select.obj.edge_t, 300);
|
||||
v->select.obj.edge_b = evas_add_rectangle(v->evas);
|
||||
evas_set_color(v->evas, v->select.obj.edge_b,
|
||||
evas_object_layer_set(v->select.obj.edge_t, 300);
|
||||
v->select.obj.edge_b = evas_object_rectangle_add(v->evas);
|
||||
evas_object_color_set(v->select.obj.edge_b,
|
||||
v->select.config.edge_b.r,
|
||||
v->select.config.edge_b.g,
|
||||
v->select.config.edge_b.b, v->select.config.edge_b.a);
|
||||
evas_set_layer(v->evas, v->select.obj.edge_b, 300);
|
||||
evas_object_layer_set(v->select.obj.edge_b, 300);
|
||||
|
||||
v->select.obj.grad_l = evas_add_gradient_box(v->evas);
|
||||
evas_set_angle(v->evas, v->select.obj.grad_l, 270);
|
||||
grad = evas_gradient_new();
|
||||
evas_gradient_add_color(grad,
|
||||
v->select.obj.grad_l = evas_object_gradient_add(v->evas);
|
||||
evas_object_gradient_angle_set(v->select.obj.grad_l, 270);
|
||||
evas_object_gradient_color_add(v->select.obj.grad_l,
|
||||
v->select.config.grad_l.r,
|
||||
v->select.config.grad_l.g,
|
||||
v->select.config.grad_l.b,
|
||||
v->select.config.grad_l.a, 8);
|
||||
evas_gradient_add_color(grad,
|
||||
evas_object_gradient_color_add(v->select.obj.grad_l,
|
||||
v->select.config.grad_l.r,
|
||||
v->select.config.grad_l.g,
|
||||
v->select.config.grad_l.b, 0, 8);
|
||||
evas_set_gradient(v->evas, v->select.obj.grad_l, grad);
|
||||
evas_gradient_free(grad);
|
||||
evas_set_layer(v->evas, v->select.obj.grad_l, 300);
|
||||
v->select.obj.grad_r = evas_add_gradient_box(v->evas);
|
||||
evas_set_angle(v->evas, v->select.obj.grad_r, 90);
|
||||
grad = evas_gradient_new();
|
||||
evas_gradient_add_color(grad,
|
||||
evas_object_layer_set(v->select.obj.grad_l, 300);
|
||||
v->select.obj.grad_r = evas_object_gradient_add(v->evas);
|
||||
evas_object_gradient_angle_set(v->select.obj.grad_r, 90);
|
||||
evas_object_gradient_color_add(v->select.obj.grad_r,
|
||||
v->select.config.grad_r.r,
|
||||
v->select.config.grad_r.g,
|
||||
v->select.config.grad_r.b,
|
||||
v->select.config.grad_r.a, 8);
|
||||
evas_gradient_add_color(grad,
|
||||
evas_object_gradient_color_add(v->select.obj.grad_r,
|
||||
v->select.config.grad_r.r,
|
||||
v->select.config.grad_r.g,
|
||||
v->select.config.grad_r.b, 0, 8);
|
||||
evas_set_gradient(v->evas, v->select.obj.grad_r, grad);
|
||||
evas_gradient_free(grad);
|
||||
evas_set_layer(v->evas, v->select.obj.grad_r, 300);
|
||||
v->select.obj.grad_t = evas_add_gradient_box(v->evas);
|
||||
evas_set_angle(v->evas, v->select.obj.grad_t, 0);
|
||||
grad = evas_gradient_new();
|
||||
evas_gradient_add_color(grad,
|
||||
evas_object_layer_set(v->select.obj.grad_r, 300);
|
||||
v->select.obj.grad_t = evas_object_gradient_add(v->evas);
|
||||
evas_object_gradient_angle_set(v->select.obj.grad_t, 0);
|
||||
evas_object_gradient_color_add(v->select.obj.grad_t,
|
||||
v->select.config.grad_t.r,
|
||||
v->select.config.grad_t.g,
|
||||
v->select.config.grad_t.b,
|
||||
v->select.config.grad_t.a, 8);
|
||||
evas_gradient_add_color(grad,
|
||||
evas_object_gradient_color_add(v->select.obj.grad_t,
|
||||
v->select.config.grad_t.r,
|
||||
v->select.config.grad_t.g,
|
||||
v->select.config.grad_t.b, 0, 8);
|
||||
evas_set_gradient(v->evas, v->select.obj.grad_t, grad);
|
||||
evas_gradient_free(grad);
|
||||
evas_set_layer(v->evas, v->select.obj.grad_t, 300);
|
||||
v->select.obj.grad_b = evas_add_gradient_box(v->evas);
|
||||
evas_set_angle(v->evas, v->select.obj.grad_b, 180);
|
||||
grad = evas_gradient_new();
|
||||
evas_gradient_add_color(grad,
|
||||
evas_object_layer_set(v->select.obj.grad_t, 300);
|
||||
v->select.obj.grad_b = evas_object_gradient_add(v->evas);
|
||||
evas_object_gradient_angle_set(v->select.obj.grad_b, 180);
|
||||
evas_object_gradient_color_add(v->select.obj.grad_b,
|
||||
v->select.config.grad_b.r,
|
||||
v->select.config.grad_b.g,
|
||||
v->select.config.grad_b.b,
|
||||
v->select.config.grad_b.a, 8);
|
||||
evas_gradient_add_color(grad,
|
||||
evas_object_gradient_color_add(v->select.obj.grad_b,
|
||||
v->select.config.grad_b.r,
|
||||
v->select.config.grad_b.g,
|
||||
v->select.config.grad_b.b, 0, 8);
|
||||
evas_set_gradient(v->evas, v->select.obj.grad_b, grad);
|
||||
evas_gradient_free(grad);
|
||||
evas_set_layer(v->evas, v->select.obj.grad_b, 300);
|
||||
v->select.obj.clip = evas_add_rectangle(v->evas);
|
||||
evas_set_color(v->evas, v->select.obj.clip, 255, 255, 255, 255);
|
||||
evas_set_clip(v->evas, v->select.obj.grad_l, v->select.obj.clip);
|
||||
evas_set_clip(v->evas, v->select.obj.grad_r, v->select.obj.clip);
|
||||
evas_set_clip(v->evas, v->select.obj.grad_t, v->select.obj.clip);
|
||||
evas_set_clip(v->evas, v->select.obj.grad_b, v->select.obj.clip);
|
||||
evas_object_layer_set(v->select.obj.grad_b, 300);
|
||||
v->select.obj.clip = evas_object_rectangle_add(v->evas);
|
||||
evas_object_color_set(v->select.obj.clip, 255, 255, 255, 255);
|
||||
evas_object_clip_set(v->select.obj.grad_l, v->select.obj.clip);
|
||||
evas_object_clip_set(v->select.obj.grad_r, v->select.obj.clip);
|
||||
evas_object_clip_set(v->select.obj.grad_t, v->select.obj.clip);
|
||||
evas_object_clip_set(v->select.obj.grad_b, v->select.obj.clip);
|
||||
}
|
||||
if ((!v->select.on) && (v->select.obj.middle))
|
||||
{
|
||||
/* destroy select objects */
|
||||
evas_del_object(v->evas, v->select.obj.middle);
|
||||
evas_del_object(v->evas, v->select.obj.edge_l);
|
||||
evas_del_object(v->evas, v->select.obj.edge_r);
|
||||
evas_del_object(v->evas, v->select.obj.edge_t);
|
||||
evas_del_object(v->evas, v->select.obj.edge_b);
|
||||
evas_del_object(v->evas, v->select.obj.grad_l);
|
||||
evas_del_object(v->evas, v->select.obj.grad_r);
|
||||
evas_del_object(v->evas, v->select.obj.grad_t);
|
||||
evas_del_object(v->evas, v->select.obj.grad_b);
|
||||
evas_del_object(v->evas, v->select.obj.clip);
|
||||
evas_object_del(v->select.obj.middle);
|
||||
evas_object_del(v->select.obj.edge_l);
|
||||
evas_object_del(v->select.obj.edge_r);
|
||||
evas_object_del(v->select.obj.edge_t);
|
||||
evas_object_del(v->select.obj.edge_b);
|
||||
evas_object_del(v->select.obj.grad_l);
|
||||
evas_object_del(v->select.obj.grad_r);
|
||||
evas_object_del(v->select.obj.grad_t);
|
||||
evas_object_del(v->select.obj.grad_b);
|
||||
evas_object_del(v->select.obj.clip);
|
||||
v->select.obj.middle = NULL;
|
||||
v->changed = 1;
|
||||
D_RETURN;
|
||||
|
@ -239,52 +226,52 @@ e_view_selection_update(E_View * v)
|
|||
D_RETURN;
|
||||
/* move & resize select objects */
|
||||
{
|
||||
evas_move(v->evas, v->select.obj.edge_l, v->select.x, v->select.y + 1);
|
||||
evas_resize(v->evas, v->select.obj.edge_l, 1, v->select.h - 1);
|
||||
evas_move(v->evas, v->select.obj.edge_r, v->select.x + v->select.w - 1,
|
||||
evas_object_move(v->select.obj.edge_l, v->select.x, v->select.y + 1);
|
||||
evas_object_resize(v->select.obj.edge_l, 1, v->select.h - 1);
|
||||
evas_object_move(v->select.obj.edge_r, v->select.x + v->select.w - 1,
|
||||
v->select.y);
|
||||
evas_resize(v->evas, v->select.obj.edge_r, 1, v->select.h - 1);
|
||||
evas_move(v->evas, v->select.obj.edge_t, v->select.x, v->select.y);
|
||||
evas_resize(v->evas, v->select.obj.edge_t, v->select.w - 1, 1);
|
||||
evas_move(v->evas, v->select.obj.edge_b, v->select.x + 1,
|
||||
evas_object_resize(v->select.obj.edge_r, 1, v->select.h - 1);
|
||||
evas_object_move(v->select.obj.edge_t, v->select.x, v->select.y);
|
||||
evas_object_resize(v->select.obj.edge_t, v->select.w - 1, 1);
|
||||
evas_object_move(v->select.obj.edge_b, v->select.x + 1,
|
||||
v->select.y + v->select.h - 1);
|
||||
evas_resize(v->evas, v->select.obj.edge_b, v->select.w - 1, 1);
|
||||
evas_move(v->evas, v->select.obj.middle, v->select.x + 1,
|
||||
evas_object_resize(v->select.obj.edge_b, v->select.w - 1, 1);
|
||||
evas_object_move(v->select.obj.middle, v->select.x + 1,
|
||||
v->select.y + 1);
|
||||
evas_resize(v->evas, v->select.obj.middle, v->select.w - 1 - 1,
|
||||
evas_object_resize(v->select.obj.middle, v->select.w - 1 - 1,
|
||||
v->select.h - 1 - 1);
|
||||
evas_move(v->evas, v->select.obj.grad_l, v->select.x + 1,
|
||||
evas_object_move(v->select.obj.grad_l, v->select.x + 1,
|
||||
v->select.y + 1);
|
||||
evas_resize(v->evas, v->select.obj.grad_l, v->select.config.grad_size.l,
|
||||
evas_object_resize(v->select.obj.grad_l, v->select.config.grad_size.l,
|
||||
v->select.h - 1 - 1);
|
||||
evas_move(v->evas, v->select.obj.grad_r,
|
||||
evas_object_move(v->select.obj.grad_r,
|
||||
v->select.x + v->select.w - 1 - v->select.config.grad_size.r,
|
||||
v->select.y + 1);
|
||||
evas_resize(v->evas, v->select.obj.grad_r, v->select.config.grad_size.r,
|
||||
evas_object_resize(v->select.obj.grad_r, v->select.config.grad_size.r,
|
||||
v->select.h - 1 - 1);
|
||||
evas_move(v->evas, v->select.obj.grad_t, v->select.x + 1,
|
||||
evas_object_move(v->select.obj.grad_t, v->select.x + 1,
|
||||
v->select.y + 1);
|
||||
evas_resize(v->evas, v->select.obj.grad_t, v->select.w - 1 - 1,
|
||||
evas_object_resize(v->select.obj.grad_t, v->select.w - 1 - 1,
|
||||
v->select.config.grad_size.t);
|
||||
evas_move(v->evas, v->select.obj.grad_b, v->select.x + 1,
|
||||
evas_object_move(v->select.obj.grad_b, v->select.x + 1,
|
||||
v->select.y + v->select.h - 1 - v->select.config.grad_size.b);
|
||||
evas_resize(v->evas, v->select.obj.grad_b, v->select.w - 1 - 1,
|
||||
evas_object_resize(v->select.obj.grad_b, v->select.w - 1 - 1,
|
||||
v->select.config.grad_size.b);
|
||||
evas_move(v->evas, v->select.obj.clip, v->select.x + 1, v->select.y + 1);
|
||||
evas_resize(v->evas, v->select.obj.clip, v->select.w - 1 - 1,
|
||||
evas_object_move(v->select.obj.clip, v->select.x + 1, v->select.y + 1);
|
||||
evas_object_resize(v->select.obj.clip, v->select.w - 1 - 1,
|
||||
v->select.h - 1 - 1);
|
||||
}
|
||||
|
||||
evas_show(v->evas, v->select.obj.middle);
|
||||
evas_show(v->evas, v->select.obj.edge_l);
|
||||
evas_show(v->evas, v->select.obj.edge_r);
|
||||
evas_show(v->evas, v->select.obj.edge_t);
|
||||
evas_show(v->evas, v->select.obj.edge_b);
|
||||
evas_show(v->evas, v->select.obj.grad_l);
|
||||
evas_show(v->evas, v->select.obj.grad_r);
|
||||
evas_show(v->evas, v->select.obj.grad_t);
|
||||
evas_show(v->evas, v->select.obj.grad_b);
|
||||
evas_show(v->evas, v->select.obj.clip);
|
||||
evas_object_show(v->select.obj.middle);
|
||||
evas_object_show(v->select.obj.edge_l);
|
||||
evas_object_show(v->select.obj.edge_r);
|
||||
evas_object_show(v->select.obj.edge_t);
|
||||
evas_object_show(v->select.obj.edge_b);
|
||||
evas_object_show(v->select.obj.grad_l);
|
||||
evas_object_show(v->select.obj.grad_r);
|
||||
evas_object_show(v->select.obj.grad_t);
|
||||
evas_object_show(v->select.obj.grad_b);
|
||||
evas_object_show(v->select.obj.clip);
|
||||
v->changed = 1;
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -318,10 +305,11 @@ e_view_scrollbar_h_change_cb(void *_data, E_Scrollbar * sb, double val)
|
|||
}
|
||||
|
||||
static void
|
||||
e_bg_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
||||
e_bg_down_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info)
|
||||
{
|
||||
Ecore_Event_Mouse_Down *ev;
|
||||
E_View *v;
|
||||
Evas_Event_Mouse_Down *ev_info = event_info;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -336,35 +324,35 @@ e_bg_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
e_view_deselect_all(v);
|
||||
}
|
||||
|
||||
if (_b == 1)
|
||||
if (ev_info->button == 1)
|
||||
{
|
||||
v->select.down.x = _x;
|
||||
v->select.down.y = _y;
|
||||
v->select.down.x = ev_info->output.x;
|
||||
v->select.down.y = ev_info->output.y;
|
||||
v->select.on = 1;
|
||||
if (_x < v->select.down.x)
|
||||
if (ev_info->output.x < v->select.down.x)
|
||||
{
|
||||
v->select.x = _x;
|
||||
v->select.x = ev_info->output.x;
|
||||
v->select.w = v->select.down.x - v->select.x + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
v->select.x = v->select.down.x;
|
||||
v->select.w = _x - v->select.down.x + 1;
|
||||
v->select.w = ev_info->output.x - v->select.down.x + 1;
|
||||
}
|
||||
if (_y < v->select.down.y)
|
||||
if (ev_info->output.y < v->select.down.y)
|
||||
{
|
||||
v->select.y = _y;
|
||||
v->select.y = ev_info->output.y;
|
||||
v->select.h = v->select.down.y - v->select.y + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
v->select.y = v->select.down.y;
|
||||
v->select.h = _y - v->select.down.y + 1;
|
||||
v->select.h = ev_info->output.y - v->select.down.y + 1;
|
||||
}
|
||||
e_view_selection_update(v);
|
||||
}
|
||||
|
||||
if (_b == 2 && ev->double_click)
|
||||
if (ev_info->button == 2 && ev->double_click)
|
||||
ecore_event_loop_quit();
|
||||
|
||||
D_RETURN;
|
||||
|
@ -373,11 +361,12 @@ e_bg_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
}
|
||||
|
||||
static void
|
||||
e_bg_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
||||
e_bg_up_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info)
|
||||
{
|
||||
Ecore_Event_Mouse_Up *ev;
|
||||
E_View *v;
|
||||
int dx, dy;
|
||||
Evas_Event_Mouse_Up *ev_info = event_info;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -390,20 +379,20 @@ e_bg_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
|
||||
if (v->select.on)
|
||||
{
|
||||
dx = v->select.down.x - _x;
|
||||
dy = v->select.down.y - _y;
|
||||
dx = v->select.down.x - ev_info->output.x;
|
||||
dy = v->select.down.y - ev_info->output.y;
|
||||
if (dx < 0)
|
||||
dx = -dx;
|
||||
if (dy < 0)
|
||||
dy = -dy;
|
||||
if (_b == 1)
|
||||
if (ev_info->button == 1)
|
||||
v->select.on = 0;
|
||||
e_view_selection_update(v);
|
||||
}
|
||||
|
||||
if ((_b == 1) && ((dx > 3) || (dy > 3)))
|
||||
if ((ev_info->button == 1) && ((dx > 3) || (dy > 3)))
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
for (l = v->icons; l; l = l->next)
|
||||
{
|
||||
|
@ -423,7 +412,7 @@ e_bg_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
}
|
||||
else if (v->select.last_count == 0)
|
||||
{
|
||||
if (_b == 1)
|
||||
if (ev_info->button == 1)
|
||||
{
|
||||
if (!(ev->mods & (multi_select_mod | range_select_mod)))
|
||||
{
|
||||
|
@ -450,7 +439,7 @@ e_bg_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
}
|
||||
}
|
||||
}
|
||||
else if (_b == 2)
|
||||
else if (ev_info->button == 2)
|
||||
{
|
||||
#if 1
|
||||
static E_Build_Menu *buildmenu = NULL;
|
||||
|
@ -479,7 +468,7 @@ e_bg_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
}
|
||||
#endif
|
||||
}
|
||||
else if (_b == 3)
|
||||
else if (ev_info->button == 3)
|
||||
{
|
||||
static E_Build_Menu *buildmenu = NULL;
|
||||
|
||||
|
@ -498,10 +487,10 @@ e_bg_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
}
|
||||
}
|
||||
}
|
||||
if (_b == 1)
|
||||
if (ev_info->button == 1)
|
||||
{
|
||||
v->select.x = _x;
|
||||
v->select.y = _y;
|
||||
v->select.x = ev_info->output.x;
|
||||
v->select.y = ev_info->output.y;
|
||||
}
|
||||
|
||||
D_RETURN;
|
||||
|
@ -510,10 +499,11 @@ e_bg_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
}
|
||||
|
||||
static void
|
||||
e_bg_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
||||
e_bg_move_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info)
|
||||
{
|
||||
Ecore_Event_Mouse_Down *ev;
|
||||
E_View *v;
|
||||
Evas_Event_Mouse_Move *ev_info = event_info;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -523,25 +513,25 @@ e_bg_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
v = _data;
|
||||
if (v->select.on)
|
||||
{
|
||||
if (_x < v->select.down.x)
|
||||
if (ev_info->cur.output.x < v->select.down.x)
|
||||
{
|
||||
v->select.x = _x;
|
||||
v->select.x = ev_info->cur.output.x;
|
||||
v->select.w = v->select.down.x - v->select.x + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
v->select.x = v->select.down.x;
|
||||
v->select.w = _x - v->select.down.x + 1;
|
||||
v->select.w = ev_info->cur.output.x - v->select.down.x + 1;
|
||||
}
|
||||
if (_y < v->select.down.y)
|
||||
if (ev_info->cur.output.y < v->select.down.y)
|
||||
{
|
||||
v->select.y = _y;
|
||||
v->select.y = ev_info->cur.output.y;
|
||||
v->select.h = v->select.down.y - v->select.y + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
v->select.y = v->select.down.y;
|
||||
v->select.h = _y - v->select.down.y + 1;
|
||||
v->select.h = ev_info->cur.output.y - v->select.down.y + 1;
|
||||
}
|
||||
e_view_selection_update(v);
|
||||
|
||||
|
@ -550,13 +540,12 @@ e_bg_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
D_RETURN;
|
||||
UN(_e);
|
||||
UN(_o);
|
||||
UN(_b);
|
||||
}
|
||||
|
||||
void
|
||||
e_view_deselect_all(E_View * v)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -574,7 +563,7 @@ e_view_deselect_all(E_View * v)
|
|||
void
|
||||
e_view_deselect_all_except(E_Icon * not_ic)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -594,7 +583,7 @@ void
|
|||
e_view_icons_get_extents(E_View * v, int *min_x, int *min_y, int *max_x,
|
||||
int *max_y)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
int x1, x2, y1, y2;
|
||||
|
||||
D_ENTER;
|
||||
|
@ -660,7 +649,7 @@ e_view_icons_get_extents(E_View * v, int *min_x, int *min_y, int *max_x,
|
|||
void
|
||||
e_view_icons_apply_xy(E_View * v)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -824,7 +813,7 @@ e_view_get_position_percentage(E_View * v, double *vx, double *vy)
|
|||
static void
|
||||
e_idle(void *data)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -943,20 +932,22 @@ e_configure(Ecore_Event * ev)
|
|||
ecore_window_resize(v->win.main, v->size.w, v->size.h);
|
||||
if (v->options.back_pixmap)
|
||||
{
|
||||
Evas_Engine_Info_Software_X11 *info;
|
||||
|
||||
v->pmap =
|
||||
ecore_pixmap_new(v->win.main, v->size.w, v->size.h,
|
||||
0);
|
||||
evas_set_output(v->evas, ecore_display_get(), v->pmap,
|
||||
evas_get_visual(v->evas),
|
||||
evas_get_colormap(v->evas));
|
||||
info = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(v->evas);
|
||||
info->info.drawable = v->pmap;
|
||||
evas_engine_info_set(v->evas, (Evas_Engine_Info *)info);
|
||||
ecore_window_set_background_pixmap(v->win.main, v->pmap);
|
||||
ecore_window_clear(v->win.main);
|
||||
}
|
||||
if (v->bg)
|
||||
e_bg_resize(v->bg, v->size.w, v->size.h);
|
||||
D("evas_set_output_viewpor(%p)\n", v->evas);
|
||||
evas_set_output_viewport(v->evas, 0, 0, v->size.w, v->size.h);
|
||||
evas_set_output_size(v->evas, v->size.w, v->size.h);
|
||||
evas_output_viewport_set(v->evas, 0, 0, v->size.w, v->size.h);
|
||||
evas_output_size_set(v->evas, v->size.w, v->size.h);
|
||||
e_view_scroll_to(v, v->scroll.x, v->scroll.y);
|
||||
e_view_arrange(v);
|
||||
e_view_layout_update(v->layout);
|
||||
|
@ -1238,12 +1229,10 @@ e_mouse_down(Ecore_Event * ev)
|
|||
{
|
||||
int focus_mode;
|
||||
|
||||
E_CFG_INT(cfg_focus_mode, "settings", "/focus/mode", 0);
|
||||
|
||||
E_CONFIG_INT_GET(cfg_focus_mode, focus_mode);
|
||||
focus_mode = config_data->window->focus_mode;
|
||||
if (focus_mode == 2)
|
||||
ecore_focus_to_window(v->win.base);
|
||||
evas_event_button_down(v->evas, e->x, e->y, e->button);
|
||||
evas_event_feed_mouse_down(v->evas, e->button);
|
||||
current_ev = NULL;
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -1267,7 +1256,7 @@ e_mouse_up(Ecore_Event * ev)
|
|||
{
|
||||
if ((v = e_view_machine_get_view_by_main_window(e->win)))
|
||||
{
|
||||
evas_event_button_up(v->evas, e->x, e->y, e->button);
|
||||
evas_event_feed_mouse_up(v->evas, e->button);
|
||||
current_ev = NULL;
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -1291,7 +1280,7 @@ e_mouse_move(Ecore_Event * ev)
|
|||
{
|
||||
if ((v = e_view_machine_get_view_by_main_window(e->win)))
|
||||
{
|
||||
evas_event_move(v->evas, e->x, e->y);
|
||||
evas_event_feed_mouse_move(v->evas, e->x, e->y);
|
||||
current_ev = NULL;
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -1317,7 +1306,7 @@ e_mouse_in(Ecore_Event * ev)
|
|||
{
|
||||
if (v->is_desktop)
|
||||
{
|
||||
evas_event_enter(v->evas);
|
||||
evas_event_feed_mouse_in(v->evas);
|
||||
}
|
||||
current_ev = NULL;
|
||||
D_RETURN;
|
||||
|
@ -1342,7 +1331,7 @@ e_mouse_out(Ecore_Event * ev)
|
|||
{
|
||||
if ((v = e_view_machine_get_view_by_main_window(e->win)))
|
||||
{
|
||||
evas_event_leave(v->evas);
|
||||
evas_event_feed_mouse_out(v->evas);
|
||||
current_ev = NULL;
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -1367,7 +1356,7 @@ e_window_expose(Ecore_Event * ev)
|
|||
if ((v = e_view_machine_get_view_by_main_window(e->win)))
|
||||
{
|
||||
if (!(v->pmap))
|
||||
evas_update_rect(v->evas, e->x, e->y, e->w, e->h);
|
||||
evas_damage_rectangle_add(v->evas, e->x, e->y, e->w, e->h);
|
||||
v->changed = 1;
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -1412,7 +1401,7 @@ e_view_restart_alphabetical_qsort_cb(const void *data1, const void *data2)
|
|||
void
|
||||
e_view_resort_alphabetical(E_View * v)
|
||||
{
|
||||
Evas_List icons = NULL, l;
|
||||
Evas_List *icons = NULL, *l;
|
||||
E_Icon **array;
|
||||
int i, count;
|
||||
|
||||
|
@ -1442,7 +1431,7 @@ e_view_resort_alphabetical(E_View * v)
|
|||
void
|
||||
e_view_arrange(E_View * v)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
int x, y;
|
||||
int x1, x2, y1, y2;
|
||||
double sv, sr, sm;
|
||||
|
@ -1586,11 +1575,6 @@ e_view_cleanup(E_View * v)
|
|||
* not via a timeout, because we will destroy the object after this.*/
|
||||
e_view_geometry_record(v);
|
||||
|
||||
if (v->iconbar)
|
||||
{
|
||||
/*e_iconbar_save_out_final(v->iconbar); */
|
||||
e_object_unref(E_OBJECT(v->iconbar));
|
||||
}
|
||||
if (v->bg)
|
||||
e_bg_free(v->bg);
|
||||
if (v->scrollbar.h)
|
||||
|
@ -1637,7 +1621,8 @@ e_view_file_event_handler(E_Observer *obs, E_Observee *o, E_Event_Type event, vo
|
|||
else if (event & E_EVENT_BG_CHANGED)
|
||||
{
|
||||
snprintf(buf, PATH_MAX, "background_reload:%s", v->name);
|
||||
ecore_add_event_timer(buf, 0.5, e_view_bg_reload_timeout, 0, v);
|
||||
e_view_bg_reload(v);
|
||||
//ecore_add_event_timer(buf, 0.5, e_view_bg_reload_timeout, 0, v);
|
||||
}
|
||||
else if (event & E_EVENT_ICB_CHANGED)
|
||||
{
|
||||
|
@ -1678,14 +1663,14 @@ e_view_new(void)
|
|||
|
||||
#ifdef SOFT_DESK
|
||||
/* ONLY alpha software can be "backing stored" */
|
||||
v->options.render_method = RENDER_METHOD_ALPHA_SOFTWARE;
|
||||
v->options.back_pixmap = 1;
|
||||
#else
|
||||
#ifdef X_DESK
|
||||
v->options.render_method = RENDER_METHOD_BASIC_HARDWARE;
|
||||
/*v->options.render_method = RENDER_METHOD_ALPHA_SOFTWARE;*/
|
||||
v->options.back_pixmap = 0;
|
||||
#else
|
||||
v->options.render_method = RENDER_METHOD_3D_HARDWARE;
|
||||
#ifdef X_DESK
|
||||
/*v->options.render_method = RENDER_METHOD_BASIC_HARDWARE;*/
|
||||
v->options.back_pixmap = 0;
|
||||
#else
|
||||
/*v->options.render_method = RENDER_METHOD_3D_HARDWARE;*/
|
||||
v->options.back_pixmap = 0;
|
||||
#endif
|
||||
#endif
|
||||
|
@ -1817,9 +1802,6 @@ e_view_set_dir(E_View * v, char *path)
|
|||
void
|
||||
e_view_realize(E_View * v)
|
||||
{
|
||||
int max_colors = 216;
|
||||
int font_cache = 1024 * 1024;
|
||||
int image_cache = 8192 * 1024;
|
||||
char *font_dir;
|
||||
|
||||
D_ENTER;
|
||||
|
@ -1830,14 +1812,14 @@ e_view_realize(E_View * v)
|
|||
v->size.w, v->size.h);
|
||||
ecore_window_set_delete_inform(v->win.base);
|
||||
font_dir = e_config_get("fonts");
|
||||
v->evas = evas_new_all(ecore_display_get(),
|
||||
|
||||
v->evas = e_evas_new_all(ecore_display_get(),
|
||||
v->win.base,
|
||||
0, 0, v->size.w, v->size.h,
|
||||
v->options.render_method,
|
||||
max_colors, font_cache, image_cache, font_dir);
|
||||
v->win.main = evas_get_window(v->evas);
|
||||
font_dir);
|
||||
v->win.main = e_evas_get_window(v->evas);
|
||||
e_cursors_display_in_window(v->win.main, "View");
|
||||
evas_event_move(v->evas, -999999, -999999);
|
||||
evas_event_feed_mouse_move(v->evas, -999999, -999999);
|
||||
ecore_window_set_events(v->win.base,
|
||||
XEV_VISIBILITY | XEV_CONFIGURE |
|
||||
XEV_PROPERTY | XEV_FOCUS);
|
||||
|
@ -1846,10 +1828,14 @@ e_view_realize(E_View * v)
|
|||
XEV_BUTTON | XEV_IN_OUT | XEV_KEY);
|
||||
if (v->options.back_pixmap)
|
||||
{
|
||||
Evas_Engine_Info_Software_X11 *info;
|
||||
|
||||
v->pmap = ecore_pixmap_new(v->win.main, v->size.w, v->size.h, 0);
|
||||
evas_set_output(v->evas, ecore_display_get(), v->pmap,
|
||||
evas_get_visual(v->evas), evas_get_colormap(v->evas));
|
||||
info = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(v->evas);
|
||||
info->info.drawable = v->pmap;
|
||||
evas_engine_info_set(v->evas, (Evas_Engine_Info *)info);
|
||||
ecore_window_set_background_pixmap(v->win.main, v->pmap);
|
||||
ecore_window_clear(v->win.main);
|
||||
}
|
||||
v->scrollbar.v = e_scrollbar_new(v);
|
||||
e_scrollbar_set_change_func(v->scrollbar.v, e_view_scrollbar_v_change_cb, v);
|
||||
|
@ -1880,7 +1866,7 @@ e_view_realize(E_View * v)
|
|||
void
|
||||
e_view_populate(E_View * v)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
/* populate with icons for all files in the dir we are monitoring.
|
||||
* This has to be called _after_ view_realize because
|
||||
|
@ -1900,7 +1886,7 @@ e_view_populate(E_View * v)
|
|||
void
|
||||
e_view_update(E_View * v)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -1938,24 +1924,19 @@ e_view_update(E_View * v)
|
|||
}
|
||||
if (v->options.back_pixmap)
|
||||
{
|
||||
Imlib_Updates up;
|
||||
Evas_List *up, *fp;
|
||||
Evas_Rectangle *u;
|
||||
|
||||
up = evas_render_updates(v->evas);
|
||||
fp = up = evas_render_updates(v->evas);
|
||||
/* special code to handle if we are double buffering to a pixmap */
|
||||
/* and clear sections of the window if they got updated */
|
||||
if (up)
|
||||
while (up)
|
||||
{
|
||||
Imlib_Updates u;
|
||||
|
||||
for (u = up; u; u = imlib_updates_get_next(u))
|
||||
{
|
||||
int x, y, w, h;
|
||||
|
||||
imlib_updates_get_coordinates(u, &x, &y, &w, &h);
|
||||
ecore_window_clear_area(v->win.main, x, y, w, h);
|
||||
}
|
||||
imlib_updates_free(up);
|
||||
u = up->data;
|
||||
ecore_window_clear_area(v->win.main, u->x, u->y, u->w, u->h);
|
||||
up = evas_list_next(up);
|
||||
}
|
||||
evas_render_updates_free(fp);
|
||||
}
|
||||
else
|
||||
evas_render(v->evas);
|
||||
|
@ -1980,7 +1961,7 @@ e_view_file_add(E_View * v, E_File * f)
|
|||
ic->changed = 1;
|
||||
/* this basically allocates the obj.icon struct. Its image will be
|
||||
* set later in icon_update_state */
|
||||
ic->obj.icon = evas_add_image_from_file(ic->view->evas, NULL);
|
||||
ic->obj.icon = evas_object_image_add(ic->view->evas);
|
||||
ic->obj.text = e_text_new(ic->view->evas, f->file, "filename");
|
||||
v->icons = evas_list_append(v->icons, ic);
|
||||
v->extents.valid = 0;
|
||||
|
@ -2116,9 +2097,9 @@ e_view_bg_reload(E_View * v)
|
|||
v->bg = NULL;
|
||||
if (v->evas)
|
||||
{
|
||||
size = evas_get_image_cache(v->evas);
|
||||
evas_set_image_cache(v->evas, 0);
|
||||
evas_set_image_cache(v->evas, size);
|
||||
size = evas_object_image_cache_get(v->evas);
|
||||
evas_object_image_cache_flush(v->evas);
|
||||
evas_object_image_cache_set(v->evas, size);
|
||||
}
|
||||
e_db_flush();
|
||||
}
|
||||
|
@ -2147,9 +2128,9 @@ e_view_bg_reload(E_View * v)
|
|||
e_bg_set_layer(v->bg, 100);
|
||||
e_bg_resize(v->bg, v->size.w, v->size.h);
|
||||
|
||||
e_bg_callback_add(v->bg, CALLBACK_MOUSE_UP, e_bg_up_cb, v);
|
||||
e_bg_callback_add(v->bg, CALLBACK_MOUSE_DOWN, e_bg_down_cb, v);
|
||||
e_bg_callback_add(v->bg, CALLBACK_MOUSE_MOVE, e_bg_move_cb, v);
|
||||
e_bg_callback_add(v->bg, EVAS_CALLBACK_MOUSE_UP, e_bg_up_cb, v);
|
||||
e_bg_callback_add(v->bg, EVAS_CALLBACK_MOUSE_DOWN, e_bg_down_cb, v);
|
||||
e_bg_callback_add(v->bg, EVAS_CALLBACK_MOUSE_MOVE, e_bg_move_cb, v);
|
||||
|
||||
e_bg_show(v->bg);
|
||||
}
|
||||
|
@ -2217,32 +2198,13 @@ e_dnd_data_request(Ecore_Event * ev)
|
|||
* } Ecore_Event_Dnd_Data_Request;
|
||||
*/
|
||||
E_View *v;
|
||||
Evas_List ll;
|
||||
Evas_List * ll;
|
||||
char *data = NULL;
|
||||
|
||||
D_ENTER;
|
||||
/* Me, my null, and an extra for the end '/r/n'... */
|
||||
e_strdup(data, "");
|
||||
|
||||
/* Need hostname for URL (file://hostname/...) */
|
||||
/* nooo nooo noo - never encode host names in url's -
|
||||
* file:/path/blah is local only - secondly.. why encode
|
||||
* url's with hosts? e17 only handles local files in the
|
||||
* fs - so why use url styles at all? NB - in my testing
|
||||
* in efm all the other apps didnt use the file:/host/blah
|
||||
* url formatting... so i think we want to do what everyone
|
||||
* else does here
|
||||
*/
|
||||
|
||||
/* this is o evil it's not funny - gethostbyname? you know
|
||||
* your window manager) could get hung here for minutes doing
|
||||
* this lookup? bad bad bad.
|
||||
*
|
||||
* if(gethostname( hostname, PATH_MAX))
|
||||
* {
|
||||
* strcpy( hostname, "localhost");
|
||||
* }
|
||||
*/
|
||||
e = ev->event;
|
||||
if (!(v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
D_RETURN;
|
||||
|
@ -2258,6 +2220,7 @@ e_dnd_data_request(Ecore_Event * ev)
|
|||
ic = ll->data;
|
||||
if (ic->state.selected)
|
||||
{
|
||||
int size;
|
||||
char buf[PATH_MAX];
|
||||
|
||||
if (first)
|
||||
|
@ -2271,9 +2234,10 @@ e_dnd_data_request(Ecore_Event * ev)
|
|||
/* FIXME */
|
||||
snprintf(buf, PATH_MAX, "\r\nfile:%s/%s", v->dir->dir,
|
||||
ic->file->file);
|
||||
REALLOC(data, char, strlen(data) + strlen(buf) + 1);
|
||||
size = strlen(data) + strlen(buf) + 1;
|
||||
REALLOC(data, char, size);
|
||||
|
||||
strcat(data, buf);
|
||||
strncat(data, buf, size);
|
||||
}
|
||||
}
|
||||
ecore_dnd_send_data(e->source_win, e->win,
|
||||
|
@ -2291,6 +2255,7 @@ e_dnd_data_request(Ecore_Event * ev)
|
|||
ic = ll->data;
|
||||
if (ic->state.selected)
|
||||
{
|
||||
int size;
|
||||
char buf[PATH_MAX];
|
||||
|
||||
if (first)
|
||||
|
@ -2304,9 +2269,10 @@ e_dnd_data_request(Ecore_Event * ev)
|
|||
/*FIXME */
|
||||
snprintf(buf, PATH_MAX, "\n%s/%s", v->dir->dir,
|
||||
ic->file->file);
|
||||
REALLOC(data, char, strlen(data) + strlen(buf) + 1);
|
||||
size = strlen(data) + strlen(buf) + 1;
|
||||
REALLOC(data, char, size);
|
||||
|
||||
strcat(data, buf);
|
||||
strncat(data, buf, size);
|
||||
}
|
||||
}
|
||||
ecore_dnd_send_data(e->source_win, e->win,
|
||||
|
|
30
src/view.h
30
src/view.h
|
@ -13,6 +13,8 @@
|
|||
#include "view_layout.h"
|
||||
#include "observer.h"
|
||||
|
||||
/*typedef int EVAS_RENDER_METHOD;*/
|
||||
|
||||
#ifndef E_VIEW_TYPEDEF
|
||||
#define E_VIEW_TYPEDEF
|
||||
typedef struct _E_View E_View;
|
||||
|
@ -74,12 +76,12 @@ struct _E_View
|
|||
|
||||
struct
|
||||
{
|
||||
Evas_Render_Method render_method;
|
||||
/* Evas_Render_Method render_method;*/
|
||||
int back_pixmap;
|
||||
}
|
||||
options;
|
||||
|
||||
Evas evas;
|
||||
Evas * evas;
|
||||
struct
|
||||
{
|
||||
Window base;
|
||||
|
@ -163,16 +165,16 @@ struct _E_View
|
|||
config;
|
||||
struct
|
||||
{
|
||||
Evas_Object clip;
|
||||
Evas_Object edge_l;
|
||||
Evas_Object edge_r;
|
||||
Evas_Object edge_t;
|
||||
Evas_Object edge_b;
|
||||
Evas_Object middle;
|
||||
Evas_Object grad_l;
|
||||
Evas_Object grad_r;
|
||||
Evas_Object grad_t;
|
||||
Evas_Object grad_b;
|
||||
Evas_Object * clip;
|
||||
Evas_Object * edge_l;
|
||||
Evas_Object * edge_r;
|
||||
Evas_Object * edge_t;
|
||||
Evas_Object * edge_b;
|
||||
Evas_Object * middle;
|
||||
Evas_Object * grad_l;
|
||||
Evas_Object * grad_r;
|
||||
Evas_Object * grad_t;
|
||||
Evas_Object * grad_b;
|
||||
}
|
||||
obj;
|
||||
}
|
||||
|
@ -226,13 +228,13 @@ struct _E_View
|
|||
|
||||
E_Iconbar *iconbar;
|
||||
|
||||
Evas_List icons;
|
||||
Evas_List * icons;
|
||||
|
||||
int have_resort_queued;
|
||||
|
||||
int changed;
|
||||
|
||||
Evas_List epplet_contexts;
|
||||
Evas_List * epplet_contexts;
|
||||
Ebits_Object epplet_layout;
|
||||
|
||||
E_View_Look *look;
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
#include "e.h"
|
||||
#include "view_layout.h"
|
||||
#include "desktops.h"
|
||||
#include "util.h"
|
||||
|
||||
static void e_view_layout_cleanup(E_View_Layout *layout);
|
||||
static int e_view_layout_add_element(E_View_Layout *layout, char *name);
|
||||
|
||||
E_View_Layout *
|
||||
e_view_layout_new(E_View *v)
|
||||
e_view_layout_new(E_Desktop *d)
|
||||
{
|
||||
E_View_Layout *layout;
|
||||
|
||||
|
@ -17,7 +17,7 @@ e_view_layout_new(E_View *v)
|
|||
|
||||
e_object_init(E_OBJECT(layout), (E_Cleanup_Func) e_view_layout_cleanup);
|
||||
|
||||
layout->view = v;
|
||||
layout->desktop = d;
|
||||
|
||||
D_RETURN_(layout);
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ e_view_layout_new(E_View *v)
|
|||
static void
|
||||
e_view_layout_cleanup(E_View_Layout *layout)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -54,22 +54,19 @@ void
|
|||
e_view_layout_realize(E_View_Layout *layout)
|
||||
{
|
||||
Ebits_Object bits;
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
if (!layout) D_RETURN;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
if (layout->view->look->obj->layout)
|
||||
bits = ebits_load(layout->view->look->obj->layout);
|
||||
if (layout->desktop->look->obj->layout)
|
||||
bits = ebits_load(layout->desktop->look->obj->layout);
|
||||
else
|
||||
{
|
||||
/* Our look doesnt provide a layout, falls back */
|
||||
char buf[PATH_MAX];
|
||||
if(layout->view->is_desktop)
|
||||
snprintf(buf, PATH_MAX, "%sdesktop.bits.db", e_config_get("layout"));
|
||||
else
|
||||
snprintf(buf, PATH_MAX, "%sview.bits.db", e_config_get("layout"));
|
||||
snprintf(buf, PATH_MAX, "%sdesktop.bits.db", e_config_get("layout"));
|
||||
|
||||
bits = ebits_load(buf);
|
||||
}
|
||||
|
@ -78,12 +75,14 @@ e_view_layout_realize(E_View_Layout *layout)
|
|||
D("layout bits loaded!\n")
|
||||
layout->bits = bits;
|
||||
layout->mod_time = ecore_get_time();
|
||||
if (layout->view->evas)
|
||||
if (layout->desktop->evas)
|
||||
{
|
||||
ebits_add_to_evas(layout->bits, layout->view->evas);
|
||||
ebits_add_to_evas(layout->bits, layout->desktop->evas);
|
||||
ebits_move(layout->bits, 0, 0);
|
||||
ebits_resize(layout->bits, layout->view->size.w, layout->view->size.h);
|
||||
D("add layout- w:%i, h:%i\n", layout->view->size.w, layout->view->size.h);
|
||||
ebits_resize(layout->bits, layout->desktop->real.w,
|
||||
layout->desktop->real.h);
|
||||
D("add layout- w:%i, h:%i\n", layout->desktop->real.w,
|
||||
layout->desktop->real.h);
|
||||
for (l = ebits_get_bit_names(layout->bits); l; l = l->next)
|
||||
{
|
||||
char *name = l->data;
|
||||
|
@ -103,7 +102,7 @@ static int
|
|||
e_view_layout_add_element(E_View_Layout *layout, char *name)
|
||||
{
|
||||
E_View_Layout_Element *el;
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
double x, y, w, h;
|
||||
|
||||
D_ENTER;
|
||||
|
@ -141,7 +140,7 @@ e_view_layout_add_element(E_View_Layout *layout, char *name)
|
|||
int
|
||||
e_view_layout_delete_element(E_View_Layout *layout, char *name)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -166,7 +165,7 @@ int
|
|||
e_view_layout_get_element_geometry(E_View_Layout *layout, char *name,
|
||||
double *x, double *y, double *w, double *h)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
D_ENTER;
|
||||
if (layout && name)
|
||||
{
|
||||
|
@ -192,7 +191,7 @@ e_view_layout_get_element_geometry(E_View_Layout *layout, char *name,
|
|||
void
|
||||
e_view_layout_update(E_View_Layout *layout)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
double x, y, w, h;
|
||||
D_ENTER;
|
||||
|
||||
|
@ -200,8 +199,9 @@ e_view_layout_update(E_View_Layout *layout)
|
|||
D_RETURN;
|
||||
/* move/resize bits */
|
||||
ebits_move(layout->bits, 0, 0);
|
||||
ebits_resize(layout->bits, layout->view->size.w, layout->view->size.h);
|
||||
D("update layout- w:%i, h:%i\n", layout->view->size.w, layout->view->size.h);
|
||||
ebits_resize(layout->bits, layout->desktop->real.w, layout->desktop->real.h);
|
||||
D("update layout- w:%i, h:%i\n", layout->desktop->real.w,
|
||||
layout->desktop->real.h);
|
||||
|
||||
/* update elements */
|
||||
for (l = layout->elements; l; l = l->next)
|
||||
|
@ -221,26 +221,27 @@ e_view_layout_update(E_View_Layout *layout)
|
|||
if (e_view_layout_get_element_geometry(layout, "Icons",
|
||||
&x, &y, &w, &h))
|
||||
{
|
||||
layout->view->spacing.window.l = x;
|
||||
layout->view->spacing.window.r = layout->view->size.w - (x + w);
|
||||
layout->view->spacing.window.t = y;
|
||||
layout->view->spacing.window.b = layout->view->size.h - (y + h);
|
||||
/* layout->desktop->spacing.window.l = x;
|
||||
layout->desktop->spacing.window.r = layout->desktop->size.w - (x + w);
|
||||
layout->desktop->spacing.window.t = y;
|
||||
layout->desktop->spacing.window.b = layout->desktop->size.h - (y + h);
|
||||
*/
|
||||
}
|
||||
if (e_view_layout_get_element_geometry(layout, "Scrollbar_H",
|
||||
&x, &y, &w, &h))
|
||||
{
|
||||
e_scrollbar_move(layout->view->scrollbar.h, x, y);
|
||||
e_scrollbar_resize(layout->view->scrollbar.h, w, h);
|
||||
/* e_scrollbar_move(layout->desktop->scrollbar.h, x, y);
|
||||
e_scrollbar_resize(layout->desktop->scrollbar.h, w, h); */
|
||||
}
|
||||
|
||||
if (e_view_layout_get_element_geometry(layout, "Scrollbar_V",
|
||||
&x, &y, &w, &h))
|
||||
{
|
||||
e_scrollbar_move(layout->view->scrollbar.v, x, y);
|
||||
e_scrollbar_resize(layout->view->scrollbar.v, w, h);
|
||||
/* e_scrollbar_move(layout->desktop->scrollbar.v, x, y);
|
||||
e_scrollbar_resize(layout->desktop->scrollbar.v, w, h); */
|
||||
}
|
||||
|
||||
if (layout->view->iconbar)
|
||||
e_iconbar_fix(layout->view->iconbar);
|
||||
if (layout->desktop->iconbar)
|
||||
e_iconbar_fix(layout->desktop->iconbar);
|
||||
D_RETURN;
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define E_VIEW_LAYOUT_H
|
||||
|
||||
#include "e.h"
|
||||
#include "view.h"
|
||||
#include "e_view_look.h"
|
||||
#include "object.h"
|
||||
|
||||
#ifndef E_VIEW_LAYOUT_TYPEDEF
|
||||
|
@ -16,16 +16,15 @@ typedef struct _E_View_Layout_Element E_View_Layout_Element;
|
|||
typedef struct _E_View E_View;
|
||||
#endif
|
||||
|
||||
|
||||
struct _E_View_Layout
|
||||
{
|
||||
E_Object o;
|
||||
|
||||
E_View *view;
|
||||
E_Desktop *desktop;
|
||||
|
||||
Ebits_Object bits;
|
||||
|
||||
Evas_List elements;
|
||||
Evas_List * elements;
|
||||
|
||||
time_t mod_time;
|
||||
};
|
||||
|
@ -36,7 +35,7 @@ struct _E_View_Layout_Element
|
|||
double x, y, w, h;
|
||||
};
|
||||
|
||||
E_View_Layout *e_view_layout_new(E_View *v);
|
||||
E_View_Layout *e_view_layout_new(E_Desktop *d);
|
||||
void e_view_layout_realize(E_View_Layout *layout);
|
||||
void e_view_layout_update(E_View_Layout *layout);
|
||||
|
||||
|
|
293
tools/e_setup.c
293
tools/e_setup.c
|
@ -1,4 +1,6 @@
|
|||
#include <X11/Xlib.h>
|
||||
#include <Evas.h>
|
||||
#include <Evas_Engine_Software_X11.h>
|
||||
#include <Ebits.h>
|
||||
#include <Ecore.h>
|
||||
#include <Edb.h>
|
||||
|
@ -48,6 +50,17 @@ __dest = malloc(strlen(__var) + 1); \
|
|||
if (__dest) strcpy(__dest, __var); \
|
||||
} }
|
||||
|
||||
#define RENDER_METHOD_ALPHA_SOFTWARE 0
|
||||
|
||||
Evas *
|
||||
e_evas_new_all(Display *disp, Window parent_window,
|
||||
int x, int y, int win_w, int win_h,
|
||||
int render,
|
||||
int max_colors, int fc, int ic,
|
||||
char *font_dir);
|
||||
Window
|
||||
e_evas_get_window(Evas *evas);
|
||||
|
||||
/* */
|
||||
/* */
|
||||
/* */
|
||||
|
@ -241,12 +254,12 @@ e_file_link(char *link)
|
|||
return f;
|
||||
}
|
||||
|
||||
Evas_List
|
||||
Evas_List *
|
||||
e_file_list_dir(char *dir)
|
||||
{
|
||||
DIR *dirp;
|
||||
struct dirent *dp;
|
||||
Evas_List list;
|
||||
Evas_List * list;
|
||||
|
||||
dirp = opendir(dir);
|
||||
if (!dirp) return NULL;
|
||||
|
@ -256,7 +269,7 @@ e_file_list_dir(char *dir)
|
|||
if ((strcmp(dp->d_name, ".")) &&
|
||||
(strcmp(dp->d_name, "..")))
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
char *f;
|
||||
|
||||
/* insertion sort */
|
||||
|
@ -279,7 +292,7 @@ e_file_list_dir(char *dir)
|
|||
}
|
||||
|
||||
void
|
||||
e_file_list_dir_free(Evas_List list)
|
||||
e_file_list_dir_free(Evas_List * list)
|
||||
{
|
||||
while (list)
|
||||
{
|
||||
|
@ -299,7 +312,7 @@ struct _text_zone
|
|||
{
|
||||
double x, y;
|
||||
|
||||
Evas_Object clip;
|
||||
Evas_Object * clip;
|
||||
Ebits_Object *bg;
|
||||
|
||||
struct {
|
||||
|
@ -313,13 +326,13 @@ struct _text_zone
|
|||
double dx, dy;
|
||||
int go;
|
||||
} move;
|
||||
Evas_List lines;
|
||||
Evas_List buttons;
|
||||
Evas_List * lines;
|
||||
Evas_List * buttons;
|
||||
};
|
||||
|
||||
struct _text_zone_button
|
||||
{
|
||||
Evas_Object label;
|
||||
Evas_Object * label;
|
||||
Ebits_Object *bg;
|
||||
|
||||
double x, y, w, h;
|
||||
|
@ -329,9 +342,9 @@ struct _text_zone_button
|
|||
|
||||
Window win_main;
|
||||
Window win_evas;
|
||||
Evas evas;
|
||||
Evas *evas;
|
||||
double scr_w, scr_h;
|
||||
Evas_Object pointer;
|
||||
Evas_Object * pointer;
|
||||
|
||||
/* our stuff */
|
||||
void idle(void *data);
|
||||
|
@ -364,7 +377,7 @@ window_expose(Ecore_Event * ev)
|
|||
Ecore_Event_Window_Expose *e;
|
||||
|
||||
e = (Ecore_Event_Window_Expose *)ev->event;
|
||||
evas_update_rect(evas, e->x, e->y, e->w, e->h);
|
||||
evas_damage_rectangle_add(evas, e->x, e->y, e->w, e->h);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -373,10 +386,10 @@ mouse_move(Ecore_Event * ev)
|
|||
Ecore_Event_Mouse_Move *e;
|
||||
|
||||
e = (Ecore_Event_Mouse_Move *)ev->event;
|
||||
evas_move(evas, pointer,
|
||||
evas_screen_x_to_world(evas, e->x),
|
||||
evas_screen_y_to_world(evas, e->y));
|
||||
evas_event_move(evas, e->x, e->y);
|
||||
evas_object_move(pointer,
|
||||
evas_coord_screen_x_to_world(evas, e->x),
|
||||
evas_coord_screen_y_to_world(evas, e->y));
|
||||
evas_event_feed_mouse_move(evas, e->x, e->y);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -385,7 +398,7 @@ mouse_down(Ecore_Event * ev)
|
|||
Ecore_Event_Mouse_Down *e;
|
||||
|
||||
e = (Ecore_Event_Mouse_Down *)ev->event;
|
||||
evas_event_button_down(evas, e->x, e->y, e->button);
|
||||
evas_event_feed_mouse_down(evas, e->button);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -394,7 +407,7 @@ mouse_up(Ecore_Event * ev)
|
|||
Ecore_Event_Mouse_Up *e;
|
||||
|
||||
e = (Ecore_Event_Mouse_Up *)ev->event;
|
||||
evas_event_button_up(evas, e->x, e->y, e->button);
|
||||
evas_event_feed_mouse_up(evas, e->button);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -438,7 +451,7 @@ setup(void)
|
|||
|
||||
ecore_window_get_geometry(0, NULL, NULL, &root_w, &root_h);
|
||||
win_main = ecore_window_override_new(0, 0, 0, root_w, root_h);
|
||||
evas = evas_new_all(ecore_display_get(),
|
||||
evas = e_evas_new_all(ecore_display_get(),
|
||||
win_main,
|
||||
0, 0, root_w, root_w,
|
||||
RENDER_METHOD_ALPHA_SOFTWARE,
|
||||
|
@ -456,12 +469,15 @@ setup(void)
|
|||
e_bg_resize(bg, root_w, root_h);
|
||||
e_bg_show(bg);
|
||||
|
||||
pointer = evas_add_image_from_file(evas, PACKAGE_DATA_DIR"/data/setup/pointer.png");
|
||||
evas_set_pass_events(evas, pointer, 1);
|
||||
evas_set_layer(evas, pointer, 1000000);
|
||||
evas_show(evas, pointer);
|
||||
pointer = evas_object_image_add(evas);
|
||||
evas_object_image_file_set(pointer,
|
||||
PACKAGE_DATA_DIR"/data/setup/pointer.png",
|
||||
NULL);
|
||||
evas_object_pass_events_set(pointer, 1);
|
||||
evas_object_layer_set(pointer, 1000000);
|
||||
evas_object_show(pointer);
|
||||
|
||||
win_evas = evas_get_window(evas);
|
||||
win_evas = e_evas_get_window(evas);
|
||||
ecore_window_set_events(win_evas, XEV_EXPOSE | XEV_BUTTON | XEV_MOUSE_MOVE | XEV_KEY);
|
||||
ecore_set_blank_pointer(win_evas);
|
||||
|
||||
|
@ -470,15 +486,18 @@ setup(void)
|
|||
ecore_keyboard_grab(win_evas);
|
||||
|
||||
{
|
||||
Evas_Object o;
|
||||
Evas_Object * o;
|
||||
int w, h;
|
||||
|
||||
o = evas_add_image_from_file(evas, PACKAGE_DATA_DIR"/data/setup/logo.png");
|
||||
evas_get_image_size(evas, o, &w, &h);
|
||||
evas_move(evas, o, (root_w - w) / 2, -32);
|
||||
evas_set_layer(evas, o, 20);
|
||||
evas_show(evas, o);
|
||||
evas_set_pass_events(evas, o, 1);
|
||||
o = evas_object_image_add(evas);
|
||||
evas_object_image_file_set(o,
|
||||
PACKAGE_DATA_DIR"/data/setup/logo.png",
|
||||
NULL);
|
||||
evas_object_image_size_get(o, &w, &h);
|
||||
evas_object_move(o, (root_w - w) / 2, -32);
|
||||
evas_object_layer_set(o, 20);
|
||||
evas_object_show(o);
|
||||
evas_object_pass_events_set(o, 1);
|
||||
}
|
||||
{
|
||||
Text_Zone *txz;
|
||||
|
@ -503,14 +522,18 @@ setup(void)
|
|||
|
||||
}
|
||||
{
|
||||
Evas_Object o;
|
||||
Evas_Object * o;
|
||||
|
||||
o = evas_add_image_from_file(evas, PACKAGE_DATA_DIR"/data/setup/anim/e001.png");
|
||||
evas_move(evas, o, root_w - 120, -15);
|
||||
evas_set_layer(evas, o, 30);
|
||||
evas_show(evas, o);
|
||||
o = evas_object_image_add(evas);
|
||||
evas_object_image_file_set(o,
|
||||
PACKAGE_DATA_DIR"/data/setup/anim/e001.png",
|
||||
NULL);
|
||||
|
||||
evas_object_move(o, root_w - 120, -15);
|
||||
evas_object_layer_set(o, 30);
|
||||
evas_object_show(o);
|
||||
animate_logo(0, o);
|
||||
evas_set_pass_events(evas, o, 1);
|
||||
evas_object_pass_events_set(o, 1);
|
||||
}
|
||||
scr_w = root_w;
|
||||
scr_h = root_h;
|
||||
|
@ -523,13 +546,13 @@ _txz_cb_show(void *data)
|
|||
|
||||
txz = (Text_Zone *)data;
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
for (l = txz->lines; l; l = l->next)
|
||||
{
|
||||
evas_show(evas, l->data);
|
||||
evas_object_show(l->data);
|
||||
}
|
||||
evas_show(evas, txz->clip);
|
||||
evas_object_show(txz->clip);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -540,13 +563,13 @@ _txz_cb_hide(void *data)
|
|||
|
||||
txz = (Text_Zone *)data;
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
for (l = txz->lines; l; l = l->next)
|
||||
{
|
||||
evas_hide(evas, l->data);
|
||||
evas_object_hide(l->data);
|
||||
}
|
||||
evas_hide(evas, txz->clip);
|
||||
evas_object_hide(txz->clip);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -577,11 +600,11 @@ _txz_cb_raise(void *data)
|
|||
|
||||
txz = (Text_Zone *)data;
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
for (l = txz->lines; l; l = l->next)
|
||||
{
|
||||
evas_raise(evas, l->data);
|
||||
evas_object_raise(l->data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -593,11 +616,11 @@ _txz_cb_lower(void *data)
|
|||
|
||||
txz = (Text_Zone *)data;
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
for (l = txz->lines; l; l = l->next)
|
||||
{
|
||||
evas_lower(evas, l->data);
|
||||
evas_object_lower(l->data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -609,11 +632,11 @@ _txz_cb_set_layer(void *data, int lay)
|
|||
|
||||
txz = (Text_Zone *)data;
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
for (l = txz->lines; l; l = l->next)
|
||||
{
|
||||
evas_set_layer(evas, l->data, lay);
|
||||
evas_object_layer_set(l->data, lay);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -627,13 +650,13 @@ _txz_cb_get_min_size(void *data, double *minw, double *minh)
|
|||
*minw = 0;
|
||||
*minh = 0;
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
for (l = txz->lines; l; l = l->next)
|
||||
{
|
||||
double w, h;
|
||||
|
||||
evas_get_geometry(evas, l->data, NULL, NULL, &w, &h);
|
||||
evas_object_geometry_get(l->data, NULL, NULL, &w, &h);
|
||||
if (w > *minw) *minw = w;
|
||||
*minh += h;
|
||||
}
|
||||
|
@ -651,13 +674,13 @@ _txz_cb_get_max_size(void *data, double *maxw, double *maxh)
|
|||
*maxw = 0;
|
||||
*maxh = 0;
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
for (l = txz->lines; l; l = l->next)
|
||||
{
|
||||
double w, h;
|
||||
|
||||
evas_get_geometry(evas, l->data, NULL, NULL, &w, &h);
|
||||
evas_object_geometry_get(l->data, NULL, NULL, &w, &h);
|
||||
if (w > *maxw) *maxw = w;
|
||||
*maxh += h;
|
||||
}
|
||||
|
@ -735,8 +758,8 @@ txz_new(double x, double y, char *text)
|
|||
txz->x = 0;
|
||||
txz->y = 0;
|
||||
|
||||
txz->clip = evas_add_rectangle(evas);
|
||||
evas_set_color(evas, txz->clip, 255, 255, 255, 255);
|
||||
txz->clip = evas_object_rectangle_add(evas);
|
||||
evas_object_color_set(txz->clip, 255, 255, 255, 255);
|
||||
txz->bg = ebits_load(PACKAGE_DATA_DIR"/data/setup/textzone.bits.db");
|
||||
if (txz->bg)
|
||||
{
|
||||
|
@ -769,15 +792,15 @@ txz_new(double x, double y, char *text)
|
|||
NULL,
|
||||
txz);
|
||||
ebits_set_classed_bit_callback(txz->bg, "Title_Bar",
|
||||
CALLBACK_MOUSE_DOWN,
|
||||
EVAS_CALLBACK_MOUSE_DOWN,
|
||||
_txz_cb_title_down,
|
||||
txz);
|
||||
ebits_set_classed_bit_callback(txz->bg, "Title_Bar",
|
||||
CALLBACK_MOUSE_UP,
|
||||
EVAS_CALLBACK_MOUSE_UP,
|
||||
_txz_cb_title_up,
|
||||
txz);
|
||||
ebits_set_classed_bit_callback(txz->bg, "Title_Bar",
|
||||
CALLBACK_MOUSE_MOVE,
|
||||
EVAS_CALLBACK_MOUSE_MOVE,
|
||||
_txz_cb_title_move,
|
||||
txz);
|
||||
}
|
||||
|
@ -791,13 +814,13 @@ txz_new(double x, double y, char *text)
|
|||
void
|
||||
txz_free(Text_Zone *txz)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
if (txz->bg)
|
||||
ebits_free(txz->bg);
|
||||
evas_del_object(evas, txz->clip);
|
||||
evas_object_del(txz->clip);
|
||||
for (l = txz->lines; l; l = l->next)
|
||||
evas_del_object(evas, (Evas_Object)l->data);
|
||||
evas_object_del((Evas_Object *)l->data);
|
||||
if (txz->lines) evas_list_free(txz->lines);
|
||||
FREE(txz);
|
||||
}
|
||||
|
@ -805,19 +828,19 @@ txz_free(Text_Zone *txz)
|
|||
void
|
||||
txz_show(Text_Zone *txz)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
if (txz->bg)
|
||||
ebits_show(txz->bg);
|
||||
for (l = txz->lines; l; l = l->next)
|
||||
evas_show(evas, (Evas_Object)l->data);
|
||||
evas_object_show((Evas_Object *)l->data);
|
||||
for (l = txz->buttons; l; l = l->next)
|
||||
{
|
||||
Text_Zone_Button *tb;
|
||||
|
||||
tb = l->data;
|
||||
if (tb->bg) ebits_show(tb->bg);
|
||||
evas_show(evas, tb->label);
|
||||
evas_object_show(tb->label);
|
||||
}
|
||||
txz_adjust_txt(txz);
|
||||
}
|
||||
|
@ -825,19 +848,19 @@ txz_show(Text_Zone *txz)
|
|||
void
|
||||
txz_hide(Text_Zone *txz)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
if (txz->bg)
|
||||
ebits_hide(txz->bg);
|
||||
for (l = txz->lines; l; l = l->next)
|
||||
evas_hide(evas, (Evas_Object)l->data);
|
||||
evas_object_hide((Evas_Object *)l->data);
|
||||
for (l = txz->buttons; l; l = l->next)
|
||||
{
|
||||
Text_Zone_Button *tb;
|
||||
|
||||
tb = l->data;
|
||||
if (tb->bg) ebits_hide(tb->bg);
|
||||
evas_hide(evas, tb->label);
|
||||
evas_object_hide(tb->label);
|
||||
}
|
||||
txz_adjust_txt(txz);
|
||||
}
|
||||
|
@ -845,7 +868,7 @@ txz_hide(Text_Zone *txz)
|
|||
void
|
||||
txz_move(Text_Zone *txz, double x, double y)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
txz->x = x;
|
||||
txz->y = y;
|
||||
|
@ -861,10 +884,10 @@ txz_text(Text_Zone *txz, char *text)
|
|||
{
|
||||
char *p, *tok;
|
||||
double ypos;
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
|
||||
for (l = txz->lines; l; l = l->next)
|
||||
evas_del_object(evas, (Evas_Object)l->data);
|
||||
evas_object_del((Evas_Object *)l->data);
|
||||
if (txz->lines) evas_list_free(txz->lines);
|
||||
txz->lines = NULL;
|
||||
|
||||
|
@ -875,7 +898,7 @@ txz_text(Text_Zone *txz, char *text)
|
|||
char line[4096], size[2], align[2], *str;
|
||||
int sz;
|
||||
double tw, th, hadv, vadv;
|
||||
Evas_Object o;
|
||||
Evas_Object * o;
|
||||
|
||||
strncpy(line, p, (tok - p));
|
||||
line[tok - p] = 0;
|
||||
|
@ -887,21 +910,23 @@ txz_text(Text_Zone *txz, char *text)
|
|||
|
||||
sz = atoi(size);
|
||||
sz = 4 + (sz * 2);
|
||||
o = evas_add_text(evas, "nationff", sz, str);
|
||||
evas_set_layer(evas, o, 9);
|
||||
evas_set_color(evas, o, 0, 0, 0, 255);
|
||||
o = evas_object_text_add(evas);
|
||||
evas_object_text_font_set(o, "nationff", sz);
|
||||
evas_object_text_text_set(o, str);
|
||||
evas_object_layer_set(o, 9);
|
||||
evas_object_color_set(o, 0, 0, 0, 255);
|
||||
txz->lines = evas_list_append(txz->lines, o);
|
||||
tw = evas_get_text_width(evas, o);
|
||||
th = evas_get_text_height(evas, o);
|
||||
evas_text_get_advance(evas, o, &hadv, &vadv);
|
||||
evas_object_geometry_get(o, NULL, NULL, &tw, &th);
|
||||
hadv = evas_object_text_horiz_advance_get(o);
|
||||
vadv = evas_object_text_vert_advance_get(o);
|
||||
if (align[0] == 'l')
|
||||
evas_move(evas, o, txz->x, ypos);
|
||||
evas_object_move(o, txz->x, ypos);
|
||||
else if (align[0] == 'r')
|
||||
evas_move(evas, o, txz->x + 512 - tw, ypos);
|
||||
evas_object_move(o, txz->x + 512 - tw, ypos);
|
||||
else
|
||||
evas_move(evas, o, txz->x + ((512 - tw) / 2), ypos);
|
||||
evas_set_clip(evas, o, txz->clip);
|
||||
evas_put_data(evas, o, "align", (void *)((int)align[0]));
|
||||
evas_object_move(o, txz->x + ((512 - tw) / 2), ypos);
|
||||
evas_object_clip_set(o, txz->clip);
|
||||
evas_object_data_set(o, "align", (void *)((int)align[0]));
|
||||
ypos += th;
|
||||
|
||||
p = tok + 1;
|
||||
|
@ -927,10 +952,12 @@ txz_button(Text_Zone *txz, char *text, void (*func) (void *data), void *data)
|
|||
ZERO(tb, Text_Zone_Button, 1);
|
||||
|
||||
txz->buttons = evas_list_append(txz->buttons, tb);
|
||||
tb->label = evas_add_text(evas, "nationff", 12, text);
|
||||
evas_set_pass_events(evas, tb->label, 1);
|
||||
evas_set_color(evas, tb->label, 0, 0, 0, 255);
|
||||
evas_set_layer(evas, tb->label, 12);
|
||||
tb->label = evas_object_text_add(evas);
|
||||
evas_object_text_font_set(tb->label,"nationff", 12);
|
||||
evas_object_text_text_set(tb->label, text);
|
||||
evas_object_pass_events_set(tb->label, 1);
|
||||
evas_object_color_set(tb->label, 0, 0, 0, 255);
|
||||
evas_object_layer_set(tb->label, 12);
|
||||
tb->bg = ebits_load(PACKAGE_DATA_DIR"/data/setup/textzone_button.bits.db");
|
||||
if (tb->bg)
|
||||
ebits_add_to_evas(tb->bg, evas);
|
||||
|
@ -940,28 +967,27 @@ txz_button(Text_Zone *txz, char *text, void (*func) (void *data), void *data)
|
|||
void
|
||||
txz_adjust_txt(Text_Zone *txz)
|
||||
{
|
||||
Evas_List l;
|
||||
Evas_List * l;
|
||||
double ypos;
|
||||
double xpos;
|
||||
|
||||
ypos = txz->l.y + 4;
|
||||
evas_move(evas, txz->clip, txz->l.x, txz->l.y);
|
||||
evas_resize(evas, txz->clip, txz->l.w, txz->l.h);
|
||||
evas_object_move(txz->clip, txz->l.x, txz->l.y);
|
||||
evas_object_resize(txz->clip, txz->l.w, txz->l.h);
|
||||
for (l = txz->lines; l; l = l->next)
|
||||
{
|
||||
Evas_Object o;
|
||||
Evas_Object * o;
|
||||
double tw, th;
|
||||
double x;
|
||||
char align;
|
||||
|
||||
o = l->data;
|
||||
align = (char)((int)evas_get_data(evas, o, "align"));
|
||||
align = (char)((int)evas_object_data_get(o, "align"));
|
||||
x = txz->l.x + 4;
|
||||
tw = evas_get_text_width(evas, o);
|
||||
th = evas_get_text_height(evas, o);
|
||||
evas_object_geometry_get(o, NULL, NULL, &tw, &th);
|
||||
if (align == 'c') x = txz->l.x + 4 + ((txz->l.w - 8 - tw) / 2);
|
||||
else if (align == 'r') x = txz->l.x + 4 + (txz->l.w - 8 - tw);
|
||||
evas_move(evas, o, x, ypos);
|
||||
evas_object_move(o, x, ypos);
|
||||
ypos += th;
|
||||
}
|
||||
xpos = 0;
|
||||
|
@ -971,8 +997,7 @@ txz_adjust_txt(Text_Zone *txz)
|
|||
double tw, th;
|
||||
|
||||
tb = l->data;
|
||||
tw = evas_get_text_width(evas, tb->label);
|
||||
th = evas_get_text_height(evas, tb->label);
|
||||
evas_object_geometry_get(tb->label, NULL, NULL, &tw, &th);
|
||||
if (tb->bg)
|
||||
{
|
||||
int pl, pr, pt, pb;
|
||||
|
@ -983,8 +1008,8 @@ txz_adjust_txt(Text_Zone *txz)
|
|||
ebits_show(tb->bg);
|
||||
ebits_resize(tb->bg, tw + pl + pr, txz->b.h);
|
||||
ebits_move(tb->bg, txz->b.x + xpos, txz->b.y);
|
||||
evas_move(evas, tb->label, txz->b.x + pl + xpos, txz->b.y + pt + ((txz->b.h - pt - pb - th) / 2));
|
||||
evas_show(evas, tb->label);
|
||||
evas_object_move(tb->label, txz->b.x + pl + xpos, txz->b.y + pt + ((txz->b.h - pt - pb - th) / 2));
|
||||
evas_object_show(tb->label);
|
||||
xpos += tw + pl + pr;
|
||||
}
|
||||
}
|
||||
|
@ -993,13 +1018,13 @@ txz_adjust_txt(Text_Zone *txz)
|
|||
void
|
||||
animate_logo(int v, void *data)
|
||||
{
|
||||
Evas_Object o;
|
||||
Evas_Object * o;
|
||||
double t;
|
||||
static double start_t;
|
||||
char buf[4096];
|
||||
int frame;
|
||||
|
||||
o = (Evas_Object)data;
|
||||
o = (Evas_Object *)data;
|
||||
if (v == 0) start_t = ecore_get_time();
|
||||
t = ecore_get_time() - start_t;
|
||||
frame = (int)(t * 25);
|
||||
|
@ -1008,10 +1033,78 @@ animate_logo(int v, void *data)
|
|||
if (frame < 10) sprintf(buf, PACKAGE_DATA_DIR"/data/setup/anim/e00%i.png", frame);
|
||||
else if (frame < 100) sprintf(buf, PACKAGE_DATA_DIR"/data/setup/anim/e0%i.png", frame);
|
||||
else if (frame < 1000) sprintf(buf, PACKAGE_DATA_DIR"/data/setup/anim/e%i.png", frame);
|
||||
evas_set_image_file(evas, o, buf);
|
||||
evas_object_image_file_set(o, buf, NULL);
|
||||
ecore_add_event_timer("animate_logo", 0.01, animate_logo, 1, data);
|
||||
}
|
||||
|
||||
|
||||
Evas *
|
||||
e_evas_new_all(Display *disp, Window parent_window,
|
||||
int x, int y, int win_w, int win_h,
|
||||
int render,
|
||||
int max_colors, int fc, int ic,
|
||||
char *font_dir)
|
||||
{
|
||||
Evas *e;
|
||||
|
||||
e = evas_new();
|
||||
evas_output_method_set(e, evas_render_method_lookup("software_x11"));
|
||||
evas_output_size_set(e, win_w, win_h);
|
||||
evas_output_viewport_set(e, 0, 0, win_w, win_h);
|
||||
{
|
||||
Evas_Engine_Info_Software_X11 *einfo;
|
||||
XSetWindowAttributes att;
|
||||
Window window;
|
||||
|
||||
einfo = (Evas_Engine_Info_Software_X11 *) evas_engine_info_get(e);
|
||||
|
||||
/* the following is specific to the engine */
|
||||
einfo->info.display = disp;
|
||||
einfo->info.visual = DefaultVisual(disp, DefaultScreen(disp));
|
||||
einfo->info.colormap = DefaultColormap(disp, DefaultScreen(disp));
|
||||
|
||||
att.background_pixmap = None;
|
||||
att.colormap = /*colormap*/ DefaultColormap(disp, DefaultScreen(disp));
|
||||
att.border_pixel = 0;
|
||||
att.event_mask = 0;
|
||||
window = XCreateWindow(disp,
|
||||
parent_window,
|
||||
x, y, win_w, win_h, 0,
|
||||
DefaultDepth(disp, DefaultScreen(disp)),
|
||||
/*imlib_get_visual_depth(display, visual),*/
|
||||
InputOutput,
|
||||
einfo->info.visual,
|
||||
CWColormap | CWBorderPixel | CWEventMask | CWBackPixmap,
|
||||
&att);
|
||||
|
||||
einfo->info.drawable = window /*win*/;
|
||||
einfo->info.depth = DefaultDepth(disp, DefaultScreen(disp));
|
||||
einfo->info.rotation = 0;
|
||||
einfo->info.debug = 0;
|
||||
evas_engine_info_set(e, (Evas_Engine_Info *) einfo);
|
||||
}
|
||||
|
||||
evas_object_image_cache_set(e, 0);
|
||||
evas_object_font_cache_set(e, 0);
|
||||
evas_object_font_path_append(e, font_dir);
|
||||
|
||||
return e;
|
||||
}
|
||||
|
||||
Window
|
||||
e_evas_get_window(Evas *evas)
|
||||
{
|
||||
Window win;
|
||||
Evas_Engine_Info_Software_X11 *einfo;
|
||||
|
||||
einfo = (Evas_Engine_Info_Software_X11 *) evas_engine_info_get(evas);
|
||||
|
||||
/* the following is specific to the engine */
|
||||
win = einfo->info.drawable;
|
||||
|
||||
return win;
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue