Adding Eve webbrowser, based on WebKit-EFL.
This is a complete rewrite of the old Eve web browser, using the current WebKit-EFL port (available from the official WebKit SVN; instructions on how to build it are here[1]). The interface was designed for mobile devices and is based off the Efenniht theme for E17. [1] http://trac.webkit.org/wiki/EFLWebKit SVN revision: 51060
|
@ -0,0 +1,3 @@
|
||||||
|
Gustavo Sverzut Barbieri <barbieri@profusion.mobi>
|
||||||
|
Leandro Augusto Fogolin Pereira <leandro@profusion.mobi>
|
||||||
|
Lucas De Marchi <lucas.demarchi@profusion.mobi>
|
|
@ -0,0 +1,165 @@
|
||||||
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
|
||||||
|
This version of the GNU Lesser General Public License incorporates
|
||||||
|
the terms and conditions of version 3 of the GNU General Public
|
||||||
|
License, supplemented by the additional permissions listed below.
|
||||||
|
|
||||||
|
0. Additional Definitions.
|
||||||
|
|
||||||
|
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||||
|
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||||
|
General Public License.
|
||||||
|
|
||||||
|
"The Library" refers to a covered work governed by this License,
|
||||||
|
other than an Application or a Combined Work as defined below.
|
||||||
|
|
||||||
|
An "Application" is any work that makes use of an interface provided
|
||||||
|
by the Library, but which is not otherwise based on the Library.
|
||||||
|
Defining a subclass of a class defined by the Library is deemed a mode
|
||||||
|
of using an interface provided by the Library.
|
||||||
|
|
||||||
|
A "Combined Work" is a work produced by combining or linking an
|
||||||
|
Application with the Library. The particular version of the Library
|
||||||
|
with which the Combined Work was made is also called the "Linked
|
||||||
|
Version".
|
||||||
|
|
||||||
|
The "Minimal Corresponding Source" for a Combined Work means the
|
||||||
|
Corresponding Source for the Combined Work, excluding any source code
|
||||||
|
for portions of the Combined Work that, considered in isolation, are
|
||||||
|
based on the Application, and not on the Linked Version.
|
||||||
|
|
||||||
|
The "Corresponding Application Code" for a Combined Work means the
|
||||||
|
object code and/or source code for the Application, including any data
|
||||||
|
and utility programs needed for reproducing the Combined Work from the
|
||||||
|
Application, but excluding the System Libraries of the Combined Work.
|
||||||
|
|
||||||
|
1. Exception to Section 3 of the GNU GPL.
|
||||||
|
|
||||||
|
You may convey a covered work under sections 3 and 4 of this License
|
||||||
|
without being bound by section 3 of the GNU GPL.
|
||||||
|
|
||||||
|
2. Conveying Modified Versions.
|
||||||
|
|
||||||
|
If you modify a copy of the Library, and, in your modifications, a
|
||||||
|
facility refers to a function or data to be supplied by an Application
|
||||||
|
that uses the facility (other than as an argument passed when the
|
||||||
|
facility is invoked), then you may convey a copy of the modified
|
||||||
|
version:
|
||||||
|
|
||||||
|
a) under this License, provided that you make a good faith effort to
|
||||||
|
ensure that, in the event an Application does not supply the
|
||||||
|
function or data, the facility still operates, and performs
|
||||||
|
whatever part of its purpose remains meaningful, or
|
||||||
|
|
||||||
|
b) under the GNU GPL, with none of the additional permissions of
|
||||||
|
this License applicable to that copy.
|
||||||
|
|
||||||
|
3. Object Code Incorporating Material from Library Header Files.
|
||||||
|
|
||||||
|
The object code form of an Application may incorporate material from
|
||||||
|
a header file that is part of the Library. You may convey such object
|
||||||
|
code under terms of your choice, provided that, if the incorporated
|
||||||
|
material is not limited to numerical parameters, data structure
|
||||||
|
layouts and accessors, or small macros, inline functions and templates
|
||||||
|
(ten or fewer lines in length), you do both of the following:
|
||||||
|
|
||||||
|
a) Give prominent notice with each copy of the object code that the
|
||||||
|
Library is used in it and that the Library and its use are
|
||||||
|
covered by this License.
|
||||||
|
|
||||||
|
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||||
|
document.
|
||||||
|
|
||||||
|
4. Combined Works.
|
||||||
|
|
||||||
|
You may convey a Combined Work under terms of your choice that,
|
||||||
|
taken together, effectively do not restrict modification of the
|
||||||
|
portions of the Library contained in the Combined Work and reverse
|
||||||
|
engineering for debugging such modifications, if you also do each of
|
||||||
|
the following:
|
||||||
|
|
||||||
|
a) Give prominent notice with each copy of the Combined Work that
|
||||||
|
the Library is used in it and that the Library and its use are
|
||||||
|
covered by this License.
|
||||||
|
|
||||||
|
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||||
|
document.
|
||||||
|
|
||||||
|
c) For a Combined Work that displays copyright notices during
|
||||||
|
execution, include the copyright notice for the Library among
|
||||||
|
these notices, as well as a reference directing the user to the
|
||||||
|
copies of the GNU GPL and this license document.
|
||||||
|
|
||||||
|
d) Do one of the following:
|
||||||
|
|
||||||
|
0) Convey the Minimal Corresponding Source under the terms of this
|
||||||
|
License, and the Corresponding Application Code in a form
|
||||||
|
suitable for, and under terms that permit, the user to
|
||||||
|
recombine or relink the Application with a modified version of
|
||||||
|
the Linked Version to produce a modified Combined Work, in the
|
||||||
|
manner specified by section 6 of the GNU GPL for conveying
|
||||||
|
Corresponding Source.
|
||||||
|
|
||||||
|
1) Use a suitable shared library mechanism for linking with the
|
||||||
|
Library. A suitable mechanism is one that (a) uses at run time
|
||||||
|
a copy of the Library already present on the user's computer
|
||||||
|
system, and (b) will operate properly with a modified version
|
||||||
|
of the Library that is interface-compatible with the Linked
|
||||||
|
Version.
|
||||||
|
|
||||||
|
e) Provide Installation Information, but only if you would otherwise
|
||||||
|
be required to provide such information under section 6 of the
|
||||||
|
GNU GPL, and only to the extent that such information is
|
||||||
|
necessary to install and execute a modified version of the
|
||||||
|
Combined Work produced by recombining or relinking the
|
||||||
|
Application with a modified version of the Linked Version. (If
|
||||||
|
you use option 4d0, the Installation Information must accompany
|
||||||
|
the Minimal Corresponding Source and Corresponding Application
|
||||||
|
Code. If you use option 4d1, you must provide the Installation
|
||||||
|
Information in the manner specified by section 6 of the GNU GPL
|
||||||
|
for conveying Corresponding Source.)
|
||||||
|
|
||||||
|
5. Combined Libraries.
|
||||||
|
|
||||||
|
You may place library facilities that are a work based on the
|
||||||
|
Library side by side in a single library together with other library
|
||||||
|
facilities that are not Applications and are not covered by this
|
||||||
|
License, and convey such a combined library under terms of your
|
||||||
|
choice, if you do both of the following:
|
||||||
|
|
||||||
|
a) Accompany the combined library with a copy of the same work based
|
||||||
|
on the Library, uncombined with any other library facilities,
|
||||||
|
conveyed under the terms of this License.
|
||||||
|
|
||||||
|
b) Give prominent notice with the combined library that part of it
|
||||||
|
is a work based on the Library, and explaining where to find the
|
||||||
|
accompanying uncombined form of the same work.
|
||||||
|
|
||||||
|
6. Revised Versions of the GNU Lesser General Public License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the GNU Lesser General Public License from time to time. Such new
|
||||||
|
versions will be similar in spirit to the present version, but may
|
||||||
|
differ in detail to address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Library as you received it specifies that a certain numbered version
|
||||||
|
of the GNU Lesser General Public License "or any later version"
|
||||||
|
applies to it, you have the option of following the terms and
|
||||||
|
conditions either of that published version or of any later version
|
||||||
|
published by the Free Software Foundation. If the Library as you
|
||||||
|
received it does not specify a version number of the GNU Lesser
|
||||||
|
General Public License, you may choose any version of the GNU Lesser
|
||||||
|
General Public License ever published by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Library as you received it specifies that a proxy can decide
|
||||||
|
whether future versions of the GNU Lesser General Public License shall
|
||||||
|
apply, that proxy's public statement of acceptance of any version is
|
||||||
|
permanent authorization for you to choose that version for the
|
||||||
|
Library.
|
|
@ -0,0 +1,15 @@
|
||||||
|
release 0.2.0.0:
|
||||||
|
better zoom handing:
|
||||||
|
|
||||||
|
* auto fit (double-click some element) will keep whole object in
|
||||||
|
viewport.
|
||||||
|
|
||||||
|
* click over links will not go immediately, so it's possible to
|
||||||
|
click and zoom over links as well
|
||||||
|
|
||||||
|
* both auto-fit and interactive zoom modes will not choose or
|
||||||
|
allow levels of zoom that makes contents smaller than viewport.
|
||||||
|
|
||||||
|
|
||||||
|
release 0.1.0.0:
|
||||||
|
Initial release.
|
|
@ -0,0 +1,10 @@
|
||||||
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|
||||||
|
SUBDIRS = src data po
|
||||||
|
|
||||||
|
MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.guess \
|
||||||
|
config.h.in config.sub configure install-sh \
|
||||||
|
ltconfig ltmain.sh missing mkinstalldirs \
|
||||||
|
stamp-h.in acconfig.h depcomp
|
||||||
|
|
||||||
|
EXTRA_DIST = README AUTHORS COPYING
|
|
@ -0,0 +1,6 @@
|
||||||
|
eve
|
||||||
|
|
||||||
|
WebKit-EFL demo application
|
||||||
|
|
||||||
|
See INSTALL for help on how to install.
|
||||||
|
See COPYING for software usage, modification and redistribution license.
|
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
DIRNAME=`basename $PWD`
|
||||||
|
if test "x$DIRNAME" = "xelementary-skel"; then
|
||||||
|
echo "Do not run autogen.sh from inside elementary-skel"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
find . -name Makefile -delete
|
||||||
|
find . -name Makefile.in -delete
|
||||||
|
|
||||||
|
autoreconf -f -i
|
||||||
|
|
||||||
|
if [ -z "$NOCONFIGURE" ]; then
|
||||||
|
./configure "$@"
|
||||||
|
fi
|
|
@ -0,0 +1,128 @@
|
||||||
|
AC_INIT(eve, 0.2.0.0, barbieri@profusion.mobi)
|
||||||
|
AC_PREREQ([2.60])
|
||||||
|
AC_CONFIG_SRCDIR([configure.ac])
|
||||||
|
AC_CONFIG_MACRO_DIR([m4])
|
||||||
|
AC_GNU_SOURCE
|
||||||
|
AC_CANONICAL_BUILD
|
||||||
|
AC_CANONICAL_HOST
|
||||||
|
AC_ISC_POSIX
|
||||||
|
|
||||||
|
AM_INIT_AUTOMAKE(1.6 dist-bzip2)
|
||||||
|
AM_CONFIG_HEADER(config.h)
|
||||||
|
|
||||||
|
define([AC_LIBTOOL_LANG_CXX_CONFIG], [:])
|
||||||
|
define([AC_LIBTOOL_LANG_GCJ_CONFIG], [:])
|
||||||
|
define([AC_LIBTOOL_LANG_F77_CONFIG], [:])
|
||||||
|
AC_PROG_LIBTOOL
|
||||||
|
|
||||||
|
VMAJ=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $1);}'`
|
||||||
|
VMIN=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $2);}'`
|
||||||
|
VMIC=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $3);}'`
|
||||||
|
SNAP=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $4);}'`
|
||||||
|
version_info=`expr $VMAJ + $VMIN`":$VMIC:$VMIN"
|
||||||
|
AC_SUBST(VMAJ)
|
||||||
|
AC_SUBST(version_info)
|
||||||
|
|
||||||
|
AC_C_BIGENDIAN
|
||||||
|
AC_PROG_CC_C99
|
||||||
|
AM_PROG_CC_C_O
|
||||||
|
AC_C_CONST
|
||||||
|
AC_FUNC_ALLOCA
|
||||||
|
AC_C___ATTRIBUTE__
|
||||||
|
|
||||||
|
ALL_LINGUAS=`cat po/LINGUAS | grep -v '^[ ]*#'`
|
||||||
|
AC_SUBST(ALL_LINGUAS)
|
||||||
|
|
||||||
|
AM_GNU_GETTEXT_VERSION([0.12.1])
|
||||||
|
AM_GNU_GETTEXT([external])
|
||||||
|
|
||||||
|
PKG_CHECK_MODULES([ELEMENTARY], [elementary])
|
||||||
|
PKG_CHECK_MODULES([EWEBKIT], [ewebkit ecore-file])
|
||||||
|
|
||||||
|
AC_ARG_WITH([edje-cc],
|
||||||
|
[AC_HELP_STRING([--with-edje-cc=PATH],
|
||||||
|
[specify a specific path to edje_cc])],
|
||||||
|
[edje_cc=$withval;
|
||||||
|
AC_MSG_NOTICE([edje_cc explicitly set to $edje_cc])
|
||||||
|
],[edje_cc=$(pkg-config --variable=prefix edje)/bin/edje_cc])
|
||||||
|
AC_SUBST(edje_cc)
|
||||||
|
|
||||||
|
want_quicklaunch="auto"
|
||||||
|
AC_ARG_ENABLE([quicklaunch],
|
||||||
|
[AC_HELP_STRING([--disable-quicklaunch],
|
||||||
|
[disable build of quicklaunch (default=auto)])],
|
||||||
|
[if test "x${enableval}" = "xno"; then
|
||||||
|
want_quicklaunch="no"
|
||||||
|
elif test "x${enableval}" = "xyes"; then
|
||||||
|
want_quicklaunch="yes"
|
||||||
|
else
|
||||||
|
want_quicklaunch="auto"
|
||||||
|
fi
|
||||||
|
],
|
||||||
|
[want_quicklaunch="auto"])
|
||||||
|
|
||||||
|
if test "x${want_quicklaunch}" = "xauto"; then
|
||||||
|
AC_MSG_CHECKING([checking for elementary_quicklaunch binary...])
|
||||||
|
if test -x $(pkg-config --variable=prefix elementary)/bin/elementary_quicklaunch; then
|
||||||
|
AC_MSG_RESULT([found, enable quicklaunch.])
|
||||||
|
want_quicklaunch="yes"
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([not found, disable quicklaunch.])
|
||||||
|
want_quicklaunch="no"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "x${want_quicklaunch}" = "xyes"; then
|
||||||
|
AC_ARG_WITH([quicklauncher-libdir],
|
||||||
|
[AC_HELP_STRING([--with-quicklauncher-libdir=PATH],
|
||||||
|
[specify a specific path to install quicklauncher binaries])],
|
||||||
|
[quicklauncher_libdir=$withval;
|
||||||
|
AC_MSG_NOTICE([quicklauncher_libdir explicitly set to $quicklauncher_libdir])
|
||||||
|
],
|
||||||
|
[quicklauncher_libdir=$(pkg-config --variable=libdir elementary)])
|
||||||
|
AC_SUBST(quicklauncher_libdir)
|
||||||
|
fi
|
||||||
|
|
||||||
|
AM_CONDITIONAL(BUILD_QUICKLAUNCH, test "x${want_quicklaunch}" = "xyes")
|
||||||
|
|
||||||
|
AC_OUTPUT([
|
||||||
|
Makefile
|
||||||
|
src/Makefile
|
||||||
|
src/bin/Makefile
|
||||||
|
data/Makefile
|
||||||
|
data/desktop/Makefile
|
||||||
|
data/themes/Makefile
|
||||||
|
po/Makefile.in
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
cat << EOF
|
||||||
|
|
||||||
|
eve configured with:
|
||||||
|
|
||||||
|
Flags:
|
||||||
|
CFLAGS.....(C): $CFLAGS
|
||||||
|
CXXFLAGS.(C++): $CXXFLAGS
|
||||||
|
CPPFLAGS.(CPP): $CPPFLAGS
|
||||||
|
LDFLAGS...(LD): $LDFLAGS
|
||||||
|
|
||||||
|
Installation:
|
||||||
|
PREFIX..............: $prefix
|
||||||
|
|
||||||
|
Quick Launcher: ${want_quicklaunch}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if test "x${want_quicklaunch}" = "xyes"; then
|
||||||
|
cat << EOF_QL
|
||||||
|
quicklauncher_libdir: $quicklauncher_libdir
|
||||||
|
|
||||||
|
EOF_QL
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat << EOF2
|
||||||
|
|
||||||
|
Now type 'make' ('gmake' on some systems) to compile eve, if it
|
||||||
|
builds successfully then you can 'make install', acquiring required
|
||||||
|
permissions with 'su' or 'sudo'.
|
||||||
|
|
||||||
|
EOF2
|
|
@ -0,0 +1,2 @@
|
||||||
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
SUBDIRS = desktop themes
|
|
@ -0,0 +1,9 @@
|
||||||
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
|
||||||
|
desktopdir = $(datadir)/applications
|
||||||
|
desktop_DATA = eve.desktop
|
||||||
|
|
||||||
|
icondir = $(datadir)/icons
|
||||||
|
icon_DATA = eve.png
|
||||||
|
|
||||||
|
EXTRA_DIST = eve.desktop eve.png
|
|
@ -0,0 +1,9 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Encoding=UTF-8
|
||||||
|
Name=eve
|
||||||
|
Comment=WebKit-EFL demo application
|
||||||
|
Exec=eve
|
||||||
|
Icon=eve
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Categories=Application;Utility;
|
After Width: | Height: | Size: 12 KiB |
|
@ -0,0 +1 @@
|
||||||
|
default.edj
|
|
@ -0,0 +1,56 @@
|
||||||
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
|
||||||
|
EDJE_CC = @edje_cc@
|
||||||
|
EDJE_FLAGS = -v -id $(top_srcdir)/data/themes -fd $(top_srcdir)/data/themes
|
||||||
|
|
||||||
|
filesdir = $(datadir)/$(PACKAGE)
|
||||||
|
files_DATA = ewebkit.edj default.edj
|
||||||
|
|
||||||
|
images = \
|
||||||
|
bookmark-list-back-button.png \
|
||||||
|
bookmark-list-title.png \
|
||||||
|
bt_back_normal.png \
|
||||||
|
bt_back_selected.png \
|
||||||
|
bt_bookmark_normal.png \
|
||||||
|
bt_bookmark_selected.png \
|
||||||
|
bt_fav_normal.png \
|
||||||
|
bt_fav_selected.png \
|
||||||
|
bt_forward_normal.png \
|
||||||
|
bt_forward_selected.png \
|
||||||
|
bt_home_normal.png \
|
||||||
|
bt_home_selected.png \
|
||||||
|
bt_reload_normal.png \
|
||||||
|
bt_reload_selected.png \
|
||||||
|
bt_tab_normal.png \
|
||||||
|
bt_tab_selected.png \
|
||||||
|
panel-top-triangle.png \
|
||||||
|
scrollbar-bg.png \
|
||||||
|
scrollbar-knob.png \
|
||||||
|
shadow-bottom.png \
|
||||||
|
tab-add.png \
|
||||||
|
tab-bg.png \
|
||||||
|
tab-bg-selected.png \
|
||||||
|
tab-close.png \
|
||||||
|
tab-header.png \
|
||||||
|
toolbar-background-bottom.png \
|
||||||
|
toolbar-background-top.png \
|
||||||
|
url-entry.png \
|
||||||
|
list-highlight.png \
|
||||||
|
cur_box.png \
|
||||||
|
cur_hi.png \
|
||||||
|
cur_shine.png \
|
||||||
|
cur_glow.png \
|
||||||
|
cur_shad.png \
|
||||||
|
progress-bar-background.png
|
||||||
|
|
||||||
|
fonts =
|
||||||
|
|
||||||
|
EXTRA_DIST = ewebkit.edj default.edc $(images) $(fonts)
|
||||||
|
|
||||||
|
default.edj: Makefile $(images) $(fonts) default.edc
|
||||||
|
$(EDJE_CC) $(EDJE_FLAGS) \
|
||||||
|
$(top_srcdir)/data/themes/default.edc \
|
||||||
|
$(top_builddir)/data/themes/default.edj
|
||||||
|
|
||||||
|
clean-local:
|
||||||
|
rm -f default.edj
|
After Width: | Height: | Size: 318 B |
After Width: | Height: | Size: 645 B |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 8.3 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 6.1 KiB |
After Width: | Height: | Size: 9.4 KiB |
After Width: | Height: | Size: 5.6 KiB |
After Width: | Height: | Size: 8.2 KiB |
After Width: | Height: | Size: 187 B |
After Width: | Height: | Size: 391 B |
After Width: | Height: | Size: 188 B |
After Width: | Height: | Size: 252 B |
After Width: | Height: | Size: 200 B |
|
@ -0,0 +1,227 @@
|
||||||
|
group { name: "elm/entry/base-single/ewebkit/url";
|
||||||
|
styles
|
||||||
|
{
|
||||||
|
style { name: "entry_single_textblock_style";
|
||||||
|
base: "font=Sans font_size=10 align=left color=#787878 wrap=none";
|
||||||
|
tag: "br" "\n";
|
||||||
|
tag: "tab" "\t";
|
||||||
|
tag: "em" "+ font=Sans:style=Oblique";
|
||||||
|
tag: "b" "+ font=Sans:style=Bold";
|
||||||
|
tag: "link" "+ color=#800 underline=on underline_color=#8008";
|
||||||
|
tag: "hilight" "+ font=Sans:style=Bold";
|
||||||
|
}
|
||||||
|
style { name: "entry_single_textblock_disabled_style";
|
||||||
|
base: "font=Sans font_size=10 align=left color=#00000080 wrap=none";
|
||||||
|
tag: "br" "\n";
|
||||||
|
tag: "tab" "\t";
|
||||||
|
tag: "em" "+ font=Sans:style=Oblique";
|
||||||
|
tag: "b" "+ font=Sans:style=Bold";
|
||||||
|
tag: "link" "+ color=#00000080 underline=on underline_color=#00000080";
|
||||||
|
tag: "hilight" "+ font=Sans:style=Bold";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
parts {
|
||||||
|
part { name: "elm.text";
|
||||||
|
type: TEXTBLOCK;
|
||||||
|
mouse_events: 1;
|
||||||
|
scale: 1;
|
||||||
|
entry_mode: EDITABLE;
|
||||||
|
select_mode: EXPLICIT;
|
||||||
|
multiline: 0;
|
||||||
|
source: "elm/entry/selection/ewebkit/url"; // selection under
|
||||||
|
source4: "elm/entry/cursor/ewebkit/url"; // cursorover
|
||||||
|
source5: "elm/entry/anchor/default"; // anchor under
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
text {
|
||||||
|
style: "entry_single_textblock_style";
|
||||||
|
min: 1 1;
|
||||||
|
max: 0 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
description { state: "disabled" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
text {
|
||||||
|
style: "entry_single_textblock_disabled_style";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
programs {
|
||||||
|
program { name: "focus";
|
||||||
|
signal: "load";
|
||||||
|
source: "";
|
||||||
|
action: FOCUS_SET;
|
||||||
|
target: "elm.text";
|
||||||
|
}
|
||||||
|
program { name: "disable";
|
||||||
|
signal: "elm,state,disabled";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "disabled" 0.0;
|
||||||
|
target: "elm.text";
|
||||||
|
}
|
||||||
|
program { name: "enable";
|
||||||
|
signal: "elm,state,enabled";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
target: "elm.text";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
group { name: "elm/entry/selection/ewebkit/url";
|
||||||
|
parts {
|
||||||
|
part { name: "bg";
|
||||||
|
type: RECT;
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
color: 128 128 128 128;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
group { name: "elm/entry/cursor/ewebkit/url";
|
||||||
|
images {
|
||||||
|
image: "cur_box.png" COMP;
|
||||||
|
image: "cur_hi.png" COMP;
|
||||||
|
image: "cur_shad.png" COMP;
|
||||||
|
image: "cur_shine.png" COMP;
|
||||||
|
image: "cur_glow.png" COMP;
|
||||||
|
}
|
||||||
|
parts {
|
||||||
|
part { name: "clip2";
|
||||||
|
type: RECT;
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.to: "clip";
|
||||||
|
rel2.to: "clip";
|
||||||
|
visible: 0;
|
||||||
|
}
|
||||||
|
description { state: "focused" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "clip";
|
||||||
|
type: RECT;
|
||||||
|
mouse_events: 0;
|
||||||
|
clip_to: "clip2";
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.offset: -10 0;
|
||||||
|
rel2.offset: 9 9;
|
||||||
|
}
|
||||||
|
description { state: "hidden" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "bg";
|
||||||
|
mouse_events: 0;
|
||||||
|
clip_to: "clip";
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.to: "base";
|
||||||
|
rel1.offset: -2 0;
|
||||||
|
rel2.to: "base";
|
||||||
|
rel2.offset: 1 1;
|
||||||
|
image.border: 2 2 2 2;
|
||||||
|
image.normal: "cur_shad.png";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "base";
|
||||||
|
mouse_events: 0;
|
||||||
|
scale: 1;
|
||||||
|
clip_to: "clip";
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
min: 2 2;
|
||||||
|
align: 0.5 1.0;
|
||||||
|
rel1.relative: 0.0 1.0;
|
||||||
|
rel1.offset: 0 -1;
|
||||||
|
rel2.relative: 1.0 1.0;
|
||||||
|
rel2.offset: -1 -1;
|
||||||
|
image.normal: "cur_box.png";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "hi";
|
||||||
|
mouse_events: 0;
|
||||||
|
clip_to: "clip";
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.to: "base";
|
||||||
|
rel2.to: "base";
|
||||||
|
rel2.relative: 1.0 0.5;
|
||||||
|
image.normal: "cur_hi.png";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "shine";
|
||||||
|
mouse_events: 0;
|
||||||
|
clip_to: "clip";
|
||||||
|
clip_to: "clip2";
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.to: "base";
|
||||||
|
rel2.to: "base";
|
||||||
|
rel2.relative: 1.0 0.75;
|
||||||
|
image.border: 2 2 1 0;
|
||||||
|
image.normal: "cur_shine.png";
|
||||||
|
fill.smooth: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "glow";
|
||||||
|
mouse_events: 0;
|
||||||
|
clip_to: "clip2";
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.to: "base";
|
||||||
|
rel1.relative: 0.0 -2.0;
|
||||||
|
rel1.offset: -2 0;
|
||||||
|
rel2.to: "base";
|
||||||
|
rel2.relative: 1.0 0.0;
|
||||||
|
rel2.offset: 1 1;
|
||||||
|
image.border: 2 2 0 4;
|
||||||
|
image.normal: "cur_glow.png";
|
||||||
|
fill.smooth: 0;
|
||||||
|
}
|
||||||
|
description { state: "hidden" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
programs {
|
||||||
|
program { name: "show";
|
||||||
|
signal: "show";
|
||||||
|
source: "";
|
||||||
|
action: STATE_SET "hidden" 0.0;
|
||||||
|
in: 1.0 0.0;
|
||||||
|
transition: DECELERATE 2.0;
|
||||||
|
target: "glow";
|
||||||
|
after: "show2";
|
||||||
|
}
|
||||||
|
program { name: "show2";
|
||||||
|
action: STATE_SET "hidden" 0.0;
|
||||||
|
in: 0.2 0.0;
|
||||||
|
target: "clip";
|
||||||
|
after: "show3";
|
||||||
|
}
|
||||||
|
program { name: "show3";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
in: 0.5 0.0;
|
||||||
|
target: "clip";
|
||||||
|
after: "show4";
|
||||||
|
}
|
||||||
|
program { name: "show4";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
in: 0.5 0.0;
|
||||||
|
transition: DECELERATE 0.5;
|
||||||
|
target: "glow";
|
||||||
|
after: "show";
|
||||||
|
}
|
||||||
|
program { name: "focused";
|
||||||
|
signal: "elm,action,focus";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "focused" 0.0;
|
||||||
|
target: "clip2";
|
||||||
|
}
|
||||||
|
program { name: "unfocused";
|
||||||
|
signal: "elm,action,unfocus";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
target: "clip2";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,420 @@
|
||||||
|
group { name: "elm/gengrid/item/default/ewebkit";
|
||||||
|
alias: "elm/gengrid/item/default_style/ewebkit";
|
||||||
|
data.item: "labels" "elm.text";
|
||||||
|
data.item: "icons" "elm.swallow.icon elm.swallow.end";
|
||||||
|
images {
|
||||||
|
image: "tab-bg.png" COMP;
|
||||||
|
image: "tab-bg-selected.png" COMP;
|
||||||
|
image: "tab-close.png" COMP;
|
||||||
|
}
|
||||||
|
parts {
|
||||||
|
part {
|
||||||
|
name: "event";
|
||||||
|
repeat_events: 1;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "bg";
|
||||||
|
clip_to: "disclip";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: -5 -5;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: 4 4;
|
||||||
|
}
|
||||||
|
image {
|
||||||
|
normal: "tab-bg.png";
|
||||||
|
border: 28 28 20 20;
|
||||||
|
}
|
||||||
|
fill.smooth: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.pad";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
fixed: 1 0;
|
||||||
|
align: 0.0 0.5;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 1.0;
|
||||||
|
offset: 0 -10;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
to_y: "elm.text";
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: -1 -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.icon";
|
||||||
|
clip_to: "disclip";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
fixed: 1 0;
|
||||||
|
align: 0.5 0.5;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: 22 13;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
to_y: "elm.text";
|
||||||
|
relative: 1.0 0.0;
|
||||||
|
offset: -24 -4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.end";
|
||||||
|
clip_to: "disclip";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: 0 0;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.text";
|
||||||
|
clip_to: "disclip";
|
||||||
|
type: TEXT;
|
||||||
|
mouse_events: 0;
|
||||||
|
scale: 1;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 1.0;
|
||||||
|
offset: 18 0;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: -21 -44;
|
||||||
|
}
|
||||||
|
color: 120 120 120 255;
|
||||||
|
text {
|
||||||
|
font: "Sans";
|
||||||
|
size: 9;
|
||||||
|
min: 0 1;
|
||||||
|
align: 0.5 0.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "disclip";
|
||||||
|
type: RECT;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.to: "bg";
|
||||||
|
rel2.to: "bg";
|
||||||
|
}
|
||||||
|
description { state: "disabled" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
color: 255 255 255 64;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "bg-selected-border";
|
||||||
|
clip_to: "disclip";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
rel1.relative: 0.0 0.0;
|
||||||
|
rel2.relative: 1.0 1.0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
image {
|
||||||
|
normal: "tab-bg-selected.png";
|
||||||
|
border: 8 8 8 8;
|
||||||
|
}
|
||||||
|
fill.smooth: 0;
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
|
color: 255 255 255 255;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: 15 5;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: -16 -6;
|
||||||
|
}
|
||||||
|
image {
|
||||||
|
normal: "tab-bg-selected.png";
|
||||||
|
border: 8 8 8 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "close-button";
|
||||||
|
type: IMAGE;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
min: 15 15;
|
||||||
|
max: 15 15;
|
||||||
|
rel1 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: -40 1;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: 29 -41;
|
||||||
|
}
|
||||||
|
image.normal: "tab-close.png";
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
color: 255 166 2 255;
|
||||||
|
}
|
||||||
|
description { state: "hidden" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "close-button-dedones";
|
||||||
|
type: RECT;
|
||||||
|
clip_to: "disclip";
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1 {
|
||||||
|
to: "close-button";
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: -10 -10;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
to: "close-button";
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: 5 11;
|
||||||
|
}
|
||||||
|
color: 255 255 255 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
programs {
|
||||||
|
// signal: elm,state,%s,active
|
||||||
|
// a "check" item named %s went active
|
||||||
|
// signal: elm,state,%s,passive
|
||||||
|
// a "check" item named %s went passive
|
||||||
|
// default is passive
|
||||||
|
program {
|
||||||
|
name: "tab_close_down";
|
||||||
|
signal: "tab,close,hide";
|
||||||
|
action: STATE_SET "hidden" 0.0;
|
||||||
|
target: "close-button";
|
||||||
|
}
|
||||||
|
program {
|
||||||
|
name: "tab_down";
|
||||||
|
signal: "mouse,down,*";
|
||||||
|
source: "close-button-dedones";
|
||||||
|
action: STATE_SET "selected" 0.0;
|
||||||
|
target: "close-button";
|
||||||
|
transition: ACCELERATE 0.2;
|
||||||
|
}
|
||||||
|
program {
|
||||||
|
name: "tab_clicked";
|
||||||
|
signal: "mouse,clicked,*";
|
||||||
|
source: "close-button-dedones";
|
||||||
|
action: SIGNAL_EMIT "tab,close" "";
|
||||||
|
}
|
||||||
|
program {
|
||||||
|
name: "tab_up";
|
||||||
|
signal: "mouse,up,*";
|
||||||
|
source: "close-button-dedones";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
target: "close-button";
|
||||||
|
transition: DECELERATE 0.2;
|
||||||
|
}
|
||||||
|
program {
|
||||||
|
name: "go_active";
|
||||||
|
signal: "elm,state,selected";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "selected" 0.0;
|
||||||
|
target: "bg-selected-border";
|
||||||
|
transition: ACCELERATE 0.1;
|
||||||
|
}
|
||||||
|
program {
|
||||||
|
name: "go_passive";
|
||||||
|
signal: "elm,state,unselected";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
target: "bg-selected-border";
|
||||||
|
transition: DECELERATE 0.1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
group { name: "elm/gengrid/item/new_page/ewebkit";
|
||||||
|
data.item: "labels" "elm.text";
|
||||||
|
data.item: "icons" "elm.swallow.icon elm.swallow.end";
|
||||||
|
images {
|
||||||
|
image: "tab-bg.png" COMP;
|
||||||
|
image: "tab-bg-selected.png" COMP;
|
||||||
|
image: "tab-add.png" COMP;
|
||||||
|
}
|
||||||
|
parts {
|
||||||
|
part {
|
||||||
|
name: "event";
|
||||||
|
repeat_events: 1;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "bg";
|
||||||
|
clip_to: "disclip";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: -5 -5;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: 4 4;
|
||||||
|
}
|
||||||
|
image {
|
||||||
|
normal: "tab-bg.png";
|
||||||
|
border: 28 28 20 20;
|
||||||
|
}
|
||||||
|
fill.smooth: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.pad";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
fixed: 1 0;
|
||||||
|
align: 0.0 0.5;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 1.0;
|
||||||
|
offset: 0 -10;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
to_y: "elm.text";
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: -1 -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.icon";
|
||||||
|
clip_to: "disclip";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
fixed: 1 0;
|
||||||
|
align: 0.5 0.5;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: 20 11;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
to_y: "elm.text";
|
||||||
|
relative: 1.0 0.0;
|
||||||
|
offset: -24 -4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.end";
|
||||||
|
clip_to: "disclip";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: 0 0;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.text";
|
||||||
|
clip_to: "disclip";
|
||||||
|
type: RECT;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "disclip";
|
||||||
|
type: RECT;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.to: "bg";
|
||||||
|
rel2.to: "bg";
|
||||||
|
}
|
||||||
|
description { state: "disabled" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
color: 255 255 255 64;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "add-img";
|
||||||
|
type: IMAGE;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
min: 23 23;
|
||||||
|
max: 23 23;
|
||||||
|
rel1 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: -54 1;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: -6 -43;
|
||||||
|
}
|
||||||
|
image.normal: "tab-add.png";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "bg-selected-border";
|
||||||
|
clip_to: "disclip";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
rel1.relative: 0.0 0.0;
|
||||||
|
rel2.relative: 1.0 1.0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
image {
|
||||||
|
normal: "tab-bg-selected.png";
|
||||||
|
border: 8 8 8 8;
|
||||||
|
}
|
||||||
|
fill.smooth: 0;
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
|
color: 255 255 255 255;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: 15 5;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: -16 -6;
|
||||||
|
}
|
||||||
|
image {
|
||||||
|
normal: "tab-bg-selected.png";
|
||||||
|
border: 8 8 8 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
programs {
|
||||||
|
// signal: elm,state,%s,active
|
||||||
|
// a "check" item named %s went active
|
||||||
|
// signal: elm,state,%s,passive
|
||||||
|
// a "check" item named %s went passive
|
||||||
|
// default is passive
|
||||||
|
program {
|
||||||
|
name: "go_active";
|
||||||
|
signal: "elm,state,selected";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "selected" 0.0;
|
||||||
|
target: "bg-selected-border";
|
||||||
|
transition: ACCELERATE 0.1;
|
||||||
|
}
|
||||||
|
program {
|
||||||
|
name: "go_passive";
|
||||||
|
signal: "elm,state,unselected";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
target: "bg-selected-border";
|
||||||
|
transition: DECELERATE 0.1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,222 @@
|
||||||
|
group { name: "elm/list/item/ewebkit";
|
||||||
|
alias: "elm/list/item_odd/ewebkit";
|
||||||
|
data.item: "stacking" "above";
|
||||||
|
images {
|
||||||
|
image: "list-highlight.png" COMP;
|
||||||
|
}
|
||||||
|
parts {
|
||||||
|
part {
|
||||||
|
name: "event";
|
||||||
|
type: RECT;
|
||||||
|
repeat_events: 1;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
color: 0 0 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "bg";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: -10 -10;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: 9 9;
|
||||||
|
}
|
||||||
|
image {
|
||||||
|
normal: "list-highlight.png";
|
||||||
|
border: 6 6 6 6;
|
||||||
|
}
|
||||||
|
image.middle: SOLID;
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
|
color: 255 255 255 255;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: 0 -1;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: -1 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.icon";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
fixed: 1 0;
|
||||||
|
align: 0.0 0.5;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: 4 4;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 0.0 1.0;
|
||||||
|
offset: 4 -5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.end";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
fixed: 1 0;
|
||||||
|
align: 1.0 0.5;
|
||||||
|
rel1 {
|
||||||
|
relative: 1.0 0.0;
|
||||||
|
offset: -5 4;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: -5 -5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.text";
|
||||||
|
type: TEXT;
|
||||||
|
effect: SOFT_SHADOW;
|
||||||
|
mouse_events: 0;
|
||||||
|
scale: 1;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
// min: 16 16;
|
||||||
|
rel1 {
|
||||||
|
to_x: "elm.swallow.icon";
|
||||||
|
relative: 1.0 0.0;
|
||||||
|
offset: 38 0;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
to_x: "elm.swallow.end";
|
||||||
|
relative: 0.0 1.0;
|
||||||
|
offset: -1 -1;
|
||||||
|
}
|
||||||
|
color: 190 190 190 255;
|
||||||
|
color3: 0 0 0 0;
|
||||||
|
text {
|
||||||
|
font: "Sans";
|
||||||
|
size: 11;
|
||||||
|
min: 1 1;
|
||||||
|
// min: 0 1;
|
||||||
|
align: 0.0 0.35;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
description {
|
||||||
|
state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
programs {
|
||||||
|
program {
|
||||||
|
name: "go_active";
|
||||||
|
signal: "elm,state,selected";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "selected" 0.0;
|
||||||
|
target: "bg";
|
||||||
|
target: "elm.text";
|
||||||
|
transition: ACCELERATE 0.2;
|
||||||
|
}
|
||||||
|
program {
|
||||||
|
name: "go_passive";
|
||||||
|
signal: "elm,state,unselected";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
target: "bg";
|
||||||
|
target: "elm.text";
|
||||||
|
transition: DECELERATE 0.1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
group { name: "elm/list/separator/ewebkit";
|
||||||
|
data.item: "stacking" "above";
|
||||||
|
parts {
|
||||||
|
part {
|
||||||
|
name: "event";
|
||||||
|
type: RECT;
|
||||||
|
repeat_events: 1;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
color: 0 0 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "bg";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: -5 -5;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 0.5 1.0;
|
||||||
|
offset: 4 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
color: 255 255 255 128;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: -2 -2;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 0.5 1.0;
|
||||||
|
offset: 1 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.icon";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
fixed: 1 0;
|
||||||
|
align: 0.0 0.5;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: 4 4;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 0.0 1.0;
|
||||||
|
offset: 4 -5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.end";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
fixed: 1 0;
|
||||||
|
align: 1.0 0.5;
|
||||||
|
rel1 {
|
||||||
|
relative: 1.0 0.0;
|
||||||
|
offset: -5 4;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: -5 -5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.text";
|
||||||
|
type: TEXT;
|
||||||
|
effect: SOFT_SHADOW;
|
||||||
|
mouse_events: 0;
|
||||||
|
scale: 1;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
}
|
||||||
|
description {
|
||||||
|
state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,146 @@
|
||||||
|
group { name: "elm/notify/block_events/ewebkit";
|
||||||
|
images.image: "shadow-bottom.png" COMP;
|
||||||
|
images.image: "tab-header.png" COMP;
|
||||||
|
parts {
|
||||||
|
part { name: "bg";
|
||||||
|
type: RECT;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.relative: 0.0 1.0;
|
||||||
|
rel1.offset: 0 -310;
|
||||||
|
rel2.relative: 1.0 1.0;
|
||||||
|
rel2.offset: -1 -1;
|
||||||
|
color: 0 0 0 255;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "shadow";
|
||||||
|
type: IMAGE;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
image.normal: "shadow-bottom.png";
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 1.0;
|
||||||
|
offset: 0 -326;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: -1 -311;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "border";
|
||||||
|
type: IMAGE;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
image.normal: "tab-header.png";
|
||||||
|
max: 99999 14;
|
||||||
|
rel1 {
|
||||||
|
to: "shadow";
|
||||||
|
relative: 0.0 1.0;
|
||||||
|
offset: 0 -21;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
to: "shadow";
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: -1 15;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "block_events";
|
||||||
|
type: RECT;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
color: 0 0 0 128;
|
||||||
|
visible: 1;
|
||||||
|
rel1.relative: 0.0 0.0;
|
||||||
|
rel1.offset: 0 0;
|
||||||
|
rel2.relative: 1.0 1.0;
|
||||||
|
rel2.offset: -1 -311;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
programs {
|
||||||
|
program {
|
||||||
|
name: "block_clicked";
|
||||||
|
signal: "mouse,clicked,1";
|
||||||
|
source: "block_events";
|
||||||
|
action: SIGNAL_EMIT "elm,action,clicked" "elm";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
group { name: "elm/notify/bottom/ewebkit";
|
||||||
|
min: 400 300;
|
||||||
|
parts {
|
||||||
|
part { name: "base";
|
||||||
|
type: RECT;
|
||||||
|
mouse_events: 0;
|
||||||
|
repeat_events: 1;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
rel1.relative: 0.0 0.0;
|
||||||
|
rel2.relative: 1.0 1.0;
|
||||||
|
rel2.offset: -1 -1;
|
||||||
|
color: 0 0 0 0;
|
||||||
|
}
|
||||||
|
description { state: "visible" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "shad";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.to: "elm.swallow.content";
|
||||||
|
rel1.offset: -64 -64;
|
||||||
|
rel2.to: "elm.swallow.content";
|
||||||
|
rel2.offset: 63 63;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "pop";
|
||||||
|
mouse_events: 1;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.to: "elm.swallow.content";
|
||||||
|
rel1.offset: -5 -5;
|
||||||
|
rel2.to: "elm.swallow.content";
|
||||||
|
rel2.offset: 4 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "popover";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.to: "pop";
|
||||||
|
rel2.to: "pop";
|
||||||
|
rel2.relative: 1.0 0.5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.content";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.to: "base";
|
||||||
|
rel2.to: "base";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
programs {
|
||||||
|
program { name: "show";
|
||||||
|
signal: "elm,action,show";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "visible" 0.0;
|
||||||
|
target: "base";
|
||||||
|
}
|
||||||
|
program { name: "show_2";
|
||||||
|
signal: "show";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
target: "base";
|
||||||
|
after: "show_3";
|
||||||
|
}
|
||||||
|
program { name: "show_3";
|
||||||
|
signal: "show";
|
||||||
|
action: STATE_SET "visible" 0.0;
|
||||||
|
target: "base";
|
||||||
|
transition: ACCELERATE 0.2;
|
||||||
|
}
|
||||||
|
program { name: "hide";
|
||||||
|
signal: "elm,action,hide";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
target: "base";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,122 @@
|
||||||
|
group { name: "elm/pager/base/ewebkit";
|
||||||
|
data.item: "onshow" "raise";
|
||||||
|
// other options
|
||||||
|
// data.item: "onhide" "lower";
|
||||||
|
// data.item: "onshow" "lower";
|
||||||
|
parts {
|
||||||
|
part { name: "clip";
|
||||||
|
type: RECT;
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1 {
|
||||||
|
to: "base";
|
||||||
|
offset: -9999 -9999;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
to: "base";
|
||||||
|
offset: 9999 9999;
|
||||||
|
}
|
||||||
|
color: 255 255 255 255;
|
||||||
|
}
|
||||||
|
description { state: "visible" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
}
|
||||||
|
description { state: "hidden" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
visible: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "base";
|
||||||
|
mouse_events: 0;
|
||||||
|
clip_to: "clip";
|
||||||
|
description { state: "default" 0.0; }
|
||||||
|
description { state: "hidden" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
rel1.relative: -1.0 0.0;
|
||||||
|
rel2.relative: 0.0 1.0;
|
||||||
|
}
|
||||||
|
description { state: "visible" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
rel1.relative: 0.0 0.0;
|
||||||
|
rel2.relative: 1.0 1.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.content";
|
||||||
|
type: SWALLOW;
|
||||||
|
clip_to: "clip";
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1 {
|
||||||
|
to: "base";
|
||||||
|
offset: 0 0;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
to: "base";
|
||||||
|
offset: -1 -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
programs {
|
||||||
|
program { name: "push_start";
|
||||||
|
signal: "elm,action,push";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "hidden" 0.0;
|
||||||
|
target: "base";
|
||||||
|
target: "clip";
|
||||||
|
after: "show_start2";
|
||||||
|
}
|
||||||
|
program { name: "show_start";
|
||||||
|
signal: "elm,action,show";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "hidden" 0.0;
|
||||||
|
target: "base";
|
||||||
|
target: "clip";
|
||||||
|
after: "show_start2";
|
||||||
|
}
|
||||||
|
program { name: "show_start2";
|
||||||
|
action: STATE_SET "visible" 0.0;
|
||||||
|
transition: DECELERATE 0.5;
|
||||||
|
target: "base";
|
||||||
|
target: "clip";
|
||||||
|
after: "show_end";
|
||||||
|
}
|
||||||
|
program { name: "show_end";
|
||||||
|
action: SIGNAL_EMIT "elm,action,show,finished" "";
|
||||||
|
}
|
||||||
|
program { name: "pop_start";
|
||||||
|
signal: "elm,action,pop";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "visible" 0.0;
|
||||||
|
target: "base";
|
||||||
|
target: "clip";
|
||||||
|
after: "hide_start2";
|
||||||
|
}
|
||||||
|
program { name: "hide_start";
|
||||||
|
signal: "elm,action,hide";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "visible" 0.0;
|
||||||
|
target: "base";
|
||||||
|
target: "clip";
|
||||||
|
after: "hide_start2";
|
||||||
|
}
|
||||||
|
program { name: "hide_start2";
|
||||||
|
action: STATE_SET "hidden" 0.0;
|
||||||
|
transition: DECELERATE 0.5;
|
||||||
|
target: "base";
|
||||||
|
target: "clip";
|
||||||
|
after: "hide_end";
|
||||||
|
}
|
||||||
|
program { name: "hide_end";
|
||||||
|
action: SIGNAL_EMIT "elm,action,hide,finished" "";
|
||||||
|
}
|
||||||
|
program { name: "reset";
|
||||||
|
signal: "elm,action,reset";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
target: "base";
|
||||||
|
target: "clip";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,398 @@
|
||||||
|
group { name: "elm/scroller/base/ewebkit";
|
||||||
|
|
||||||
|
alias: "elm/list/base/ewebkit";
|
||||||
|
alias: "elm/genlist/base/ewebkit";
|
||||||
|
alias: "elm/carousel/base/ewebkit";
|
||||||
|
alias: "elm/gengrid/base/ewebkit";
|
||||||
|
|
||||||
|
images {
|
||||||
|
image: "scrollbar-knob.png" COMP;
|
||||||
|
image: "scrollbar-bg.png" COMP;
|
||||||
|
}
|
||||||
|
script {
|
||||||
|
public sbvis_v, sbvis_h, sbalways_v, sbalways_h;
|
||||||
|
}
|
||||||
|
parts {
|
||||||
|
part { name: "bg";
|
||||||
|
type: RECT;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.offset: 1 1;
|
||||||
|
rel2.offset: -2 -2;
|
||||||
|
color: 0 0 0 255;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "clipper";
|
||||||
|
type: RECT;
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.to: "bg";
|
||||||
|
rel2.to: "bg";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.content";
|
||||||
|
clip_to: "clipper";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.offset: 1 1;
|
||||||
|
rel2.offset: -2 -2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "conf_over";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.offset: 0 0;
|
||||||
|
rel2.offset: -1 -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "sb_vbar_clip_master";
|
||||||
|
type: RECT;
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
}
|
||||||
|
description { state: "hidden" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "sb_vbar_clip";
|
||||||
|
clip_to: "sb_vbar_clip_master";
|
||||||
|
type: RECT;
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
}
|
||||||
|
description { state: "hidden" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "sb_vbar";
|
||||||
|
type: RECT;
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
fixed: 1 1;
|
||||||
|
visible: 0;
|
||||||
|
min: 2 32;
|
||||||
|
align: 1.0 0.0;
|
||||||
|
rel1 {
|
||||||
|
relative: 1.0 0.0;
|
||||||
|
offset: -8 25;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 0.0;
|
||||||
|
offset: -7 -7;
|
||||||
|
to_y: "sb_hbar";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "sb_vbar_runner";
|
||||||
|
clip_to: "sb_vbar_clip";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
min: 3 3;
|
||||||
|
max: 3 99999;
|
||||||
|
rel1.to: "sb_vbar";
|
||||||
|
rel2.to: "sb_vbar";
|
||||||
|
fixed: 1 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "vknob-bg";
|
||||||
|
type: IMAGE;
|
||||||
|
mouse_events: 0;
|
||||||
|
clip_to: sb_vbar_clip;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
image.normal: "scrollbar-bg.png";
|
||||||
|
image.border: 1 1 3 2;
|
||||||
|
max: 3 99999;
|
||||||
|
rel1 {
|
||||||
|
relative: 1.0 0.0;
|
||||||
|
offset: -10 25;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: -6 -25;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.dragable.vbar";
|
||||||
|
clip_to: "sb_vbar_clip";
|
||||||
|
mouse_events: 0;
|
||||||
|
dragable {
|
||||||
|
x: 0 0 0;
|
||||||
|
y: 1 1 0;
|
||||||
|
confine: "sb_vbar";
|
||||||
|
}
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
fixed: 1 1;
|
||||||
|
min: 2 12;
|
||||||
|
rel1 {
|
||||||
|
relative: 1.0 0.5;
|
||||||
|
offset: -3 0;
|
||||||
|
to: "sb_vbar";
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 0.5;
|
||||||
|
offset: -1 0;
|
||||||
|
to: "sb_vbar";
|
||||||
|
}
|
||||||
|
image {
|
||||||
|
normal: "scrollbar-knob.png";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "sb_hbar_clip_master";
|
||||||
|
type: RECT;
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
}
|
||||||
|
description { state: "hidden" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "sb_hbar_clip";
|
||||||
|
clip_to: "sb_hbar_clip_master";
|
||||||
|
type: RECT;
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
}
|
||||||
|
description { state: "hidden" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "sb_hbar";
|
||||||
|
type: RECT;
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
fixed: 1 1;
|
||||||
|
visible: 0;
|
||||||
|
min: 17 17;
|
||||||
|
align: 0.0 1.0;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 1.0;
|
||||||
|
offset: 0 -2;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 0.0 1.0;
|
||||||
|
offset: -1 -2;
|
||||||
|
to_x: "sb_vbar";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "sb_hbar_runner";
|
||||||
|
clip_to: "sb_hbar_clip";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
min: 3 3;
|
||||||
|
max: 99999 3;
|
||||||
|
rel1.to: "sb_hbar";
|
||||||
|
rel2.to: "sb_hbar";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.dragable.hbar";
|
||||||
|
clip_to: "sb_hbar_clip";
|
||||||
|
mouse_events: 0;
|
||||||
|
dragable {
|
||||||
|
x: 1 1 0;
|
||||||
|
y: 0 0 0;
|
||||||
|
confine: "sb_hbar";
|
||||||
|
}
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
fixed: 1 1;
|
||||||
|
min: 17 17;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.5 0.5;
|
||||||
|
offset: 0 0;
|
||||||
|
to: "sb_hbar";
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 0.5 0.5;
|
||||||
|
offset: 0 0;
|
||||||
|
to: "sb_hbar";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "sb_hbar_over1";
|
||||||
|
clip_to: "sb_hbar_clip";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.to: "elm.dragable.hbar";
|
||||||
|
rel2.relative: 1.0 0.5;
|
||||||
|
rel2.to: "elm.dragable.hbar";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "sb_hbar_over2";
|
||||||
|
clip_to: "sb_hbar_clip";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.to: "elm.dragable.hbar";
|
||||||
|
rel2.to: "elm.dragable.hbar";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
programs {
|
||||||
|
program { name: "load";
|
||||||
|
signal: "load";
|
||||||
|
source: "";
|
||||||
|
script {
|
||||||
|
set_state(PART:"sb_hbar_clip", "hidden", 0.0);
|
||||||
|
set_state(PART:"sb_vbar_clip", "hidden", 0.0);
|
||||||
|
set_int(sbvis_h, 0);
|
||||||
|
set_int(sbalways_v, 0);
|
||||||
|
set_int(sbalways_h, 0);
|
||||||
|
|
||||||
|
emit("do-show-vbar", "");
|
||||||
|
set_int(sbvis_v, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
program { name: "vbar_show";
|
||||||
|
signal: "elm,action,show,vbar";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
target: "sb_vbar_clip_master";
|
||||||
|
}
|
||||||
|
program { name: "vbar_hide";
|
||||||
|
signal: "elm,action,hide,vbar";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "hidden" 0.0;
|
||||||
|
target: "sb_vbar_clip_master";
|
||||||
|
}
|
||||||
|
program { name: "vbar_show_always";
|
||||||
|
signal: "elm,action,show_always,vbar";
|
||||||
|
source: "elm";
|
||||||
|
script {
|
||||||
|
new v;
|
||||||
|
v = get_int(sbvis_v);
|
||||||
|
v |= get_int(sbalways_v);
|
||||||
|
if (!v) {
|
||||||
|
set_int(sbalways_v, 1);
|
||||||
|
emit("do-show-vbar", "");
|
||||||
|
set_int(sbvis_v, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
program { name: "vbar_show_notalways";
|
||||||
|
signal: "elm,action,show_notalways,vbar";
|
||||||
|
source: "elm";
|
||||||
|
script {
|
||||||
|
new v;
|
||||||
|
v = get_int(sbalways_v);
|
||||||
|
if (v) {
|
||||||
|
set_int(sbalways_v, 0);
|
||||||
|
v = get_int(sbvis_v);
|
||||||
|
if (!v) {
|
||||||
|
emit("do-hide-vbar", "");
|
||||||
|
set_int(sbvis_v, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
program { name: "sb_vbar_show";
|
||||||
|
signal: "do-show-vbar";
|
||||||
|
source: "";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
transition: LINEAR 1.0;
|
||||||
|
target: "sb_vbar_clip";
|
||||||
|
}
|
||||||
|
program { name: "sb_vbar_hide";
|
||||||
|
signal: "do-hide-vbar";
|
||||||
|
source: "";
|
||||||
|
action: STATE_SET "hidden" 0.0;
|
||||||
|
transition: LINEAR 1.0;
|
||||||
|
target: "sb_vbar_clip";
|
||||||
|
}
|
||||||
|
|
||||||
|
program { name: "hbar_show";
|
||||||
|
signal: "elm,action,show,hbar";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
target: "sb_hbar_clip_master";
|
||||||
|
}
|
||||||
|
program { name: "hbar_hide";
|
||||||
|
signal: "elm,action,hide,hbar";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "hidden" 0.0;
|
||||||
|
target: "sb_hbar_clip_master";
|
||||||
|
}
|
||||||
|
program { name: "hbar_show_always";
|
||||||
|
signal: "elm,action,show_always,hbar";
|
||||||
|
source: "elm";
|
||||||
|
script {
|
||||||
|
new v;
|
||||||
|
v = get_int(sbvis_h);
|
||||||
|
v |= get_int(sbalways_h);
|
||||||
|
if (!v) {
|
||||||
|
set_int(sbalways_h, 1);
|
||||||
|
emit("do-show-hbar", "");
|
||||||
|
set_int(sbvis_h, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
program { name: "hbar_show_notalways";
|
||||||
|
signal: "elm,action,show_notalways,hbar";
|
||||||
|
source: "elm";
|
||||||
|
script {
|
||||||
|
new v;
|
||||||
|
v = get_int(sbalways_h);
|
||||||
|
if (v) {
|
||||||
|
set_int(sbalways_h, 0);
|
||||||
|
v = get_int(sbvis_h);
|
||||||
|
if (!v) {
|
||||||
|
emit("do-hide-hbar", "");
|
||||||
|
set_int(sbvis_h, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
program { name: "sb_hbar_show";
|
||||||
|
signal: "do-show-hbar";
|
||||||
|
source: "";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
transition: LINEAR 1.0;
|
||||||
|
target: "sb_hbar_clip";
|
||||||
|
}
|
||||||
|
program { name: "sb_hbar_hide";
|
||||||
|
signal: "do-hide-hbar";
|
||||||
|
source: "";
|
||||||
|
action: STATE_SET "hidden" 0.0;
|
||||||
|
transition: LINEAR 1.0;
|
||||||
|
target: "sb_hbar_clip";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
group { name: "elm/scroller/base/ewebkit/url";
|
||||||
|
parts {
|
||||||
|
part { name: "bg";
|
||||||
|
type: RECT;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.offset: 1 1;
|
||||||
|
rel2.offset: -2 -2;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "clipper";
|
||||||
|
type: RECT;
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.to: "bg";
|
||||||
|
rel2.to: "bg";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.content";
|
||||||
|
clip_to: "clipper";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.offset: 1 1;
|
||||||
|
rel2.offset: -2 -2;
|
||||||
|
color: 255 0 0 128;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.dragable.vbar";
|
||||||
|
description { state: "default" 0.0; visible: 0; }
|
||||||
|
}
|
||||||
|
part { name: "elm.dragable.hbar";
|
||||||
|
description { state: "default" 0.0; visible: 0; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 639 B |
After Width: | Height: | Size: 914 B |
After Width: | Height: | Size: 218 B |
After Width: | Height: | Size: 145 B |
After Width: | Height: | Size: 201 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1009 B |
After Width: | Height: | Size: 478 B |
After Width: | Height: | Size: 329 B |
After Width: | Height: | Size: 290 B |
After Width: | Height: | Size: 419 B |
After Width: | Height: | Size: 308 B |
After Width: | Height: | Size: 1021 B |
|
@ -0,0 +1,24 @@
|
||||||
|
codeset.m4
|
||||||
|
gettext.m4
|
||||||
|
glibc21.m4
|
||||||
|
iconv.m4
|
||||||
|
intdiv0.m4
|
||||||
|
inttypes-pri.m4
|
||||||
|
inttypes.m4
|
||||||
|
inttypes_h.m4
|
||||||
|
isc-posix.m4
|
||||||
|
lcmessage.m4
|
||||||
|
lib-ld.m4
|
||||||
|
lib-link.m4
|
||||||
|
lib-prefix.m4
|
||||||
|
libtool.m4
|
||||||
|
ltoptions.m4
|
||||||
|
ltsugar.m4
|
||||||
|
ltversion.m4
|
||||||
|
lt~obsolete.m4
|
||||||
|
nls.m4
|
||||||
|
po.m4
|
||||||
|
progtest.m4
|
||||||
|
stdint_h.m4
|
||||||
|
uintmax_t.m4
|
||||||
|
ulonglong.m4
|
|
@ -0,0 +1,47 @@
|
||||||
|
dnl Copyright (C) 2004-2008 Kim Woelders
|
||||||
|
dnl Copyright (C) 2008 Vincent Torri <vtorri at univ-evry dot fr>
|
||||||
|
dnl That code is public domain and can be freely used or copied.
|
||||||
|
dnl Originally snatched from somewhere...
|
||||||
|
|
||||||
|
dnl Macro for checking if the compiler supports __attribute__
|
||||||
|
|
||||||
|
dnl Usage: AC_C___ATTRIBUTE__
|
||||||
|
dnl call AC_DEFINE for HAVE___ATTRIBUTE__ and __UNUSED__
|
||||||
|
dnl if the compiler supports __attribute__, HAVE___ATTRIBUTE__ is
|
||||||
|
dnl defined to 1 and __UNUSED__ is defined to __attribute__((unused))
|
||||||
|
dnl otherwise, HAVE___ATTRIBUTE__ is not defined and __UNUSED__ is
|
||||||
|
dnl defined to nothing.
|
||||||
|
|
||||||
|
AC_DEFUN([AC_C___ATTRIBUTE__],
|
||||||
|
[
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for __attribute__])
|
||||||
|
|
||||||
|
AC_CACHE_VAL([ac_cv___attribute__],
|
||||||
|
[AC_TRY_COMPILE(
|
||||||
|
[
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
int func(int x);
|
||||||
|
int foo(int x __attribute__ ((unused)))
|
||||||
|
{
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[],
|
||||||
|
[ac_cv___attribute__="yes"],
|
||||||
|
[ac_cv___attribute__="no"]
|
||||||
|
)])
|
||||||
|
|
||||||
|
AC_MSG_RESULT($ac_cv___attribute__)
|
||||||
|
|
||||||
|
if test "x${ac_cv___attribute__}" = "xyes" ; then
|
||||||
|
AC_DEFINE([HAVE___ATTRIBUTE__], [1], [Define to 1 if your compiler has __attribute__])
|
||||||
|
AC_DEFINE([__UNUSED__], [__attribute__((unused))], [Macro declaring a function argument to be unused])
|
||||||
|
else
|
||||||
|
AC_DEFINE([__UNUSED__], [], [Macro declaring a function argument to be unused])
|
||||||
|
fi
|
||||||
|
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl End of ac_attribute.m4
|
|
@ -0,0 +1,12 @@
|
||||||
|
Makefile.in.in
|
||||||
|
Makevars.template
|
||||||
|
POTFILES
|
||||||
|
Rules-quot
|
||||||
|
boldquot.sed
|
||||||
|
en@boldquot.header
|
||||||
|
en@quot.header
|
||||||
|
insert-header.sin
|
||||||
|
quot.sed
|
||||||
|
remove-potcdate.sed
|
||||||
|
remove-potcdate.sin
|
||||||
|
stamp-po
|
|
@ -0,0 +1,7 @@
|
||||||
|
DOMAIN = eve
|
||||||
|
subdir = po
|
||||||
|
top_builddir = ..
|
||||||
|
XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
|
||||||
|
COPYRIGHT_HOLDER = Gustavo Sverzut Barbieri
|
||||||
|
MSGID_BUGS_ADDRESS = barbieri@profusion.mobi
|
||||||
|
EXTRA_LOCALE_CATEGORIES =
|
|
@ -0,0 +1 @@
|
||||||
|
src/bin/main.c
|
|
@ -0,0 +1,6 @@
|
||||||
|
.deps
|
||||||
|
.libs
|
||||||
|
*.o
|
||||||
|
*.a
|
||||||
|
*.lo
|
||||||
|
*.la
|
|
@ -0,0 +1,2 @@
|
||||||
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
SUBDIRS = bin
|
|
@ -0,0 +1,2 @@
|
||||||
|
eve
|
||||||
|
eve_ql
|
|
@ -0,0 +1,40 @@
|
||||||
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
|
||||||
|
INCLUDES = \
|
||||||
|
-I$(top_srcdir) \
|
||||||
|
-I$(top_srcdir)/src/bin \
|
||||||
|
-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
|
||||||
|
-DGETTEXT_PACKAGE=\"$(PACKAGE)\" \
|
||||||
|
-DLOCALEDIR=\"$(localedir)\" \
|
||||||
|
@ELEMENTARY_CFLAGS@ \
|
||||||
|
@EWEBKIT_CFLAGS@
|
||||||
|
|
||||||
|
bin_PROGRAMS = eve
|
||||||
|
if BUILD_QUICKLAUNCH
|
||||||
|
bin_PROGRAMS += eve_ql
|
||||||
|
endif
|
||||||
|
|
||||||
|
eve_LDADD = @ELEMENTARY_LIBS@ @EWEBKIT_LIBS@
|
||||||
|
eve_SOURCES = main.c view.c chrome.c favorite.c history.c
|
||||||
|
|
||||||
|
if BUILD_QUICKLAUNCH
|
||||||
|
############################################################################
|
||||||
|
## Build quick launch binary, needs elementary_quicklaunch to be enabled. ##
|
||||||
|
## ##
|
||||||
|
## It is composed of a library with actual code and a binary that talks ##
|
||||||
|
## to server that will then fork() + dlopen() such library. ##
|
||||||
|
############################################################################
|
||||||
|
eve_qldir = $(quicklauncher_libdir)
|
||||||
|
eve_ql_LTLIBRARIES = eve_ql.la
|
||||||
|
eve_ql_la_SOURCES = main.c view.c chrome.c
|
||||||
|
eve_ql_la_LIBADD = @ELEMENTARY_LIBS@ @EWEBKIT_LIBS@
|
||||||
|
eve_ql_la_CFLAGS =
|
||||||
|
eve_ql_la_LDFLAGS = -module -avoid-version -no-undefined
|
||||||
|
eve_ql_SOURCES = main.c
|
||||||
|
eve_ql_LDADD = @ELEMENTARY_LIBS@
|
||||||
|
eve_ql_CFLAGS = -DELM_LIB_QUICKLAUNCH=1
|
||||||
|
eve_ql_LDFLAGS =
|
||||||
|
endif
|
||||||
|
|
||||||
|
noinst_HEADERS = gettext.h private.h favorite.h history.h
|
||||||
|
EXTRA_DIST = gettext.h private.h favorite.h history.h
|
|
@ -0,0 +1,295 @@
|
||||||
|
/* This file has been automatically generated by geneet.py */
|
||||||
|
/* DO NOT MODIFY */
|
||||||
|
|
||||||
|
#include <limits.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include "favorite.h"
|
||||||
|
|
||||||
|
struct _Fav_Item {
|
||||||
|
const char * url;
|
||||||
|
const char * title;
|
||||||
|
unsigned int visit_count;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _Fav {
|
||||||
|
int version;
|
||||||
|
Eina_Hash * items;
|
||||||
|
const char *__eet_filename;
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char FAV_ITEM_ENTRY[] = "fav_item";
|
||||||
|
static const char FAV_ENTRY[] = "fav";
|
||||||
|
|
||||||
|
static Eet_Data_Descriptor *_fav_item_descriptor = NULL;
|
||||||
|
static Eet_Data_Descriptor *_fav_descriptor = NULL;
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
_fav_item_init(void)
|
||||||
|
{
|
||||||
|
Eet_Data_Descriptor_Class eddc;
|
||||||
|
|
||||||
|
if (_fav_item_descriptor) return;
|
||||||
|
|
||||||
|
EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Fav_Item);
|
||||||
|
_fav_item_descriptor = eet_data_descriptor_stream_new(&eddc);
|
||||||
|
|
||||||
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_fav_item_descriptor, Fav_Item, "url", url, EET_T_STRING);
|
||||||
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_fav_item_descriptor, Fav_Item, "title", title, EET_T_STRING);
|
||||||
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_fav_item_descriptor, Fav_Item, "visit_count", visit_count, EET_T_UINT);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
_fav_item_shutdown(void)
|
||||||
|
{
|
||||||
|
if (!_fav_item_descriptor) return;
|
||||||
|
eet_data_descriptor_free(_fav_item_descriptor);
|
||||||
|
_fav_item_descriptor = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
Fav_Item *
|
||||||
|
fav_item_new(const char * url, const char * title, unsigned int visit_count)
|
||||||
|
{
|
||||||
|
Fav_Item *fav_item = calloc(1, sizeof(Fav_Item));
|
||||||
|
|
||||||
|
if (!fav_item)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "ERROR: could not calloc Fav_Item\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
fav_item->url = eina_stringshare_add(url ? url : "about:blank");
|
||||||
|
fav_item->title = eina_stringshare_add(title ? title : "Untitled");
|
||||||
|
fav_item->visit_count = visit_count;
|
||||||
|
|
||||||
|
return fav_item;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
fav_item_free(Fav_Item *fav_item)
|
||||||
|
{
|
||||||
|
eina_stringshare_del(fav_item->url);
|
||||||
|
eina_stringshare_del(fav_item->title);
|
||||||
|
free(fav_item);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline const char *
|
||||||
|
fav_item_url_get(const Fav_Item *fav_item)
|
||||||
|
{
|
||||||
|
return fav_item->url;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void
|
||||||
|
fav_item_url_set(Fav_Item *fav_item, const char *url)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(fav_item);
|
||||||
|
eina_stringshare_del(fav_item->url);
|
||||||
|
fav_item->url = eina_stringshare_add(url);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline const char *
|
||||||
|
fav_item_title_get(const Fav_Item *fav_item)
|
||||||
|
{
|
||||||
|
return fav_item->title;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void
|
||||||
|
fav_item_title_set(Fav_Item *fav_item, const char *title)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(fav_item);
|
||||||
|
eina_stringshare_del(fav_item->title);
|
||||||
|
fav_item->title = eina_stringshare_add(title);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline unsigned int
|
||||||
|
fav_item_visit_count_get(const Fav_Item *fav_item)
|
||||||
|
{
|
||||||
|
return fav_item->visit_count;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void
|
||||||
|
fav_item_visit_count_set(Fav_Item *fav_item, unsigned int visit_count)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(fav_item);
|
||||||
|
fav_item->visit_count = visit_count;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
_fav_init(void)
|
||||||
|
{
|
||||||
|
Eet_Data_Descriptor_Class eddc;
|
||||||
|
|
||||||
|
if (_fav_descriptor) return;
|
||||||
|
|
||||||
|
EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Fav);
|
||||||
|
_fav_descriptor = eet_data_descriptor_stream_new(&eddc);
|
||||||
|
|
||||||
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_fav_descriptor, Fav, "version", version, EET_T_INT);
|
||||||
|
EET_DATA_DESCRIPTOR_ADD_HASH(_fav_descriptor, Fav, "items", items, _fav_item_descriptor);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
_fav_shutdown(void)
|
||||||
|
{
|
||||||
|
if (!_fav_descriptor) return;
|
||||||
|
eet_data_descriptor_free(_fav_descriptor);
|
||||||
|
_fav_descriptor = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
Fav *
|
||||||
|
fav_new(int version)
|
||||||
|
{
|
||||||
|
Fav *fav = calloc(1, sizeof(Fav));
|
||||||
|
|
||||||
|
if (!fav)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "ERROR: could not calloc Fav\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
fav->version = version;
|
||||||
|
fav->items = eina_hash_stringshared_new(EINA_FREE_CB(fav_item_free));
|
||||||
|
|
||||||
|
return fav;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
fav_free(Fav *fav)
|
||||||
|
{
|
||||||
|
eina_hash_free(fav->items);
|
||||||
|
free(fav);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline int
|
||||||
|
fav_version_get(const Fav *fav)
|
||||||
|
{
|
||||||
|
return fav->version;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void
|
||||||
|
fav_version_set(Fav *fav, int version)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(fav);
|
||||||
|
fav->version = version;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
fav_items_add(Fav *fav, const char * url, Fav_Item *fav_item)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(fav);
|
||||||
|
eina_hash_add(fav->items, url, fav_item);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
fav_items_del(Fav *fav, const char * url)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(fav);
|
||||||
|
eina_hash_del(fav->items, url, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline Fav_Item *
|
||||||
|
fav_items_get(const Fav *fav, const char * url)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(fav, NULL);
|
||||||
|
return eina_hash_find(fav->items, url);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline Eina_Hash *
|
||||||
|
fav_items_hash_get(const Fav *fav)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(fav, NULL);
|
||||||
|
return fav->items;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
fav_items_modify(Fav *fav, const char * key, void *value)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(fav);
|
||||||
|
eina_hash_modify(fav->items, key, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
Fav *
|
||||||
|
fav_load(const char *filename)
|
||||||
|
{
|
||||||
|
Fav *fav;
|
||||||
|
Eet_File *ef = eet_open(filename, EET_FILE_MODE_READ);
|
||||||
|
if (!ef)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "ERROR: could not open '%s' for read\n", filename);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
fav = eet_data_read(ef, _fav_descriptor, FAV_ENTRY);
|
||||||
|
fav->__eet_filename = eina_stringshare_add(filename);
|
||||||
|
|
||||||
|
if (!fav->items) fav->items = eina_hash_stringshared_new(EINA_FREE_CB(fav_item_free));
|
||||||
|
|
||||||
|
eet_close(ef);
|
||||||
|
return fav;
|
||||||
|
}
|
||||||
|
|
||||||
|
Eina_Bool
|
||||||
|
fav_save(Fav *fav, const char *filename)
|
||||||
|
{
|
||||||
|
char tmp[PATH_MAX];
|
||||||
|
Eet_File *ef;
|
||||||
|
Eina_Bool ret;
|
||||||
|
unsigned int i, len;
|
||||||
|
struct stat st;
|
||||||
|
|
||||||
|
if (filename) fav->__eet_filename = eina_stringshare_add(filename);
|
||||||
|
else if (fav->__eet_filename) filename = fav->__eet_filename;
|
||||||
|
else return EINA_FALSE;
|
||||||
|
|
||||||
|
len = eina_strlcpy(tmp, filename, sizeof(tmp));
|
||||||
|
if (len + 12 >= (int)sizeof(tmp))
|
||||||
|
{
|
||||||
|
fprintf(stderr, "ERROR: filename is too big: %s\n", filename);
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
snprintf(tmp + len, 12, ".%u", i);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
while(stat(tmp, &st) == 0);
|
||||||
|
|
||||||
|
ef = eet_open(tmp, EET_FILE_MODE_WRITE);
|
||||||
|
if (!ef)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "ERROR: could not open '%s' for write\n", tmp);
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = !!eet_data_write(ef, _fav_descriptor, FAV_ENTRY, fav, EINA_TRUE);
|
||||||
|
eet_close(ef);
|
||||||
|
|
||||||
|
if (ret)
|
||||||
|
{
|
||||||
|
unlink(filename);
|
||||||
|
rename(tmp, filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
favorite_init(void)
|
||||||
|
{
|
||||||
|
_fav_item_init();
|
||||||
|
_fav_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
favorite_shutdown(void)
|
||||||
|
{
|
||||||
|
_fav_item_shutdown();
|
||||||
|
_fav_shutdown();
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
/* This file has been automatically generated by geneet.py */
|
||||||
|
/* DO NOT MODIFY */
|
||||||
|
|
||||||
|
#ifndef __FAVORITE_H__
|
||||||
|
#define __FAVORITE_H__
|
||||||
|
|
||||||
|
#include <Eina.h>
|
||||||
|
#include <Eet.h>
|
||||||
|
|
||||||
|
typedef struct _Fav_Item Fav_Item;
|
||||||
|
typedef struct _Fav Fav;
|
||||||
|
|
||||||
|
/* Fav_Item */
|
||||||
|
Fav_Item *fav_item_new(const char * url, const char * title, unsigned int visit_count);
|
||||||
|
void fav_item_free(Fav_Item *fav_item);
|
||||||
|
|
||||||
|
void fav_item_url_set(Fav_Item *fav_item, const char * url);
|
||||||
|
const char * fav_item_url_get(const Fav_Item *fav_item);
|
||||||
|
void fav_item_title_set(Fav_Item *fav_item, const char * title);
|
||||||
|
const char * fav_item_title_get(const Fav_Item *fav_item);
|
||||||
|
void fav_item_visit_count_set(Fav_Item *fav_item, unsigned int visit_count);
|
||||||
|
unsigned int fav_item_visit_count_get(const Fav_Item *fav_item);
|
||||||
|
|
||||||
|
/* Fav */
|
||||||
|
Fav *fav_new(int version);
|
||||||
|
void fav_free(Fav *fav);
|
||||||
|
|
||||||
|
void fav_version_set(Fav *fav, int version);
|
||||||
|
int fav_version_get(const Fav *fav);
|
||||||
|
void fav_items_add(Fav *fav, const char * url, Fav_Item *fav_item);
|
||||||
|
void fav_items_del(Fav *fav, const char * url);
|
||||||
|
Fav_Item *fav_items_get(const Fav *fav, const char * key);
|
||||||
|
Eina_Hash *fav_items_hash_get(const Fav *fav);
|
||||||
|
void fav_items_modify(Fav *fav, const char * key, void *value);
|
||||||
|
|
||||||
|
Fav *fav_load(const char *filename);
|
||||||
|
Eina_Bool fav_save(Fav *fav, const char *filename);
|
||||||
|
|
||||||
|
/* Global initializer / shutdown functions */
|
||||||
|
void favorite_init(void);
|
||||||
|
void favorite_shutdown(void);
|
||||||
|
|
||||||
|
#endif /* __FAVORITE_H__ */
|
|
@ -0,0 +1,268 @@
|
||||||
|
/* Convenience header for conditional use of GNU <libintl.h>.
|
||||||
|
Copyright (C) 1995-1998, 2000-2002, 2004-2006 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
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, 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
|
||||||
|
Library 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||||
|
USA. */
|
||||||
|
|
||||||
|
#ifndef _LIBGETTEXT_H
|
||||||
|
#define _LIBGETTEXT_H 1
|
||||||
|
|
||||||
|
#define _(x) gettext(x)
|
||||||
|
#define N_(x) gettext_noop(x)
|
||||||
|
|
||||||
|
/* NLS can be disabled through the configure --disable-nls option. */
|
||||||
|
#if ENABLE_NLS
|
||||||
|
|
||||||
|
/* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by
|
||||||
|
the gettext() and ngettext() macros. This is an alternative to calling
|
||||||
|
textdomain(), and is useful for libraries. */
|
||||||
|
# ifdef DEFAULT_TEXT_DOMAIN
|
||||||
|
# undef gettext
|
||||||
|
# define gettext(Msgid) \
|
||||||
|
dgettext (DEFAULT_TEXT_DOMAIN, Msgid)
|
||||||
|
# undef ngettext
|
||||||
|
# define ngettext(Msgid1, Msgid2, N) \
|
||||||
|
dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
|
||||||
|
chokes if dcgettext is defined as a macro. So include it now, to make
|
||||||
|
later inclusions of <locale.h> a NOP. We don't include <libintl.h>
|
||||||
|
as well because people using "gettext.h" will not include <libintl.h>,
|
||||||
|
and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
|
||||||
|
is OK. */
|
||||||
|
#if defined(__sun)
|
||||||
|
# include <locale.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Many header files from the libstdc++ coming with g++ 3.3 or newer include
|
||||||
|
<libintl.h>, which chokes if dcgettext is defined as a macro. So include
|
||||||
|
it now, to make later inclusions of <libintl.h> a NOP. */
|
||||||
|
#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)
|
||||||
|
# include <cstdlib>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Disabled NLS.
|
||||||
|
The casts to 'const char *' serve the purpose of producing warnings
|
||||||
|
for invalid uses of the value returned from these functions.
|
||||||
|
On pre-ANSI systems without 'const', the config.h file is supposed to
|
||||||
|
contain "#define const". */
|
||||||
|
# define gettext(Msgid) ((const char *) (Msgid))
|
||||||
|
# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid))
|
||||||
|
# define dcgettext(Domainname, Msgid, Category) \
|
||||||
|
((void) (Category), dgettext (Domainname, Msgid))
|
||||||
|
# define ngettext(Msgid1, Msgid2, N) \
|
||||||
|
((N) == 1 \
|
||||||
|
? ((void) (Msgid2), (const char *) (Msgid1)) \
|
||||||
|
: ((void) (Msgid1), (const char *) (Msgid2)))
|
||||||
|
# define dngettext(Domainname, Msgid1, Msgid2, N) \
|
||||||
|
((void) (Domainname), ngettext (Msgid1, Msgid2, N))
|
||||||
|
# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
|
||||||
|
((void) (Category), dngettext(Domainname, Msgid1, Msgid2, N))
|
||||||
|
# define textdomain(Domainname) ((const char *) (Domainname))
|
||||||
|
# define bindtextdomain(Domainname, Dirname) \
|
||||||
|
((void) (Domainname), (const char *) (Dirname))
|
||||||
|
# define bind_textdomain_codeset(Domainname, Codeset) \
|
||||||
|
((void) (Domainname), (const char *) (Codeset))
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* A pseudo function call that serves as a marker for the automated
|
||||||
|
extraction of messages, but does not call gettext(). The run-time
|
||||||
|
translation is done at a different place in the code.
|
||||||
|
The argument, String, should be a literal string. Concatenated strings
|
||||||
|
and other string expressions won't work.
|
||||||
|
The macro's expansion is not parenthesized, so that it is suitable as
|
||||||
|
initializer for static 'char[]' or 'const char[]' variables. */
|
||||||
|
#define gettext_noop(String) String
|
||||||
|
|
||||||
|
/* The separator between msgctxt and msgid in a .mo file. */
|
||||||
|
#define GETTEXT_CONTEXT_GLUE "\004"
|
||||||
|
|
||||||
|
/* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a
|
||||||
|
MSGID. MSGCTXT and MSGID must be string literals. MSGCTXT should be
|
||||||
|
short and rarely need to change.
|
||||||
|
The letter 'p' stands for 'particular' or 'special'. */
|
||||||
|
#ifdef DEFAULT_TEXT_DOMAIN
|
||||||
|
# define pgettext(Msgctxt, Msgid) \
|
||||||
|
pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
|
||||||
|
#else
|
||||||
|
# define pgettext(Msgctxt, Msgid) \
|
||||||
|
pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
|
||||||
|
#endif
|
||||||
|
#define dpgettext(Domainname, Msgctxt, Msgid) \
|
||||||
|
pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
|
||||||
|
#define dcpgettext(Domainname, Msgctxt, Msgid, Category) \
|
||||||
|
pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category)
|
||||||
|
#ifdef DEFAULT_TEXT_DOMAIN
|
||||||
|
# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
|
||||||
|
npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
|
||||||
|
#else
|
||||||
|
# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
|
||||||
|
npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
|
||||||
|
#endif
|
||||||
|
#define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
|
||||||
|
npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
|
||||||
|
#define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \
|
||||||
|
npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category)
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
__inline
|
||||||
|
#else
|
||||||
|
#ifdef __cplusplus
|
||||||
|
inline
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
static const char *
|
||||||
|
pgettext_aux (const char *domain,
|
||||||
|
const char *msg_ctxt_id, const char *msgid,
|
||||||
|
int category)
|
||||||
|
{
|
||||||
|
const char *translation = dcgettext (domain, msg_ctxt_id, category);
|
||||||
|
if (translation == msg_ctxt_id)
|
||||||
|
return msgid;
|
||||||
|
else
|
||||||
|
return translation;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
__inline
|
||||||
|
#else
|
||||||
|
#ifdef __cplusplus
|
||||||
|
inline
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
static const char *
|
||||||
|
npgettext_aux (const char *domain,
|
||||||
|
const char *msg_ctxt_id, const char *msgid,
|
||||||
|
const char *msgid_plural, unsigned long int n,
|
||||||
|
int category)
|
||||||
|
{
|
||||||
|
const char *translation =
|
||||||
|
dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
|
||||||
|
if (translation == msg_ctxt_id || translation == msgid_plural)
|
||||||
|
return (n == 1 ? msgid : msgid_plural);
|
||||||
|
else
|
||||||
|
return translation;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The same thing extended for non-constant arguments. Here MSGCTXT and MSGID
|
||||||
|
can be arbitrary expressions. But for string literals these macros are
|
||||||
|
less efficient than those above. */
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \
|
||||||
|
(((__GNUC__ >= 3 || __GNUG__ >= 2) && !__STRICT_ANSI__) \
|
||||||
|
/* || __STDC_VERSION__ >= 199901L */ )
|
||||||
|
|
||||||
|
#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
|
||||||
|
#include <stdlib.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define pgettext_expr(Msgctxt, Msgid) \
|
||||||
|
dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES)
|
||||||
|
#define dpgettext_expr(Domainname, Msgctxt, Msgid) \
|
||||||
|
dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES)
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
__inline
|
||||||
|
#else
|
||||||
|
#ifdef __cplusplus
|
||||||
|
inline
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
static const char *
|
||||||
|
dcpgettext_expr (const char *domain,
|
||||||
|
const char *msgctxt, const char *msgid,
|
||||||
|
int category)
|
||||||
|
{
|
||||||
|
size_t msgctxt_len = strlen (msgctxt) + 1;
|
||||||
|
size_t msgid_len = strlen (msgid) + 1;
|
||||||
|
const char *translation;
|
||||||
|
#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
|
||||||
|
char msg_ctxt_id[msgctxt_len + msgid_len];
|
||||||
|
#else
|
||||||
|
char buf[1024];
|
||||||
|
char *msg_ctxt_id =
|
||||||
|
(msgctxt_len + msgid_len <= sizeof (buf)
|
||||||
|
? buf
|
||||||
|
: (char *) malloc (msgctxt_len + msgid_len));
|
||||||
|
if (msg_ctxt_id != NULL)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
|
||||||
|
msg_ctxt_id[msgctxt_len - 1] = '\004';
|
||||||
|
memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
|
||||||
|
translation = dcgettext (domain, msg_ctxt_id, category);
|
||||||
|
#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
|
||||||
|
if (msg_ctxt_id != buf)
|
||||||
|
free (msg_ctxt_id);
|
||||||
|
#endif
|
||||||
|
if (translation != msg_ctxt_id)
|
||||||
|
return translation;
|
||||||
|
}
|
||||||
|
return msgid;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \
|
||||||
|
dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)
|
||||||
|
#define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
|
||||||
|
dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
__inline
|
||||||
|
#else
|
||||||
|
#ifdef __cplusplus
|
||||||
|
inline
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
static const char *
|
||||||
|
dcnpgettext_expr (const char *domain,
|
||||||
|
const char *msgctxt, const char *msgid,
|
||||||
|
const char *msgid_plural, unsigned long int n,
|
||||||
|
int category)
|
||||||
|
{
|
||||||
|
size_t msgctxt_len = strlen (msgctxt) + 1;
|
||||||
|
size_t msgid_len = strlen (msgid) + 1;
|
||||||
|
const char *translation;
|
||||||
|
#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
|
||||||
|
char msg_ctxt_id[msgctxt_len + msgid_len];
|
||||||
|
#else
|
||||||
|
char buf[1024];
|
||||||
|
char *msg_ctxt_id =
|
||||||
|
(msgctxt_len + msgid_len <= sizeof (buf)
|
||||||
|
? buf
|
||||||
|
: (char *) malloc (msgctxt_len + msgid_len));
|
||||||
|
if (msg_ctxt_id != NULL)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
|
||||||
|
msg_ctxt_id[msgctxt_len - 1] = '\004';
|
||||||
|
memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
|
||||||
|
translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
|
||||||
|
#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
|
||||||
|
if (msg_ctxt_id != buf)
|
||||||
|
free (msg_ctxt_id);
|
||||||
|
#endif
|
||||||
|
if (!(translation == msg_ctxt_id || translation == msgid_plural))
|
||||||
|
return translation;
|
||||||
|
}
|
||||||
|
return (n == 1 ? msgid : msgid_plural);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* _LIBGETTEXT_H */
|
|
@ -0,0 +1,311 @@
|
||||||
|
/* This file has been automatically generated by geneet.py */
|
||||||
|
/* DO NOT MODIFY */
|
||||||
|
|
||||||
|
#include <limits.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include "history.h"
|
||||||
|
|
||||||
|
struct _Hist_Item {
|
||||||
|
const char * title;
|
||||||
|
const char * url;
|
||||||
|
unsigned int visit_count;
|
||||||
|
double last_visit;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _Hist {
|
||||||
|
int version;
|
||||||
|
Eina_Hash * items;
|
||||||
|
const char *__eet_filename;
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char HIST_ITEM_ENTRY[] = "hist_item";
|
||||||
|
static const char HIST_ENTRY[] = "hist";
|
||||||
|
|
||||||
|
static Eet_Data_Descriptor *_hist_item_descriptor = NULL;
|
||||||
|
static Eet_Data_Descriptor *_hist_descriptor = NULL;
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
_hist_item_init(void)
|
||||||
|
{
|
||||||
|
Eet_Data_Descriptor_Class eddc;
|
||||||
|
|
||||||
|
if (_hist_item_descriptor) return;
|
||||||
|
|
||||||
|
EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Hist_Item);
|
||||||
|
_hist_item_descriptor = eet_data_descriptor_stream_new(&eddc);
|
||||||
|
|
||||||
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_hist_item_descriptor, Hist_Item, "title", title, EET_T_STRING);
|
||||||
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_hist_item_descriptor, Hist_Item, "url", url, EET_T_STRING);
|
||||||
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_hist_item_descriptor, Hist_Item, "visit_count", visit_count, EET_T_UINT);
|
||||||
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_hist_item_descriptor, Hist_Item, "last_visit", last_visit, EET_T_DOUBLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
_hist_item_shutdown(void)
|
||||||
|
{
|
||||||
|
if (!_hist_item_descriptor) return;
|
||||||
|
eet_data_descriptor_free(_hist_item_descriptor);
|
||||||
|
_hist_item_descriptor = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
Hist_Item *
|
||||||
|
hist_item_new(const char * title, const char * url, unsigned int visit_count, double last_visit)
|
||||||
|
{
|
||||||
|
Hist_Item *hist_item = calloc(1, sizeof(Hist_Item));
|
||||||
|
|
||||||
|
if (!hist_item)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "ERROR: could not calloc Hist_Item\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
hist_item->title = eina_stringshare_add(title ? title : "Untitled");
|
||||||
|
hist_item->url = eina_stringshare_add(url ? url : "about:blank");
|
||||||
|
hist_item->visit_count = visit_count;
|
||||||
|
hist_item->last_visit = last_visit;
|
||||||
|
|
||||||
|
return hist_item;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
hist_item_free(Hist_Item *hist_item)
|
||||||
|
{
|
||||||
|
eina_stringshare_del(hist_item->title);
|
||||||
|
eina_stringshare_del(hist_item->url);
|
||||||
|
free(hist_item);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline const char *
|
||||||
|
hist_item_title_get(const Hist_Item *hist_item)
|
||||||
|
{
|
||||||
|
return hist_item->title;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void
|
||||||
|
hist_item_title_set(Hist_Item *hist_item, const char *title)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(hist_item);
|
||||||
|
eina_stringshare_del(hist_item->title);
|
||||||
|
hist_item->title = eina_stringshare_add(title);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline const char *
|
||||||
|
hist_item_url_get(const Hist_Item *hist_item)
|
||||||
|
{
|
||||||
|
return hist_item->url;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void
|
||||||
|
hist_item_url_set(Hist_Item *hist_item, const char *url)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(hist_item);
|
||||||
|
eina_stringshare_del(hist_item->url);
|
||||||
|
hist_item->url = eina_stringshare_add(url);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline unsigned int
|
||||||
|
hist_item_visit_count_get(const Hist_Item *hist_item)
|
||||||
|
{
|
||||||
|
return hist_item->visit_count;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void
|
||||||
|
hist_item_visit_count_set(Hist_Item *hist_item, unsigned int visit_count)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(hist_item);
|
||||||
|
hist_item->visit_count = visit_count;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline double
|
||||||
|
hist_item_last_visit_get(const Hist_Item *hist_item)
|
||||||
|
{
|
||||||
|
return hist_item->last_visit;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void
|
||||||
|
hist_item_last_visit_set(Hist_Item *hist_item, double last_visit)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(hist_item);
|
||||||
|
hist_item->last_visit = last_visit;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
_hist_init(void)
|
||||||
|
{
|
||||||
|
Eet_Data_Descriptor_Class eddc;
|
||||||
|
|
||||||
|
if (_hist_descriptor) return;
|
||||||
|
|
||||||
|
EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Hist);
|
||||||
|
_hist_descriptor = eet_data_descriptor_stream_new(&eddc);
|
||||||
|
|
||||||
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_hist_descriptor, Hist, "version", version, EET_T_INT);
|
||||||
|
EET_DATA_DESCRIPTOR_ADD_HASH(_hist_descriptor, Hist, "items", items, _hist_item_descriptor);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
_hist_shutdown(void)
|
||||||
|
{
|
||||||
|
if (!_hist_descriptor) return;
|
||||||
|
eet_data_descriptor_free(_hist_descriptor);
|
||||||
|
_hist_descriptor = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
Hist *
|
||||||
|
hist_new(int version)
|
||||||
|
{
|
||||||
|
Hist *hist = calloc(1, sizeof(Hist));
|
||||||
|
|
||||||
|
if (!hist)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "ERROR: could not calloc Hist\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
hist->version = version;
|
||||||
|
hist->items = eina_hash_stringshared_new(EINA_FREE_CB(hist_item_free));
|
||||||
|
|
||||||
|
return hist;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
hist_free(Hist *hist)
|
||||||
|
{
|
||||||
|
eina_hash_free(hist->items);
|
||||||
|
free(hist);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline int
|
||||||
|
hist_version_get(const Hist *hist)
|
||||||
|
{
|
||||||
|
return hist->version;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void
|
||||||
|
hist_version_set(Hist *hist, int version)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(hist);
|
||||||
|
hist->version = version;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
hist_items_add(Hist *hist, const char * url, Hist_Item *hist_item)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(hist);
|
||||||
|
eina_hash_add(hist->items, url, hist_item);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
hist_items_del(Hist *hist, const char * url)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(hist);
|
||||||
|
eina_hash_del(hist->items, url, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline Hist_Item *
|
||||||
|
hist_items_get(const Hist *hist, const char * url)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(hist, NULL);
|
||||||
|
return eina_hash_find(hist->items, url);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline Eina_Hash *
|
||||||
|
hist_items_hash_get(const Hist *hist)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(hist, NULL);
|
||||||
|
return hist->items;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
hist_items_modify(Hist *hist, const char * key, void *value)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN(hist);
|
||||||
|
eina_hash_modify(hist->items, key, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
Hist *
|
||||||
|
hist_load(const char *filename)
|
||||||
|
{
|
||||||
|
Hist *hist;
|
||||||
|
Eet_File *ef = eet_open(filename, EET_FILE_MODE_READ);
|
||||||
|
if (!ef)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "ERROR: could not open '%s' for read\n", filename);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
hist = eet_data_read(ef, _hist_descriptor, HIST_ENTRY);
|
||||||
|
hist->__eet_filename = eina_stringshare_add(filename);
|
||||||
|
|
||||||
|
if (!hist->items) hist->items = eina_hash_stringshared_new(EINA_FREE_CB(hist_item_free));
|
||||||
|
|
||||||
|
eet_close(ef);
|
||||||
|
return hist;
|
||||||
|
}
|
||||||
|
|
||||||
|
Eina_Bool
|
||||||
|
hist_save(Hist *hist, const char *filename)
|
||||||
|
{
|
||||||
|
char tmp[PATH_MAX];
|
||||||
|
Eet_File *ef;
|
||||||
|
Eina_Bool ret;
|
||||||
|
unsigned int i, len;
|
||||||
|
struct stat st;
|
||||||
|
|
||||||
|
if (filename) hist->__eet_filename = eina_stringshare_add(filename);
|
||||||
|
else if (hist->__eet_filename) filename = hist->__eet_filename;
|
||||||
|
else return EINA_FALSE;
|
||||||
|
|
||||||
|
len = eina_strlcpy(tmp, filename, sizeof(tmp));
|
||||||
|
if (len + 12 >= (int)sizeof(tmp))
|
||||||
|
{
|
||||||
|
fprintf(stderr, "ERROR: filename is too big: %s\n", filename);
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
snprintf(tmp + len, 12, ".%u", i);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
while(stat(tmp, &st) == 0);
|
||||||
|
|
||||||
|
ef = eet_open(tmp, EET_FILE_MODE_WRITE);
|
||||||
|
if (!ef)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "ERROR: could not open '%s' for write\n", tmp);
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = !!eet_data_write(ef, _hist_descriptor, HIST_ENTRY, hist, EINA_TRUE);
|
||||||
|
eet_close(ef);
|
||||||
|
|
||||||
|
if (ret)
|
||||||
|
{
|
||||||
|
unlink(filename);
|
||||||
|
rename(tmp, filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
history_init(void)
|
||||||
|
{
|
||||||
|
_hist_item_init();
|
||||||
|
_hist_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
history_shutdown(void)
|
||||||
|
{
|
||||||
|
_hist_item_shutdown();
|
||||||
|
_hist_shutdown();
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
/* This file has been automatically generated by geneet.py */
|
||||||
|
/* DO NOT MODIFY */
|
||||||
|
|
||||||
|
#ifndef __HISTORY_H__
|
||||||
|
#define __HISTORY_H__
|
||||||
|
|
||||||
|
#include <Eina.h>
|
||||||
|
#include <Eet.h>
|
||||||
|
|
||||||
|
typedef struct _Hist_Item Hist_Item;
|
||||||
|
typedef struct _Hist Hist;
|
||||||
|
|
||||||
|
/* Hist_Item */
|
||||||
|
Hist_Item *hist_item_new(const char * title, const char * url, unsigned int visit_count, double last_visit);
|
||||||
|
void hist_item_free(Hist_Item *hist_item);
|
||||||
|
|
||||||
|
void hist_item_title_set(Hist_Item *hist_item, const char * title);
|
||||||
|
const char * hist_item_title_get(const Hist_Item *hist_item);
|
||||||
|
void hist_item_url_set(Hist_Item *hist_item, const char * url);
|
||||||
|
const char * hist_item_url_get(const Hist_Item *hist_item);
|
||||||
|
void hist_item_visit_count_set(Hist_Item *hist_item, unsigned int visit_count);
|
||||||
|
unsigned int hist_item_visit_count_get(const Hist_Item *hist_item);
|
||||||
|
void hist_item_last_visit_set(Hist_Item *hist_item, double last_visit);
|
||||||
|
double hist_item_last_visit_get(const Hist_Item *hist_item);
|
||||||
|
|
||||||
|
/* Hist */
|
||||||
|
Hist *hist_new(int version);
|
||||||
|
void hist_free(Hist *hist);
|
||||||
|
|
||||||
|
void hist_version_set(Hist *hist, int version);
|
||||||
|
int hist_version_get(const Hist *hist);
|
||||||
|
void hist_items_add(Hist *hist, const char * url, Hist_Item *hist_item);
|
||||||
|
void hist_items_del(Hist *hist, const char * url);
|
||||||
|
Hist_Item *hist_items_get(const Hist *hist, const char * key);
|
||||||
|
Eina_Hash *hist_items_hash_get(const Hist *hist);
|
||||||
|
void hist_items_modify(Hist *hist, const char * key, void *value);
|
||||||
|
|
||||||
|
Hist *hist_load(const char *filename);
|
||||||
|
Eina_Bool hist_save(Hist *hist, const char *filename);
|
||||||
|
|
||||||
|
/* Global initializer / shutdown functions */
|
||||||
|
void history_init(void);
|
||||||
|
void history_shutdown(void);
|
||||||
|
|
||||||
|
#endif /* __HISTORY_H__ */
|
|
@ -0,0 +1,430 @@
|
||||||
|
/*
|
||||||
|
* eve
|
||||||
|
*
|
||||||
|
* Copyright (C) 2009, Gustavo Sverzut Barbieri <barbieri@profusion.mobi>
|
||||||
|
*
|
||||||
|
* License LGPL-3, see COPYING file at project folder.
|
||||||
|
*/
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
#include <Elementary.h>
|
||||||
|
#ifndef ELM_LIB_QUICKLAUNCH
|
||||||
|
|
||||||
|
#include "favorite.h"
|
||||||
|
#include "private.h"
|
||||||
|
|
||||||
|
#include <Ecore_Getopt.h>
|
||||||
|
#include <Ecore_File.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "gettext.h"
|
||||||
|
|
||||||
|
int _log_domain = -1;
|
||||||
|
Fav *fav = NULL;
|
||||||
|
Hist *hist = NULL;
|
||||||
|
App app;
|
||||||
|
|
||||||
|
static void
|
||||||
|
del_win(App * app, Evas_Object * win)
|
||||||
|
{
|
||||||
|
Browser_Window *win_data;
|
||||||
|
Eina_List *l;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(app->windows, l, win_data) if (win_data->win == win)
|
||||||
|
break;
|
||||||
|
|
||||||
|
evas_object_del(win);
|
||||||
|
app->windows = eina_list_remove(app->windows, win_data);
|
||||||
|
free(win_data);
|
||||||
|
|
||||||
|
if (!app->windows)
|
||||||
|
elm_exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
on_win_del_req(void *data, Evas_Object * win, void *event_info __UNUSED__)
|
||||||
|
{
|
||||||
|
del_win(data, win);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* this should be in elm_win... */
|
||||||
|
static void
|
||||||
|
win_mouse_disable(Evas_Object * win)
|
||||||
|
{
|
||||||
|
Evas *e = evas_object_evas_get(win);
|
||||||
|
Ecore_Evas *ee = evas_data_attach_get(e);
|
||||||
|
Evas_Object *cursor = evas_object_rectangle_add(e);
|
||||||
|
|
||||||
|
evas_object_color_set(cursor, 0, 0, 0, 0);
|
||||||
|
evas_object_resize(cursor, 1, 1);
|
||||||
|
ecore_evas_object_cursor_set(ee, cursor, EVAS_LAYER_MIN, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eina_Bool
|
||||||
|
tab_add(Browser_Window * win, const char *url)
|
||||||
|
{
|
||||||
|
Evas_Object *chrome = chrome_add(win, url);
|
||||||
|
|
||||||
|
if (!chrome)
|
||||||
|
{
|
||||||
|
CRITICAL("Could not create chrome.");
|
||||||
|
goto error_chrome_create;
|
||||||
|
}
|
||||||
|
evas_object_size_hint_weight_set(chrome, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_show(chrome);
|
||||||
|
|
||||||
|
win->chromes = eina_list_append(win->chromes, chrome);
|
||||||
|
win->current_chrome = chrome;
|
||||||
|
win->current_view = evas_object_data_get(chrome, "view");
|
||||||
|
win->current_tab++;
|
||||||
|
|
||||||
|
return EINA_TRUE;
|
||||||
|
|
||||||
|
error_chrome_create:
|
||||||
|
evas_object_del(evas_object_data_get(chrome, "view"));
|
||||||
|
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
Eina_Bool
|
||||||
|
tab_focus_chrome(Browser_Window * win, Evas_Object * chrome)
|
||||||
|
{
|
||||||
|
Eina_List *itr;
|
||||||
|
int n;
|
||||||
|
|
||||||
|
if (!chrome)
|
||||||
|
return EINA_FALSE;
|
||||||
|
|
||||||
|
for (n = 0, itr = win->chromes; itr->data != chrome; n++, itr = itr->next);
|
||||||
|
|
||||||
|
evas_object_hide(win->current_chrome);
|
||||||
|
|
||||||
|
win->current_chrome = chrome;
|
||||||
|
win->current_view = evas_object_data_get(chrome, "view");
|
||||||
|
win->current_tab = n;
|
||||||
|
|
||||||
|
evas_object_show(win->current_chrome);
|
||||||
|
evas_object_focus_set(win->current_view, EINA_TRUE);
|
||||||
|
elm_pager_content_promote(win->pager, win->current_chrome);
|
||||||
|
|
||||||
|
return EINA_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
Eina_Bool
|
||||||
|
tab_focus_nth(Browser_Window * win, unsigned int n)
|
||||||
|
{
|
||||||
|
return tab_focus_chrome(win, eina_list_nth(win->chromes, n));
|
||||||
|
}
|
||||||
|
|
||||||
|
Eina_Bool
|
||||||
|
tab_focus_next(Browser_Window * win)
|
||||||
|
{
|
||||||
|
unsigned int n_tabs = eina_list_count(win->chromes);
|
||||||
|
|
||||||
|
if (win->current_tab > n_tabs)
|
||||||
|
return EINA_FALSE;
|
||||||
|
return tab_focus_nth(win, win->current_tab + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eina_Bool
|
||||||
|
tab_focus_prev(Browser_Window * win)
|
||||||
|
{
|
||||||
|
if (win->current_tab == 0)
|
||||||
|
return EINA_FALSE;
|
||||||
|
return tab_focus_nth(win, win->current_tab - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eina_Bool
|
||||||
|
tab_close_chrome(Browser_Window * win, Evas_Object * chrome)
|
||||||
|
{
|
||||||
|
Evas_Object *edje;
|
||||||
|
|
||||||
|
EINA_SAFETY_ON_TRUE_RETURN_VAL(!win, EINA_FALSE);
|
||||||
|
EINA_SAFETY_ON_TRUE_RETURN_VAL(!chrome, EINA_FALSE);
|
||||||
|
|
||||||
|
if (!win->chromes->next)
|
||||||
|
{
|
||||||
|
del_win(win->app, win->win);
|
||||||
|
return EINA_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
evas_object_del(chrome);
|
||||||
|
win->chromes = eina_list_remove(win->chromes, chrome);
|
||||||
|
if (win->current_chrome == chrome)
|
||||||
|
tab_focus_nth(win, 0);
|
||||||
|
|
||||||
|
edje = elm_layout_edje_get(win->current_chrome);
|
||||||
|
edje_object_signal_emit(edje, "hide,tab", "");
|
||||||
|
|
||||||
|
return EINA_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
Eina_Bool
|
||||||
|
tab_close_nth(Browser_Window * win, int n)
|
||||||
|
{
|
||||||
|
return tab_close_chrome(win, eina_list_nth(win->chromes, n));
|
||||||
|
}
|
||||||
|
|
||||||
|
Eina_Bool
|
||||||
|
tab_close_view(Browser_Window * win, Evas_Object *view)
|
||||||
|
{
|
||||||
|
return tab_close_chrome(win, evas_object_data_get(view, "chrome"));
|
||||||
|
}
|
||||||
|
|
||||||
|
static Browser_Window *
|
||||||
|
add_win(App * app, const char *url)
|
||||||
|
{
|
||||||
|
Browser_Window *win = malloc(sizeof(*win));
|
||||||
|
|
||||||
|
if (!win)
|
||||||
|
{
|
||||||
|
CRITICAL("Could not create window data.");
|
||||||
|
goto error_win_data;
|
||||||
|
}
|
||||||
|
|
||||||
|
win->app = app;
|
||||||
|
win->chromes = NULL;
|
||||||
|
win->current_chrome = NULL;
|
||||||
|
win->current_view = NULL;
|
||||||
|
win->current_tab = 0;
|
||||||
|
win->list_history = NULL;
|
||||||
|
win->list_history_titles = NULL;
|
||||||
|
|
||||||
|
win->win = elm_win_add(NULL, "eve", ELM_WIN_BASIC);
|
||||||
|
if (!win->win)
|
||||||
|
{
|
||||||
|
CRITICAL("Could not create window.");
|
||||||
|
goto error_win_create;
|
||||||
|
}
|
||||||
|
|
||||||
|
elm_win_title_set(win->win, PACKAGE_STRING);
|
||||||
|
elm_win_fullscreen_set(win->win, app->is_fullscreen);
|
||||||
|
if (app->disable_mouse)
|
||||||
|
win_mouse_disable(win->win);
|
||||||
|
|
||||||
|
win->bg = edje_object_add(evas_object_evas_get(win->win));
|
||||||
|
if (!win->bg)
|
||||||
|
{
|
||||||
|
CRITICAL("Could not create background.");
|
||||||
|
goto error_bg_create;
|
||||||
|
}
|
||||||
|
if (!edje_object_file_set(win->bg, PACKAGE_DATA_DIR "/default.edj", "bg"))
|
||||||
|
{
|
||||||
|
int err = edje_object_load_error_get(win->bg);
|
||||||
|
|
||||||
|
const char *msg = edje_load_error_str(err);
|
||||||
|
|
||||||
|
CRITICAL("Could not load background theme: %s", msg);
|
||||||
|
goto error_bg_theme_set;
|
||||||
|
}
|
||||||
|
evas_object_size_hint_weight_set(win->bg, EVAS_HINT_EXPAND,
|
||||||
|
EVAS_HINT_EXPAND);
|
||||||
|
elm_win_resize_object_add(win->win, win->bg);
|
||||||
|
evas_object_layer_set(win->bg, EVAS_LAYER_MIN);
|
||||||
|
evas_object_show(win->bg);
|
||||||
|
|
||||||
|
win->pager = elm_pager_add(win->win);
|
||||||
|
if (!win->pager)
|
||||||
|
{
|
||||||
|
CRITICAL("Could not create pager");
|
||||||
|
goto error_pager_create;
|
||||||
|
}
|
||||||
|
elm_object_style_set(win->pager, "ewebkit");
|
||||||
|
evas_object_size_hint_weight_set(win->pager, EVAS_HINT_EXPAND,
|
||||||
|
EVAS_HINT_EXPAND);
|
||||||
|
elm_win_resize_object_add(win->win, win->pager);
|
||||||
|
evas_object_show(win->pager);
|
||||||
|
|
||||||
|
if (!tab_add(win, url))
|
||||||
|
goto error_tab_add;
|
||||||
|
|
||||||
|
app->windows = eina_list_append(app->windows, win);
|
||||||
|
evas_object_smart_callback_add
|
||||||
|
(win->win, "delete-request", on_win_del_req, app);
|
||||||
|
|
||||||
|
evas_object_resize(win->win, 480, 800);
|
||||||
|
evas_object_show(win->win);
|
||||||
|
|
||||||
|
return win;
|
||||||
|
|
||||||
|
error_bg_theme_set:
|
||||||
|
evas_object_del(win->bg);
|
||||||
|
error_bg_create:
|
||||||
|
evas_object_del(win->win);
|
||||||
|
error_win_create:
|
||||||
|
free(win);
|
||||||
|
error_win_data:
|
||||||
|
error_tab_add:
|
||||||
|
error_pager_create:
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new window, without any url to load, calling add_win().
|
||||||
|
*
|
||||||
|
* @return If a window was successfully created, it returns the correspondent view
|
||||||
|
* object.
|
||||||
|
*/
|
||||||
|
Evas_Object *
|
||||||
|
window_create()
|
||||||
|
{
|
||||||
|
Browser_Window *win = add_win(&app, NULL);
|
||||||
|
|
||||||
|
if (!win)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return win->current_view;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const Ecore_Getopt options = {
|
||||||
|
PACKAGE_NAME,
|
||||||
|
"%prog [options] [url]",
|
||||||
|
PACKAGE_VERSION,
|
||||||
|
"(C) 2000 ProFUSION embedded systems",
|
||||||
|
"LGPL-3",
|
||||||
|
"WebKit-EFL demo browser for mobile systems with touchscreen.",
|
||||||
|
EINA_TRUE,
|
||||||
|
{
|
||||||
|
ECORE_GETOPT_STORE_DEF_BOOL('F', "fullscreen", "start in fullscreen.", 1),
|
||||||
|
ECORE_GETOPT_STORE_DEF_BOOL('P', "disable-plugins",
|
||||||
|
"disable plugins (flash, etc).", 1),
|
||||||
|
ECORE_GETOPT_STORE_DEF_BOOL('M', "disable-mouse",
|
||||||
|
"disable mouse (hide it).", 1),
|
||||||
|
ECORE_GETOPT_STORE_STR('U', "user-agent",
|
||||||
|
"user agent string to use. Special case=iphone."),
|
||||||
|
ECORE_GETOPT_VERSION('V', "version"),
|
||||||
|
ECORE_GETOPT_COPYRIGHT('R', "copyright"),
|
||||||
|
ECORE_GETOPT_LICENSE('L', "license"),
|
||||||
|
ECORE_GETOPT_HELP('h', "help"),
|
||||||
|
ECORE_GETOPT_SENTINEL}
|
||||||
|
};
|
||||||
|
|
||||||
|
EAPI int
|
||||||
|
elm_main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
int r = 0, args;
|
||||||
|
const char *home;
|
||||||
|
const char *url;
|
||||||
|
char path[PATH_MAX];
|
||||||
|
Eina_Bool quit_option = EINA_FALSE;
|
||||||
|
char *user_agent = NULL;
|
||||||
|
|
||||||
|
Ecore_Getopt_Value values[] = {
|
||||||
|
ECORE_GETOPT_VALUE_BOOL(app.is_fullscreen),
|
||||||
|
ECORE_GETOPT_VALUE_BOOL(app.disable_plugins),
|
||||||
|
ECORE_GETOPT_VALUE_BOOL(app.disable_mouse),
|
||||||
|
ECORE_GETOPT_VALUE_STR(user_agent),
|
||||||
|
ECORE_GETOPT_VALUE_BOOL(quit_option),
|
||||||
|
ECORE_GETOPT_VALUE_BOOL(quit_option),
|
||||||
|
ECORE_GETOPT_VALUE_BOOL(quit_option),
|
||||||
|
ECORE_GETOPT_VALUE_BOOL(quit_option),
|
||||||
|
ECORE_GETOPT_VALUE_NONE
|
||||||
|
};
|
||||||
|
|
||||||
|
#if ENABLE_NLS
|
||||||
|
setlocale(LC_ALL, "");
|
||||||
|
bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
|
||||||
|
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
|
||||||
|
textdomain(GETTEXT_PACKAGE);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
_log_domain = eina_log_domain_register("eve", NULL);
|
||||||
|
if (_log_domain < 0)
|
||||||
|
{
|
||||||
|
EINA_LOG_CRIT("could not create log domain 'eve'.");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
args = ecore_getopt_parse(&options, values, argc, argv);
|
||||||
|
if (args < 0)
|
||||||
|
{
|
||||||
|
ERR("Could not parse command line options.");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (quit_option)
|
||||||
|
{
|
||||||
|
DBG("Command lines option requires quit.");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args < argc)
|
||||||
|
url = argv[args];
|
||||||
|
else
|
||||||
|
url = DEFAULT_URL;
|
||||||
|
|
||||||
|
if (user_agent && strcasecmp(user_agent, "iphone") == 0)
|
||||||
|
user_agent =
|
||||||
|
"Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3";
|
||||||
|
|
||||||
|
app.user_agent = eina_stringshare_add(user_agent);
|
||||||
|
|
||||||
|
elm_theme_extension_add(NULL, PACKAGE_DATA_DIR "/default.edj");
|
||||||
|
ewk_init();
|
||||||
|
favorite_init();
|
||||||
|
history_init();
|
||||||
|
|
||||||
|
home = getenv("HOME");
|
||||||
|
if (!home || !home[0])
|
||||||
|
{
|
||||||
|
CRITICAL("Could not get $HOME");
|
||||||
|
r = -1;
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
|
snprintf(path, sizeof(path), "%s/.config/ewebkit", home);
|
||||||
|
if (!ecore_file_mkpath(path))
|
||||||
|
{
|
||||||
|
ERR("Could not create %s", path);
|
||||||
|
r = -1;
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
if (!ewk_settings_icon_database_path_set(path))
|
||||||
|
{
|
||||||
|
ERR("Could not set icon database path to %s", path);
|
||||||
|
r = -1;
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
|
snprintf(path, sizeof(path), "%s/.config/ewebkit/favorites.db", home);
|
||||||
|
fav = fav_load(path);
|
||||||
|
if (!fav)
|
||||||
|
{
|
||||||
|
fav = fav_new(0);
|
||||||
|
fav_save(fav, path);
|
||||||
|
}
|
||||||
|
|
||||||
|
snprintf(path, sizeof(path), "%s/.config/ewebkit/history.db", home);
|
||||||
|
hist = hist_load(path);
|
||||||
|
if (!hist)
|
||||||
|
{
|
||||||
|
hist = hist_new(0);
|
||||||
|
hist_save(hist, path);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!add_win(&app, url))
|
||||||
|
{
|
||||||
|
r = -1;
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
|
elm_run();
|
||||||
|
end:
|
||||||
|
fav_save(fav, NULL);
|
||||||
|
fav_free(fav);
|
||||||
|
|
||||||
|
hist_save(hist, NULL);
|
||||||
|
hist_free(hist);
|
||||||
|
|
||||||
|
eina_stringshare_del(app.user_agent);
|
||||||
|
|
||||||
|
eina_log_domain_unregister(_log_domain);
|
||||||
|
_log_domain = -1;
|
||||||
|
elm_shutdown();
|
||||||
|
ewk_shutdown();
|
||||||
|
favorite_shutdown();
|
||||||
|
history_shutdown();
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
ELM_MAIN()
|
|
@ -0,0 +1,98 @@
|
||||||
|
#ifndef EWEBKIT_DEMO_PRIVATE_H
|
||||||
|
#define EWEBKIT_DEMO_PRIVATE_H
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <Elementary.h>
|
||||||
|
#include <EWebKit.h>
|
||||||
|
|
||||||
|
#include "favorite.h"
|
||||||
|
#include "history.h"
|
||||||
|
|
||||||
|
typedef struct _App App;
|
||||||
|
typedef struct _Browser_Window Browser_Window;
|
||||||
|
typedef struct _View_Zoom_Interactive View_Zoom_Interactive;
|
||||||
|
|
||||||
|
extern int _log_domain;
|
||||||
|
extern Fav *fav;
|
||||||
|
extern Hist *hist;
|
||||||
|
extern App app;
|
||||||
|
|
||||||
|
#define CRITICAL(...) EINA_LOG_DOM_CRIT(_log_domain, __VA_ARGS__)
|
||||||
|
#define ERR(...) EINA_LOG_DOM_ERR(_log_domain, __VA_ARGS__)
|
||||||
|
#define WRN(...) EINA_LOG_DOM_WARN(_log_domain, __VA_ARGS__)
|
||||||
|
#define INF(...) EINA_LOG_DOM_INFO(_log_domain, __VA_ARGS__)
|
||||||
|
#define DBG(...) EINA_LOG_DOM_DBG(_log_domain, __VA_ARGS__)
|
||||||
|
|
||||||
|
#define DEFAULT_URL "http://www.google.com"
|
||||||
|
|
||||||
|
/* TODO: Move all tab related stuff to its own struct */
|
||||||
|
struct _Browser_Window
|
||||||
|
{
|
||||||
|
App *app;
|
||||||
|
|
||||||
|
Evas_Object *win;
|
||||||
|
Evas_Object *bg;
|
||||||
|
Evas_Object *pager;
|
||||||
|
|
||||||
|
Eina_List *chromes;
|
||||||
|
|
||||||
|
Eina_List *list_history;
|
||||||
|
Eina_List *list_history_titles;
|
||||||
|
|
||||||
|
Evas_Object *current_chrome;
|
||||||
|
Evas_Object *current_view;
|
||||||
|
|
||||||
|
unsigned int current_tab;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _App
|
||||||
|
{
|
||||||
|
Eina_List *windows;
|
||||||
|
const char *user_agent;
|
||||||
|
|
||||||
|
Eina_Bool is_fullscreen;
|
||||||
|
Eina_Bool disable_plugins;
|
||||||
|
Eina_Bool disable_mouse;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _View_Zoom_Interactive
|
||||||
|
{
|
||||||
|
Evas_Coord x, y;
|
||||||
|
float zoom;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create new view object.
|
||||||
|
*
|
||||||
|
* Signals:
|
||||||
|
*
|
||||||
|
* * "zoom,interactive" View_Zoom_Interactive: zoom interactive
|
||||||
|
* requested a new level specified in given event information.
|
||||||
|
*
|
||||||
|
* * "zoom,interactive,start" void: report zoom interactive started.
|
||||||
|
* * "zoom,interactive,end" void: report zoom interactive is finished.
|
||||||
|
*/
|
||||||
|
|
||||||
|
Evas_Object *window_create();
|
||||||
|
Evas_Object *view_add(Evas_Object *parent);
|
||||||
|
void view_zoom_next_up(Evas_Object *view);
|
||||||
|
void view_zoom_next_down(Evas_Object *view);
|
||||||
|
Eina_Bool view_context_menu_set(Evas_Object *view, Evas_Object *widget, Ewk_Context_Menu *menu);
|
||||||
|
Evas_Object *view_context_menu_widget_get(Evas_Object *view);
|
||||||
|
Ewk_Context_Menu *view_context_menu_get(Evas_Object *view);
|
||||||
|
|
||||||
|
Evas_Object *chrome_add(Browser_Window *win, const char *url);
|
||||||
|
|
||||||
|
Eina_Bool tab_add(Browser_Window *win, const char *url);
|
||||||
|
Eina_Bool tab_focus_nth(Browser_Window *win, unsigned int n);
|
||||||
|
Eina_Bool tab_focus_chrome(Browser_Window * win, Evas_Object * chrome);
|
||||||
|
Eina_Bool tab_focus_next(Browser_Window *win);
|
||||||
|
Eina_Bool tab_focus_prev(Browser_Window *win);
|
||||||
|
Eina_Bool tab_close_nth(Browser_Window *win, int n);
|
||||||
|
Eina_Bool tab_close_view(Browser_Window *win, Evas_Object * view);
|
||||||
|
Eina_Bool tab_close_chrome(Browser_Window * win, Evas_Object * chrome);
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,18 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<title> Test combobox </title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<select>
|
||||||
|
<option value="volvo">Volvo</option>
|
||||||
|
<option value="saab">Saab</option>
|
||||||
|
<option value="mercedes">Mercedes</option>
|
||||||
|
<option value="audi">Audi</option>
|
||||||
|
</select>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
|
@ -0,0 +1,25 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<title> Test JS alert message </title>
|
||||||
|
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
|
||||||
|
function show_alert() {
|
||||||
|
name = alert("This is an alert message. <br>Only one \"Close\" button is used.");
|
||||||
|
}
|
||||||
|
alert("adasdas");
|
||||||
|
</SCRIPT>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<h1>test JS alert message</h1>
|
||||||
|
<br>
|
||||||
|
This test should send a message using alert() on javascript. This tipically means
|
||||||
|
a popup showing the message with a button to close it.
|
||||||
|
|
||||||
|
|
||||||
|
<p><input type='button' value='Show alert' onClick='show_alert()'></p>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<title> Test JS confirm message </title>
|
||||||
|
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
|
||||||
|
function show_confirm() {
|
||||||
|
ret = confirm("I'm going to test ok button");
|
||||||
|
if (ret)
|
||||||
|
alert("chosen: OK");
|
||||||
|
else
|
||||||
|
alert("chosen: Cancel");
|
||||||
|
}
|
||||||
|
</SCRIPT>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<h1>test js confirm messsage</h1>
|
||||||
|
<br>
|
||||||
|
This test shows a confirm message, waiting for user to answer OK or CANCEL. Tipically it is implemented
|
||||||
|
as a dialog. The default handling function is to print to stdout and confirm.
|
||||||
|
|
||||||
|
<p><input type='button' value='Show confirm' onClick='show_confirm()'></p>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,21 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title> Test JS console message </title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
|
||||||
|
var err = new Error();
|
||||||
|
err.name = 'My Console Message test';
|
||||||
|
err.message = 'Test error message';
|
||||||
|
throw(err);
|
||||||
|
</SCRIPT>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<h1>test js console messsage</h1>
|
||||||
|
<br>
|
||||||
|
This test should send a message to console. The default handling function is to print
|
||||||
|
to stdout.
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,23 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Test JS prompt</title>
|
||||||
|
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
|
||||||
|
function show_prompt() {
|
||||||
|
var name;
|
||||||
|
name = prompt ("what's your name?", "my default value defined in html");
|
||||||
|
alert ("Your name is "+name);
|
||||||
|
}
|
||||||
|
</SCRIPT>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>test JS prompt</h1>
|
||||||
|
<br>
|
||||||
|
This test shows a prompt message, asking for user to enter text. Tipically it is implemented
|
||||||
|
as a dialog. The default handling function is to print to stdout and answer 'test'.
|
||||||
|
|
||||||
|
|
||||||
|
<p><input type='button' value='Show prompt' onClick='show_prompt()'></p>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,13 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<title> Test -- Link will open a new window </title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<a href="http://www.google.com" target="_blank">Go to Google</a>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
|
@ -0,0 +1,23 @@
|
||||||
|
<html>
|
||||||
|
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
|
||||||
|
function test_infinite_loop() {
|
||||||
|
var name;
|
||||||
|
document.write("Running stupid infinite loop...");
|
||||||
|
var i=1;
|
||||||
|
while(i) {
|
||||||
|
document.write("stupid script")
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
alert ("I should never reach this");
|
||||||
|
}
|
||||||
|
</SCRIPT>
|
||||||
|
|
||||||
|
<h1>test should interrupt javascript</h1>
|
||||||
|
<br>
|
||||||
|
This test shows a prompt message, asking for user to enter text. Tipically it is implemented
|
||||||
|
as a dialog. The default handling function is to print to stdout and answer 'test'.
|
||||||
|
|
||||||
|
|
||||||
|
<p><input type='button' value='Run infinite loop' onClick='test_infinite_loop()'></p>
|
||||||
|
|
||||||
|
</html>
|