forked from enlightenment/terminology
finally a terminal emulator for efl! sure - uses a lot of text
objects. need evas textgrid obj and more, but this marks a first "usable" state for terminology. more needs doing like underline and strikethrough support, blink support, visual bell, config panel etc. SVN revision: 72007
This commit is contained in:
commit
8b822a61d7
|
@ -0,0 +1,357 @@
|
|||
Copyright notice for terminology:
|
||||
|
||||
Copyright (C) 2012-2012 Carsten Haitzler and various contributors (see AUTHORS)
|
||||
|
||||
This library 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; version 2 of the License.
|
||||
|
||||
This library 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 Lesser General Public License for more
|
||||
details.
|
||||
|
||||
Below is a copy of the GNU General Public License that is distributed
|
||||
along with this library. If you do not have a copy below, write to the Free
|
||||
Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the 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 Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Appendix: How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) 19yy <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
|
@ -0,0 +1,11 @@
|
|||
COMPILING and INSTALLING:
|
||||
|
||||
If you got a official release tar archive do:
|
||||
./configure
|
||||
|
||||
Then to compile:
|
||||
make
|
||||
|
||||
To install (run this as root, or the user who handles installs):
|
||||
make install
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
SUBDIRS = src data
|
||||
|
||||
MAINTAINERCLEANFILES = \
|
||||
Makefile.in \
|
||||
$(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar.gz \
|
||||
$(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar.bz2 \
|
||||
aclocal.m4 \
|
||||
config.guess \
|
||||
terminology_config.h.in \
|
||||
config.sub \
|
||||
configure \
|
||||
compile \
|
||||
depcomp \
|
||||
install-sh \
|
||||
ltconfig \
|
||||
ltmain.sh \
|
||||
missing \
|
||||
mkinstalldirs \
|
||||
stamp-h.in \
|
||||
stamp-h \
|
||||
m4/libtool.m4 \
|
||||
m4/lt~obsolete.m4 \
|
||||
m4/ltoptions.m4 \
|
||||
m4/ltsugar.m4 \
|
||||
m4/ltversion.m4
|
||||
|
||||
EXTRA_DIST = README AUTHORS COPYING
|
|
@ -0,0 +1,23 @@
|
|||
Terminology
|
||||
-----------
|
||||
|
||||
An EFL terminal emtulator
|
||||
|
||||
Requiremnents:
|
||||
--------------
|
||||
|
||||
* elementary 1.1 (1.0.99 SVN latest)
|
||||
* evas 1.3 (1.2.99 SVN latest)
|
||||
* ecore
|
||||
* edje
|
||||
|
||||
Please see http://www.enlightenment.org for information on these.
|
||||
|
||||
Compiling:
|
||||
----------
|
||||
|
||||
Once you have met requirements, compiling and installing is simple:
|
||||
|
||||
./configure
|
||||
make
|
||||
make install
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/sh
|
||||
|
||||
rm -rf autom4te.cache
|
||||
rm -f aclocal.m4 ltmain.sh
|
||||
|
||||
touch README
|
||||
|
||||
echo "Running aclocal..." ; aclocal -I m4 $ACLOCAL_FLAGS || exit 1
|
||||
echo "Running autoheader..." ; autoheader || exit 1
|
||||
echo "Running autoconf..." ; autoconf || exit 1
|
||||
echo "Running libtoolize..." ; (libtoolize --copy --automake || glibtoolize --automake) || exit 1
|
||||
echo "Running automake..." ; automake --add-missing --copy --gnu || exit 1
|
||||
|
||||
if [ -z "$NOCONFIGURE" ]; then
|
||||
./configure "$@"
|
||||
fi
|
|
@ -0,0 +1,63 @@
|
|||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
# get rid of that stupid cache mechanism
|
||||
rm -f config.cache
|
||||
|
||||
AC_INIT([terminology], [0.1.0], [enlightenment-devel@lists.sourceforge.net])
|
||||
AC_PREREQ([2.52])
|
||||
AC_CONFIG_SRCDIR([configure.ac])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
||||
AC_CONFIG_HEADERS([terminology_config.h])
|
||||
|
||||
AM_INIT_AUTOMAKE([1.6 dist-bzip2])
|
||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||
|
||||
AM_PROG_CC_STDC
|
||||
AM_PROG_CC_C_O
|
||||
|
||||
requirements="\
|
||||
elementary >= 1.0.99 \
|
||||
eina >= 1.2.99 \
|
||||
eet >= 1.6.99 \
|
||||
evas >= 1.2.99 \
|
||||
ecore >= 1.2.99 \
|
||||
edje >= 1.2.99"
|
||||
|
||||
PKG_CHECK_MODULES([TERMINOLOGY], [${requirements}])
|
||||
|
||||
EFL_WITH_BIN([edje], [edje-cc], [edje_cc])
|
||||
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
src/Makefile
|
||||
src/bin/Makefile
|
||||
data/Makefile
|
||||
data/desktop/Makefile
|
||||
data/icons/Makefile
|
||||
data/images/Makefile
|
||||
data/fonts/Makefile
|
||||
data/themes/Makefile
|
||||
data/themes/images/Makefile
|
||||
])
|
||||
|
||||
AC_OUTPUT
|
||||
|
||||
#####################################################################
|
||||
## Info
|
||||
|
||||
echo
|
||||
echo
|
||||
echo
|
||||
echo "------------------------------------------------------------------------"
|
||||
echo "$PACKAGE $VERSION"
|
||||
echo "------------------------------------------------------------------------"
|
||||
echo
|
||||
echo "Compilation................: make (or gmake)"
|
||||
echo " CPPFLAGS.................: $CPPFLAGS"
|
||||
echo " CFLAGS...................: $CFLAGS"
|
||||
echo " LDFLAGS..................: $LDFLAGS"
|
||||
echo
|
||||
echo "Installation...............: make install (as root if needed, with 'su' or 'sudo')"
|
||||
echo " prefix...................: $prefix"
|
||||
echo
|
|
@ -0,0 +1,3 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
SUBDIRS = desktop icons images fonts themes
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
filesdir = $(datadir)/applications
|
||||
files_DATA = \
|
||||
terminology.desktop
|
||||
|
||||
EXTRA_DIST = $(files_DATA)
|
|
@ -0,0 +1,11 @@
|
|||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
Type=Application
|
||||
Name=Terminology
|
||||
Generic=Terminal
|
||||
Comment=Terminal emulator
|
||||
Exec=terminology
|
||||
Icon=terminology.png
|
||||
Categories=Utility;TerminalEmulator;
|
||||
Terminal=false
|
||||
StartupWMClass=terminology
|
|
@ -0,0 +1,6 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
filesdir = $(pkgdatadir)/fonts
|
||||
files_DATA = \
|
||||
nex6x10.pcf
|
||||
|
||||
EXTRA_DIST = $(files_DATA)
|
Binary file not shown.
|
@ -0,0 +1,6 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
filesdir = $(datadir)/icons
|
||||
files_DATA = \
|
||||
terminology.png
|
||||
|
||||
EXTRA_DIST = $(files_DATA)
|
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
|
@ -0,0 +1,5 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
filesdir = $(pkgdatadir)/images
|
||||
files_DATA =
|
||||
|
||||
EXTRA_DIST = $(files_DATA)
|
|
@ -0,0 +1,23 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
|
||||
SUBDIRS = images
|
||||
|
||||
EDJE_CC = @edje_cc@
|
||||
EDJE_FLAGS_VERBOSE_ =
|
||||
EDJE_FLAGS_VERBOSE_0 =
|
||||
EDJE_FLAGS_VERBOSE_1 = -v
|
||||
EDJE_FLAGS = $(EDJE_FLAGS_$(V)) -id $(top_srcdir)/data/themes/images -fd $(top_srcdir)/data/fonts
|
||||
|
||||
filesdir = $(pkgdatadir)/themes
|
||||
files_DATA = \
|
||||
default.edj
|
||||
|
||||
EXTRA_DIST = default.edc
|
||||
|
||||
default.edj: Makefile default.edc
|
||||
$(EDJE_CC) $(EDJE_FLAGS) \
|
||||
$(top_srcdir)/data/themes/default.edc \
|
||||
$(top_builddir)/data/themes/default.edj
|
||||
|
||||
clean-local:
|
||||
rm -f *.edj
|
|
@ -0,0 +1,91 @@
|
|||
collections {
|
||||
group { name: "terminology/background";
|
||||
images {
|
||||
image: "bg_bevel.png" COMP;
|
||||
image: "bg_shine.png" COMP;
|
||||
}
|
||||
parts {
|
||||
part { name: "base"; type: RECT;
|
||||
mouse_events: 1;
|
||||
description { state: "default" 0.0;
|
||||
color: 48 48 48 255;
|
||||
}
|
||||
}
|
||||
part { name: "terminology.content"; type: SWALLOW;
|
||||
description { state: "default" 0.0;
|
||||
rel1.offset: 1 2;
|
||||
rel2.offset: -2 -2;
|
||||
}
|
||||
}
|
||||
part { name: "bevel";
|
||||
mouse_events: 0;
|
||||
description { state: "default" 0.0;
|
||||
rel1.offset: 0 1;
|
||||
rel2.offset: -1 -1;
|
||||
image.normal: "bg_bevel.png";
|
||||
image.border: 2 2 2 2;
|
||||
image.middle: 0;
|
||||
fill.smooth: 0;
|
||||
}
|
||||
}
|
||||
part { name: "shine";
|
||||
mouse_events: 0;
|
||||
description { state: "default" 0.0;
|
||||
rel1.offset: 0 1;
|
||||
rel2.offset: -1 -1;
|
||||
image.normal: "bg_shine.png";
|
||||
align: 0.5 0.0;
|
||||
aspect: (255/120) (255/120);
|
||||
aspect_preference: HORIZONTAL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
group { name: "terminology/cursor";
|
||||
parts {
|
||||
part { name: "base"; type: RECT;
|
||||
mouse_events: 1;
|
||||
description { state: "default" 0.0;
|
||||
color: 255 255 255 30;
|
||||
}
|
||||
description { state: "focused" 0.0;
|
||||
color: 255 255 255 160;
|
||||
}
|
||||
}
|
||||
programs {
|
||||
program { name: "focus_in";
|
||||
signal: "focus,in";
|
||||
source: "terminology";
|
||||
action: STATE_SET "focused" 0.0;
|
||||
target: "base";
|
||||
after: "focus2";
|
||||
}
|
||||
program { name: "focus2";
|
||||
in: 0.2 0.0;
|
||||
action: STATE_SET "default" 0.0;
|
||||
target: "base";
|
||||
after: "focus3";
|
||||
}
|
||||
program { name: "focus3";
|
||||
in: 0.2 0.0;
|
||||
action: STATE_SET "focused" 0.0;
|
||||
target: "base";
|
||||
after: "focus2";
|
||||
}
|
||||
program { name: "focus_out";
|
||||
signal: "focus,out";
|
||||
source: "terminology";
|
||||
action: ACTION_STOP;
|
||||
target: "focus_in";
|
||||
target: "focus2";
|
||||
target: "focus3";
|
||||
after: "focus_out2";
|
||||
}
|
||||
program { name: "focus_out2";
|
||||
action: STATE_SET "default" 0.0;
|
||||
target: "base";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
EXTRA_DIST = \
|
||||
bg_bevel.png \
|
||||
bg_shine.png
|
Binary file not shown.
After Width: | Height: | Size: 268 B |
Binary file not shown.
After Width: | Height: | Size: 5.7 KiB |
|
@ -0,0 +1,71 @@
|
|||
dnl Copyright (C) 2010 Vincent Torri <vtorri at univ-evry dot fr>
|
||||
dnl That code is public domain and can be freely used or copied.
|
||||
|
||||
dnl Macro that check if a binary is built or not
|
||||
|
||||
dnl Usage: EFL_ENABLE_BIN(binary)
|
||||
dnl Call AC_SUBST(BINARY_PRG) (BINARY is the uppercase of binary, - being transformed into _)
|
||||
dnl Define have_binary (- is transformed into _)
|
||||
dnl Define conditional BUILD_BINARY (BINARY is the uppercase of binary, - being transformed into _)
|
||||
|
||||
AC_DEFUN([EFL_ENABLE_BIN],
|
||||
[
|
||||
|
||||
m4_pushdef([UP], m4_translit([[$1]], [-a-z], [_A-Z]))dnl
|
||||
m4_pushdef([DOWN], m4_translit([[$1]], [-A-Z], [_a-z]))dnl
|
||||
|
||||
have_[]m4_defn([DOWN])="yes"
|
||||
|
||||
dnl configure option
|
||||
|
||||
AC_ARG_ENABLE([$1],
|
||||
[AC_HELP_STRING([--disable-$1], [disable building of ]DOWN)],
|
||||
[
|
||||
if test "x${enableval}" = "xyes" ; then
|
||||
have_[]m4_defn([DOWN])="yes"
|
||||
else
|
||||
have_[]m4_defn([DOWN])="no"
|
||||
fi
|
||||
])
|
||||
|
||||
AC_MSG_CHECKING([whether to build ]DOWN[ binary])
|
||||
AC_MSG_RESULT([$have_[]m4_defn([DOWN])])
|
||||
|
||||
if test "x$have_[]m4_defn([DOWN])" = "xyes"; then
|
||||
UP[]_PRG=DOWN[${EXEEXT}]
|
||||
fi
|
||||
|
||||
AC_SUBST(UP[]_PRG)
|
||||
|
||||
AM_CONDITIONAL(BUILD_[]UP, test "x$have_[]m4_defn([DOWN])" = "xyes")
|
||||
|
||||
AS_IF([test "x$have_[]m4_defn([DOWN])" = "xyes"], [$2], [$3])
|
||||
|
||||
])
|
||||
|
||||
|
||||
dnl Macro that check if a binary is built or not
|
||||
|
||||
dnl Usage: EFL_WITH_BIN(package, binary, default_value)
|
||||
dnl Call AC_SUBST(_binary) (_binary is the lowercase of binary, - being transformed into _ by default, or the value set by the user)
|
||||
|
||||
AC_DEFUN([EFL_WITH_BIN],
|
||||
[
|
||||
|
||||
m4_pushdef([DOWN], m4_translit([[$2]], [-A-Z], [_a-z]))dnl
|
||||
|
||||
dnl configure option
|
||||
|
||||
AC_ARG_WITH([$2],
|
||||
[AC_HELP_STRING([--with-$2=PATH], [specify a specific path to ]DOWN[ @<:@default=$3@:>@])],
|
||||
[_efl_with_binary=${withval}],
|
||||
[_efl_with_binary=$(pkg-config --variable=prefix $1)/bin/$3])
|
||||
|
||||
DOWN=${_efl_with_binary}
|
||||
AC_MSG_NOTICE(DOWN[ set to ${_efl_with_binary}])
|
||||
|
||||
with_binary_[]m4_defn([DOWN])=${_efl_with_binary}
|
||||
|
||||
AC_SUBST(DOWN)
|
||||
|
||||
])
|
|
@ -0,0 +1,2 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
SUBDIRS = bin
|
|
@ -0,0 +1,19 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
|
||||
bin_PROGRAMS = terminology
|
||||
|
||||
terminology_CPPFLAGS = -I. \
|
||||
-DPACKAGE_BIN_DIR=\"$(bindir)\" -DPACKAGE_LIB_DIR=\"$(libdir)\" \
|
||||
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" @TERMINOLOGY_CFLAGS@
|
||||
|
||||
terminology_LDADD = @TERMINOLOGY_LIBS@
|
||||
|
||||
terminology_SOURCES = \
|
||||
col.c col.h \
|
||||
config.c config.h \
|
||||
keyin.c keyin.h \
|
||||
main.c \
|
||||
termio.c termio.h \
|
||||
termpty.c termpty.h \
|
||||
utf8.c utf8.h \
|
||||
win.c win.h
|
|
@ -0,0 +1,332 @@
|
|||
#include "col.h"
|
||||
|
||||
const Color colors[2][11] =
|
||||
{
|
||||
{ // normal
|
||||
{ 0xaa, 0xaa, 0xaa, 0xff }, // COL_DEF
|
||||
{ 0x00, 0x00, 0x00, 0xff }, // COL_BLACK
|
||||
{ 0xcc, 0x33, 0x33, 0xff }, // COL_RED
|
||||
{ 0x33, 0xcc, 0x33, 0xff }, // COL_GREEN
|
||||
{ 0xcc, 0x88, 0x33, 0xff }, // COL_YELLOW
|
||||
{ 0x33, 0x33, 0xcc, 0xff }, // COL_BLUE
|
||||
{ 0xcc, 0x33, 0xcc, 0xff }, // COL_MAGENTA
|
||||
{ 0x33, 0xcc, 0xcc, 0xff }, // COL_CYAN
|
||||
{ 0xcc, 0xcc, 0xcc, 0xff }, // COL_WHITE
|
||||
{ 0x22, 0x22, 0x22, 0xff }, // COL_INVERSE
|
||||
{ 0xaa, 0xaa, 0xaa, 0xff }, // COL_INVERSEBG
|
||||
},
|
||||
{ // bright/bold
|
||||
{ 0xee, 0xee, 0xee, 0xff }, // COL_DEF
|
||||
{ 0x66, 0x66, 0x66, 0xff }, // COL_BLACK
|
||||
{ 0xff, 0x66, 0x66, 0xff }, // COL_RED
|
||||
{ 0x66, 0xff, 0x66, 0xff }, // COL_GREEN
|
||||
{ 0xff, 0xff, 0x66, 0xff }, // COL_YELLOW
|
||||
{ 0x66, 0x66, 0xff, 0xff }, // COL_BLUE
|
||||
{ 0xff, 0x66, 0xff, 0xff }, // COL_MAGENTA
|
||||
{ 0x66, 0xff, 0xff, 0xff }, // COL_CYAN
|
||||
{ 0xff, 0xff, 0xff, 0xff }, // COL_WHITE
|
||||
{ 0x11, 0x11, 0x11, 0xff }, // COL_INVERSE
|
||||
{ 0xee, 0xee, 0xee, 0xff }, // COL_INVERSEBG
|
||||
}
|
||||
};
|
||||
|
||||
const Color colors256[256] =
|
||||
{
|
||||
// basic 16 repeated
|
||||
{ 0x00, 0x00, 0x00, 0xff }, // COL_BLACK
|
||||
{ 0xcc, 0x33, 0x33, 0xff }, // COL_RED
|
||||
{ 0x33, 0xcc, 0x33, 0xff }, // COL_GREEN
|
||||
{ 0xcc, 0x88, 0x33, 0xff }, // COL_YELLOW
|
||||
{ 0x33, 0x33, 0xcc, 0xff }, // COL_BLUE
|
||||
{ 0xcc, 0x33, 0xcc, 0xff }, // COL_MAGENTA
|
||||
{ 0x33, 0xcc, 0xcc, 0xff }, // COL_CYAN
|
||||
{ 0xcc, 0xcc, 0xcc, 0xff }, // COL_WHITE
|
||||
|
||||
{ 0x66, 0x66, 0x66, 0xff }, // COL_BLACK
|
||||
{ 0xff, 0x66, 0x66, 0xff }, // COL_RED
|
||||
{ 0x66, 0xff, 0x66, 0xff }, // COL_GREEN
|
||||
{ 0xff, 0xff, 0x66, 0xff }, // COL_YELLOW
|
||||
{ 0x66, 0x66, 0xff, 0xff }, // COL_BLUE
|
||||
{ 0xff, 0x66, 0xff, 0xff }, // COL_MAGENTA
|
||||
{ 0x66, 0xff, 0xff, 0xff }, // COL_CYAN
|
||||
{ 0xff, 0xff, 0xff, 0xff }, // COL_WHITE
|
||||
|
||||
// pure 6x6x6 colorcube
|
||||
{ 0x00, 0x00, 0x00, 0xff },
|
||||
{ 0x00, 0x00, 0x5f, 0xff },
|
||||
{ 0x00, 0x00, 0x87, 0xff },
|
||||
{ 0x00, 0x00, 0xaf, 0xff },
|
||||
{ 0x00, 0x00, 0xd7, 0xff },
|
||||
{ 0x00, 0x00, 0xff, 0xff },
|
||||
|
||||
{ 0x00, 0x5f, 0x00, 0xff },
|
||||
{ 0x00, 0x5f, 0x5f, 0xff },
|
||||
{ 0x00, 0x5f, 0x87, 0xff },
|
||||
{ 0x00, 0x5f, 0xaf, 0xff },
|
||||
{ 0x00, 0x5f, 0xd7, 0xff },
|
||||
{ 0x00, 0x5f, 0xff, 0xff },
|
||||
|
||||
{ 0x00, 0x87, 0x00, 0xff },
|
||||
{ 0x00, 0x87, 0x5f, 0xff },
|
||||
{ 0x00, 0x87, 0x87, 0xff },
|
||||
{ 0x00, 0x87, 0xaf, 0xff },
|
||||
{ 0x00, 0x87, 0xd7, 0xff },
|
||||
{ 0x00, 0x87, 0xff, 0xff },
|
||||
|
||||
{ 0x00, 0xaf, 0x00, 0xff },
|
||||
{ 0x00, 0xaf, 0x5f, 0xff },
|
||||
{ 0x00, 0xaf, 0x87, 0xff },
|
||||
{ 0x00, 0xaf, 0xaf, 0xff },
|
||||
{ 0x00, 0xaf, 0xd7, 0xff },
|
||||
{ 0x00, 0xaf, 0xff, 0xff },
|
||||
|
||||
{ 0x00, 0xd7, 0x00, 0xff },
|
||||
{ 0x00, 0xd7, 0x5f, 0xff },
|
||||
{ 0x00, 0xd7, 0x87, 0xff },
|
||||
{ 0x00, 0xd7, 0xaf, 0xff },
|
||||
{ 0x00, 0xd7, 0xd7, 0xff },
|
||||
{ 0x00, 0xd7, 0xff, 0xff },
|
||||
|
||||
{ 0x00, 0xff, 0x00, 0xff },
|
||||
{ 0x00, 0xff, 0x5f, 0xff },
|
||||
{ 0x00, 0xff, 0x87, 0xff },
|
||||
{ 0x00, 0xff, 0xaf, 0xff },
|
||||
{ 0x00, 0xff, 0xd7, 0xff },
|
||||
{ 0x00, 0xff, 0xff, 0xff },
|
||||
|
||||
{ 0x5f, 0x00, 0x00, 0xff },
|
||||
{ 0x5f, 0x00, 0x5f, 0xff },
|
||||
{ 0x5f, 0x00, 0x87, 0xff },
|
||||
{ 0x5f, 0x00, 0xaf, 0xff },
|
||||
{ 0x5f, 0x00, 0xd7, 0xff },
|
||||
{ 0x5f, 0x00, 0xff, 0xff },
|
||||
|
||||
{ 0x5f, 0x5f, 0x00, 0xff },
|
||||
{ 0x5f, 0x5f, 0x5f, 0xff },
|
||||
{ 0x5f, 0x5f, 0x87, 0xff },
|
||||
{ 0x5f, 0x5f, 0xaf, 0xff },
|
||||
{ 0x5f, 0x5f, 0xd7, 0xff },
|
||||
{ 0x5f, 0x5f, 0xff, 0xff },
|
||||
|
||||
{ 0x5f, 0x87, 0x00, 0xff },
|
||||
{ 0x5f, 0x87, 0x5f, 0xff },
|
||||
{ 0x5f, 0x87, 0x87, 0xff },
|
||||
{ 0x5f, 0x87, 0xaf, 0xff },
|
||||
{ 0x5f, 0x87, 0xd7, 0xff },
|
||||
{ 0x5f, 0x87, 0xff, 0xff },
|
||||
|
||||
{ 0x5f, 0xaf, 0x00, 0xff },
|
||||
{ 0x5f, 0xaf, 0x5f, 0xff },
|
||||
{ 0x5f, 0xaf, 0x87, 0xff },
|
||||
{ 0x5f, 0xaf, 0xaf, 0xff },
|
||||
{ 0x5f, 0xaf, 0xd7, 0xff },
|
||||
{ 0x5f, 0xaf, 0xff, 0xff },
|
||||
|
||||
{ 0x5f, 0xd7, 0x00, 0xff },
|
||||
{ 0x5f, 0xd7, 0x5f, 0xff },
|
||||
{ 0x5f, 0xd7, 0x87, 0xff },
|
||||
{ 0x5f, 0xd7, 0xaf, 0xff },
|
||||
{ 0x5f, 0xd7, 0xd7, 0xff },
|
||||
{ 0x5f, 0xd7, 0xff, 0xff },
|
||||
|
||||
{ 0x5f, 0xff, 0x00, 0xff },
|
||||
{ 0x5f, 0xff, 0x5f, 0xff },
|
||||
{ 0x5f, 0xff, 0x87, 0xff },
|
||||
{ 0x5f, 0xff, 0xaf, 0xff },
|
||||
{ 0x5f, 0xff, 0xd7, 0xff },
|
||||
{ 0x5f, 0xff, 0xff, 0xff },
|
||||
|
||||
{ 0x87, 0x00, 0x00, 0xff },
|
||||
{ 0x87, 0x00, 0x5f, 0xff },
|
||||
{ 0x87, 0x00, 0x87, 0xff },
|
||||
{ 0x87, 0x00, 0xaf, 0xff },
|
||||
{ 0x87, 0x00, 0xd7, 0xff },
|
||||
{ 0x87, 0x00, 0xff, 0xff },
|
||||
|
||||
{ 0x87, 0x5f, 0x00, 0xff },
|
||||
{ 0x87, 0x5f, 0x5f, 0xff },
|
||||
{ 0x87, 0x5f, 0x87, 0xff },
|
||||
{ 0x87, 0x5f, 0xaf, 0xff },
|
||||
{ 0x87, 0x5f, 0xd7, 0xff },
|
||||
{ 0x87, 0x5f, 0xff, 0xff },
|
||||
|
||||
{ 0x87, 0x87, 0x00, 0xff },
|
||||
{ 0x87, 0x87, 0x5f, 0xff },
|
||||
{ 0x87, 0x87, 0x87, 0xff },
|
||||
{ 0x87, 0x87, 0xaf, 0xff },
|
||||
{ 0x87, 0x87, 0xd7, 0xff },
|
||||
{ 0x87, 0x87, 0xff, 0xff },
|
||||
|
||||
{ 0x87, 0xaf, 0x00, 0xff },
|
||||
{ 0x87, 0xaf, 0x5f, 0xff },
|
||||
{ 0x87, 0xaf, 0x87, 0xff },
|
||||
{ 0x87, 0xaf, 0xaf, 0xff },
|
||||
{ 0x87, 0xaf, 0xd7, 0xff },
|
||||
{ 0x87, 0xaf, 0xff, 0xff },
|
||||
|
||||
{ 0x87, 0xd7, 0x00, 0xff },
|
||||
{ 0x87, 0xd7, 0x5f, 0xff },
|
||||
{ 0x87, 0xd7, 0x87, 0xff },
|
||||
{ 0x87, 0xd7, 0xaf, 0xff },
|
||||
{ 0x87, 0xd7, 0xd7, 0xff },
|
||||
{ 0x87, 0xd7, 0xff, 0xff },
|
||||
|
||||
{ 0x87, 0xff, 0x00, 0xff },
|
||||
{ 0x87, 0xff, 0x5f, 0xff },
|
||||
{ 0x87, 0xff, 0x87, 0xff },
|
||||
{ 0x87, 0xff, 0xaf, 0xff },
|
||||
{ 0x87, 0xff, 0xd7, 0xff },
|
||||
{ 0x87, 0xff, 0xff, 0xff },
|
||||
|
||||
{ 0xaf, 0x00, 0x00, 0xff },
|
||||
{ 0xaf, 0x00, 0x5f, 0xff },
|
||||
{ 0xaf, 0x00, 0x87, 0xff },
|
||||
{ 0xaf, 0x00, 0xaf, 0xff },
|
||||
{ 0xaf, 0x00, 0xd7, 0xff },
|
||||
{ 0xaf, 0x00, 0xff, 0xff },
|
||||
|
||||
{ 0xaf, 0x5f, 0x00, 0xff },
|
||||
{ 0xaf, 0x5f, 0x5f, 0xff },
|
||||
{ 0xaf, 0x5f, 0x87, 0xff },
|
||||
{ 0xaf, 0x5f, 0xaf, 0xff },
|
||||
{ 0xaf, 0x5f, 0xd7, 0xff },
|
||||
{ 0xaf, 0x5f, 0xff, 0xff },
|
||||
|
||||
{ 0xaf, 0x87, 0x00, 0xff },
|
||||
{ 0xaf, 0x87, 0x5f, 0xff },
|
||||
{ 0xaf, 0x87, 0x87, 0xff },
|
||||
{ 0xaf, 0x87, 0xaf, 0xff },
|
||||
{ 0xaf, 0x87, 0xd7, 0xff },
|
||||
{ 0xaf, 0x87, 0xff, 0xff },
|
||||
|
||||
{ 0xaf, 0xaf, 0x00, 0xff },
|
||||
{ 0xaf, 0xaf, 0x5f, 0xff },
|
||||
{ 0xaf, 0xaf, 0x87, 0xff },
|
||||
{ 0xaf, 0xaf, 0xaf, 0xff },
|
||||
{ 0xaf, 0xaf, 0xd7, 0xff },
|
||||
{ 0xaf, 0xaf, 0xff, 0xff },
|
||||
|
||||
{ 0xaf, 0xd7, 0x00, 0xff },
|
||||
{ 0xaf, 0xd7, 0x5f, 0xff },
|
||||
{ 0xaf, 0xd7, 0x87, 0xff },
|
||||
{ 0xaf, 0xd7, 0xaf, 0xff },
|
||||
{ 0xaf, 0xd7, 0xd7, 0xff },
|
||||
{ 0xaf, 0xd7, 0xff, 0xff },
|
||||
|
||||
{ 0xaf, 0xff, 0x00, 0xff },
|
||||
{ 0xaf, 0xff, 0x5f, 0xff },
|
||||
{ 0xaf, 0xff, 0x87, 0xff },
|
||||
{ 0xaf, 0xff, 0xaf, 0xff },
|
||||
{ 0xaf, 0xff, 0xd7, 0xff },
|
||||
{ 0xaf, 0xff, 0xff, 0xff },
|
||||
|
||||
{ 0xd7, 0x00, 0x00, 0xff },
|
||||
{ 0xd7, 0x00, 0x5f, 0xff },
|
||||
{ 0xd7, 0x00, 0x87, 0xff },
|
||||
{ 0xd7, 0x00, 0xaf, 0xff },
|
||||
{ 0xd7, 0x00, 0xd7, 0xff },
|
||||
{ 0xd7, 0x00, 0xff, 0xff },
|
||||
|
||||
{ 0xd7, 0x5f, 0x00, 0xff },
|
||||
{ 0xd7, 0x5f, 0x5f, 0xff },
|
||||
{ 0xd7, 0x5f, 0x87, 0xff },
|
||||
{ 0xd7, 0x5f, 0xaf, 0xff },
|
||||
{ 0xd7, 0x5f, 0xd7, 0xff },
|
||||
{ 0xd7, 0x5f, 0xff, 0xff },
|
||||
|
||||
{ 0xd7, 0x87, 0x00, 0xff },
|
||||
{ 0xd7, 0x87, 0x5f, 0xff },
|
||||
{ 0xd7, 0x87, 0x87, 0xff },
|
||||
{ 0xd7, 0x87, 0xaf, 0xff },
|
||||
{ 0xd7, 0x87, 0xd7, 0xff },
|
||||
{ 0xd7, 0x87, 0xff, 0xff },
|
||||
|
||||
{ 0xd7, 0xaf, 0x00, 0xff },
|
||||
{ 0xd7, 0xaf, 0x5f, 0xff },
|
||||
{ 0xd7, 0xaf, 0x87, 0xff },
|
||||
{ 0xd7, 0xaf, 0xaf, 0xff },
|
||||
{ 0xd7, 0xaf, 0xd7, 0xff },
|
||||
{ 0xd7, 0xaf, 0xff, 0xff },
|
||||
|
||||
{ 0xd7, 0xd7, 0x00, 0xff },
|
||||
{ 0xd7, 0xd7, 0x5f, 0xff },
|
||||
{ 0xd7, 0xd7, 0x87, 0xff },
|
||||
{ 0xd7, 0xd7, 0xaf, 0xff },
|
||||
{ 0xd7, 0xd7, 0xd7, 0xff },
|
||||
{ 0xd7, 0xd7, 0xff, 0xff },
|
||||
|
||||
{ 0xd7, 0xff, 0x00, 0xff },
|
||||
{ 0xd7, 0xff, 0x5f, 0xff },
|
||||
{ 0xd7, 0xff, 0x87, 0xff },
|
||||
{ 0xd7, 0xff, 0xaf, 0xff },
|
||||
{ 0xd7, 0xff, 0xd7, 0xff },
|
||||
{ 0xd7, 0xff, 0xff, 0xff },
|
||||
|
||||
{ 0xff, 0x00, 0x00, 0xff },
|
||||
{ 0xff, 0x00, 0x5f, 0xff },
|
||||
{ 0xff, 0x00, 0x87, 0xff },
|
||||
{ 0xff, 0x00, 0xaf, 0xff },
|
||||
{ 0xff, 0x00, 0xd7, 0xff },
|
||||
{ 0xff, 0x00, 0xff, 0xff },
|
||||
|
||||
{ 0xff, 0x5f, 0x00, 0xff },
|
||||
{ 0xff, 0x5f, 0x5f, 0xff },
|
||||
{ 0xff, 0x5f, 0x87, 0xff },
|
||||
{ 0xff, 0x5f, 0xaf, 0xff },
|
||||
{ 0xff, 0x5f, 0xd7, 0xff },
|
||||
{ 0xff, 0x5f, 0xff, 0xff },
|
||||
|
||||
{ 0xff, 0x87, 0x00, 0xff },
|
||||
{ 0xff, 0x87, 0x5f, 0xff },
|
||||
{ 0xff, 0x87, 0x87, 0xff },
|
||||
{ 0xff, 0x87, 0xaf, 0xff },
|
||||
{ 0xff, 0x87, 0xd7, 0xff },
|
||||
{ 0xff, 0x87, 0xff, 0xff },
|
||||
|
||||
{ 0xff, 0xaf, 0x00, 0xff },
|
||||
{ 0xff, 0xaf, 0x5f, 0xff },
|
||||
{ 0xff, 0xaf, 0x87, 0xff },
|
||||
{ 0xff, 0xaf, 0xaf, 0xff },
|
||||
{ 0xff, 0xaf, 0xd7, 0xff },
|
||||
{ 0xff, 0xaf, 0xff, 0xff },
|
||||
|
||||
{ 0xff, 0xd7, 0x00, 0xff },
|
||||
{ 0xff, 0xd7, 0x5f, 0xff },
|
||||
{ 0xff, 0xd7, 0x87, 0xff },
|
||||
{ 0xff, 0xd7, 0xaf, 0xff },
|
||||
{ 0xff, 0xd7, 0xd7, 0xff },
|
||||
{ 0xff, 0xd7, 0xff, 0xff },
|
||||
|
||||
{ 0xff, 0xff, 0x00, 0xff },
|
||||
{ 0xff, 0xff, 0x5f, 0xff },
|
||||
{ 0xff, 0xff, 0x87, 0xff },
|
||||
{ 0xff, 0xff, 0xaf, 0xff },
|
||||
{ 0xff, 0xff, 0xd7, 0xff },
|
||||
{ 0xff, 0xff, 0xff, 0xff },
|
||||
|
||||
// greyscale ramp (24 not including black and white, so 26 if included)
|
||||
{ 0x08, 0x08, 0x08, 0xff },
|
||||
{ 0x12, 0x12, 0x12, 0xff },
|
||||
{ 0x1c, 0x1c, 0x1c, 0xff },
|
||||
{ 0x26, 0x26, 0x26, 0xff },
|
||||
{ 0x30, 0x30, 0x30, 0xff },
|
||||
{ 0x3a, 0x3a, 0x3a, 0xff },
|
||||
{ 0x44, 0x44, 0x44, 0xff },
|
||||
{ 0x4e, 0x4e, 0x4e, 0xff },
|
||||
{ 0x58, 0x58, 0x58, 0xff },
|
||||
{ 0x62, 0x62, 0x62, 0xff },
|
||||
{ 0x6c, 0x6c, 0x6c, 0xff },
|
||||
{ 0x76, 0x76, 0x76, 0xff },
|
||||
{ 0x80, 0x80, 0x80, 0xff },
|
||||
{ 0x8a, 0x8a, 0x8a, 0xff },
|
||||
{ 0x94, 0x94, 0x94, 0xff },
|
||||
{ 0x9e, 0x9e, 0x9e, 0xff },
|
||||
{ 0xa8, 0xa8, 0xa8, 0xff },
|
||||
{ 0xb2, 0xb2, 0xb2, 0xff },
|
||||
{ 0xbc, 0xbc, 0xbc, 0xff },
|
||||
{ 0xc6, 0xc6, 0xc6, 0xff },
|
||||
{ 0xd0, 0xd0, 0xd0, 0xff },
|
||||
{ 0xda, 0xda, 0xda, 0xff },
|
||||
{ 0xe4, 0xe4, 0xe4, 0xff },
|
||||
{ 0xee, 0xee, 0xee, 0xff },
|
||||
};
|
|
@ -0,0 +1,9 @@
|
|||
typedef struct _Color Color;
|
||||
|
||||
struct _Color
|
||||
{
|
||||
unsigned char r, g, b, a;
|
||||
};
|
||||
|
||||
extern const Color colors[2][11];
|
||||
extern const Color colors256[256];
|
|
@ -0,0 +1,24 @@
|
|||
#include <Elementary.h>
|
||||
#include "config.h"
|
||||
|
||||
Config *config = NULL;
|
||||
|
||||
void
|
||||
config_init(void)
|
||||
{
|
||||
config = calloc(1, sizeof(Config));
|
||||
// config->font.bitmap = 0;
|
||||
// config->font.name = eina_stringshare_add("Monospace");
|
||||
config->font.bitmap = 1;
|
||||
config->font.name = eina_stringshare_add("nex6x10.pcf");
|
||||
config->font.size = 10;
|
||||
config->scrollback = 4096;
|
||||
config->theme = "default.edj";
|
||||
config->jump_on_change = 1;
|
||||
config->wordsep = "'\"()[]{}=*!#$^\\:;,?` ";
|
||||
}
|
||||
|
||||
void
|
||||
config_shutdown(void)
|
||||
{
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
typedef struct _Config Config;
|
||||
|
||||
struct _Config
|
||||
{
|
||||
struct {
|
||||
const char *name;
|
||||
int size;
|
||||
unsigned char bitmap;
|
||||
} font;
|
||||
int scrollback;
|
||||
const char *theme;
|
||||
unsigned char jump_on_change;
|
||||
const char *wordsep;
|
||||
};
|
||||
|
||||
extern Config *config;
|
||||
|
||||
void config_init(void);
|
||||
void config_shutdown(void);
|
||||
|
|
@ -0,0 +1,222 @@
|
|||
#include <Elementary.h>
|
||||
#include "termpty.h"
|
||||
#include "keyin.h"
|
||||
|
||||
typedef struct _Keyout Keyout;
|
||||
|
||||
struct _Keyout
|
||||
{
|
||||
const char *in;
|
||||
const char *out;
|
||||
int outlen;
|
||||
};
|
||||
|
||||
#define KEY(in, out) {in, out, sizeof(out) - 1}
|
||||
|
||||
static const Keyout crlf_keyout[] =
|
||||
{
|
||||
KEY("Return", "\r\n"),
|
||||
|
||||
KEY(NULL, "END")
|
||||
};
|
||||
|
||||
static const Keyout nocrlf_keyout[] =
|
||||
{
|
||||
KEY("Return", "\r"),
|
||||
|
||||
KEY(NULL, "END")
|
||||
};
|
||||
|
||||
static const Keyout appcur_keyout[] =
|
||||
{
|
||||
KEY("Left", "\033OD"),
|
||||
KEY("Right", "\033OC"),
|
||||
KEY("Up", "\033OA"),
|
||||
KEY("Down", "\033OB"),
|
||||
|
||||
KEY(NULL, "END")
|
||||
};
|
||||
|
||||
static const Keyout keyout[] =
|
||||
{
|
||||
KEY("BackSpace", "\177"),
|
||||
// KEY("BackSpace", "\b"),
|
||||
KEY("Left", "\033[D"),
|
||||
KEY("Right", "\033[C"),
|
||||
KEY("Up", "\033[A"),
|
||||
KEY("Down", "\033[B"),
|
||||
// KEY("Tab", "\t"),
|
||||
// KEY("ISO_Left_Tab", "\t"),
|
||||
KEY("Home", "\033[7~"),
|
||||
KEY("End", "\033[8~"),
|
||||
KEY("Prior", "\033[5~"),
|
||||
KEY("Next", "\033[6~"),
|
||||
KEY("Insert", "\033[2~"),
|
||||
KEY("Delete", "\033[3~"),
|
||||
KEY("Menu", "\033[29~"),
|
||||
KEY("Find", "\033[1~"),
|
||||
KEY("Help", "\033[28~"),
|
||||
KEY("Execute", "\033[3~"),
|
||||
KEY("Select", "\033[4~"),
|
||||
KEY("F1", "\033[11~"),
|
||||
KEY("F2", "\033[12~"),
|
||||
KEY("F3", "\033[13~"),
|
||||
KEY("F4", "\033[14~"),
|
||||
KEY("F5", "\033[15~"),
|
||||
KEY("F6", "\033[17~"),
|
||||
KEY("F7", "\033[18~"),
|
||||
KEY("F8", "\033[19~"),
|
||||
KEY("F9", "\033[20~"),
|
||||
KEY("F10", "\033[21~"),
|
||||
KEY("F11", "\033[23~"),
|
||||
KEY("F12", "\033[24~"),
|
||||
KEY("F13", "\033[25~"),
|
||||
KEY("F14", "\033[26~"),
|
||||
KEY("F15", "\033[28~"),
|
||||
KEY("F16", "\033[29~"),
|
||||
KEY("F17", "\033[31~"),
|
||||
KEY("F18", "\033[32~"),
|
||||
KEY("F19", "\033[33~"),
|
||||
KEY("F20", "\033[34~"),
|
||||
KEY("F21", "\033[35~"),
|
||||
KEY("F22", "\033[36~"),
|
||||
KEY("F23", "\033[37~"),
|
||||
KEY("F24", "\033[38~"),
|
||||
KEY("F25", "\033[39~"),
|
||||
KEY("F26", "\033[40~"),
|
||||
KEY("F27", "\033[41~"),
|
||||
KEY("F28", "\033[42~"),
|
||||
KEY("F29", "\033[43~"),
|
||||
KEY("F30", "\033[44~"),
|
||||
KEY("F31", "\033[45~"),
|
||||
KEY("F32", "\033[46~"),
|
||||
KEY("F33", "\033[47~"),
|
||||
KEY("F34", "\033[48~"),
|
||||
KEY("F35", "\033[49~"),
|
||||
KEY("KP_F1", "\033OP"),
|
||||
KEY("KP_F2", "\033OQ"),
|
||||
KEY("KP_F3", "\033OR"),
|
||||
KEY("KP_F4", "\033OS"),
|
||||
KEY("KP_Begin", "\033Ou"),
|
||||
KEY("KP_Multiply", "\033Oj"),
|
||||
KEY("KP_Add", "\033Ok"),
|
||||
KEY("KP_Separator", "\033Ol"),
|
||||
KEY("KP_Subtract", "\033Om"),
|
||||
KEY("KP_Decimal", "\033On"),
|
||||
KEY("KP_Divide", "\033Oo"),
|
||||
KEY("KP_0", "\033Op"),
|
||||
KEY("KP_0", "\033Oq"),
|
||||
KEY("KP_0", "\033Or"),
|
||||
KEY("KP_0", "\033Os"),
|
||||
KEY("KP_0", "\033Ot"),
|
||||
KEY("KP_0", "\033Ou"),
|
||||
KEY("KP_0", "\033Ov"),
|
||||
KEY("KP_0", "\033Ow"),
|
||||
KEY("KP_0", "\033Ox"),
|
||||
KEY("KP_0", "\033Oy"),
|
||||
|
||||
KEY(NULL, "END")
|
||||
};
|
||||
|
||||
static const Keyout kp_keyout[] =
|
||||
{
|
||||
KEY("KP_Left", "\033[D"),
|
||||
KEY("KP_Right", "\033[C"),
|
||||
KEY("KP_Up", "\033[A"),
|
||||
KEY("KP_Down", "\033[B"),
|
||||
KEY("KP_Home", "\033[7~"),
|
||||
KEY("KP_End", "\033[8~"),
|
||||
KEY("KP_Prior", "\033[5~"),
|
||||
KEY("KP_Next", "\033[6~"),
|
||||
KEY("KP_Insert", "\033[2~"),
|
||||
KEY("KP_Delete", "\033[3~"),
|
||||
KEY("KP_Enter", "\r"),
|
||||
|
||||
KEY(NULL, "END")
|
||||
};
|
||||
|
||||
static const Keyout kps_keyout[] =
|
||||
{
|
||||
KEY("KP_Left", "\033Ot"),
|
||||
KEY("KP_Right", "\033Ov"),
|
||||
KEY("KP_Up", "\033Ox"),
|
||||
KEY("KP_Down", "\033Or"),
|
||||
KEY("KP_Home", "\033Ow"),
|
||||
KEY("KP_End", "\033Oq"),
|
||||
KEY("KP_Prior", "\033Oy"),
|
||||
KEY("KP_Next", "\033Os"),
|
||||
KEY("KP_Insert", "\033Op"),
|
||||
KEY("KP_Delete", "\033On"),
|
||||
KEY("KP_Enter", "\033OM"),
|
||||
|
||||
KEY(NULL, "END")
|
||||
};
|
||||
|
||||
static Eina_Bool
|
||||
_key_try(Termpty *ty, const Keyout *map, Evas_Event_Key_Down *ev)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!ev->keyname) return EINA_FALSE;
|
||||
for (i = 0; map[i].in; i++)
|
||||
{
|
||||
if (!strcmp(ev->keyname, map[i].in))
|
||||
{
|
||||
termpty_write(ty, map[i].out, map[i].outlen);
|
||||
return EINA_TRUE;
|
||||
}
|
||||
}
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
keyin_handle(Termpty *ty, Evas_Event_Key_Down *ev)
|
||||
{
|
||||
if (ty->state.crlf)
|
||||
{
|
||||
if (_key_try(ty, crlf_keyout, ev)) return;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_key_try(ty, nocrlf_keyout, ev)) return;
|
||||
}
|
||||
if (ty->state.appcursor)
|
||||
{
|
||||
if (_key_try(ty, appcur_keyout, ev)) return;
|
||||
}
|
||||
if (_key_try(ty, keyout, ev)) return;
|
||||
if (
|
||||
((ty->state.alt_kp) &&
|
||||
(evas_key_modifier_is_set(ev->modifiers, "Shift"))) ||
|
||||
((!ty->state.alt_kp) &&
|
||||
(!evas_key_modifier_is_set(ev->modifiers, "Shift"))))
|
||||
{
|
||||
if (_key_try(ty, kp_keyout, ev)) return;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_key_try(ty, kps_keyout, ev)) return;
|
||||
}
|
||||
if (evas_key_modifier_is_set(ev->modifiers, "Control"))
|
||||
{
|
||||
if (!strcmp(ev->keyname, "Minus"))
|
||||
{
|
||||
termpty_write(ty, "\037", 1); // generate US (unit separator)
|
||||
return;
|
||||
}
|
||||
else if (!strcmp(ev->keyname, "space"))
|
||||
{
|
||||
termpty_write(ty, "\0", 1); // generate 0 byte for ctrl+space
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (ev->string)
|
||||
{
|
||||
if ((ev->string[0]) && (!ev->string[1]))
|
||||
{
|
||||
if (evas_key_modifier_is_set(ev->modifiers, "Alt"))
|
||||
termpty_write(ty, "\033", 1);
|
||||
}
|
||||
termpty_write(ty, ev->string, strlen(ev->string));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
void keyin_handle(Termpty *ty, Evas_Event_Key_Down *ev);
|
||||
|
|
@ -0,0 +1,95 @@
|
|||
#include <Elementary.h>
|
||||
#include "win.h"
|
||||
#include "termio.h"
|
||||
#include "config.h"
|
||||
|
||||
const char *cmd = NULL;
|
||||
static Evas_Object *win, *bg, *term;
|
||||
|
||||
static void
|
||||
_cb_focus_in(void *data, Evas_Object *obj, void *event)
|
||||
{
|
||||
edje_object_signal_emit(bg, "focus,in", "terminology");
|
||||
elm_object_focus_set(data, EINA_TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_focus_out(void *data, Evas_Object *obj, void *event)
|
||||
{
|
||||
edje_object_signal_emit(bg, "focus,out", "terminology");
|
||||
elm_object_focus_set(data, EINA_FALSE);
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_size_hint(void *data, Evas *e, Evas_Object *obj, void *event)
|
||||
{
|
||||
Evas_Coord mw, mh, rw, rh, w = 0, h = 0;
|
||||
|
||||
evas_object_size_hint_min_get(obj, &mw, &mh);
|
||||
evas_object_size_hint_request_get(obj, &rw, &rh);
|
||||
|
||||
edje_object_size_min_calc(bg, &w, &h);
|
||||
evas_object_size_hint_min_set(bg, w, h);
|
||||
elm_win_size_base_set(win, w - mw, h - mh);
|
||||
elm_win_size_step_set(win, mw, mh);
|
||||
if (!evas_object_data_get(obj, "sizedone"))
|
||||
{
|
||||
evas_object_resize(win, w - mw + rw, h - mh + rh);
|
||||
evas_object_data_set(obj, "sizedone", obj);
|
||||
}
|
||||
}
|
||||
|
||||
EAPI_MAIN int
|
||||
elm_main(int argc, char **argv)
|
||||
{
|
||||
int i;
|
||||
Evas_Object *o;
|
||||
char buf[4096];
|
||||
|
||||
config_init();
|
||||
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
|
||||
elm_app_compile_bin_dir_set(PACKAGE_BIN_DIR);
|
||||
elm_app_compile_data_dir_set(PACKAGE_DATA_DIR);
|
||||
elm_app_info_set(elm_main, "terminology", "themes/default.edj");
|
||||
|
||||
for (i = 1; i < argc; i++)
|
||||
{
|
||||
if ((!strcmp(argv[i], "-e")) && (i < (argc - 1)))
|
||||
{
|
||||
i++;
|
||||
cmd = argv[i];
|
||||
}
|
||||
}
|
||||
|
||||
win = tg_win_add();
|
||||
|
||||
bg = o = edje_object_add(evas_object_evas_get(win));
|
||||
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_fill_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
snprintf(buf, sizeof(buf), "%s/themes/%s",
|
||||
elm_app_data_dir_get(), config->theme);
|
||||
edje_object_file_set(o, buf, "terminology/background");
|
||||
elm_win_resize_object_add(win, o);
|
||||
evas_object_show(o);
|
||||
|
||||
term = o = termio_add(win, cmd, 80, 24);
|
||||
termio_win_set(o, win);
|
||||
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_fill_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
|
||||
_cb_size_hint, win);
|
||||
edje_object_part_swallow(bg, "terminology.content", o);
|
||||
evas_object_show(o);
|
||||
|
||||
evas_object_smart_callback_add(win, "focus,in", _cb_focus_in, term);
|
||||
evas_object_smart_callback_add(win, "focus,out", _cb_focus_out, term);
|
||||
_cb_size_hint(win, evas_object_evas_get(win), term, NULL);
|
||||
|
||||
evas_object_show(win);
|
||||
|
||||
elm_run();
|
||||
elm_shutdown();
|
||||
config_shutdown();
|
||||
return 0;
|
||||
}
|
||||
ELM_MAIN()
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,3 @@
|
|||
Evas_Object *termio_add(Evas_Object *parent, const char *cmd, int w, int h);
|
||||
void termio_win_set(Evas_Object *obj, Evas_Object *win);
|
||||
char *termio_selection_get(Evas_Object *obj, int c1x, int c1y, int c2x, int c2y);
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,105 @@
|
|||
typedef struct _Termpty Termpty;
|
||||
typedef struct _Termcell Termcell;
|
||||
typedef struct _Termatt Termatt;
|
||||
typedef struct _Termstate Termstate;
|
||||
typedef struct _Termsave Termsave;
|
||||
|
||||
#define COL_DEF 0
|
||||
#define COL_BLACK 1
|
||||
#define COL_RED 2
|
||||
#define COL_GREEN 3
|
||||
#define COL_YELLOW 4
|
||||
#define COL_BLUE 5
|
||||
#define COL_MAGENTA 6
|
||||
#define COL_CYAN 7
|
||||
#define COL_WHITE 8
|
||||
|
||||
#define COL_INVERSE 9
|
||||
#define COL_INVERSEBG 10
|
||||
|
||||
struct _Termatt
|
||||
{
|
||||
unsigned char fg, bg;
|
||||
unsigned short bold : 1;
|
||||
unsigned short faint : 1;
|
||||
unsigned short italic : 1;
|
||||
unsigned short underline : 1;
|
||||
unsigned short blink : 1;
|
||||
unsigned short blink2 : 1;
|
||||
unsigned short inverse : 1;
|
||||
unsigned short invisible : 1;
|
||||
unsigned short strike : 1;
|
||||
unsigned short fg256 : 1;
|
||||
unsigned short bg256 : 1;
|
||||
// below used for working out text from selections
|
||||
unsigned short autowrapped : 1;
|
||||
unsigned short newline : 1;
|
||||
unsigned short tab : 1;
|
||||
// 2 bits left
|
||||
};
|
||||
|
||||
struct _Termstate
|
||||
{
|
||||
int cx, cy;
|
||||
Termatt att;
|
||||
unsigned char charset;
|
||||
unsigned char charsetch;
|
||||
unsigned char chset[4];
|
||||
int scroll_y1, scroll_y2;
|
||||
int had_cr_x, had_cr_y;
|
||||
unsigned int multibyte : 1;
|
||||
unsigned int alt_kp : 1;
|
||||
unsigned int insert : 1;
|
||||
unsigned int appcursor : 1;
|
||||
unsigned int wrap : 1;
|
||||
unsigned int wrapnext : 1;
|
||||
unsigned int hidecursor : 1;
|
||||
unsigned int crlf : 1;
|
||||
unsigned int had_cr : 1;
|
||||
};
|
||||
|
||||
struct _Termpty
|
||||
{
|
||||
Ecore_Event_Handler *hand_exe_exit;
|
||||
Ecore_Fd_Handler *hand_fd;
|
||||
struct {
|
||||
struct {
|
||||
void (*func) (void *data);
|
||||
void *data;
|
||||
} change, scroll, set_title, set_icon, cancel_sel;
|
||||
} cb;
|
||||
struct {
|
||||
const char *title;
|
||||
const char *icon;
|
||||
} prop;
|
||||
int w, h;
|
||||
int fd, slavefd;
|
||||
pid_t pid;
|
||||
Termcell *screen, *screen2;
|
||||
Termsave **back;
|
||||
int backmax, backpos;
|
||||
int backscroll_num;
|
||||
int *buf;
|
||||
int buflen;
|
||||
Termstate state, save, swap;
|
||||
unsigned int altbuf : 1;
|
||||
};
|
||||
|
||||
struct _Termcell
|
||||
{
|
||||
int glyph;
|
||||
Termatt att;
|
||||
};
|
||||
|
||||
struct _Termsave
|
||||
{
|
||||
int w;
|
||||
Termcell cell[1];
|
||||
};
|
||||
|
||||
Termpty *termpty_new(const char *cmd, int w, int h, int backscroll);
|
||||
void termpty_free(Termpty *ty);
|
||||
Termcell *termpty_cellrow_get(Termpty *ty, int y, int *wret);
|
||||
void termpty_write(Termpty *ty, const char *input, int len);
|
||||
void termpty_resize(Termpty *ty, int w, int h);
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
#include "utf8.h"
|
||||
|
||||
void
|
||||
glyph_to_utf8(int g, char *txt)
|
||||
{
|
||||
if (g < (1 << (7)))
|
||||
{ // 0xxxxxxx
|
||||
txt[0] = g & 0x7f;
|
||||
txt[1] = 0;
|
||||
}
|
||||
else if (g < (1 << (5 + 6)))
|
||||
{ // 110xxxxx 10xxxxxx
|
||||
txt[0] = 0xc0 | ((g >> 6) & 0x1f);
|
||||
txt[1] = 0x80 | ((g ) & 0x3f);
|
||||
txt[2] = 0;
|
||||
}
|
||||
else if (g < (1 << (4 + 6 + 6)))
|
||||
{ // 1110xxxx 10xxxxxx 10xxxxxx
|
||||
txt[0] = 0xe0 | ((g >> 12) & 0x0f);
|
||||
txt[1] = 0x80 | ((g >> 6 ) & 0x3f);
|
||||
txt[2] = 0x80 | ((g ) & 0x3f);
|
||||
txt[3] = 0;
|
||||
}
|
||||
else if (g < (1 << (3 + 6 + 6 + 6)))
|
||||
{ // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
|
||||
txt[0] = 0xf0 | ((g >> 18) & 0x07);
|
||||
txt[1] = 0x80 | ((g >> 12) & 0x3f);
|
||||
txt[2] = 0x80 | ((g >> 6 ) & 0x3f);
|
||||
txt[3] = 0x80 | ((g ) & 0x3f);
|
||||
txt[4] = 0;
|
||||
}
|
||||
else if (g < (1 << (2 + 6 + 6 + 6 + 6)))
|
||||
{ // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
|
||||
txt[0] = 0xf8 | ((g >> 24) & 0x03);
|
||||
txt[1] = 0x80 | ((g >> 18) & 0x3f);
|
||||
txt[2] = 0x80 | ((g >> 12) & 0x3f);
|
||||
txt[3] = 0x80 | ((g >> 6 ) & 0x3f);
|
||||
txt[4] = 0x80 | ((g ) & 0x3f);
|
||||
txt[5] = 0;
|
||||
}
|
||||
else if (g < (1 << (1 + 6 + 6 + 6 + 6 + 6)))
|
||||
{ // 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
|
||||
txt[0] = 0xfc | ((g >> 30) & 0x01);
|
||||
txt[1] = 0x80 | ((g >> 24) & 0x3f);
|
||||
txt[2] = 0x80 | ((g >> 18) & 0x3f);
|
||||
txt[3] = 0x80 | ((g >> 12) & 0x3f);
|
||||
txt[4] = 0x80 | ((g >> 6 ) & 0x3f);
|
||||
txt[5] = 0x80 | ((g ) & 0x3f);
|
||||
txt[6] = 0;
|
||||
}
|
||||
else
|
||||
{ // error - cant encode this in utf8
|
||||
txt[0] = 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
void glyph_to_utf8(int g, char *txt);
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
#include <Elementary.h>
|
||||
#include "win.h"
|
||||
#include "config.h"
|
||||
|
||||
Evas_Object *
|
||||
tg_win_add(void)
|
||||
{
|
||||
Evas_Object *win, *o;
|
||||
char buf[4096];
|
||||
|
||||
win = elm_win_add(NULL, "main", ELM_WIN_BASIC);
|
||||
elm_win_autodel_set(win, EINA_TRUE);
|
||||
|
||||
elm_win_title_set(win, "Terminology");
|
||||
elm_win_icon_name_set(win, "Terminology");
|
||||
|
||||
o = evas_object_image_add(evas_object_evas_get(win));
|
||||
snprintf(buf, sizeof(buf), "%s/icons/terminology.png",
|
||||
elm_app_data_dir_get());
|
||||
evas_object_image_file_set(o, buf, NULL);
|
||||
elm_win_icon_object_set(win, o);
|
||||
|
||||
return win;
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
Evas_Object *tg_win_add(void);
|
Loading…
Reference in New Issue