pax_global_header 0000666 0000000 0000000 00000000064 14512741156 0014520 g ustar 00root root 0000000 0000000 52 comment=5d7a7450afa427ceca973c87086be5235a5cfb7f
lomiri-terminal-app-v2.0.2/ 0000775 0000000 0000000 00000000000 14512741156 0015571 5 ustar 00root root 0000000 0000000 lomiri-terminal-app-v2.0.2/.bzrignore 0000664 0000000 0000000 00000000024 14512741156 0017567 0 ustar 00root root 0000000 0000000 CMakeLists.txt.user
lomiri-terminal-app-v2.0.2/.gitignore 0000664 0000000 0000000 00000000023 14512741156 0017554 0 ustar 00root root 0000000 0000000 /build
/.clickable
lomiri-terminal-app-v2.0.2/.gitlab-ci.yml 0000664 0000000 0000000 00000002467 14512741156 0020236 0 ustar 00root root 0000000 0000000 stages:
- build
- publish
variables:
GIT_SUBMODULE_STRATEGY: 'recursive'
DOCKER_DRIVER: overlay2
.armhf: &armhf
variables:
ARCH: "armhf"
ARCH_TRIPLET: "arm-linux-gnueabihf"
.arm64: &arm64
variables:
ARCH: "arm64"
ARCH_TRIPLET: "aarch64-linux-gnu"
.amd64: &amd64
variables:
ARCH: "amd64"
ARCH_TRIPLET: "x86_64-linux-gnu"
.build:
image: "clickable/ci-20.04-$ARCH"
stage: build
script: 'clickable build --clean --all --arch $ARCH --accept-review-errors'
artifacts:
paths:
- "build/$ARCH_TRIPLET/app"
expire_in: 1 week
build-armhf:
<<: *armhf
extends: .build
build-arm64:
<<: *arm64
extends: .build
build-amd64:
<<: *amd64
extends: .build
publish:
stage: publish
image: "clickable/ci-20.04-armhf"
rules:
- if: $CI_COMMIT_TAG
script:
- 'clickable publish "$CI_COMMIT_MESSAGE"'
- 'clickable publish --arch arm64'
- 'clickable publish --arch amd64'
dependencies:
- build-armhf
- build-arm64
- build-amd64
artifacts:
paths:
- build/arm-linux-gnueabihf/app/*.click
- build/aarch64-linux-gnu/app/*.click
- build/x86_64-linux-gnu/app/*.click
expire_in: 30 days
lomiri-terminal-app-v2.0.2/.gitmodules 0000664 0000000 0000000 00000000155 14512741156 0017747 0 ustar 00root root 0000000 0000000 [submodule "libs/qmltermwidget"]
path = libs/qmltermwidget
url = https://github.com/gber/qmltermwidget.git
lomiri-terminal-app-v2.0.2/AUTHORS 0000664 0000000 0000000 00000002724 14512741156 0016646 0 ustar 00root root 0000000 0000000 Terminal was started in 2013 and has received many contributions from the following people.
In addition, numerous translations, bug reports and other non-code contributions have been made which are equally valued.
Abuabdellah
Adria
Adrià
Advocatux
Aitzol Berasategi
Alan Pope
Alberto
Allan Nordhøy
Anne Onyme
Anonymous
Ari Börde Kröyer
ArubIslander
Aurelio Cilia
Bence László
Brian Douglass
C4pp4
Carlo Giordano
Dalton Durst
Danfro
Daniel Frańczak
Daniel Frost
Dano6
David Planella
Dmitriy Pushkov
Efstathios Iosifidis
Ege Öz
Emanuele Sorce
Enolp
Eran
Eugene
Eugene Markoff
Evan McIntire
Federico Turbino
Filippo Scognamiglio
Florian Boucault
Florian Leeber
Guglielmo Felici
Guido Berhoerster
Heimen Stoffels
HSN80
Ivo Xavier
Jami Kettunen
Jiri Grönroos
Joan CiberSheep
Jonatan Hatakeyama Zeidler
Jonnius
Kai Goldbeck
Larry Price
Louies0623
Łukasz 'sil2100' Zemczak
Luke Yelavich
Lxdb
Maciej Sopyło
Manglasape
Marcus Fredlund
Marius Gripsgard
Michael Sheldon
Michael Terry
Mike
Mike Gabriel
Milan Korecký
Mohamed Sayed
Moo
Moshe Lazar
Mr-awk
M Sugahara
Nathangiovannini3
Neutrum N
Niklas Wenzel
Nskaggs
Oi Suomi On!
Pavel Borecki
P -H Lin
RedXXIII
Renato Araujo Oliveira Filho
Riccardo Riccio
Rodrigo Benedito
Ryan Argente
Sam Hewitt
Sami Törmänen
Samson
Sam Zhang
Satriocode
Stefano Verzegnassi
Stoian Minaiev
Tamer Dab
Tigran Khachatryan
Timo Jyrinki
Tom Dom
Vladimir Tukalo
Vokaliz
Walking-octopus
Walter Garcia-Fontes
Weblate
Wgarcia
Xiangtian Wei
Yasser Lotfy
Young Kim
lomiri-terminal-app-v2.0.2/CMakeLists.txt 0000664 0000000 0000000 00000010261 14512741156 0020331 0 ustar 00root root 0000000 0000000 cmake_minimum_required(VERSION 3.5)
project(lomiri-terminal-app VERSION 2.0.2 LANGUAGES CXX)
include(FindGettext)
if(NOT GETTEXT_FOUND)
message(FATAL_ERROR "Could not find gettext")
endif(NOT GETTEXT_FOUND)
set(CMAKE_AUTOMOC ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fno-permissive -pedantic -Wall -Wextra -fPIC")
# Enable QML debugging in debug builds
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DQT_QML_DEBUG ")
# Standard install paths
include(GNUInstallDirs)
option(INSTALL_TESTS "Install the tests on make install" on)
option(CLICK_MODE "Installs to a contained location" on)
set(APP_NAME ${PROJECT_NAME})
set(DESKTOP_FILE "${PROJECT_NAME}.desktop")
set(APP_HARDCODE ${PROJECT_NAME})
set(MAIN_QML lomiri-terminal-app.qml)
set(ICON_FILE terminal-app.svg)
set(SPLASH_FILE terminal-app-splash.svg)
set(AUTOPILOT_DIR lomiri_terminal_app)
set(MANIFEST_PATH "manifest.json.in" CACHE INTERNAL "Relative path to the manifest file")
set(URLS_FILE "${APP_HARDCODE}.url-dispatcher")
if(CLICK_MODE)
if(NOT DEFINED GIT_SOURCE)
set(GIT_SOURCE "https://gitlab.com/ubports/development/apps/lomiri-terminal-app.git")
message("-- Setting GIT_SOURCE to ${GIT_SOURCE}")
endif(NOT DEFINED GIT_SOURCE)
# Find out the architecture for package building
# to determine the plugin's installation path
execute_process(
COMMAND dpkg-architecture -qDEB_HOST_MULTIARCH
OUTPUT_VARIABLE ARCH_TRIPLET
OUTPUT_STRIP_TRAILING_WHITESPACE
)
set(CMAKE_INSTALL_PREFIX /)
set(CMAKE_INSTALL_BINDIR /)
set(DATA_DIR /)
set(DESKTOP_DIR ${DATA_DIR})
set(URLS_DIR ${DATA_DIR})
set(ICON ${ICON_FILE})
set(SPLASH ${SPLASH_FILE})
set(QT_IMPORTS_DIR "/lib/${ARCH_TRIPLET}")
set(BIN_DIR /lib/${ARCH_TRIPLET}/bin)
set(EXEC "lomiri-terminal-app-migrate.py ${APP_NAME}")
if(NOT GIT_REV)
execute_process(
COMMAND git log --format='%h' -1
OUTPUT_VARIABLE GIT_REV
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif(NOT GIT_REV)
execute_process(
COMMAND dpkg-architecture -qDEB_HOST_ARCH
OUTPUT_VARIABLE CLICK_ARCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
configure_file(manifest.json.in ${CMAKE_CURRENT_BINARY_DIR}/manifest.json)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/manifest.json terminal.apparmor DESTINATION ${CMAKE_INSTALL_PREFIX})
# make the click files visible in qtcreator
file(GLOB CLICK_FILES
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
*.json *.json.in *.apparmor)
add_custom_target(lomiri-terminal-app_CLICKFiles ALL SOURCES ${CLICK_FILES})
else(CLICK_MODE)
set(QT_IMPORTS_DIR "${CMAKE_INSTALL_LIBDIR}/qt5/qml")
set(DATA_DIR ${CMAKE_INSTALL_DATADIR}/${APP_NAME})
set(ICON ${CMAKE_INSTALL_PREFIX}/${DATA_DIR}/${ICON_FILE})
set(SPLASH ${CMAKE_INSTALL_PREFIX}/${DATA_DIR}/${SPLASH_FILE})
set(DESKTOP_DIR ${CMAKE_INSTALL_DATADIR}/applications)
set(URLS_DIR ${CMAKE_INSTALL_DATADIR}/lomiri-url-dispatcher/urls)
set(EXEC "${APP_NAME}")
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${APP_NAME}.1 DESTINATION ${CMAKE_INSTALL_DATADIR}/man/man1)
endif(CLICK_MODE)
file(GLOB SRC_FILES
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
*.qml *.js *.png *.svg *.js)
install(FILES ${SRC_FILES}
DESTINATION ${DATA_DIR})
install(PROGRAMS lomiri-terminal-app-migrate.py DESTINATION ${DATA_DIR})
# Make non compiled files visible in qtcreator
file(GLOB_RECURSE NON_COMPILED_FILES *.qml *.js *.py *.svg *.png *.in *.json *.desktop *.pot *.apparmor qmldir)
add_custom_target(NON_COMPILED_TARGET ALL SOURCES ${NON_COMPILED_FILES})
configure_file(${DESKTOP_FILE}.in.in ${DESKTOP_FILE}.in)
add_custom_target(${DESKTOP_FILE} ALL
COMMENT "Merging translations into ${DESKTOP_FILE}..."
COMMAND ${GETTEXT_MSGFMT_EXECUTABLE}
--desktop --template=${CMAKE_CURRENT_BINARY_DIR}/${DESKTOP_FILE}.in
-o ${DESKTOP_FILE}
-d ${CMAKE_SOURCE_DIR}/po
)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${DESKTOP_FILE}
DESTINATION ${DESKTOP_DIR})
install(FILES ${URLS_FILE} DESTINATION ${URLS_DIR})
# Tests
enable_testing()
add_subdirectory(po)
add_subdirectory(tests)
add_subdirectory(app)
lomiri-terminal-app-v2.0.2/COPYING 0000664 0000000 0000000 00000104513 14512741156 0016630 0 ustar 00root root 0000000 0000000 GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. 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
them 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 prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. 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.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey 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;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If 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 convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU 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 that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
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.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
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.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
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
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Copyright (C)
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 3 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, see .
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
Copyright (C)
This program 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, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
.
The GNU 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 Lesser General
Public License instead of this License. But first, please read
.
lomiri-terminal-app-v2.0.2/ChangeLog 0000664 0000000 0000000 00000270603 14512741156 0017353 0 ustar 00root root 0000000 0000000 2023-10-15 Mike Gabriel
* Release 2.0.2 (HEAD -> main, tag: v2.0.2)
2023-06-08 Mike Gabriel
* Merge branch 'feature/fix-112' into 'main' (8b41a9d)
2023-04-25 ArubIslander
* Make terminal act as if invoked as a login shell, so that .profile
is read. (0a289f7)
* Make terminal act as if invoked as a login shell, so that .profile
is read. (2e2265d)
2023-06-06 Guido Berhoerster
* Merge branch 'add_review_error' into 'main' (fe202f8)
2023-03-30 Danfro
* add ignore review errors to clickable.yaml to allow local building
(09cd0b0)
2023-03-15 Mike Gabriel
* Merge branch 'personal/gberh/click-migrate' into 'main' (5c59865)
2023-02-28 Guido Berhoerster
* Use session-migration for migration in Debian (709f266)
2023-02-24 Guido Berhoerster
* Add migrations to manifest (94c17bd)
* Add migration wrapper script (86e26d6)
2023-02-27 Guido Berhoerster
* Release 2.0.1 (e1ba506) (tag: v2.0.1)
2023-02-03 Mike Gabriel
* Merge branch 'personal/gberh/switch-name-domain' into 'main'
(5178188)
2023-02-03 Guido Berhoerster
* Use application ID as application name (73bcb69)
2023-01-04 Guido Berhoerster
* Release 2.0.0 (b188eae) (tag: v2.0.0)
2023-01-12 Mike Gabriel
* Merge branch 'personal/gberh/cleanup' into 'main' (667e6b8)
2023-01-04 Guido Berhoerster
* Improve Debian package description (3a1d008)
* Add note about the state of autopilot (4f5e2f2)
* Update review guidelines (a7b5ac5)
* Update instructions for translators (38f2e01)
* Slim down README.md (6d71f17)
2023-01-06 Guido Berhoerster
* Update CMake requirements (83d8f6e)
2023-01-04 Guido Berhoerster
* Remove remains of vendored qmltermwidget and move app/ to toplevel
(c25afbd)
* Switch from bzr build information to git (05045b4)
2023-01-07 Marius Gripsgard
* Fix up renamed zh_HK (278767e)
2023-01-04 Mike Gabriel
* po/: Rename zh_Hant_HK.po to zh_HK.po. (d217eb6)
2022-12-30 Guido Berhoerster
* gitlab-ci.yml: Remove fixed clickable version (e792d8b)
2022-11-24 Jami Kettunen
* Merge branch 'personal/walking-octopus/fix-command-simulation' into
'main' (e883c02)
2022-07-26 walking-octopus
* Fix the command simulation (414f869)
2022-11-23 Mike Gabriel
* Merge branch 'ctrl-l' into 'main' (e3f7869)
2022-11-16 Jami Kettunen
* Add Ctrl-L to the control menu. (678aba6)
2022-11-22 Mike Gabriel
* Merge branch 'qmltermwidget' into 'main' (f7e263a)
2022-10-31 Guido Berhoerster
* Build qmltermwidget with clickable (9c79433)
2022-10-28 Guido Berhoerster
* Remove QMLTermWidget from Debian packaging and depend on new
package (a451832)
2022-10-27 Guido Berhoerster
* Use the scrollbar from our QmlTermWidget fork instead of the
upstream one (7ee2763)
* Remove fork of QmlTermWidget component (d0b305d)
* Use QMLTermSession currentDir instead of workingDirectory property
(b8a30b9)
* Use random sequence instead of sessionId property for shell PID
file (8771d74)
2022-10-08 Mike Gabriel
* d/copyright: Fix upstream source URL in Source: field. (b07f08a)
* Merge branch 'focal' into 'main' (93fb7c0)
2022-08-23 Guido Berhoerster
* CI: Do not fail builds on warnings and errors (c9443da)
2022-07-28 Guido Berhoerster
* Update Click packaging (291264d)
2022-06-15 Guido Berhoerster
* Update and move Jenkinsfile to debian/ (17fc4af)
2022-06-14 Guido Berhoerster
* Update Debian packaging (c3f1ff3)
2022-10-06 Guido Berhoerster
* Update .pot file (8bb2210)
* Modernize i18n (da6f2b1)
2022-07-13 Guido Berhoerster
* Port to lomiri-url-dispatcher (3edc029)
2022-07-12 Guido Berhoerster
* Remove com.ubuntu.PamAuthentication QML module (e519d92)
2022-10-05 Guido Berhoerster
* Remove leftover qmake file (883e523)
* Rename application (c2a9076)
2022-06-15 Guido Berhoerster
* Update URL in manpage (8b31ca2)
* Migrate from ubuntu-ui-toolkit to lomiri-ui-toolkit (e831dae)
* Rename X-Ubuntu-* desktop file settings (52523be)
2022-05-31 Maciej Sopyło
* Adapt to focal (41a1dea)
2022-05-17 Weblate
* Translated by Rrahim Gashi using Weblate
(Albanian) - 42.0% (42 of 100 strings) (4f574e1)
2022-04-25 Weblate
* Translated by creepen123 using Weblate
(Russian) - 100.0% (100 of 100 strings) (7b3b0c3)
2022-04-01 Weblate
* Translated by ប៉ុកណូ រ៉ូយ៉ាល់ using Weblate
(Central Khmer) - 100.0% (100 of 100 strings) (161ad0e)
2022-03-24 Weblate
* Translated by HEROBRINE7GAMER using
Weblate (Arabic) - 72.0% (72 of 100 strings) (2bc71de)
2022-03-10 Weblate
* Translated by Behzad using Weblate
(Persian) - 43.0% (43 of 100 strings) (d3625fb)
2022-02-28 Weblate
* Translated by Ivo Xavier using Weblate
(Portuguese) - 100.0% (100 of 100 strings) (f5f5371)
2022-02-10 Weblate
* Translated by Герман Семенов using Weblate
(Russian) - 100.0% (100 of 100 strings) (9572c3a)
2022-02-06 Weblate
* Merge branch 'origin/master' into Weblate. (55ba50c)
2022-02-05 Weblate
* Translated by Lundrin using Weblate
(Hungarian) - 100.0% (100 of 100 strings) (fe4b81f)
2021-12-17 wgarcia
* v1.0.3 - Updated translations (Thank you, translators!) (0154abc)
(tag: v1.0.3)
* Updating translations (eb92682)
2021-11-21 Weblate
* Translated by Adria using Weblate
(Sardinian) - 100.0% (100 of 100 strings) (daaf90d)
2021-10-19 Weblate
* Translated by Jakob Fridesjö using Weblate
(Swedish) - 58.0% (58 of 100 strings) (d5c9523)
2021-10-14 Weblate
* Translated by Wannaphong Phatthiyaphaibun
using Weblate (Thai) - 6.7% (7 of 103 strings) (2ef137c)
2021-10-05 Weblate
* Translated by Eugene Markoff using Weblate
(Russian) - 100.0% (100 of 100 strings) (53cd3b4)
2021-08-29 Weblate
* Translated by HEROBRINE7GAMER using
Weblate (Arabic) - 27.0% (27 of 100 strings) (686b98b)
2021-08-21 Weblate
* Translated by Milan Korecký using Weblate
(Czech) - 100.0% (100 of 100 strings) (af7d060)
2021-07-26 Weblate
* Translated by Rondy Andersson using Weblate
(Swedish) - 33.0% (33 of 100 strings) (52967f6)
2021-07-22 Walter Garcia-Fontes
* v1.0.2 - Updated translations: thank you translators - fix paths of
artifacts for CI - Fix CI Pipeline multiple changelog
events in OpenStore (b7f020e) (tag: v1.0.2)
2021-06-30 Weblate
* Translated by Герман Семенов using Weblate
(Russian) - 100.0% (100 of 100 strings) (f271dc1)
2021-06-27 Florian Leeber
* Merge branch 'fix_ci' into 'master' (10d3009)
2021-06-27 mr-awk
* fix paths of artifacts for CI (ee30731)
2021-06-23 Weblate
* Merge branch 'origin/master' into Weblate. (89729fc)
2021-06-23 Florian Leeber
* Merge branch 'fix_ci_multiple_changelog_events' into 'master'
(e3af174)
2021-06-23 Marcus Fredlund
* Fix CI Pipeline multiple changelog events in OpenStore (8b33132)
2021-06-22 Weblate
* Translated by Daniel Frost using Weblate
(German) - 100.0% (100 of 100 strings) (3a5ad3d)
2021-06-04 Weblate
* Translated by Marcus Fredlund using
Weblate (Swedish) - 32.0% (32 of 100 strings) (60b91bf)
2021-05-29 Weblate
* Translated by Heimen Stoffels using
Weblate (Dutch) - 100.0% (100 of 100 strings) (4f7fee9)
2021-04-30 Weblate
* Translated by Milan Korecký using Weblate
(Czech) - 100.0% (100 of 100 strings) (0efc162)
2021-04-22 Weblate
* Translated by Milan Korecký using Weblate
(Czech) - 100.0% (100 of 100 strings) (2633c94)
2021-03-26 Weblate
* Translated by vokaliz using Weblate
(Russian) - 100.0% (100 of 100 strings) (67715ff)
2021-03-18 Weblate
* Merge branch 'origin/master' into Weblate. (c8e817a)
2021-03-18 wgarcia
* v1.0.1 - Updated translatoins: thank you translators! (d53edd4)
(tag: v1.0.1)
2021-03-15 Weblate
* Translated by Ryan Argente using Weblate
(French (Canada)) - 100.0% (100 of 100 strings) (d7c882b)
2021-03-11 Weblate
* Translated by AO-LocLab using Weblate
(French (Canada)) - 23.0% (23 of 100 strings) (befb1e0)
2021-03-06 Weblate
* Translated by anonymous using Weblate
(Armenian) - 70.0% (70 of 100 strings) (5d1747a)
2021-02-12 Weblate
* Translated by Heimen Stoffels using Weblate
(Dutch) - 100.0% (100 of 100 strings) (034db84)
2021-02-01 Weblate
* Translated by imrufbd using Weblate (Bengali
(Bangladesh)) - 3.8% (4 of 103 strings) (dc242d4)
2021-01-28 Weblate
* Translated by Adam using Weblate (Hungarian) -
100.0% (100 of 100 strings) (13ffa57)
2021-01-16 Weblate
* Translated by ierihon using Weblate (Russian) -
84.0% (84 of 100 strings) (cd88f54)
2021-01-05 Weblate
* Translated by GK using Weblate (Tamil) - 100.0% (100
of 100 strings) (eca52af)
2021-01-01 Weblate
* Translated by GK using Weblate (Tamil) - 7.0% (7 of
100 strings) (ec5b675)
2020-12-26 Weblate
* Translated by anonymous using Weblate
(Armenian) - 13.0% (13 of 100 strings) (34da79a)
2020-12-18 Weblate
* Translated by Enkli Ylli using Weblate (Albanian)
- 40.0% (40 of 100 strings) (d7d5674)
2020-12-14 Walter Garcia-Fontes
* v1.0.0 - updated translations, thanks to all translators! -
redesign close element action and close selection mode, MR
#86 - fix #91 visibility issue with more than two tabs in
landscape mode, MR #87 - implement URLdispatcher to allow
other apps to open Terminal app on a specified path, MR
#88 (08dd3cd) (tag: v1.0.0)
* Commiting for new version (08b5d4c)
* Merge branch 'urlpath' into 'master' (43d1ce1)
2020-12-14 Daniel Frost
* implement URLdispatcher to allow other apps to open Terminal app on
a specified path (9e69758)
2020-12-14 Walter Garcia-Fontes
* Merge branch 'multitabs' into 'master' (e073e33)
2020-12-14 Daniel Frost
* fix #91 visibility issue with more than two tabs in landscape mode
(bfc7bc0)
2020-12-14 Walter Garcia-Fontes
* Merge branch 'closetext' into 'master' (185f872)
2020-12-14 Daniel Frost
* redesign close element action and close selection mode (8dcfc13)
2020-12-05 Weblate
* Translated by abidin using Weblate (Arabic)
- 25.0% (25 of 100 strings) (e494f71)
2020-11-27 Weblate
* Translated by Zmicer using Weblate
(Belarusian) - 100.0% (100 of 100 strings) (6f010ec)
2020-11-19 Weblate
* Translated by abidin using Weblate (Arabic)
- 25.0% (25 of 100 strings) (f67b9a4)
2020-11-12 Weblate
* Translated by Heimen Stoffels using Weblate
(Dutch) - 100.0% (100 of 100 strings) (689a90c)
2020-11-06 Weblate
* Translated by abidin using Weblate (Arabic)
- 23.0% (23 of 100 strings) (b5e2c8a)
2020-10-26 Joan CiberSheep
* Translated by Joan CiberSheep using Weblate
(Catalan) - 100.0% (100 of 100 strings) (dde9370)
2020-10-26 Heimen Stoffels
* Translated by Heimen Stoffels using Weblate
(Dutch) - 100.0% (100 of 100 strings) (d8e0ec6)
2020-10-08 Walter Garcia-Fontes
* Merge branch 'Splash' into 'master' (10a1299)
2020-09-24 P.-H. Lin
* Translated by P.-H. Lin using Weblate
(Chinese (Traditional, Hong Kong)) - 6.0% (6 of 100
strings) (71de704)
* Translated by P.-H. Lin using Weblate
(Chinese (Traditional)) - 100.0% (100 of 100 strings)
(874c441)
2020-09-18 Adria
* Translated by Adria using Weblate
(Sardinian) - 100.0% (100 of 100 strings) (4a5cb64)
2020-09-05 tamer dab
* Translated by tamer dab using Weblate
(Hebrew) - 100.0% (100 of 100 strings) (e0af942)
* Translated by tamer dab using Weblate
(Hebrew) - 21.0% (21 of 100 strings) (2ae1a64)
2020-09-04 tamer dab
* Translated by tamer dab using Weblate
(Hebrew) - 20.0% (20 of 100 strings) (08101cf)
2020-08-31 Milan Korecký
* Translated by Milan Korecký using Weblate
(Czech) - 100.0% (100 of 100 strings) (0c52b15)
2020-08-31 Heimen Stoffels
* Translated by Heimen Stoffels using Weblate
(Dutch) - 100.0% (100 of 100 strings) (677ecb8)
2020-08-18 Efstathios Iosifidis
* Translated by Efstathios Iosifidis using
Weblate (Greek) - 100.0% (100 of 100 strings) (4ac66e7)
2020-08-16 Efstathios Iosifidis
* Translated by Efstathios Iosifidis using
Weblate (Greek) - 77.0% (77 of 100 strings) (68e329c)
2020-08-16 Weblate
* Merge branch 'origin/master' into Weblate. (ffb6ead)
2020-08-16 Brian Douglass
* Merge branch 'config-updates' (e543af5)
2020-08-16 Efstathios Iosifidis
* Translated by Efstathios Iosifidis using
Weblate (Greek) - 73.0% (73 of 100 strings) (11ba034)
* Translated by Efstathios Iosifidis using
Weblate (Greek) - 34.0% (34 of 100 strings) (23fa906)
2020-08-15 Efstathios Iosifidis
* Translated by Efstathios Iosifidis using
Weblate (Greek) - 34.0% (34 of 100 strings) (7ca9756)
2020-08-11 Brian Douglass
* Added ci build for amd64 (6368ef5)
2020-08-08 satriocode
* Translated by satriocode using Weblate
(Indonesian) - 15.0% (15 of 100 strings) (02d1b83)
2020-08-06 Joan CiberSheep
* Include svg images (f1e4c53)
* Fixed CMake file (9d90d40)
* Add Splash (7f649a2)
2020-08-02 Brian Douglass
* Updated gitlab and clickable configs (a695d64)
2020-07-31 Young Kim
* Translated by Young Kim using Weblate (Korean) -
44.0% (44 of 100 strings) (3b1a8a7)
2020-07-30 Young Kim
* Translated by Young Kim using Weblate (Korean) -
43.0% (43 of 100 strings) (98396b3)
* Translated by Young Kim using Weblate (Korean) -
24.0% (24 of 100 strings) (19084f1)
2020-07-29 Young Kim
* Translated by Young Kim using Weblate (Korean) -
23.0% (23 of 100 strings) (cba8924)
* Translated by Young Kim using Weblate (Korean) -
21.0% (21 of 100 strings) (3312c90)
2020-07-29 anonymous
* Translated by anonymous using Weblate
(Korean) - 21.0% (21 of 100 strings) (45e52ea)
2020-07-26 c4pp4
* Translated by c4pp4 using Weblate (Czech) -
100.0% (100 of 100 strings) (376ba87)
2020-07-17 Anne Onyme
* Translated using Weblate (French) (688c15d)
2020-07-17 Adria
* Translated using Weblate (Sardinian) (92a6774)
2020-07-10 Heimen Stoffels
* Translated using Weblate (Dutch) (d230e4e)
2020-07-08 Heimen Stoffels
* Translated using Weblate (Dutch) (2714925)
2020-07-07 Heimen Stoffels
* Translated using Weblate (Dutch) (0f0945c)
* Translated using Weblate (Dutch) (d1d6687)
2020-07-06 Daniel Frost
* Translated using Weblate (German) (a17c440)
2020-07-04 Heimen Stoffels
* Translated using Weblate (Dutch) (4afbaa2)
2020-07-03 Tigran Khachatryan
* Translated using Weblate (Armenian) (6503cd4)
2020-07-03 Heimen Stoffels
* Translated using Weblate (Dutch) (4f57d01)
2020-07-03 Stoian Minaiev
* Translated using Weblate (Ukrainian) (c23fe46)
2020-06-24 Weblate
* Merge branch 'origin/master' into Weblate. (605aada)
2020-06-24 Walter Garcia-Fontes
* v0.9.9 - updated translations, thanks to all translators! (0f1d3d6)
(tag: v0.9.9)
2020-06-24 Weblate
* Merge branch 'origin/master' into Weblate. (783a935)
2020-06-24 Walter Garcia-Fontes
* Updated new translations (f28640b)
2020-06-23 Eugene Markoff
* Translated using Weblate (Russian) (be2a89c)
2020-06-09 Jiri Grönroos
* Translated using Weblate (Finnish) (9ab2e03)
2020-06-09 Vladimir Tukalo
* Translated using Weblate (Russian) (02510f2)
2020-06-04 Abuabdellah
* Translated using Weblate (Arabic) (e7ec0fa)
2020-05-25 Ryan Argente
* Translated using Weblate (French (Canada)) (e191b1d)
2020-05-25 Anne Onyme
* Translated using Weblate (French) (f22257c)
2020-05-18 Pavel Borecki
* Translated using Weblate (Czech) (f4d78bb)
2020-05-08 Ryan Argente
* Translated using Weblate (French (Canada)) (3789018)
2020-05-09 Federico Turbino
* Translated using Weblate (Italian) (12be29c)
2020-04-26 Daniel Frost
* Translated using Weblate (German) (c77ea43)
2020-04-10 Neutrum N
* Translated using Weblate (Galician) (b5a0657)
2020-04-08 Neutrum N
* Translated using Weblate (Galician) (2b1475c)
2020-04-06 Neutrum N
* Translated using Weblate (Galician) (e59f1b5)
2020-03-25 Ari Börde Kröyer
* Translated using Weblate (Norwegian Bokmål) (031270b)
2020-03-22 Adrià
* Translated using Weblate (Sardinian) (96dde51)
2020-03-19 Guglielmo Felici
* Translated using Weblate (Italian) (81b9c10)
2020-03-15 Mohamed Sayed
* Translated using Weblate (Arabic) (300efd4)
2020-03-11 Ryan Argente
* Translated using Weblate (French (Canada)) (ed99ff8)
2020-03-06 Neutrum N
* Translated using Weblate (Galician) (e10ae4a)
2020-03-05 Neutrum N
* Translated using Weblate (Galician) (1a3d2ac)
2020-03-02 Pavel Borecki
* Translated using Weblate (Czech) (46f0aae)
2020-02-28 Pavel Borecki
* Translated using Weblate (Czech) (0ae2e5c)
2020-02-26 Ryan Argente
* Translated using Weblate (French (Canada)) (709a3a6)
2020-02-24 dano6
* Translated using Weblate (Slovak) (3929647)
2020-02-20 Ryan Argente
* Translated using Weblate (French (Canada)) (6b89544)
2020-02-17 Riccardo Riccio
* Translated using Weblate (Slovenian) (da20eb8)
2020-02-16 dano6
* Translated using Weblate (Slovak) (193e952)
2020-02-15 HSN80
* Translated using Weblate (Persian) (4cf5b4a)
2020-02-14 dano6
* Translated using Weblate (Slovak) (560fb30)
2020-02-14 Milan Korecký
* Translated using Weblate (Czech) (2550edd)
2020-02-08 Bence László
* Translated using Weblate (Hungarian) (a52d8f9)
2020-02-09 Oi Suomi On!
* Translated using Weblate (Finnish) (89ee681)
2020-02-10 HSN80
* Translated using Weblate (Persian) (145df17)
2020-02-09 Rodrigo Benedito
* Translated using Weblate (Portuguese (Brazil)) (b10eb46)
2020-02-04 nathangiovannini3
* Translated using Weblate (Italian) (b8ebf8f)
2020-02-01 Walter Garcia-Fontes
* v0.9.8 - updated translations, thanks to all translators! -
UbuntuColors to Theme Palette - Add deployment of arm64 -
Removed unused snap stuff (5adf042) (tag: v0.9.8)
* v0.9.7 - updated translations, thanks to all translators! -
UbuntuColors to Theme Palette - Add deployment of arm64 -
Removed unused snap stuff (d16fdd6) (tag: v0.9.7)
* v0.9.6 - updated translations, thanks to all translators! -
UbuntuColors to Theme Palette - Add deployment of arm64 -
Remov unused snap stuff (4ef0ec5) (tag: v0.9.6)
* Remove unused snap stuff (cb33236)
* Update translations and bump to version 0.9.5 (8ec394c)
2019-11-25 Sam Zhang
* Translated using Weblate (Chinese (Simplified)) (fa8fbcf)
2019-12-20 M.Sugahara
* Translated using Weblate (Japanese) (4d48a36)
2019-12-12 Sami Törmänen
* Translated using Weblate (Finnish) (4e83131)
2020-01-04 Tom Dom
* Translated using Weblate (Dutch) (3acd5f0)
2019-12-20 Eugene
* Translated using Weblate (Russian) (80ce0b3)
2019-11-26 Dmitriy Pushkov
* Translated using Weblate (Russian) (ceb43ac)
2020-01-15 Mike
* Translated using Weblate (Italian) (27395d7)
2020-01-09 Daniel Frost
* Translated using Weblate (German) (e7493aa)
2019-12-27 Moo
* Translated using Weblate (Lithuanian) (62648da)
2020-01-09 Joan CiberSheep
* Translated using Weblate (Catalan) (e11f635)
2020-01-14 Walter Garcia-Fontes
* Merge branch 'arm64-depl' into 'master' (87a155f)
2020-01-14 Marius Gripsgard
* Add deployment of arm64 (f2a491b)
2020-01-13 Walter Garcia-Fontes
* Merge branch 'ColorTweaks' into 'master' (51f67ce)
2020-01-13 Joan CiberSheep
* UbuntuColors to Theme Palette (25c3b9c)
2019-11-22 Daniel Frańczak
* Translated using Weblate (Polish) (9ece824)
2019-11-22 Weblate
* Merge branch 'origin/master' into Weblate. (e1612f7)
2019-11-22 wgarcia
* v0.9.4 - updated translations, thanks to all translators! - remove
deprecated click-build, MR #79 - add flying return button
to easily run commands from bash history, MR #80 (ab06dc9)
(tag: v0.9.4)
2019-11-22 Weblate
* Merge branch 'origin/master' into Weblate. (3ce09c7)
2019-11-22 Walter Garcia-Fontes
* Merge branch 'returnbutton' into 'master' (23771a6)
2019-11-22 Daniel Frost
* add flying return button to easily run commands from bash history
(1915b51)
2019-11-22 Weblate
* Merge branch 'origin/master' into Weblate. (50bb426)
2019-11-22 wgarcia
* Modified pot because of new build (5b4db80)
2019-11-21 Alberto
* Translated using Weblate (Galician) (f7d91ab)
2019-11-22 Walter Garcia-Fontes
* Merge branch 'patch-1' into 'master' (96da497)
2019-11-22 wgarcia
* Bump to verion 0.9.4 (9f88bb6)
2019-11-14 Eran
* Translated using Weblate (Hebrew) (f0a6bc5)
2019-11-10 Adrià
* Translated using Weblate (Sardinian) (f68c083)
2019-11-09 M.Sugahara
* Translated using Weblate (Japanese) (2bebc5a)
2019-11-10 Kai Goldbeck
* Translated using Weblate (German) (12350bc)
2019-11-02 Ege Öz
* Translated using Weblate (Turkish) (8f5ce61)
2019-10-29 P.-H. Lin
* Translated using Weblate (Chinese (Traditional)) (2df239f)
2019-10-28 enolp
* Translated using Weblate (Asturian) (df50041)
2019-10-27 louies0623
* Translated using Weblate (Chinese (Traditional)) (2ea110f)
2019-10-25 Allan Nordhøy
* Translated using Weblate (Norwegian Bokmål) (9be0e81)
2019-10-25 Daniel Frańczak
* Translated using Weblate (Polish) (3b592ce)
2019-10-25 Anne Onyme
* Translated using Weblate (French) (ed7a263)
2019-10-25 advocatux
* Translated using Weblate (Spanish) (83996db)
2019-10-26 Ivo Xavier
* Translated using Weblate (Portuguese) (539df36)
2019-10-25 Milan Korecký
* Translated using Weblate (Czech) (974daf5)
2019-10-25 Walter Garcia-Fontes
* Translated using Weblate (Catalan) (ac5344e)
2019-10-25 Weblate
* Manual update (954eece)
2019-10-21 Jonatan Hatakeyama Zeidler
* remove deprecated click-build (31ce4a5)
2019-10-20 Walter Garcia-Fontes
* v0.9.3 - updated translations, thanks to all translators! - return
previous behavior of two-finger and single-finger swipe
functions undoing commit 83da0b35, fix #83 - merge branch
'arm64' into 'master', merge request #78 - close button of
selection mode not always visible, fix #85 - rename close
to close app in AlternateActionPopover - opacity Affects
Background of Bottom Bar Menu, fix #77 (4918ee5) (tag:
v0.9.3)
* Rename close to close app in AlternateActionPopover (db15430)
* Build for merge request 77 (11c53b8)
* Merge branch 'closebutton' into 'master' (4ca18a9)
* Build for merge 78 (6fca670)
* Merge branch 'arm64' into 'master' (0fb053e)
* Return previous behavior of two-finger and single-finger swipe
functions undoing commit 83da0b35, fix #83 (1634c65)
* Bump to version 0.9.3 and updated translations (5dc6205)
2019-10-12 Tom Dom
* Translated using Weblate (Dutch) (32aa836)
2019-10-11 Marius Gripsgard
* Build for arm64 (ddc3e59)
2019-10-06 Eran
* Translated using Weblate (Hebrew) (5bccaa3)
2019-10-04 Sami Törmänen
* Translated using Weblate (Finnish) (ba00af1)
2019-09-24 Moo
* Translated using Weblate (Lithuanian) (1d0b5c9)
2019-09-18 Samson
* Translated using Weblate (Amharic) (daaa000)
2019-09-18 Danfro
* fix #85 close button of selection mode not always visible, opacity
of selection mode label set to 90% (c389c5f)
2019-09-13 Daniel Frańczak
* Translated using Weblate (Polish) (223dc3f)
2019-09-13 Mike
* Translated using Weblate (Italian) (0901afa)
2019-09-14 Ivo Xavier
* Translated using Weblate (Portuguese) (1224eb3)
2019-09-13 Milan Korecký
* Translated using Weblate (Czech) (87751a7)
2019-09-13 Xiangtian Wei
* Translated using Weblate (Chinese (Simplified)) (5879992)
2019-09-09 Weblate
* Merge branch 'origin/master' into Weblate. (e6f5c65)
2019-09-09 Walter Garcia-Fontes
* Commit after clickable build (2b8cbd3) (tag: v0.9.2)
2019-09-09 Weblate
* Merge branch 'origin/master' into Weblate. (7cbafe3)
2019-09-09 Walter Garcia-Fontes
* Merge branch 'headerworx' into 'master' (7c22ea0)
2019-09-09 Weblate
* Merge branch 'origin/master' into Weblate. (e0831c4)
2019-09-09 Walter Garcia-Fontes
* Committing after running clickable (f08b5ab)
2019-09-09 Weblate
* Merge branch 'origin/master' into Weblate. (5dc9fbe)
2019-09-09 Walter Garcia-Fontes
* Merge branch 'headerworx2' into 'master' (4d21b4c)
2019-09-09 Daniel Frost
* fix #65 settings and tabs buttons block view on commandline input
(43c060c)
2019-09-09 Weblate
* Merge branch 'origin/master' into Weblate. (2b18e02)
2019-09-09 Walter Garcia-Fontes
* Commiting after new click (6a22489)
* Merge branch 'master' of gitlab.com:ubports/apps/terminal-app
(5547b3e)
* Changed in compilation (3ff183d)
2019-09-09 Weblate
* Merge branch 'origin/master' into Weblate. (a972cea)
2019-09-09 Walter Garcia-Fontes
* Merge branch 'DialogColors' into 'master' (80a1086)
2019-09-09 Weblate
* Merge branch 'origin/master' into Weblate. (56f8d1e)
2019-09-09 Walter Garcia-Fontes
* Merge branch 'changefingerswipe' into 'master' (83da0b3)
2019-09-09 Daniel Frost
* fix #69 Swap two-finger and single-finger swipe functions (94a6f24)
2019-09-09 Walter Garcia-Fontes
* Merge branch 'master' into 'DialogColors' (ffc5f7e)
2019-09-09 Weblate
* Merge branch 'origin/master' into Weblate. (c7e549c)
2019-09-09 Walter Garcia-Fontes
* Added minimum clickable version to clickable.json (9dbd279)
2019-09-09 Weblate
* Merge branch 'origin/master' into Weblate. (9fa166a)
2019-09-09 Walter Garcia-Fontes
* Updated clickable.json: "dependencies" -> "dependencies_target"
(743be33)
2019-09-09 Weblate
* Merge branch 'origin/master' into Weblate. (47e5c2b)
2019-09-09 Walter Garcia-Fontes
* Merge branch 'update-gitlab-ci' into 'master' (8b39c05)
2019-09-09 Weblate
* Merge branch 'origin/master' into Weblate. (716be7d)
2019-09-09 Walter Garcia-Fontes
* Remove obsolete com.ubuntu.terminal.pot and bump to version 0.9.2
(59234a7)
2019-09-09 Brian Douglass
* Update gitlab ci for clickable v6 (1011c1f)
2019-09-07 Moo
* Translated using Weblate (Lithuanian) (20125f0)
2019-08-31 Moo
* Translated using Weblate (Lithuanian) (92786cd)
2019-08-30 Jiri Grönroos
* Translated using Weblate (Finnish) (9e2d5a3)
2019-08-27 Adrià
* Translated using Weblate (Sardinian) (e4435b5)
2019-08-25 Daniel Frost
* Translated using Weblate (German) (3a66fce)
2019-08-25 Danfro
* add back button to settings page, fix #66 (10be86d)
2019-08-19 Tom Dom
* Translated using Weblate (Dutch) (06296a8)
2019-08-17 advocatux
* Translated using Weblate (Spanish) (472f569)
2019-08-18 Ivo Xavier
* Translated using Weblate (Portuguese) (77b98f0)
2019-08-17 Daniel Frańczak
* Translated using Weblate (Polish) (8734035)
2019-08-17 Allan Nordhøy
* Translated using Weblate (Norwegian Bokmål) (43febba)
2019-08-17 Anne Onyme
* Translated using Weblate (French) (bc55481)
2019-08-17 Milan Korecký
* Translated using Weblate (Czech) (b7f6adf)
2019-08-17 Walter Garcia-Fontes
* Translated using Weblate (Catalan) (11fab96)
2019-08-17 Anne Onyme
* Translated using Weblate (French) (e2f1313)
2019-08-17 Weblate
* Repair commit (d92fadd)
2019-08-17 Florian Leeber
* Translated using Weblate (German) (76ee792)
2019-08-13 Emanuele Sorce
* Translated using Weblate (Italian) (520cb0f)
2019-08-04 vokaliz
* Translated using Weblate (Russian) (8d3d1e6)
2019-07-31 Moo
* Translated using Weblate (Lithuanian) (349cf3e)
* Added translation using Weblate (Lithuanian) (6b520ef)
2019-07-24 Neutrum N
* Translated using Weblate (Galician) (b032920)
* Translated using Weblate (Galician) (2cd6426)
2019-07-15 Yasser Lotfy
* Translated using Weblate (Arabic) (8f473c3)
2019-07-05 Aitzol Berasategi
* Translated using Weblate (Basque) (b670d02)
2019-07-01 Moshe Lazar
* Translated using Weblate (Russian) (f718892)
2019-06-26 Tom Dom
* Translated using Weblate (Dutch) (151b36f)
2019-06-21 lxdb
* Translated using Weblate (Russian) (8473497)
* Translated using Weblate (English (United States)) (ea52f32)
2019-06-22 Samson
* Translated using Weblate (Amharic) (d0b3c06)
2019-06-19 Joan CiberSheep
* Translated using Weblate (Catalan) (9abf005)
2019-06-18 Joan CiberSheep
* Dialog Colors to Follow HIG (f12d5e2)
2019-06-18 wgarcia
* Changed po/CMakeLists.txt so that QT_TR_NOOP are seen by gettext
and the pot file is updated (45b119f)
2019-06-15 Walter Garcia-Fontes
* Reverting changes introduced in a recent merge to make strings
translatable since it breaks the Shortcut Settings
windows. (b4a6f22)
* Revert "Translated using Weblate (Norwegian Bokmål)" Reverting last
commits because the merge of "Make strings translatable"
breaks the settings page. (225a16b)
* Revert "Update from pot file" Reverting last commits because the
merge of "Make strings translatable" breaks the settings
page. (77235c2)
* Revert "Translated using Weblate (Catalan)" Reverting last commits
because the merge of "Make strings translatable" breaks
the settings page. (d007c45)
* Revert "Translated using Weblate (Chinese (Traditional))" Reverting
last commits because the merge of "Make strings
translatable" breaks the settings page. (11fa6e4)
* Revert "Translated using Weblate (Czech)" Reverting last commits
because the merge of "Make strings translatable" breaks
the settings page. (38eb952)
* Revert "Translated using Weblate (French)" Reverting last commits
because the merge of "Make strings translatable" breaks
the settings page. (a97b9e7)
* Revert "Translated using Weblate (Polish)" Reverting last commits
because the merge of "Make strings translatable" breaks
the settings page. (18f5294)
* Revert "Translated using Weblate (Portuguese)" Reverting last
commits because the merge of "Make strings translatable"
breaks the settings page. (d798f50)
* Revert "Translated using Weblate (Spanish)" Reverting last commits
because the merge of "Make strings translatable" breaks
the settings page. (2129f83)
* Revert "Deleted obsolete po/com.ubuntu.terminal.pot" Reverting last
commits because the merge of "Make strings translatable"
breaks the settings page. (2ceddbd)
2019-06-11 wgarcia
* Deleted obsolete po/com.ubuntu.terminal.pot (2fc738f)
2019-06-04 advocatux
* Translated using Weblate (Spanish) (1a47c36)
2019-06-05 Ivo Xavier
* Translated using Weblate (Portuguese) (9044b59)
2019-06-04 Daniel Frańczak
* Translated using Weblate (Polish) (df904ec)
2019-06-04 Anne Onyme
* Translated using Weblate (French) (b3ecbd9)
2019-06-04 Milan Korecký
* Translated using Weblate (Czech) (5ec1c7f)
2019-06-05 louies0623
* Translated using Weblate (Chinese (Traditional)) (8aa2767)
2019-06-05 Walter Garcia-Fontes
* Translated using Weblate (Catalan) (9a979c6)
2019-06-04 Weblate
* Update from pot file (aa0f4af)
2019-05-31 Allan Nordhøy
* Translated using Weblate (Norwegian Bokmål) (6055c35)
2019-05-31 Ari Börde Kröyer
* Translated using Weblate (Norwegian Bokmål) (f2961f4)
2019-05-17 Weblate
* Merge branch 'origin/master' into Weblate. (612d520)
2019-05-17 Walter Garcia-Fontes
* Merge branch 'translatable' into 'master' (14d5371)
2019-05-17 Daniel Frost
* make settings strings translatable (78d8562)
2019-05-14 Florian Leeber
* Translated using Weblate (German) (9b66269)
2019-05-14 Weblate
* Merge branch 'origin/master' into Weblate. (0ba174c)
2019-05-14 Walter Garcia-Fontes
* Merge branch 'maintainer' into 'master' (13ec16c)
2019-05-14 wgarcia
* Add ubuntu-terminal-app.pot, because this is actually the file with
translatable strings now. (336b6f6)
2019-05-11 Daniel Frost
* Translated using Weblate (German) (aabea92)
2019-05-12 Tom Dom
* Translated using Weblate (Dutch) (11ef531)
2019-05-13 Walter Garcia-Fontes
* Merge branch 'maintainer' into 'master' (786f554) (tag: v0.9.1)
2019-05-13 wgarcia
* Bump to version 0.9.1 (f4360e9)
2019-05-07 Adrià
* Translated using Weblate (Sardinian) (08ffa1b)
2019-05-06 RedXXIII
* Translated using Weblate (French) (a96a2ff)
2019-05-05 Aurelio Cilia
* Translated using Weblate (Italian) (d98c9df)
2019-04-30 Daniel Frańczak
* Translated using Weblate (Polish) (c7e0eb4)
2019-04-29 Jonatan Hatakeyama Zeidler
* Translated using Weblate (German) (877a1de)
2019-05-01 louies0623
* Translated using Weblate (Chinese (Traditional)) (324cd49)
2019-04-29 Joan CiberSheep
* Translated using Weblate (Catalan) (b6c7b43)
2019-05-03 Weblate
* Repair Commit (7ffbe0d)
2019-04-28 advocatux
* Translated using Weblate (Spanish) (a1aa352)
2019-04-28 Ivo Xavier
* Translated using Weblate (Portuguese) (d55a4f8)
2019-04-26 Allan Nordhøy
* Translated using Weblate (Norwegian Bokmål) (c355fab)
2019-04-28 Anne Onyme
* Translated using Weblate (French) (a324dbe)
2019-04-27 Jiri Grönroos
* Translated using Weblate (Finnish) (4d062d1)
2019-04-27 Milan Korecký
* Translated using Weblate (Czech) (8bae2ca)
2019-04-27 louies0623
* Translated using Weblate (Chinese (Traditional)) (4ea6546)
2019-04-28 Walter Garcia-Fontes
* Translated using Weblate (Catalan) (4744249)
2019-04-26 Florian Leeber
* Translated using Weblate (German) (8537049)
2019-04-26 Weblate
* Repair commit (4356053)
2019-03-08 Brian Douglass
* Updated gitlab ci to use commit messages for the changelog
(6181797)
2019-02-22 Brian Douglass
* Added gitlab ci config (bb65ffa)
2019-01-28 Walter Garcia-Fontes
* Merge pull request #44 from comradekingu/patch-1 (7d5aadf)
2018-10-27 Allan Nordhøy
* Reinstated "It should be no longer than 4 characters!" (6ba264e)
2018-10-05 jonnius
* Update READMEs to UBports times (#50) (2230ca7)
2018-07-20 Allan Nordhøy
* Email to ellpsis (a23dd38)
* Enter shortcut ellipsis (e958d16)
* OK (3d31ef0)
* Non-versal button names, OK, ellipsis (09085cb)
2018-07-16 Allan Nordhøy
* Spelling: Display keys as they appear on the keyboard (48e58ca)
2018-06-30 Marius Gripsgard
* Bumb version over vivd version and remove bzr src version (2debdf1)
* Trigger click build (3741732)
* xenial-ify terminal-app (b5fbcf1)
* Add clickable (b86baa8)
2018-06-14 Marius Gripsgard
* Move settingsLoader to page root (fixes:
https://github.com/ubports/ubuntu-touch/issues/633)
(5e98ad8)
* Define app as single instance (03dd93f)
Fixes:
https://github.com/ubports/ubuntu-touch/issues/573
2018-06-05 Florian Leeber
* Merge pull request #41 from ubports/maintainer (bb34275)
2018-06-04 Dalton Durst
* Update maintainer (3676435)
2018-02-21 Marius Gripsgard
* Update jenkinsfile (6ee27b7)
* Build for bionic (0576a7d)
2018-01-04 Marius Gripsgard
* Bump version (efbac04)
* Revert "Add missing change that was introduced in the Ubuntu
archive version of terminal" (96cd727)
* Update Jenkinsfile (7408764)
2017-11-26 Florian Leeber
* Add Jenkinsfile for CI integration (967675f)
2017-04-05 Florian Boucault
* Multiplied default history size by 10 (daf7334)
* Increased minimum window size (983ced1)
2017-04-04 Renato Araujo Oliveira Filho
* [snap] Added mir-libs content interface as snap dep. (14b17cd)
* [snap] Added mir-libs content interface as snap dep. (3da1ad8)
2017-03-28 Florian Boucault
* Disable tests for arm64 (af0560f)
* Multiplied default history size by 10 (20c8ed4)
2017-03-27 Florian Boucault
* Increased minimum window size (2f4a59d)
2017-03-21 Florian Boucault
* Create windows synchronously to avoid races and segfaults with MIR.
(28d4c72)
2017-03-20 Florian Boucault
* Render terminal widget to a QImage instead of a FBO. That fixes a
number of rendering glitches. (8249dbe)
* Rename settings window into 'Terminal Preferences' (aaade1f)
2017-03-14 Florian Boucault
* Show on screen keyboard button even when a keyboard is attached
when always-show-osk is set. (0119d9b)
* Added include to fix warnings (ef4d49c)
* Give focus to shell after password was approved. (72c3fc4)
* Skip tests on powerpc (e7e3b14)
* Ensure that PAM access granted is preserved in all cases (b2aefa3)
* Do not try to be clever about sizing the window. (d47fa95)
2017-03-10 Florian Boucault
* Depend on the appropriate version of qml-module-qmltermwidget1.0
and qml-module-pamauthentication0.1 (7fda04f)
2017-03-08 Florian Boucault
* Added missing dependency qtdeclarative5-ubuntu-ui-extras0.2
(aa34627)
2017-03-06 Florian Boucault
* Added missing build dep for tests: qml-module-ubuntu-components
(16b29ff)
* Added missing build deps for tests: qml-module-qtquick2 and
qml-module-qttest (e92f0bb)
2017-03-03 Florian Boucault
* Add missing change that was introduced in the Ubuntu archive
version of terminal (377396b)
* Synchronise debian/changelog with what is in Ubuntu archive
(25863d5)
* Added xvfb to build dependencies (de85be1)
* Do not embed ubuntu-ui-extras as it is provided by
ubuntu-app-platform (c15e97d)
2017-02-28 Michael Terry
* Add support for connecting to the Mir socket. (5b22075)
2017-02-25 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (9f9bd96)
2017-02-22 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (003252a)
2017-02-21 Michael Terry
* Add mir interface (49d8355)
2017-02-17 Florian Boucault
* Do not embed ubuntu-ui-extras as it is provided by
ubuntu-app-platform (f2ffbac)
2017-02-09 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (0548906)
2017-02-01 Florian Boucault
* Snapcraft: much smaller snap using 'no-system-libraries' build
attribute (f9df1d4)
2017-01-29 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (4c56bce)
2017-01-26 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (218a086)
2017-01-25 Florian Boucault
* Renamed com.ubuntu.terminal into ubuntu-terminal-app (06831cf)
2017-01-21 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (6cc762b)
2017-01-20 Florian Boucault
* Snap: added missing build dependency: xvfb (162e5f1)
* Snap: use upstream desktop file (new feature in snapcraft 2.25).
(e864494)
* snapcraft.yaml: code reorganisation for clarity (7bf96d5)
* Add the unity8 plug in prevision of its upcoming availability.
(ab5d4cf)
* Snapcraft: updated yaml for snapcraft 2.25 (74b9922)
* Slight ssh mode code simplification (2863f68)
2017-01-19 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (a2d53af)
2017-01-18 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (fd68053)
2017-01-17 Florian Boucault
* Updated translation catalog (4cbb2b9)
* Removed non monospace font 'fonts-roboto' (6d3a684)
* Ctrl+Alt+W to close the individual terminal rather than the entire
tab. (24cb692)
2017-01-17 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (daa7cbc)
2017-01-16 Florian Boucault
* Support for transparent background. (52ac178)
* Refactored interface settings color editor (3618f68)
2017-01-14 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (a363290)
2017-01-13 Florian Boucault
* Silenced useless warning on 'focusedTerminal' (841893e)
2017-01-13 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (9661ff4)
2017-01-12 Florian Boucault
* Bumped version to 0.11 (bbc687d)
* Tiling: reversed keyboard shortcuts between horizontal and vertical
splits (4687b9e)
* Bumped version to 0.10 (db54cd4)
* New feature: terminals can be organised as tiles. (609e703)
* Added automated tests for tile resizing. (0254cc3)
* QML automated tests: reorganise (cfb8bb7)
* Added TiledView automated tests and fixed spotted bugs. (f85d761)
* Inverted meaning of splitting horizontally/vertically (5d76617)
* Renamed APIs: 'unplit' into 'remove' and 'split' into 'add'
(a71746b)
* Removed duplicated code (4a9bd83)
* Unneeded sizing (32d422b)
2017-01-11 Florian Boucault
* Added TiledTerminalView keyboard navigation (a4bf7df)
* Added keyboard shortcut customisation for splitting (455370c)
2017-01-09 Florian Boucault
* New feature: terminals can be tiled. (8e34239)
2017-01-07 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (63be0ca)
2017-01-06 Florian Boucault
* Bumped version to 0.9 (a89fbbb)
* Exit app when last terminal window is closed. (29cde9c)
* Updated translations (6ffefee)
* Contextual menu: new cleaner design. (aa72178)
* More efficient contextual menu. (85f1e13)
* Fixed copy/paste actions availability in contextual menu. (17346ec)
2016-12-14 Florian Boucault
* Empty cursor when terminal is not focused. (0952fe4)
2016-12-13 Florian Boucault
* Merged patches from upstream improving resizing:
https://github.com/Swordfish90/qmltermwidget/commit/0ae52e5bf34cf1bdc5dee4199f60e5595f3f2ad6
https://github.com/Swordfish90/qmltermwidget/commit/186b8eaba7859c2c2b364dea3805401bf2bae197
(f758400)
* Enable scrollbar only when needed (ab38f7e)
2016-12-12 Florian Boucault
* Reverted use of StackLayout (commit 310). (142deae)
* Added new tab, window and close tab to context menu. (f7e73a7)
* Slightly cleaner logs. (a206c52)
* Fixed no ssh dialog. (4549747)
* Use standard StackLayout for tabs content. (e2f245d)
* TabsModel: generic API supporting other content than just terminal.
API closer to QtQuick Controls 2 Container. (b46cfb8)
2016-12-09 Florian Boucault
* Fixed tab add icon. (348f22d)
* More robust workaround for nVidia proprietary drivers. (709fedc)
2016-12-08 Florian Boucault
* Use Tabs from Ubuntu UI Extras. (548535b)
* Fix some cases when new window was not created. (ce8169f)
* Synchronised latest version of Tabs component (a7e1c1d)
* Bumped version to 0.8 (4a2764b)
* Removed duplicate code to register QML singletons. (ca0dde6)
* More robust linking (4c6543c)
2016-12-05 Florian Boucault
* Building: removed use of qmake by CMake. (2766d9b)
* Added missing import (dd24309)
2016-12-02 Florian Boucault
* Settings: save customized color theme only when dismissing the
color picker. (652a207)
2016-12-01 Florian Boucault
* Settings: faster usage of ColorPickerPopup (9d235ca)
* Settings: support for color scheme edition. (337a5fe)
* More reliable DoubleBinding (8bcfbc6)
2016-11-30 Florian Boucault
* Settings: componentized customized TextField (2a429bd)
* Make theme names translatable (01a1f5b)
* Do not hardcode standard paths (9e0c3ab)
* ComboBox: support for nested JS Arrays. (06688e9)
* Use singletons instead of context properties. (68abe26)
2016-11-29 Florian Boucault
* Bumped version (791c7b9)
* Moved all settings related QML to subfolder Settings/ (85ba869)
* Settings: added shortcuts section (dffa22e)
* Settings: small anchors and focus fixes (8586fec)
* Settings: all sections don't have to be ScrollViews (e6f64c2)
* Settings: window color customizable (2556541)
* Settings: added sections (90dd698)
2016-11-28 Florian Boucault
* Use Shortcut instead of a massive switch case for keyboard
shortcuts. Save shortcuts to configuration file. (272ed19)
2016-11-25 Florian Boucault
* Current directory SSH workaround: use unique temporary files
(e8b8991)
* Updated pot (c4223f3)
* Snap version reset to 0.3 (ad3f8f5)
* Pass current working directory when opening a new window (ed83a8c)
* Fixed warning of binding a property with no change notification.
(625db26)
* Do not assume bash if /bin/bash is set (903b6f1)
* Added workaround to make passing the current working directory to a
new shell work with ssh (26a7fbe)
* Simplified reading current working directory (bd5ccaa)
2016-11-24 Florian Boucault
* Open new tab in directory of current tab (fc55bb2)
2016-11-23 Florian Boucault
* Removed deprecated command line options 'tablet' and 'phone'
(4b61cfc)
* Make sure layout is chosen before showing the window. (5d1768c)
* Settings: fixed ANSI colors (fbb94e5)
* Support for multiple windows (a8e161d)
* Settings: integrated layouts page (63c4bcc)
* ComboBox: prevent flickable beneath from being dragged. (9541e92)
* ComboBox: highlight hovered item, not selected item (055a60e)
* ComboBox: open upon press, not upon click (d0375c7)
* ComboBox: cleaner double binding (003e0f4)
* Added fonts inconsolata and roboto to snap (2c68ed8)
* Terminal page theme luminance dependent in order to style
scrollbars adequately (e46a287)
* Only list monospace fonts (8e7d2c2)
2016-11-22 Florian Boucault
* Set app name late to not confuse paths for snap (add2373)
* Settings in a separate window (db274ca)
* ComboBox smaller by default (997220e)
* Cleaner design for settings. (9e58c63)
2016-11-21 Florian Boucault
* Use QML Window instead of C++ QQuickView. Drop use of Ubuntu's
MainView. (5803c4c)
2016-11-18 Florian Boucault
* Workaround using ssh to make / the true root of the system
(347fdf1)
* snap: Use the ubuntu-app-platform content interface. (6e7534d)
* Blur tabs as well (f8c5435)
* Added missing file (0d5fe03)
2016-11-16 Florian Boucault
* Adequate cursor over terminal area (243de8c)
* Added fullscreen toggling with F11 (98fee1b)
* Tabs: added scroll wheel support (83ae1ec)
* Fixed annoying warnings (7772428)
* Changed default font size from 10 to 12 (947d0e5)
* Better default size (1f7f530)
* Tabs: use all available space (fcc5fde)
* Added tab scrolling when overflowing (902434f)
* No limit in number of tabs (996f656)
2016-11-15 Florian Boucault
* Use ListView for tabs (2640839)
2016-11-14 Florian Boucault
* Fix mouse events incorrectly positioned due to margins (2c69955)
* Scrollbar fix multi tab support (932e862)
* Use Ubuntu scrollbar (afaf416)
2016-11-09 Florian Boucault
* Smooth animations for hover/press (e476505)
* Snap: fixed desktop file (74187b5)
* Snap much improved (75d57df)
* Slightly simpler (30fb573)
* Tabs: added unfocused visual state (369d1f5)
* Fixed tab icon path issue (e265136)
2016-11-08 Florian Boucault
* Tabs: better vertical centering (d5adb2a)
* Added pressed and hovered states to tabs (244056b)
* Fixed tab actions spacing and margins (e24e322)
2016-11-04 Florian Boucault
* added tab reordering (dd00c97)
* Componentized tabs (e6d34f9)
2016-11-03 Florian Boucault
* New visual design for overlaid button and keyboard bar (2c6f579)
* Introduced desktop style tabs when enough space is available
(5f7d2b3)
* Added 2 new properties to TerminalDisplay: backgroundColor and
foregroundColor (075f580)
* Re-added Ubuntu color scheme that was wrongfully removed. Tweaked
it to new colors. (6c012e1)
* Enable QML debugging in debug builds (5db596e)
* Make non compiled files visible in qtcreator (dd87ac0)
2016-10-19 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (c6f5ba9)
2016-10-18 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (c6b495d)
2016-10-09 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (a109aef)
2016-10-07 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (a9bfdc6)
2016-09-29 Michael Sheldon
* Add transitional packages for qml-module renaming.
Fixes:
https://bugs.launchpad.net/bugs/1628781. (e3bbcdc)
* Add transitional packages for qml-module renaming (f872ac3)
2016-09-29 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (a6ab2f5)
2016-09-25 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (dc3bea6)
2016-09-24 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (52d9230)
2016-09-23 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (2d45c46)
2016-09-22 Michael Sheldon
* Use dh_python3; Rename QML modules to new qml-module format.
(3083812)
2016-09-20 Michael Sheldon
* Merge from trunk (c5909f0)
* Use dh_python3 in debian rules (d5ff097)
* Rename qtdeclarative install files to qml-module (6d87430)
2016-09-20 Larry Price
* Add runtime dependency for qml-module-qt-labs-settings package.
(acda79d)
2016-09-20 Michael Sheldon
* Use dh-python to generate python dependencies (20af7f4)
* Use qml-module naming pattern instead of deprecated qtdeclarative5
naming (feaad85)
2016-09-20 Larry Price
* Update QMLTermWidget to latest version and remove duplicate konsole
application code. (1837b34)
2016-09-19 Larry Price
* Adding Settings QML module to deps (38e6a27)
* Merge (e716e52)
* Update QMLTermWidget and remove unnecessary parts (20888f3)
2016-09-19 Luke Yelavich
* Packaging fixes in preparation for yakkety:; Added copyright
headers to src/app/qml files that didn't have it.; Added
a manpage to satisfy lintian.; Updated debian/copyright.
(acd5507)
* Update Vcs-bzr field (e386ac5)
* Add copyright headers (5e4b157)
2016-09-16 Luke Yelavich
* Clean up changelog a bit (3e987e7)
* Add more copyright paragraphs, thanks lintian. (768b657)
* Satisfy lintian copyright requirements (360fe8c)
* Further copyright updates (6d10519)
* Update copyright (4b9eb95)
* Added manpage (e2e6ac2)
* Fix up build dependency formatting (18671ca)
* Update changelog version; Update standards version (cc09c17)
2016-09-15 Alan Pope
* Adds snapcraft.yaml to do builds of ubuntu-terminal-app. Also fixes
broken xenial build - thanks to Dan Chapman. (6855a9f)
* Set click mode, tidy out comments, remove unnecessary delete from
cmake, as per comments. (3e4ee0c)
2016-09-08 Alan Pope
* Add snapcraft.yaml and fix build for xenial (f4c7373)
2016-08-31 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (ea97660)
2016-08-29 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (970a08e)
2016-08-22 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (7ae5226)
2016-06-29 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (b49f50c)
2016-06-17 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (97fe975)
2016-06-07 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (90fe57a)
2016-05-18 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (e006481)
2016-05-17 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (09dd1aa)
2016-05-16 Alan Pope
* Move close button to fix lp:1581216.
Fixes:
https://bugs.launchpad.net/bugs/1581216. (3a6bda7)
* Move close button - fixes lp:1581216 (50e0a5e)
2016-05-04 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (794aef3)
2016-04-28 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (e832eb7)
2016-04-27 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (5ddae8f)
2016-04-23 Stefano Verzegnassi
* Use UITK PageHeader, instead of the now deprecated "Page.head"
property; Use ScrollView where appropriate; Use UITK
Label, instead of the QtQuick Text component; Minor text
margins fix in TabsPage. (a17d5b9)
* Expose drag mode settings to QML; Disabled drag support in
ubuntu-terminal-app in order to workaround the missing
support in Mir.
Fixes:
https://bugs.launchpad.net/bugs/1488588. (5c63273)
* Added a context property which allows terminal-app to know whether
a keyboard or a mouse is attached to the device. (405aa97)
* Added missing 'NotifyDialog.qml' file, so that app can properly
notify whether a wrong password has been typed during PAM
auth.
Fixes: https://bugs.launchpad.net/bugs/1559892.
(daa33c3)
2016-04-05 Stefano Verzegnassi
* Removed keyboard bar setting. Automatically hide the bar by binding
to QuickUtils.keyboardAttached instead. (ba6b918)
2016-03-26 Stefano Verzegnassi
* updated DragMode enumerators name (7239c85)
2016-03-25 Stefano Verzegnassi
* Added missing 'NotifyDialog.qml' file, so that app can properly
notify whether a wrong password has been typed during PAM
auth (5a6d320)
2016-03-24 Stefano Verzegnassi
* Expose drag mode settings to QML; Disable drag mode in
ubuntu-terminal-app in order to workaround the missing
support in Mir (c88cc9a)
2016-03-21 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (9ac0f70)
2016-03-15 Stefano Verzegnassi
* Use UITK Label instead of QtQuick Text component (bfd29e0)
* Added the right dependency (079bcaf)
* Use QML APIs instead of a custom C++ class (5a0bdd1)
* Revert debian/control. wrong dependencies added. (e362d0f)
* Updated debian/control with the new dependencies (c2566ad)
* Merged trunk (4a55abd)
2016-03-11 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (72054c4)
2016-03-08 nskaggs
* Add back templates for autopilot add autopilot readme. (f1387f6)
* flake8 and typo (fce6f45)
2016-03-08 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (19cdfa9)
2016-03-07 nskaggs
* typos (3a126f3)
* undo pot change (cf570dc)
* remove old tests (5425266)
* add back scaffolding code for autopilot tests (f99bcb0)
* add autopilot readme (6911eee)
2016-03-07 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (801ae3d)
2016-03-06 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (6b054d4)
2016-03-06 Stefano Verzegnassi
* Hide terminal data until the access is granted (using a FastBlur).
Fixes: https://bugs.launchpad.net/bugs/1488481. (7245205)
2016-03-05 Evan McIntire
* Window size scales with font size. (272bd2a)
2016-03-04 nskaggs
* add jenkins info and mp readme. (383cb73)
* add jenkins info and mp readme (f9af114)
2016-03-04 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (7f26e56)
2016-03-04 Stefano Verzegnassi
* Moved the logic into TerminalPage; Apply a blur for hiding the
data (27c6a2d)
2016-03-03 Evan McIntire
* Actually scale with font size (cfe5ecc)
2016-03-03 Stefano Verzegnassi
* Hide terminal data until the access is granted (b153b3d)
* naming pt.2 (6d5589f)
* naming pt.1 (cdff09c)
* Let ScrollView initialize a Flickable by itself (96721a9)
* Use ScrollView where possible (23e2fd6)
2016-03-03 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (687b55f)
2016-02-29 Stefano Verzegnassi
* Removed debug output (def6032)
* Automatically hide the OSK button if a keyboard is attached to the
device (a83f03c)
* Connect bindings (ab1fdaa)
* Added context property for devices detection (79f22a7)
2016-02-29 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (7ade908)
2016-02-28 Stefano Verzegnassi
* Use the new PageHeader component. Page.head is now deprecated in
UITK 1.3. (b4afdf1)
2016-02-16 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (a8616cf)
2016-02-15 Evan McIntire
* Autofocus the authentication popup at app launch. In addition, only
load the terminal page after auth is complete/not required
so that it doesnt not steal focus, which allowed users to
use a bluetooth keyboard to bypass authentication.
Fixes:
https://bugs.launchpad.net/bugs/1488481,
https://bugs.launchpad.net/bugs/1499994. (ebc4559)
2016-02-15 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (fe5a189)
2016-02-13 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (ef6a0df)
2016-02-12 Evan McIntire
* Remove unneeded property (baa4ac6)
* Use timer to force focus to auth dialog (675b93d)
2016-02-11 Evan McIntire
* Uses the new splash screen features as per bug #1377638.
Fixes:
https://bugs.launchpad.net/bugs/1377638. (af3bb72)
* Remove header (76d7e9f)
2016-02-11 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (88c0902)
2016-02-10 Evan McIntire
* Use new splash screen features (2bbc73e)
2016-02-10 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (12efa9a)
2016-02-09 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (e100b59)
2016-02-08 Evan McIntire
* Disable copy if selection is empty. (c8ef25b)
* Small style change again (83f0d9f)
* Slight stlye changes (0ab0ef9)
2016-02-08 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (89cce37)
2016-02-07 Niklas Wenzel
* Display proper translatable names for color schemes instead of
their file names. (0d476df)
* Add color scheme name mapping (a752d2c)
* Add color scheme name mapping (01853ae)
2016-02-07 Stefano Verzegnassi
* Fixed standard ANSI blue color in the Ubuntu color scheme
(previously it was red); Use the official Ubuntu palette
(based on the UbuntuColors singleton of UITK).
Fixes:
https://bugs.launchpad.net/bugs/1452691. (012f7e3)
2016-02-07 Evan McIntire
* Disable copy if selection is empty (bbf3df0)
2016-02-07 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (293214d)
2016-02-06 Evan McIntire
* Size now scales with font size (9ecd297)
* Disables pasteo option if the clipboard buffer is empty. (1a586b7)
* Disable paste option when clipboard is empty (e2e8109)
2016-02-06 Niklas Wenzel
* Make font size relative to "medium" fontSize for Labels (58ba48a)
* Revert po/ folder to fix merge conflict (58932ea)
* Change default font size to 10 (9fa44f3)
* Fix the color scheme to be set to "Ubuntu" again by default.
Fixes:
https://bugs.launchpad.net/bugs/1542668. (a5966bc)
* Tweak the design of the ListItems in the settings. (bf17f6c)
* Tweak the design of the ListItems in the settings (3035055)
* Fix the color scheme to be set to "Ubuntu" again by default
(497dc15)
* Make font size relative to Label medium fontSize (4e60835)
2016-02-05 Stefano Verzegnassi
* New Ubuntu color scheme (a0306e2)
2016-02-02 Stefano Verzegnassi
* Fixed layouts not found when terminal-app is launched with '-q'
argument. (a3d641c)
2016-02-02 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (423d6a6)
2016-01-30 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (3723598)
2016-01-29 Stefano Verzegnassi
* New application icon from the Ubuntu Suru theme. (7ee5083)
2016-01-29 Evan McIntire
* Change the default dimensions so the terminal is a more proper size
for desktops.
Fixes:
https://bugs.launchpad.net/bugs/1465978. (dc7e007)
* Autofocus authentication popup (f1a6873)
2016-01-29 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (499ca33)
2016-01-28 Evan McIntire
* Change default size of window to look better on desktop (35159bc)
2016-01-28 Stefano Verzegnassi
* New app icon from the official theme (2f398a6)
2016-01-27 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (3a41444)
2016-01-25 Stefano Verzegnassi
* Added output in case the default layouts folder doesn't exist, or
no default layout has been found (f85efb9)
* added debug output as per MP review (f1eb30f)
* Fixed layouts not found when terminal-app is launched with '-q'
argument (fc3ed20)
2016-01-23 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (664859f)
2016-01-22 Stefano Verzegnassi
* Updated imports to Ubuntu.Components 1.3; Use
'ubuntu-sdk-15.04.3' framework; Migrated all the list
items to ListItemLayout; Added a Flickable in the
settings page, so that the content can be scrolled on
small screens; Moved the 'color scheme' setting into a
separate page, as per UITK 1.3 design specs (see section
"List items", "Examples and best practice" for three slot
layout).
Fixes: https://bugs.launchpad.net/bugs/1508363.
(2cc0392)
* Updated copyright year (a01aadb)
* Switches in SettingsPage are not connected with the 'onClicked'
signal of the respective ListItem; Moved color scheme
settings into a separate page (as per UITK 1.3 design
specs) (85e7679)
* Use PageHeader in TerminalPage (b34db41)
* Use a Flickable in the settings page (4a66a75)
* Merged trunk; 'Show Keyboard Button' entry in SettingsPage,
landed with a recent commit, now uses ListItemLayout
(d3253d8)
2016-01-22 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (8beb95e)
2016-01-21 Evan McIntire
* Changes authentication dialogue to "Enter passcode or passphrase"
instead of "Enter password", to be more in line with other
parts of the OS. (d93920c)
2016-01-19 Evan McIntire
* Change Auth Dialog to be in line with other apps ("Enter Password"
to "Enter Passcode or Passphrase") (93e6ee1)
2016-01-19 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (8213c48)
2016-01-18 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (92fcb56)
2016-01-16 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (c831e24)
2016-01-14 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (509f94a)
2016-01-13 Evan McIntire
* Added an option to toggle the visibility of the keyboard button.
Fixes: https://bugs.launchpad.net/bugs/1465975. (d2b10cf)
* Fix missing commit message. (5fb6867)
2016-01-09 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (722c34a)
2016-01-09 Stefano Verzegnassi
* Use new ListItem+ListItemLayout components (9659984)
* Use latest framework (15.04.3) (68a562d)
* Force hiding header in the terminal page (9081500)
* Updated imports to UITK 1.3 (7a685b7)
2016-01-02 Evan McIntire
* Fix function keys (052ad7a)
2015-12-27 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (8a641ea)
2015-12-19 Evan McIntire
* Add an option to toggle the visibility of the keyboard button.
(2f36c93)
2015-12-18 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (9f1d7eb)
2015-12-10 Alan Pope
* Allow for smaller font point sizes and set a lower default (5pt) to
fix/workaround LP:#1514519.
Fixes:
https://bugs.launchpad.net/bugs/1514519. (52c8dcc)
2015-12-09 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (49390d7)
2015-12-05 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (2e88da0)
2015-11-22 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (835a629)
2015-11-12 Alan Pope
* Use a better default, suitable for various screen sizes (aa3c2f3)
2015-11-11 Alan Pope
* Adjust minimum and default point size (c855e10)
2015-11-11 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (b623b1a)
2015-11-08 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (a544abf)
2015-11-06 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (b21d192)
2015-11-01 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (7616e15)
2015-10-26 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (620395a)
2015-10-25 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (4b6f92b)
2015-10-19 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (eac7684)
2015-10-18 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (8e5c8c0)
2015-10-08 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (971e5e3)
2015-09-28 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (417432e)
2015-09-24 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (b953f94)
2015-09-23 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (90776f4)
2015-09-19 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (5b8ee08)
2015-09-15 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (8237846)
2015-09-14 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (2b24e26)
2015-09-08 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (643259d)
2015-09-04 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (e643e4c)
2015-09-02 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (28fb110)
2015-09-01 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (82adf3c)
2015-08-29 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (80b9518)
2015-08-26 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (c2a7549)
2015-08-16 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (e14365b)
2015-08-15 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (06ed889)
2015-08-13 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (d4ebcca)
2015-08-12 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (652cff9)
2015-08-11 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (f8edd99)
2015-08-10 Niklas Wenzel
* Add the ability to translate strings from json profiles.
Fixes:
https://bugs.launchpad.net/bugs/1464319. (0a223fe)
2015-08-09 Niklas Wenzel
* Fix error due to which the layout descriptions would not appear in
the KeyboardBar (e5bad62)
* Update JsonTranslator to the new UITK as well (1769f54)
* Merge master (03638e4)
2015-08-08 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (d334495)
2015-08-07 Niklas Wenzel
* Update to the new UI Toolkit.
Fixes:
https://bugs.launchpad.net/bugs/1474114. (4c23cc7)
* Allow triggering the layout enabled switch by clicking anywhere on
the ListItem. (7fe0663)
2015-08-07 Alan Pope
* Add AUTHORS file. (c493c50)
2015-08-02 Niklas Wenzel
* Allow triggering the layout enabled switch by clicking anywhere on
the ListItem (d3b41cc)
* Update apparmor policy version (ee00941)
* Update README (8b9e312)
* manifest changes, use ActionSelectionPopover (b51ea46)
2015-08-02 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (1cd7507)
2015-07-31 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (13d215a)
2015-07-30 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (7ba1fef)
2015-07-16 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (b6e972c)
2015-07-14 Sam Hewitt
* Updated icon in accordance with the new guidelines. (f127d40)
2015-07-13 Niklas Wenzel
* Simple version bump (33f399c)
2015-07-13 Sam Hewitt
* Updated icon (5d96733)
2015-07-13 Niklas Wenzel
* Add json parser warning (3c2e6c1)
2015-07-12 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (3d7d04f)
2015-07-10 Niklas Wenzel
* Expose new strings (2d1d61c)
* Add the ability to translate strings from the json profiles
(6d8cfc1)
2015-07-08 Niklas Wenzel
* Added keyboard shortcuts for desktop use. (bfef190)
2015-07-06 Alan Pope
* Add AUTHORS file (a2f7e62)
2015-07-04 David Planella
* Bumped Debian changelog version.
Fixes:
https://bugs.launchpad.net/bugs/1468385. (dc6e270)
* Updated Debian standards version (8d356d7)
* Bumped changelog version (d0d4116)
2015-07-04 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (dcc6ac8)
2015-07-03 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (752310f)
2015-07-02 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (7b2dd6e)
2015-07-01 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (badc08c)
2015-06-30 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (3175712)
2015-06-23 Niklas Wenzel
* Create TerminalKeyboardShortcutHandler component (dc3e052)
2015-06-22 Niklas Wenzel
* Detect whether the swipe is a swipe in x or y direction by
comparing the length of the swipe in each direction
instead of simply preferring y over x swipes.
Fixes:
https://bugs.launchpad.net/bugs/1466988. (d3cfeaa)
2015-06-20 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (bab3b35)
2015-06-19 Niklas Wenzel
* Detect whether the swipe is a swipe in x or y direction by
comparing the length of the swipe in each direction
instead of simply preferring y over x swipes (5cad6a3)
2015-06-19 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (5bb54fa)
2015-06-18 Niklas Wenzel
* Merge master (c620c56)
* Revert po directory (77d8798)
* Add tab switching shortcuts (631b7d4)
2015-06-18 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (adcb949)
2015-06-16 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (8f7c8c7)
2015-06-15 Niklas Wenzel
* Fix swipe gesture inconsistencies by changing the behaviour to
using two fingers for scrolling and one finger for key
up/down events (see the bug description of LP: #1464566).
Fix issues arising from switching between single and multi
touch handlers by detecting whether gestures are going to
be single or multi touch before handling them.
Fixes:
https://bugs.launchpad.net/bugs/1464566. (7c75e5f)
2015-06-14 Niklas Wenzel
* Switch swipe gesture actions and improve two finger swipe behaviour
(30cb664)
2015-06-13 Niklas Wenzel
* Fix Ctrl++ shortcut for some keyboard layouts (320d46a)
2015-06-13 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (d8180be)
2015-06-12 Niklas Wenzel
* Add the ability to close tabs using the "exit" command.
Automatically close the application when the last tab was
closed using the "exit" command.
Fixes:
https://bugs.launchpad.net/bugs/1372915. (4c7c10b)
2015-06-12 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (962adcd)
2015-06-12 Niklas Wenzel
* Add font size and clipboard shortcuts (4522ba8)
2015-06-11 Niklas Wenzel
* Merge exit-handling branch (acc94dd)
* Remove unnecessary connect (586776f)
* Implement first set of keyboard shortcuts (bc272bf)
* Refactoring (06384ac)
* Add the ability to close tabs using the "exit" command.
Automatically close the application when the last tab was
closed using the "exit" command. (ac8b3a7)
2015-06-10 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (a50e6a5)
2015-06-08 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (e9f534f)
2015-06-07 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (ce8c8e6)
2015-06-06 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (0eefee1)
2015-06-05 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (786b99c)
2015-06-04 Filippo Scognamiglio
* Custom profile visibility in settings. (b07d6e0)
2015-06-03 Alan Pope
* Fix 1459437.
Fixes: https://bugs.launchpad.net/bugs/1459437.
(a01984f)
2015-06-02 Filippo Scognamiglio
* Import the latest changes from trunk. (bd95837)
* Fix unexpected behaviour when unselecting the last profile in the
list. (df8d3ce)
2015-06-02 Alan Pope
* Add Enter to scroll keys navigation, fix #1459437 (28a8c4e)
2015-06-01 Michael Terry
* Fix spelling of OK in authentication dialog. (6e1bc99)
2015-05-31 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (da649d0)
2015-05-29 Michael Terry
* Fix OK spelling (9958272)
2015-05-28 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (f520777)
2015-05-27 Carlo Giordano
* Home-Dynamic-Folder. (f3af2e2)
2015-05-21 Filippo Scognamiglio
* Merge the latest changes from trunk. (43e0b86)
* Set the button colour to grey when no profiles are selected.
(5cabae7)
2015-04-29 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (76c98b1)
2015-04-21 Timo Jyrinki
* Add Ctrl-D to the control menu. (LP: #1446548).
Fixes:
https://bugs.launchpad.net/bugs/1446548. (f4ec9ad)
* Add Ctrl-D to the control menu. (LP: #1446548) (98ce68f)
2015-04-20 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (9fc4814)
2015-04-06 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (147927e)
2015-04-02 Filippo Scognamiglio
* Fix: profile visibility was not stored on phone. (2f57ffa)
* Reorganize the settings page. (0263660)
* Correctly manage invalid profiles. (5e55cbb)
* Fix issues with profile loading. Store the javascripts object only
once. (7f6b84f)
2015-03-29 manglasape
* Added profile forNano. (c228945)
2015-03-27 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (197da98)
2015-03-26 Filippo Scognamiglio
* Initial implementation of profile selection. (ef7b154)
2015-03-25 manglasape
* Added Nano.json for having a nano profile in the terminal (c23a615)
2015-03-23 Carlo Giordano
* Home-Dynamic-Folder (058c3ff)
* Home-Dynamic-Folder (8d7a285)
2015-03-21 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (2618275)
2015-03-20 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (e98e6a6)
2015-03-19 Filippo Scognamiglio
* Fix inconsistent scrolling behaviour.
Fixes:
https://bugs.launchpad.net/bugs/1431558. (403ef91)
2015-03-16 Filippo Scognamiglio
* Fix inconsistent scrolling behaviour. (0d70189)
2015-03-14 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (520dcac)
2015-03-09 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (60f3178)
2015-03-06 Alan Pope
* Fix typo in command bar. (ec6b1fe)
* fix typo (86e474d)
2015-03-04 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (0e26b03)
2015-03-02 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (c6ae6e9)
2015-03-01 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (9633dc4)
2015-02-28 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (0d049de)
2015-02-27 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (cb68068)
2015-02-27 Filippo Scognamiglio
* This should fix 1423536. (43e085a)
2015-02-26 Filippo Scognamiglio
* Merge upstream changes. (3667039)
2015-02-26 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (f581079)
2015-02-26 Filippo Scognamiglio
* Enable layout customization through json profiles. (5950f09)
* Delete the pre-reboot tests. (b9c70a3)
2015-02-25 Filippo Scognamiglio
* Fix pep8 python issues. (0e31877)
* Fix C++ habits. (a447d7e)
* Add dummy autopilot test. (ca28f25)
* Remove unused python imports. (cffc9cd)
* Remove empty line at the end of test_terminal.py (9169a70)
* Remove pre-reboot tests. (3c0f83d)
2015-02-20 Filippo Scognamiglio
* Simulate Left and Right arrow on swipe gesture. (177bd6f)
2015-02-14 Filippo Scognamiglio
* Sync upstream changes. (47d39c7)
* Cleanups. Remove unused empty string return. (0810a07)
* Validate possible other_actions array. (9bd158f)
* Rename command action into string action as the name better
reflects the behaviour. (4b3e05b)
* Polishing and fixes profiles support. (a966efe)
2015-02-12 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (fdb9c34)
2015-02-10 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (2a7c0c2)
2015-02-09 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (a551bf6)
2015-02-08 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (ac9aec1)
2015-02-05 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (787e460)
2015-02-04 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (653fc3d)
2015-02-03 Filippo Scognamiglio
* Fixes bug #1417487 (930497f)
* Initial, already working implementation of keyboard profiles.
(6833bb3)
2015-02-03 Łukasz 'sil2100' Zemczak
* Don't use 'latest' as the BZR_REVNO as it is in no way a proper bzr
revision number. Instead, use bzr revno to determine the
correct rev as other click projects do. (6d2422a)
* Don't use 'latest' as the BZR_REVNO as it is in no way a proper bzr
revision number. Instead, use bzr revno to determine the
correct rev as other click projects do. (ebf9be2)
2015-02-03 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (955a253)
2015-01-29 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (8177b12)
2015-01-25 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (994ecdd)
2015-01-24 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (43b264f)
2015-01-23 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (6086918)
2015-01-22 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (3c75dbd)
2015-01-21 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (6509ca1)
2015-01-20 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (2a22f87)
2015-01-19 Filippo Scognamiglio
* Use keyboard icon in overlay button. (255d989)
2015-01-19 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (cac8d74)
2015-01-18 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (fb9d5eb)
2015-01-17 Launchpad Translations on behalf of ubuntu-terminal-dev
* Launchpad automatic translations update. (3a0346c)
2015-01-17 Filippo Scognamiglio
* The keyboard bar can now be hidden. (5e02183)
* Fix: Drop deprecated dev frameworks. (515498a)
* Implement selection, copy and paste on phone. (e062a2b)
* Force keyboard popups height to be less or equal than three rows.
(ae5d2e6)
2015-01-08 Filippo Scognamiglio
* Merge Carlo's proposal. Makes copy and paste strings translatable.
(69583a6)
2014-12-10 Filippo Scognamiglio
* Merge branch by Carlo. Fix keyboard strings not translatable.
(eecae61)
2014-12-09 Carlo Giordano
* AlternateAction strings were not translatable (ad9a8ca)
2014-12-08 Carlo Giordano
* keyboard strings were not translatable (52f8214)
2014-12-07 Filippo Scognamiglio
* Fix: reset default index in expandable buttons. (8bd995c)
* Add some more commands. (They have to be tweaked, this is just to
show some ideas.) (909cb44)
* Expandable button now also act as normal button if just clicked.
Changing tabs requires only one tap instead of two.
(88bd51b)
2014-12-05 Filippo Scognamiglio
* Connect qml engine close signal to application close signal. Fixes
LP:1399701 . (b6ba2f3)
* Using new improved and more customizable keyboard. The layouts are
still placeholders. (e1a30c1)
2014-12-02 Filippo Scognamiglio
* Fix: restore keybord state when page is changed. (5f39cf1)
* Clicking the selected tab takes you back to the terminal. (884fc03)
* Using fixes from new plugin version. (f4bc4e5)
* Use gridview instead of listview for tabs page. (91e877d)
2014-12-01 Filippo Scognamiglio
* Fix. Remove focus from the widget when terminal page is not
visible. (8ef971c)
2014-11-30 Filippo Scognamiglio
* Clicking on active tab, will bring you back to the terminal view.
(0468bbb)
* Merge branch from Stefano. Added thumbnails in tab page. (1e54cb8)
2014-11-29 Stefano Verzegnassi
* Add thumbnails in TabsPage (d96b275)
2014-11-29 Filippo Scognamiglio
* Multitouch to scroll history, improved bottom bar gestures, added
bottom bar scroll indicator, reorganized buttons, various
other fixes. (1ca7eee)
2014-11-22 Filippo Scognamiglio
* Added keyboard tooltip. Ths allows a short description of the row
of keys. (ed1fe1a)
* Bump click version number. (4c66800)
* Plethora of fixes: improved swipe, touch input, visual/haptic
feedbacks for all actions, debian packaging, refactoring +
minor improvements. (012b3be)
2014-11-17 Filippo Scognamiglio
* Fix issues when resizing terminal not in focus, tab removing,
alternate action, and small refactoring. (882537e)
2014-11-16 Filippo Scognamiglio
* Added dummy Ubuntu colorscheme. Added one finger scrolling on the
phone. Various clean-ups both in code and UI. (846a770)
* Improved look and feel. Various fixes all around. (f47a3ba)
* Added tabs. Initial work on graphical aspects. (fd362e9)
* Added settings (with page). (c06f98d)
2014-11-15 Filippo Scognamiglio
* Adding working prototype of customizable bottom keyboard. Minor
fixes. (19f29e2)
2014-11-14 Filippo Scognamiglio
* Added expandable button (not used yet). Fixed mouse wheel events.
(2efc296)
2014-11-13 Filippo Scognamiglio
* Updating plugin version. It includes more properties and a nice
scrollbar (optional). (2d2ed84)
2014-11-12 Filippo Scognamiglio
* Managing right click copy and paste on the desktop. (4132f1a)
* Moving new terminal plugin. (80cd44a)
2014-10-25 Filippo Scognamiglio
* Initial reboot commit. (ed28a6b)
lomiri-terminal-app-v2.0.2/README-Autopilot.md 0000664 0000000 0000000 00000003600 14512741156 0021025 0 ustar 00root root 0000000 0000000 Running Autopilot tests
=======================
NOTE: autopilot is currently not available in UBports and the instructions below are no longer accurate.
If you are looking for more info about Autopilot or writing AP tests, here are some useful links to help you:
- [Ubuntu - Quality](http://developer.ubuntu.com/start/quality)
- [Autopilot - Python](https://developer.ubuntu.com/api/autopilot/python/1.5.0/)
For help and options on running tests, see:
- [Autopilot tests](https://developer.ubuntu.com/en/start/platform/guides/running-autopilot-tests/)
Prerequisites
=============
Install the following autopilot packages required to run the tests,
$ sudo apt-get install python3-autopilot libautopilot-qt ubuntu-ui-toolkit-autopilot python3-autopilot-vis
Running tests on the desktop
============================
Using terminal:
* Branch the code
$ bzr branch lp:ubuntu-terminal-app
* Navigate to the tests/autopilot directory.
$ cd tests/autopilot
* run all tests.
$ autopilot3 run -vv ubuntu_terminal_app
* to list all tests:
$ autopilot3 list ubuntu_terminal_app
To run only one test
$ autopilot3 run -vv ubuntu_terminal_app.tests.test_name
* Debugging tests using autopilot vis
$ autopilot3 launch -i Qt qmlscene src/app/terminal
$ autopilot3 vis
Running tests using Ubuntu SDK
==============================
Refer this [tutorial](https://developer.ubuntu.com/en/start/platform/guides/running-autopilot-tests/) to run tests on Ubuntu SDK:
Running tests on device or emulator:
====================================
Using autopkg:
* Branch the code, for example,
$ bzr branch lp:ubuntu-terminal-app
* Navigate to the source directory.
$ cd ubuntu-terminal-app
* Build a click package
$ click-buddy .
* Run the tests on device (assumes only one click package in the directory)
$ adt-run . *.click --- ssh -s adb -- -p
lomiri-terminal-app-v2.0.2/README-MergeRequest.md 0000664 0000000 0000000 00000002011 14512741156 0021450 0 ustar 00root root 0000000 0000000 # Prerequisites to approving a Merge Request (MR)
Over time, it has been found that insufficient testing by reviewers sometimes
leads to the app not being buildable in Qtcreator due to manifest
errors, or translation pot file not updated. As such, please follow the
checklist below before approving a MR.
# Checklist
* Does the MR add/remove user visible strings? If Yes, the maintainer who
merges the MR should update the pot file afterwards and push the change
directly to the target branch.
* Does the MR change the UI? If Yes, has it been discussed with some of the
DocViewer developers?
* Did you perform an exploratory manual test run of your code change and any
related functionality?
* If the MR fixes a bug or implements a feature, are there accompanying unit
and autopilot tests?
* Is the app buildable and runnable using Qtcreator?
* Was the copyright years updated if necessary?
The above checklist is more of a guideline to help the app to stay buildable,
stable and up to date.
lomiri-terminal-app-v2.0.2/README.md 0000664 0000000 0000000 00000001370 14512741156 0017051 0 ustar 00root root 0000000 0000000 # Lomiri Terminal
A terminal app for desktop and mobile devices. It provides access to terminal
sessions and is based on QMLTermWidget.
## Building the app
The app can be built from source using CMake. It depends on Qt, PAM and
QMLTermWidget. click packages can be built using
[clickable](https://clickable-ut.dev/en/latest/).
## i18n: Translating lomiri-terminal-app into your Language
You can easily contribute to the localization of this project (i.e. the
translation into your language) by visiting (and signing up with) the
Hosted Weblate service:
https://hosted.weblate.org/projects/lomiri/lomiri-terminal-app
The localization platform of this project is sponsored by Hosted Weblate
via their free hosting plan for Libre and Open Source Projects.
lomiri-terminal-app-v2.0.2/app/ 0000775 0000000 0000000 00000000000 14512741156 0016351 5 ustar 00root root 0000000 0000000 lomiri-terminal-app-v2.0.2/app/CMakeLists.txt 0000664 0000000 0000000 00000001510 14512741156 0021106 0 ustar 00root root 0000000 0000000 file(GLOB_RECURSE QML_SRCS *.qml *.js *.json *.png)
set(terminal_SRCS
main.cpp
fileio.cpp
fonts.cpp
shortcuts.cpp
standardpaths.cpp
${QML_SRCS}
)
add_executable(lomiri-terminal-app ${terminal_SRCS})
qt5_use_modules(lomiri-terminal-app Gui Qml Quick Widgets)
target_link_libraries(lomiri-terminal-app stdc++)
if(NOT "${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
add_custom_target(terminal-qmlfiles ALL
COMMAND cp -r ${CMAKE_CURRENT_SOURCE_DIR}/qml ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${QMLFILES}
)
endif(NOT "${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
install(DIRECTORY qml DESTINATION ${DATA_DIR})
if(CLICK_MODE)
install(TARGETS lomiri-terminal-app DESTINATION ${BIN_DIR})
else()
install(TARGETS lomiri-terminal-app RUNTIME DESTINATION bin)
endif()
lomiri-terminal-app-v2.0.2/app/fileio.cpp 0000664 0000000 0000000 00000004064 14512741156 0020330 0 ustar 00root root 0000000 0000000 /*
* Copyright: 2015 Canonical Ltd.
*
* This file is part of lomiri-terminal-app
*
* lomiri-terminal-app 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 3 of the License, or
* (at your option) any later version.
*
* lomiri-terminal-app 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, see .
*
* Author: Filippo Scognamiglio
*/
#include "fileio.h"
#include
FileIO::FileIO()
{
}
bool FileIO::write(const QString& sourceUrl, const QString& data) {
if (sourceUrl.isEmpty())
return false;
QFile file(sourceUrl);
if (!file.open(QFile::WriteOnly | QFile::Truncate))
return false;
QTextStream out(&file);
out << data;
file.close();
return true;
}
QString FileIO::read(const QString& sourceUrl) {
if (sourceUrl.isEmpty())
return "";
QFile file(sourceUrl);
if (!file.open(QFile::ReadOnly))
return "";
QTextStream in(&file);
QString result = in.readAll();
file.close();
return result;
}
QString FileIO::mktemp(const QString& tmpl) {
const QString chars("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
QString tmpnam = QString(tmpl);
for (auto i = 0; i < 16; i++) {
auto x = QRandomGenerator::global()->bounded(0, chars.length() - 1);
tmpnam.append(chars.at(x));
}
return tmpnam;
}
bool FileIO::remove(const QString& fileName) {
return QFile::remove(fileName);
}
QString FileIO::symLinkTarget(const QString& fileName) {
return QFile::symLinkTarget(fileName);
}
bool FileIO::exists(const QString & fileName) {
return QFile::exists(fileName);
}
lomiri-terminal-app-v2.0.2/app/fileio.h 0000664 0000000 0000000 00000002436 14512741156 0017776 0 ustar 00root root 0000000 0000000 /*
* Copyright: 2015 Canonical Ltd.
*
* This file is part of lomiri-terminal-app
*
* lomiri-terminal-app 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 3 of the License, or
* (at your option) any later version.
*
* lomiri-terminal-app 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, see .
*
* Author: Filippo Scognamiglio
*/
#ifndef FILEIO_H
#define FILEIO_H
#include
#include
#include
#include
class FileIO : public QObject
{
Q_OBJECT
public:
FileIO();
public slots:
bool write(const QString& sourceUrl, const QString& data);
QString read(const QString& sourceUrl);
QString mktemp(const QString& tmpl);
bool remove(const QString& fileName);
QString symLinkTarget(const QString& fileName);
bool exists(const QString & fileName);
};
#endif // FILEIO_H
lomiri-terminal-app-v2.0.2/app/fonts.cpp 0000664 0000000 0000000 00000002327 14512741156 0020212 0 ustar 00root root 0000000 0000000 /*
* Copyright: 2016 Canonical Ltd.
*
* This file is part of lomiri-terminal-app
*
* lomiri-terminal-app 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 3 of the License, or
* (at your option) any later version.
*
* lomiri-terminal-app 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, see .
*
* Author: Florian Boucault
*/
#include "fonts.h"
Fonts::Fonts()
{
updateFamilies();
}
void Fonts::updateFamilies()
{
m_monospaceFamilies.clear();
foreach (const QString &family, m_fontDatabase.families()) {
if (m_fontDatabase.isFixedPitch(family)) {
m_monospaceFamilies << family;
}
}
emit monospaceFamiliesChanged();
}
QStringList Fonts::monospaceFamilies() const
{
return m_monospaceFamilies;
}
lomiri-terminal-app-v2.0.2/app/fonts.h 0000664 0000000 0000000 00000002471 14512741156 0017657 0 ustar 00root root 0000000 0000000 /*
* Copyright: 2016 Canonical Ltd.
*
* This file is part of lomiri-terminal-app
*
* lomiri-terminal-app 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 3 of the License, or
* (at your option) any later version.
*
* lomiri-terminal-app 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, see .
*
* Author: Florian Boucault
*/
#ifndef FONTS_H
#define FONTS_H
#include
#include
#include
#include
class Fonts : public QObject
{
Q_OBJECT
Q_PROPERTY(QStringList monospaceFamilies READ monospaceFamilies NOTIFY monospaceFamiliesChanged)
public:
Fonts();
QStringList monospaceFamilies() const;
Q_SIGNALS:
void monospaceFamiliesChanged();
protected:
void updateFamilies();
private:
QStringList m_monospaceFamilies;
QFontDatabase m_fontDatabase;
};
#endif // FONTS_H
lomiri-terminal-app-v2.0.2/app/main.cpp 0000664 0000000 0000000 00000023330 14512741156 0020002 0 ustar 00root root 0000000 0000000 /*
* Copyright: 2013 - 2014 Canonical, Ltd
*
* This file is part of lomiri-terminal-app
*
* lomiri-terminal-app 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 3 of the License, or
* (at your option) any later version.
*
* lomiri-terminal-app 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, see .
*
* Authors: Michael Zanetti
* Riccardo Padovani
* David Planella
* Florian Boucault
*/
#include
#include
#include
#include
#include
#include
#include "fileio.h"
#include "fonts.h"
#include "shortcuts.h"
#include "standardpaths.h"
#include
QString getNamedArgument(QStringList args, QString name, QString defaultName)
{
int index = args.indexOf(name);
return (index != -1) ? args[index + 1] : QString(defaultName);
}
QStringList getProfileFromDir(const QString &path) {
QDir layoutDir(path);
layoutDir.setNameFilters(QStringList("*.json"));
QStringList jsonFiles = layoutDir.entryList();
QStringList result;
foreach (QString s, jsonFiles) {
result.append(s.prepend(path));
}
return result;
}
bool sshdRunning() {
QProcess process;
QString pgm("pgrep");
QStringList args = QStringList() << "sshd";
process.start(pgm, args);
process.waitForReadyRead();
return !process.readAllStandardOutput().isEmpty();
}
#define MAKE_SINGLETON_FACTORY(type) \
static QObject* type##_singleton_factory(QQmlEngine* engine, QJSEngine* scriptEngine) { \
Q_UNUSED(engine); \
Q_UNUSED(scriptEngine); \
return new type(); \
}
MAKE_SINGLETON_FACTORY(FileIO)
MAKE_SINGLETON_FACTORY(Fonts)
MAKE_SINGLETON_FACTORY(Shortcuts)
MAKE_SINGLETON_FACTORY(StandardPaths)
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QQmlApplicationEngine engine;
qmlRegisterSingletonType("Terminal", 0, 1, "FileIO", FileIO_singleton_factory);
qmlRegisterSingletonType("Terminal", 0, 1, "Fonts", Fonts_singleton_factory);
qmlRegisterSingletonType("Terminal", 0, 1, "Shortcuts", Shortcuts_singleton_factory);
qmlRegisterSingletonType("Terminal", 0, 1, "StandardPaths", StandardPaths_singleton_factory);
// Set up import paths
QStringList importPathList = engine.importPathList();
// Prepend the location of the plugin in the build dir,
// so that Qt Creator finds it there, thus overriding the one installed
// in the sistem if there is one
importPathList.prepend(QCoreApplication::applicationDirPath() + "/../plugin/");
// Setup useful environmental variables.
if (!importPathList.empty()){
QString cs, kbl;
foreach (QString pwd, importPathList) {
cs = pwd + "/QMLTermWidget/color-schemes";
kbl = pwd + "/QMLTermWidget/kb-layouts";
if (QDir(cs).exists()) break;
}
setenv("KB_LAYOUT_DIR",kbl.toUtf8().constData(),1);
setenv("COLORSCHEMES_DIR",cs.toUtf8().constData(),1);
}
setenv("TERM", QString("xterm").toUtf8().data(), 0);
QStringList args = a.arguments();
if (args.contains("-h") || args.contains("--help")) {
qDebug() << "usage: " + args.at(0) + " [-h|--help] [-I ]";
qDebug() << " --forceAuth Force authentication on or off.";
qDebug() << " -h|--help Print this help.";
qDebug() << " -I Give a path for an additional QML import directory. May be used multiple times.";
qDebug() << " -q Give an alternative location for the main qml file.";
qDebug() << " --ssh Run a ssh session on local host instead of default bash.";
return 0;
}
// Desktop doesn't have yet Unity8 and so no unity greeter either. Consequently it doesn't
// also have any "PIN code" or "Password" extra authentication. Don't require any extra
// authentication there by default
if (qgetenv("QT_QPA_PLATFORM") != "ubuntumirclient") {
qDebug() << Q_FUNC_INFO << "Running on non-MIR desktop, not requiring authentication by default";
engine.rootContext()->setContextProperty("noAuthentication", QVariant(true));
} else {
engine.rootContext()->setContextProperty("noAuthentication", QVariant(false));
}
QString qmlfile;
for (int i = 0; i < args.count(); i++) {
if (args.at(i) == "-I" && args.count() > i + 1) {
QString addedPath = args.at(i+1);
if (addedPath.startsWith('.')) {
addedPath = addedPath.right(addedPath.length() - 1);
addedPath.prepend(QDir::currentPath());
}
importPathList.append(addedPath);
} else if (args.at(i) == "-q" && args.count() > i + 1) {
qmlfile = args.at(i+1);
} else if (args.at(i) == "--forceAuth" && args.count() > i + 1) {
QString value = args.at(i+1);
if (value == "true") {
qDebug() << Q_FUNC_INFO << "Forcing authentication on";
engine.rootContext()->setContextProperty("noAuthentication", QVariant(false));
} else if (value == "false") {
qDebug() << Q_FUNC_INFO << "Forcing authentication off";
engine.rootContext()->setContextProperty("noAuthentication", QVariant(true));
} else {
qWarning() << Q_FUNC_INFO << "Invalid forceAuth option '" << value << "', keeping default";
}
}
}
if (args.contains(QLatin1String("-testability")) || getenv("QT_LOAD_TESTABILITY")) {
QLibrary testLib(QLatin1String("qttestability"));
if (testLib.load()) {
typedef void (*TasInitialize)(void);
TasInitialize initFunction = (TasInitialize)testLib.resolve("qt_testability_init");
if (initFunction) {
initFunction();
} else {
qCritical("Library qttestability resolve failed!");
}
} else {
qCritical("Library qttestability load failed!");
}
}
engine.rootContext()->setContextProperty("applicationPid", QCoreApplication::applicationPid());
if (args.contains("--ssh")) {
bool sshIsAvailable = sshdRunning();
engine.rootContext()->setContextProperty("sshRequired", QVariant(true));
engine.rootContext()->setContextProperty("sshIsAvailable", sshIsAvailable);
if (sshIsAvailable) {
engine.rootContext()->setContextProperty("noAuthentication", QVariant(false));
engine.rootContext()->setContextProperty("sshUser", qgetenv("USER"));
}
} else {
engine.rootContext()->setContextProperty("sshRequired", QVariant(false));
engine.rootContext()->setContextProperty("sshIsAvailable", QVariant(false));
engine.rootContext()->setContextProperty("sshUser", "");
}
engine.setImportPathList(importPathList);
QStringList keyboardLayouts;
// load the qml file
if (qmlfile.isEmpty()) {
QStringList paths = QStandardPaths::standardLocations(QStandardPaths::DataLocation);
paths.prepend(QDir::currentPath());
paths.prepend(QCoreApplication::applicationDirPath());
foreach (const QString &path, paths) {
QFileInfo fi(path + "/qml/lomiri-terminal-app.qml");
qDebug() << "Trying to load QML from:" << path + "/qml/lomiri-terminal-app.qml";
if (fi.exists()) {
qmlfile = path + "/qml/lomiri-terminal-app.qml";
break;
}
}
}
// Look for default layouts
QDir keybLayoutDir = QFileInfo(qmlfile).dir();
const QString &layoutsDir("KeyboardRows/Layouts");
if (keybLayoutDir.cd(layoutsDir)) {
QString keybLayoutPath = keybLayoutDir.canonicalPath() + "/";
qDebug() << "Retrieving default keyboard profiles from folder: " << keybLayoutPath;
QStringList kLayouts = getProfileFromDir(keybLayoutPath);
if (kLayouts.isEmpty()) {
qDebug() << "No default keyboard profile found.";
} else {
keyboardLayouts << kLayouts;
}
} else {
qDebug() << "Not able to locate default keyboard profiles folder:" << keybLayoutDir.canonicalPath() + "/" + layoutsDir;
}
// Look for user-defined layouts
QStringList configLocations = QStandardPaths::standardLocations(QStandardPaths::ConfigLocation);
foreach (const QString &path, configLocations) {
QString fullPath = path + "/lomiri-terminal-app/Layouts/";
qDebug() << "Retrieving keyboard profiles from folder: " << fullPath;
keyboardLayouts << getProfileFromDir(fullPath);
}
engine.rootContext()->setContextProperty("keyboardLayouts", keyboardLayouts);
QCoreApplication::setApplicationName("terminal.ubports");
// Unset organization to skip an extra folder component
QCoreApplication::setOrganizationName(QString());
// Get Qtlabs.settings to use a sane path
QCoreApplication::setOrganizationDomain(QCoreApplication::applicationName());
qDebug() << "using main qml file from:" << qmlfile;
engine.load(QUrl::fromLocalFile(qmlfile));
// Connect the quit signal
QObject::connect((QObject*) &engine, SIGNAL(quit()), (QObject*) &a, SLOT(quit()));
return a.exec();
}
lomiri-terminal-app-v2.0.2/app/qml/ 0000775 0000000 0000000 00000000000 14512741156 0017142 5 ustar 00root root 0000000 0000000 lomiri-terminal-app-v2.0.2/app/qml/AlternateActionPopover.qml 0000664 0000000 0000000 00000010403 14512741156 0024303 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2014-2017 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored-by: Filippo Scognamiglio
* Florian Boucault
*/
import QtQuick 2.5
import Lomiri.Components 1.3
import Lomiri.Components.Popups 1.3
ActionSelectionPopover {
id: popover
contentWidth: units.gu(30)
delegate: ListItem {
divider.visible: action.divider ? true : false
enabled: action.enabled
Shortcut {
id: shortcut
enabled: false
sequence: action.shortcut
}
Item {
anchors {
left: parent.left
right: parent.right
leftMargin: units.gu(3)
rightMargin: units.gu(2)
}
height: childrenRect.height
anchors.verticalCenter: parent.verticalCenter
Label {
text: action.text
textSize: Label.Small
color: theme.palette.normal.overlayText
opacity: action.enabled ? 1.0 : 0.4
}
Label {
anchors.right: parent.right
text: shortcut.portableText
textSize: Label.Small
color: theme.palette.normal.overlayText
opacity: 0.4
}
}
onClicked: popover.hide()
visible: action.visible
height: units.gu(4.5)
}
actions: ActionList {
Action {
text: i18n.tr("Select")
onTriggered: terminalPage.state = "SELECTION";
visible: !QuickUtils.keyboardAttached
}
Action {
text: i18n.tr("Copy")
enabled: !terminal.isSelectionEmpty()
onTriggered: terminal.copyClipboard();
shortcut: settings.shortcutCopy
}
Action {
text: i18n.tr("Paste")
enabled: !terminal.isClipboardEmpty()
onTriggered: terminal.pasteClipboard();
shortcut: settings.shortcutPaste
property bool divider: true
}
Action {
text: i18n.tr("Split horizontally")
onTriggered: tiledTerminalView.splitTerminal(terminal, Qt.Vertical)
shortcut: settings.shortcutSplitHorizontally
enabled: terminal.height >= 2 * tiledTerminalView.minimumTileHeight
}
Action {
text: i18n.tr("Split vertically")
onTriggered: tiledTerminalView.splitTerminal(terminal, Qt.Horizontal)
shortcut: settings.shortcutSplitVertically
enabled: terminal.width >= 2 * tiledTerminalView.minimumTileWidth
}
Action {
text: i18n.tr("Close active view")
onTriggered: terminal.finished()
shortcut: settings.shortcutCloseTab
enabled: tiledTerminalView.count > 1
property bool divider: true
}
Action {
text: i18n.tr("New tab")
onTriggered: tabsModel.addTerminalTab()
shortcut: settings.shortcutNewTab
}
Action {
text: i18n.tr("Close active tab")
onTriggered: {
if (tabsModel.count > 1) {
tabsModel.removeItem(tabsModel.currentIndex);
}
}
shortcut: settings.shortcutCloseTab
enabled: tabsModel.count > 1
}
Action {
text: i18n.tr("New window")
onTriggered: terminalAppRoot.createTerminalWindow()
shortcut: settings.shortcutNewWindow
property bool divider: true
}
Action {
id: closeAction
text: i18n.tr("Cancel")
onTriggered: popover.hide()
}
}
}
lomiri-terminal-app-v2.0.2/app/qml/AuthenticationDialog.qml 0000664 0000000 0000000 00000003677 14512741156 0023771 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2014 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored by: Arto Jalkanen
*/
import QtQuick 2.4
import Lomiri.Components 1.3
import Lomiri.Components.Popups 1.3
Dialog {
id: root
title: i18n.tr("Authentication required")
text: i18n.tr("Enter passcode or passphrase:")
signal passwordEntered(string password)
signal dialogCanceled
// Due to several different things forcing focus
// on creation, we simply create this timer to
// work around that (see bugs #1488481 and #1499994)
Timer {
interval: 1
running: true
onTriggered: passwordField.forceActiveFocus()
}
Component.onCompleted: {
passwordField.forceActiveFocus();
}
TextField {
id: passwordField
objectName: "inputField"
placeholderText: i18n.tr("passcode or passphrase")
echoMode: TextInput.Password
onAccepted: okButton.clicked(text)
}
Button {
id: okButton
objectName: "okButton"
text: i18n.tr("Authenticate")
color: theme.palette.normal.positive
onClicked: {
passwordEntered(passwordField.text)
passwordField.text = "";
}
}
Button {
id: cancelButton
objectName: "cancelButton"
text: i18n.tr("Cancel")
onClicked: {
dialogCanceled();
}
}
}
lomiri-terminal-app-v2.0.2/app/qml/AuthenticationService.qml 0000664 0000000 0000000 00000006100 14512741156 0024152 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2014 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*/
import QtQuick 2.4
import Lomiri.Components 1.3
import Lomiri.Components.Popups 1.3
import Lomiri.Components.Extras.PamAuthentication 0.1
/**
A simple service for authentication.
Displays login dialog and fires signals
on access approval or denial.
*/
QtObject {
id: authenticationService
property var __authDialog
readonly property bool isDialogVisible: __authDialog != null
property bool alreadyGranted: false
signal granted(string password)
signal denied()
Component.onCompleted: {
if (sshRequired && !sshIsAvailable) {
displaySshDialog();
}
if ( (sshIsAvailable && sshRequired) || (systemAuthentication.requireAuthentication() && !noAuthentication)) {
if (!alreadyGranted) {
displayLoginDialog();
}
}
}
/**
Displays the login dialog
and fires success or failure depending
on user input.
*/
function displayLoginDialog() {
var authentication_dialog =
PopupUtils.open( Qt.resolvedUrl( "AuthenticationDialog.qml" ) );
var verify_password = function( password ) {
if ( systemAuthentication.validatePasswordToken( password ) ) {
alreadyGranted = true;
granted(password);
PopupUtils.close( authentication_dialog );
}
else {
var dialog_options = {
title : i18n.tr( "Authentication failed" )
};
PopupUtils.open( Qt.resolvedUrl( "NotifyDialog.qml" ),
null,
dialog_options );
}
};
authentication_dialog.passwordEntered.connect( verify_password );
authentication_dialog.dialogCanceled.connect( denied );
__authDialog = authentication_dialog
}
function displaySshDialog() {
var sshDialog =
PopupUtils.open( Qt.resolvedUrl( "ConfirmationDialog.qml" ),
null,
{'title': i18n.tr("No SSH server running."),
'text': i18n.tr("SSH server not found. Do you want to proceed in confined mode?")});
sshDialog.dialogCanceled.connect( Qt.quit );
sshDialog.dialogAccepted.connect( function() {
PopupUtils.close(sshDialog)
})
}
property var systemAuthentication: PamAuthentication {
serviceName: "terminal"
}
}
lomiri-terminal-app-v2.0.2/app/qml/CircularTransparentButton.qml 0000664 0000000 0000000 00000003432 14512741156 0025041 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2014 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored-by: Filippo Scognamiglio
*/
import QtQuick 2.4
import Lomiri.Components 1.3
Rectangle {
property color backgroundColor: "black"
property real innerOpacity: 1.0
property color textColor: "white"
property color iconColor: "white"
property Action action
radius: width * 0.5
color: Qt.rgba(backgroundColor.r, backgroundColor.g, backgroundColor.b, innerOpacity)
width: units.gu(5)
height: units.gu(5)
PressFeedback {
id: pressFeedbackEffect
}
Loader {
active: action.text
z: parent.z + 0.1
anchors.centerIn: parent
sourceComponent: Label {
opacity: innerOpacity
text: action.text
color: textColor
}
}
Loader {
active: action.iconName
z: parent.z + 0.1
scale: 0.5
anchors.fill: parent
sourceComponent: Icon {
opacity: innerOpacity
name: action.iconName
color: iconColor
}
}
MouseArea {
anchors.fill: parent
onClicked: {
action.trigger();
pressFeedbackEffect.start();
}
}
}
lomiri-terminal-app-v2.0.2/app/qml/ColoredImage.qml 0000664 0000000 0000000 00000003437 14512741156 0022216 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2016 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored-by: Florian Boucault
*/
import QtQuick 2.4
Image {
id: image
property alias color: colorizedImage.keyColorOut
property alias keyColor: colorizedImage.keyColorIn
ShaderEffect {
id: colorizedImage
anchors.fill: parent
// Whether or not a color has been set.
visible: image.status == Image.Ready && keyColorOut != Qt.rgba(0.0, 0.0, 0.0, 0.0)
property Image source: image
property color keyColorOut: Qt.rgba(0.0, 0.0, 0.0, 0.0)
property color keyColorIn: "#808080"
property real threshold: 0.1
fragmentShader: "
varying highp vec2 qt_TexCoord0;
uniform sampler2D source;
uniform highp vec4 keyColorOut;
uniform highp vec4 keyColorIn;
uniform lowp float threshold;
uniform lowp float qt_Opacity;
void main() {
lowp vec4 sourceColor = texture2D(source, qt_TexCoord0);
gl_FragColor = mix(keyColorOut * vec4(sourceColor.a), sourceColor, step(threshold, distance(sourceColor.rgb / sourceColor.a, keyColorIn.rgb))) * qt_Opacity;
}"
}
}
lomiri-terminal-app-v2.0.2/app/qml/ConfirmationDialog.qml 0000664 0000000 0000000 00000002273 14512741156 0023431 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2016 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored by: Renato Araujo Oliveira Filho
*/
import QtQuick 2.4
import Lomiri.Components 1.3
import Lomiri.Components.Popups 1.3
Dialog {
id: root
signal dialogCanceled
signal dialogAccepted
Button {
id: okButton
objectName: "continueButton"
text: i18n.tr("Continue")
color: theme.palette.normal.positive
onClicked: dialogAccepted()
}
Button {
id: cancelButton
objectName: "cancelButton"
text: i18n.tr("Cancel")
onClicked: dialogCanceled();
}
}
lomiri-terminal-app-v2.0.2/app/qml/ExpandableButton.qml 0000664 0000000 0000000 00000012014 14512741156 0023112 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2014 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored-by: Filippo Scognamiglio
*/
import QtQuick 2.4
import Lomiri.Components 1.3
Item {
id: container
property Component childComponent
property Component parentComponent: childComponent
property list actions
property Action mainAction
// Set this boolean to change the direction of the expansion. True to right and false to left.
property bool expandRight: true
property real animationTime: 200
property color textColor: "white"
property color backgroundColor: "black"
property bool expandable: true
property int maxRows: 3
property int _rows: Math.min(actions.length, maxRows)
property int _columns: Math.ceil(actions.length / _rows)
property int selectedIndex: -1
property bool expanded: __expanded && expandable
property bool __expanded: mainMouseArea.pressed && !clickTimer.running
// Emit haptic feedback.
onSelectedIndexChanged: pressFeedbackEffect.start();
onExpandedChanged: pressFeedbackEffect.start();
Loader {
sourceComponent: parentComponent
width: container.width
height: parent.height
}
PressFeedback {
id: pressFeedbackEffect
}
Component {
id: repeaterDelegate
Loader {
id: delegateContainer
sourceComponent: childComponent
width: container.width
height: container.height
Rectangle {
color: LomiriColors.orange;
anchors.fill: parent
z: parent.z + 0.01
opacity: index == selectedIndex ? 0.5 : 0.0
Behavior on opacity {
LomiriNumberAnimation { }
}
}
Loader {
z: parent.z + 0.01
anchors.centerIn: parent
active: actions[index].text
sourceComponent: Label {
color: textColor
text: actions[index].text
}
}
Loader {
anchors.fill: parent
scale: 0.5
active: actions[index].iconName
sourceComponent: Icon {
name: actions[index].iconName
}
}
}
}
Timer {
id: clickTimer
interval: 400 // TODO This interval might need tweaking.
}
MouseArea {
id: mainMouseArea
property real __expandedWidth: container.width * _columns
property real __expandedHeight: container.height * (_rows + 1)
width: (expanded ? __expandedWidth : container.width)
height: (expanded ? __expandedHeight : container.height)
z: parent.z + 0.1
y: -height + container.height
x: expanded && !expandRight
? -container.width * (container._columns - 1)
: 0
enabled: expandable
onPressed: {
if (mainAction)
clickTimer.start();
selectedIndex = -1;
}
onPositionChanged: {
if (containsMouse && expanded) {
var i = Math.floor(mouse.x / container.width);
var j = _rows - Math.floor(mouse.y / container.height) - 1;
var newIndex = i * _rows + j;
selectedIndex =
(i >= 0 && j >= 0 && newIndex >= 0 && newIndex < actions.length)
? newIndex
: -1;
}
}
onReleased: {
if (clickTimer.running && mainAction)
mainAction.trigger();
else if (selectedIndex >= 0 && mainMouseArea.containsMouse)
actions[selectedIndex].trigger();
}
}
Rectangle {
id: popupRectangle
height: container.height * container._rows
width: container.width * container._columns
color: container.backgroundColor
opacity: expanded ? 1.0 : 0.0
y: -height
x: !expandRight
? -container.width * (container._columns - 1)
: 0
GridView {
id: repeater
anchors.fill: parent
model: actions
cellHeight: container.height
cellWidth: container.width
interactive: false
delegate: repeaterDelegate
flow: GridView.TopToBottom
verticalLayoutDirection: GridView.BottomToTop
}
}
}
lomiri-terminal-app-v2.0.2/app/qml/KeyboardBar.qml 0000664 0000000 0000000 00000015152 14512741156 0022046 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2014 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored-by: Filippo Scognamiglio
*/
import QtQuick 2.4
import Lomiri.Components 1.3
import "KeyboardRows"
import "KeyboardRows/jsonParser.js" as Parser
Item {
id: rootItem
property int selectedLayoutIndex: 0
property color backgroundColor: "black"
property color foregroundColor: "white"
opacity: 1
signal simulateCommand(string command);
signal simulateKey(int key, int mod);
ListModel {
id: layoutsList
}
Component {
id: actionComponent
Action {
property int selectIndex
onTriggered: rootItem.selectLayout(selectIndex);
}
}
Component {
id: layoutComponent
KeyboardLayout {
anchors.fill: keyboardContainer
enabled: false
visible: false
color: rootItem.backgroundColor
textColor: rootItem.foregroundColor
}
}
function printLayouts() {
for (var i = 0; i < layoutsList.count; i++) {
console.log(layoutsList.get(i).layout.name);
}
}
function createLayoutObject(profileObject) {
var object = layoutComponent.createObject(keyboardContainer);
object.loadProfile(profileObject);
return object;
}
function disableLayout(index) {
if (!isIndexLayoutValid(index))
return;
var layoutObject = layoutsList.get(index).layout;
layoutObject.visible = false;
layoutObject.enabled = false;
layoutObject.z = rootItem.z;
layoutObject.simulateKey.disconnect(simulateKey);
layoutObject.simulateCommand.disconnect(simulateCommand);
}
function enableLayout(index) {
if (!isIndexLayoutValid(index))
return;
var layoutObject = layoutsList.get(index).layout;
layoutObject.visible = true;
layoutObject.enabled = true;
layoutObject.z = rootItem.z + 0.01;
layoutObject.simulateKey.connect(simulateKey);
layoutObject.simulateCommand.connect(simulateCommand);
}
function isIndexLayoutValid(index) {
return (index >= 0 && index < layoutsList.count);
}
function selectLayout(index) {
if (!isIndexLayoutValid(index))
return;
disableLayout(selectedLayoutIndex);
enableLayout(index);
selectedLayoutIndex = index;
}
function dropProfiles() {
for (var i = 0; i < layoutsList.count; i++) {
layoutsList.get(i).layout.destroy();
}
layoutsList.clear();
}
function updateSelector() {
var result = [];
for (var i = 0; i < layoutsList.count; i++) {
var layoutObject = layoutsList.get(i).layout;
var index = i;
var actionObject = actionComponent.createObject(rootItem);
actionObject.text = layoutObject.short_name;
actionObject.description = layoutObject.name;
actionObject.selectIndex = i;
result.push(actionObject);
}
keyboardSelector.actions = result;
}
function loadProfiles() {
dropProfiles();
for (var i = 0; i < settings.profilesList.count; i++) {
var profile = settings.profilesList.get(i);
if (!profile.profileVisible)
continue;
try {
console.log("Loading Layout:", Qt.resolvedUrl(profile.file));
var layoutObject = createLayoutObject(profile.object);
layoutsList.append({layout: layoutObject});
} catch (e) {
console.error("Error in profile " + profile.file);
console.error(e);
}
}
updateSelector();
selectLayout(0);
}
PressFeedback {
id: pressFeedbackEffect
}
// TODO: What do we do with this control from a design perspective?
ExpandableButton {
id: keyboardSelector
height: parent.height
width: units.gu(4)
z: parent.z + 0.01
backgroundColor: rootItem.backgroundColor
textColor: rootItem.foregroundColor
childComponent: Component {
Rectangle {
color: rootItem.backgroundColor
}
}
enabled: layoutsList.count != 0
Icon {
anchors {
fill: parent
leftMargin: units.gu(0.5)
rightMargin: units.gu(0.5)
topMargin: units.gu(1)
bottomMargin: units.gu(1)
}
name: "contextual-menu"
color: rootItem.foregroundColor
}
}
onSimulateKey: pressFeedbackEffect.start();
onSimulateCommand: pressFeedbackEffect.start();
Item {
id: keyboardContainer
anchors.left: keyboardSelector.right
anchors.bottom: parent.bottom
anchors.right: parent.right
anchors.top: parent.top
height: units.gu(5)
Rectangle {
property string defaultString: i18n.tr("Change Keyboard");
id: toolTip
Connections {
property alias index: keyboardSelector.selectedIndex
property alias text: tooltipLabel.text
target: keyboardSelector
onSelectedIndexChanged: {
text = index >= 0
? keyboardSelector.actions[index].description
: toolTip.defaultString
}
}
visible: keyboardSelector.expanded
anchors.fill: parent
color: "Black"
opacity: 0.8
z: parent.z + 0.1
Label {
z: parent.z + 0.1
id: tooltipLabel
text: toolTip.defaultString
anchors.centerIn: parent
color: "white"
}
}
}
Connections {
target: settings
onProfilesChanged: rootItem.loadProfiles();
}
Component.onDestruction: dropProfiles();
Component.onCompleted: loadProfiles();
}
lomiri-terminal-app-v2.0.2/app/qml/KeyboardRows/ 0000775 0000000 0000000 00000000000 14512741156 0021555 5 ustar 00root root 0000000 0000000 lomiri-terminal-app-v2.0.2/app/qml/KeyboardRows/ExpandableKeyboardButton.qml 0000664 0000000 0000000 00000003356 14512741156 0027217 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2014 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Author: Filippo Scognamiglio
*/
import QtQuick 2.4
import Lomiri.Components 1.3
import ".."
Item {
id: expandableKeyboardButton
property alias text: mainLabel.text
property alias mainAction: expandableButton.mainAction
property alias actions: expandableButton.actions
property alias expandable: expandableButton.expandable
property alias expandRight: expandableButton.expandRight
property color backgroundColor
property color textColor
Rectangle {
width: parent.width
anchors.top: parent.top
height: units.dp(3)
color: LomiriColors.orange;
z: parent.z + 1
}
Label {
id: mainLabel
anchors.centerIn: parent
z: parent.z + 0.02
color: LomiriColors.orange;
}
ExpandableButton {
id: expandableButton
anchors.fill: parent
backgroundColor: expandableKeyboardButton.backgroundColor
textColor: expandableKeyboardButton.textColor
parentComponent: Rectangle {
color: expandableKeyboardButton.backgroundColor
}
z: parent.z + 0.01
}
}
lomiri-terminal-app-v2.0.2/app/qml/KeyboardRows/JsonTranslator.qml 0000664 0000000 0000000 00000012022 14512741156 0025250 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2015 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Author: Niklas Wenzel
*/
import QtQuick 2.4
import Lomiri.Components 1.3
QtObject {
// Enum for translation types
readonly property int name: 0
readonly property int shortName: 1
readonly property int modifier: 2
readonly property int key: 3
// The first parameter has to be one of the readonly properties above
function getTranslatedNameById(type, id) {
switch(type) {
case name:
if (id === "ctrl_keys") {
// TRANSLATORS: This a keyboard layout name
return i18n.tr("Control Keys");
} else if (id === "fn_keys") {
// TRANSLATORS: This a keyboard layout name
return i18n.tr("Function Keys");
} else if (id === "scroll_keys") {
// TRANSLATORS: This a keyboard layout name
return i18n.tr("Scroll Keys");
} else if (id === "simple_cmds") {
// TRANSLATORS: This a keyboard layout name
return i18n.tr("Command Keys");
}
return "";
case shortName:
var translation = "";
if (id === "ctrl_keys") {
// TRANSLATORS: This the short display name of a keyboard layout. It should be no longer than 4 characters!
translation = i18n.tr("Ctrl");
} else if (id === "fn_keys") {
// TRANSLATORS: This the short display name of a keyboard layout. It should be no longer than 4 characters!
translation = i18n.tr("Fn");
} else if (id === "scroll_keys") {
// TRANSLATORS: This the short display name of a keyboard layout. It should be no longer than 4 characters!
translation = i18n.tr("Scr");
} else if (id === "simple_cmds") {
// TRANSLATORS: This the short display name of a keyboard layout. It should be no longer than 4 characters!
translation = i18n.tr("Cmd");
}
if (translation !== "") {
// Shorten the string if the translation is longer than 4 characters
if (translation.length <= 4) {
return translation;
} else {
return translation.substring(0, 4);
}
}
return "";
case modifier:
var translation = "";
if (id === "Control") {
// TRANSLATORS: This is the name of the Control key.
translation = i18n.tr("CTRL");
} else if (id === "Alt") {
// TRANSLATORS: This is the name of the Alt key.
translation = i18n.tr("Alt");
} else if (id === "Shift") {
// TRANSLATORS: This is the name of the Shift key.
translation = i18n.tr("Shift");
}
if (translation !== "") {
// Always return the translation in uppercase letters
return translation.toUpperCase();
}
return id;
case key:
var translation = "";
if (id === "esc_key") {
// TRANSLATORS: This is the name of the Escape key.
translation = i18n.tr("Esc");
} else if (id === "pg_up_key") {
// TRANSLATORS: This is the name of the Page Up key.
translation = i18n.tr("PgUp");
} else if (id === "pg_dn_key") {
// TRANSLATORS: This is the name of the Page Down key.
translation = i18n.tr("PgDn");
} else if (id === "del_key") {
// TRANSLATORS: This is the name of the Delete key.
translation = i18n.tr("Del");
} else if (id === "home_key") {
// TRANSLATORS: This is the name of the Home key.
translation = i18n.tr("Home");
} else if (id === "end_key") {
// TRANSLATORS: This is the name of the End key.
translation = i18n.tr("End");
} else if (id === "tab_key") {
// TRANSLATORS: This is the name of the Tab key.
translation = i18n.tr("Tab");
} else if (id === "enter_key") {
// TRANSLATORS: This is the name of the Enter key.
translation = i18n.tr("Enter");
}
return id;
default:
return "";
}
}
}
lomiri-terminal-app-v2.0.2/app/qml/KeyboardRows/KeyModel.qml 0000664 0000000 0000000 00000001503 14512741156 0024000 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2014 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Author: Filippo Scognamiglio
*/
import QtQuick 2.4
import Lomiri.Components 1.3
QtObject {
property string text
property Action mainAction
property list actions
}
lomiri-terminal-app-v2.0.2/app/qml/KeyboardRows/KeyboardButton.qml 0000664 0000000 0000000 00000002030 14512741156 0025217 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2014 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Author: Filippo Scognamiglio
*/
import QtQuick 2.4
import Lomiri.Components 1.3
Item {
property alias text: mainLabel.text
property Action mainAction
property alias textColor: mainLabel.color
Label {
id: mainLabel
anchors.centerIn: parent
color: "white"
}
MouseArea {
anchors.fill: parent
onClicked: mainAction.trigger();
}
}
lomiri-terminal-app-v2.0.2/app/qml/KeyboardRows/KeyboardLayout.qml 0000664 0000000 0000000 00000011157 14512741156 0025233 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2015 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Author: Filippo Scognamiglio
*/
import QtQuick 2.4
import Lomiri.Components 1.3
import "jsonParser.js" as Parser
KeyboardRow {
id: keyboardRow
keyWidth: units.gu(5)
readonly property variant modifiers: ["Control", "Alt", "Shift"]
// This label is used to compute the maximum width of all the controls.
Label {
id: hiddenLabel
visible: false
}
function dropProfile() {
// TODO Check if this is enough and doesn't leak.
for (var i = 0; i < model.length; i++)
model[i].destroy();
model = [];
}
function createActionString(action) {
switch(action.type){
case "key":
return createKeyActionString(action.key, action.mod, action.text, action.id);
case "string":
return createStringActionString(action.string, action.text);
}
}
function createOtherActionsString(actions) {
var result = "[";
for (var i = 0; i < actions.length; i++) {
var action = actions[i];
result += createActionString(action);
if (i < actions.length - 1)
result += ",";
}
return result + "]";
}
function createKeyActionString(key, mod, text, id) {
if (modifiers.indexOf(mod) === -1)
mod = "No";
return "Action { text: \"" + createKeyText(key, mod, text, id) + "\"; onTriggered: simulateKey(Qt.Key_"+ key + ", Qt." + mod + "Modifier); }";
}
function createStringActionString(string, text) {
var textString = text ? "text: \"" + text + "\";" : "";
return "Action { " + textString + " onTriggered: simulateCommand(\"" + string + "\"); }";
}
function createEntryString(text, actionString, otherActionsString) {
var objectString = "
import QtQuick 2.4
import Lomiri.Components 1.3
KeyModel {
text: \"" + text + "\"
mainAction: " + actionString + "\n
actions:" + otherActionsString +
"}"
return objectString;
}
function createKeyText(key, mod, text, id) {
if (id) {
return translator.getTranslatedNameById(translator.key, id);
} else if (text) {
return text;
} else if (key) {
return ((mod && modifiers.indexOf(mod) !== -1) ? translator.getTranslatedNameById(translator.modifier, mod) + "+" : "") + key;
} else
return "";
}
function loadProfile(profileObject) {
dropProfile();
var maxWidth = 0;
// This function might raise exceptions which are handled in KeyboardBar.qml
var profile = profileObject;
name = "";
short_name = "";
if (profile.id) {
name = translator.getTranslatedNameById(translator.name, profile.id);
short_name = translator.getTranslatedNameById(translator.shortName, profile.id);
}
if (name === "")
name = profile.name;
if (short_name === "")
short_name = profile.short_name;
var layoutModel = []
for (var i = 0; i < profile.buttons.length; i++) {
var button = profile.buttons[i];
var keyText = createKeyText(button.main_action.key, button.main_action.mod, button.main_action.text, button.main_action.id);
var mainActionString = createActionString(button.main_action);
var otherActionsString = button.other_actions
? createOtherActionsString(button.other_actions)
: "[]";
var entryString = createEntryString(keyText, mainActionString, otherActionsString);
layoutModel.push(Qt.createQmlObject(entryString, keyboardRow));
hiddenLabel.text = keyText;
maxWidth = Math.max(hiddenLabel.width, maxWidth);
}
keyWidth = maxWidth + units.gu(3);
model = layoutModel;
}
Component.onDestruction: dropProfile();
}
lomiri-terminal-app-v2.0.2/app/qml/KeyboardRows/KeyboardRow.qml 0000664 0000000 0000000 00000006632 14512741156 0024527 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2014 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Author: Filippo Scognamiglio
*/
import QtQuick 2.4
import Lomiri.Components 1.3
Rectangle {
id: container
property string name
property string short_name
property var model: []
property real keyWidth: units.gu(5)
property real keyHeight: units.gu(5)
// External signals.
signal simulateKey(int key, int mod);
signal simulateCommand(string command);
// Internal variables
property int _firstVisibleIndex: gridView.contentX / keyWidth
property int _lastVisibleIndex: _firstVisibleIndex + gridView.width / keyWidth
property int _avgIndex: (_lastVisibleIndex + _firstVisibleIndex) / 2
color: "black"
property color textColor
GridView {
id: gridView
model: parent.model
anchors.fill: parent
cellWidth: keyWidth
cellHeight: keyHeight
delegate: keyDelegate
flow: GridView.TopToBottom
snapMode: GridView.SnapToRow
}
Rectangle {
id: scrollBar
anchors.bottom: parent.bottom
height: units.dp(2)
// FIXME
color: LomiriColors.orange;
width: gridView.visibleArea.widthRatio * gridView.width
x: gridView.visibleArea.xPosition * gridView.width
visible: gridView.visibleArea.widthRatio != 1.0
}
Component {
id: keyDelegate
Item {
id: delegateContainer
property int modelIndex: index
property string modelText: container.model[index].text
property var modelActions: container.model[index].actions
property Action modelMainAction: container.model[index].mainAction
width: keyWidth
height: keyHeight
Loader {
anchors.fill: parent
sourceComponent: (delegateContainer.modelActions.length > 0) ? expandable : nonExpandable
}
Component {
id: nonExpandable
KeyboardButton {
anchors.fill: parent
text: delegateContainer.modelText
mainAction: delegateContainer.modelMainAction
textColor: container.textColor
}
}
Component {
id: expandable
ExpandableKeyboardButton {
anchors.fill: parent
text: delegateContainer.modelText
mainAction: delegateContainer.modelMainAction
actions: delegateContainer.modelActions
expandable: !gridView.movingHorizontally
expandRight: delegateContainer.modelIndex <= container._avgIndex
backgroundColor: container.color
textColor: container.textColor
}
}
}
}
}
lomiri-terminal-app-v2.0.2/app/qml/KeyboardRows/Layouts/ 0000775 0000000 0000000 00000000000 14512741156 0023215 5 ustar 00root root 0000000 0000000 lomiri-terminal-app-v2.0.2/app/qml/KeyboardRows/Layouts/ControlKeys.json 0000664 0000000 0000000 00000001755 14512741156 0026374 0 ustar 00root root 0000000 0000000 {
"id" : "ctrl_keys",
"buttons": [
{
"main_action" : {
"type": "key",
"key" : "R",
"mod" : "Control"
}
},
{
"main_action" : {
"type": "key",
"key" : "C",
"mod" : "Control"
}
},
{
"main_action" : {
"type": "key",
"key" : "A",
"mod" : "Control"
}
},
{
"main_action" : {
"type": "key",
"key" : "Z",
"mod" : "Control"
}
},
{
"main_action" : {
"type": "key",
"key" : "L",
"mod" : "Control"
}
},
{
"main_action" : {
"type": "key",
"key" : "D",
"mod" : "Control"
}
}
]
}
lomiri-terminal-app-v2.0.2/app/qml/KeyboardRows/Layouts/FunctionKeys.json 0000664 0000000 0000000 00000003263 14512741156 0026535 0 ustar 00root root 0000000 0000000 {
"id" : "fn_keys",
"buttons": [
{
"main_action" : {
"type": "key",
"id" : "esc_key",
"key" : "Escape"
}
},
{
"main_action" : {
"type": "key",
"key" : "F1"
}
},
{
"main_action" : {
"type": "key",
"key" : "F2"
}
},
{
"main_action" : {
"type": "key",
"key" : "F3"
}
},
{
"main_action" : {
"type": "key",
"key" : "F4"
}
},
{
"main_action" : {
"type": "key",
"key" : "F5"
}
},
{
"main_action" : {
"type": "key",
"key" : "F6"
}
},
{
"main_action" : {
"type": "key",
"key" : "F7"
}
},
{
"main_action" : {
"type": "key",
"key" : "F8"
}
},
{
"main_action" : {
"type": "key",
"key" : "F9"
}
},
{
"main_action" : {
"type": "key",
"key" : "F10"
}
},
{
"main_action" : {
"type": "key",
"key" : "F11"
}
},
{
"main_action" : {
"type": "key",
"key" : "F12"
}
}
]
}
lomiri-terminal-app-v2.0.2/app/qml/KeyboardRows/Layouts/Nano.json 0000664 0000000 0000000 00000003704 14512741156 0025007 0 ustar 00root root 0000000 0000000 {
"name" : "GNU nano",
"short_name" : "Nano",
"buttons": [
{
"main_action" : {
"type": "key",
"key" : "G",
"mod" : "Control"
}
},
{
"main_action" : {
"type": "key",
"key" : "O",
"mod" : "Control"
}
},
{
"main_action" : {
"type": "key",
"key" : "R",
"mod" : "Control"
}
},
{
"main_action" : {
"type": "key",
"key" : "Y",
"mod" : "Control"
}
},
{
"main_action" : {
"type": "key",
"key" : "K",
"mod" : "Control"
}
},
{
"main_action" : {
"type": "key",
"key" : "C",
"mod" : "Control"
}
},
{
"main_action" : {
"type": "key",
"key" : "X",
"mod" : "Control"
}
},
{
"main_action" : {
"type": "key",
"key" : "J",
"mod" : "Control"
}
},
{
"main_action" : {
"type": "key",
"key" : "W",
"mod" : "Control"
}
},
{
"main_action" : {
"type": "key",
"key" : "V",
"mod" : "Control"
}
},
{
"main_action" : {
"type": "key",
"key" : "U",
"mod" : "Control"
}
},
{
"main_action" : {
"type": "key",
"key" : "T",
"mod" : "Control"
}
}
]
}
lomiri-terminal-app-v2.0.2/app/qml/KeyboardRows/Layouts/ScrollKeys.json 0000664 0000000 0000000 00000003461 14512741156 0026206 0 ustar 00root root 0000000 0000000 {
"id" : "scroll_keys",
"buttons": [
{
"main_action" : {
"type": "key",
"id" : "pg_up_key",
"key" : "PageUp"
}
},
{
"main_action" : {
"type": "key",
"id" : "pg_dn_key",
"key" : "PageDown"
}
},
{
"main_action" : {
"type": "key",
"id" : "del_key",
"key" : "Delete"
}
},
{
"main_action" : {
"type": "key",
"id" : "home_key",
"key" : "Home"
}
},
{
"main_action" : {
"type": "key",
"id" : "end_key",
"key" : "End"
}
},
{
"main_action" : {
"type": "key",
"id" : "tab_key",
"key" : "Tab"
}
},
{
"main_action" : {
"type": "key",
"id" : "enter_key",
"key" : "Enter"
}
},
{
"main_action" : {
"type": "key",
"text" : "\u2191",
"key" : "Up"
}
},
{
"main_action" : {
"type": "key",
"text" : "\u2193",
"key" : "Down"
}
},
{
"main_action" : {
"type": "key",
"text" : "\u2190",
"key" : "Left"
}
},
{
"main_action" : {
"type": "key",
"text" : "\u2192",
"key" : "Right"
}
}
]
}
lomiri-terminal-app-v2.0.2/app/qml/KeyboardRows/Layouts/SimpleCommands.json 0000664 0000000 0000000 00000004154 14512741156 0027027 0 ustar 00root root 0000000 0000000 {
"id" : "simple_cmds",
"buttons": [
{
"main_action" : {
"type": "string",
"text" : "top",
"string" : "top\n"
}
},
{
"main_action" : {
"type": "string",
"text" : "clear",
"string" : "clear\n"
}
},
{
"main_action" : {
"type": "string",
"text" : "ls",
"string" : "ls\n"
},
"other_actions" : [
{
"type" : "string",
"text" : "-l",
"string" : "ls -l\n"
},
{
"type": "string",
"text": "-a",
"string": "ls -a\n"
}
]
},
{
"main_action" : {
"type": "string",
"text" : "rm",
"string" : "rm "
},
"other_actions" : [
{
"type" : "string",
"text" : "-r",
"string" : "rm -r "
}
]
},
{
"main_action" : {
"type": "string",
"text" : "find",
"string" : "find "
},
"other_actions" : [
{
"type" : "string",
"text" : "-name",
"string" : "find -name "
}
]
},
{
"main_action" : {
"type": "string",
"text" : "chmod",
"string" : "chmod "
},
"other_actions" : [
{
"type" : "string",
"text" : "555",
"string" : "chmod 555 "
},
{
"type": "string",
"text": "777",
"string": "chmod 777 "
}
]
}
]
}
lomiri-terminal-app-v2.0.2/app/qml/KeyboardRows/jsonParser.js 0000664 0000000 0000000 00000006132 14512741156 0024243 0 ustar 00root root 0000000 0000000 .pragma library
// This small library prints semantic errors of bad profiles.
function isAllowed(value, allowed) {
return allowed.indexOf(value) !== -1;
}
function raiseException(msg, obj) {
throw msg + "\n" + JSON.stringify(obj, null, 2);
}
function validateKeyAction(keyObject) {
if (!keyObject.key)
return raiseException("key is missing");
if (keyObject.mod && !isAllowed(keyObject.mod, ["Control", "Shift", "Alt"]))
return raiseException("mod is invalid in", keyObject);
}
function validateStringAction(stringObject) {
if (!stringObject.string)
raiseException("string is missing in", stringObject);
}
function validateAction(actionObject) {
if (!actionObject.type)
raiseException("type is missing in", actionObject);
if (!isAllowed(actionObject.type, ["key", "string"]))
raiseException("type must be either key or string in", actionObject);
if (!(actionObject.type === "key" ? actionObject.key : actionObject.string))
raiseException(actionObject.type + " is missing in", actionObject);
if (actionObject.id && actionObject.text)
raiseException("Should not define id and text together in", actionObject);
if (!actionObject.id && !actionObject.text && !(actionObject.type === "key" && actionObject.key)) // We can also build the text from the key
raiseException("text or id is missing in", actionObject);
// No need to check for "if (!actionObject.id && !actionObject.text)" as we will
// build the displayed text from the keys in that case
switch (actionObject.type) {
case "key":
validateKeyAction(actionObject);
break;
case "string":
validateStringAction(actionObject);
break;
}
}
function validateButton(buttonObject) {
if (!buttonObject.main_action)
raiseException("main_action is missing", buttonObject);
validateAction(buttonObject.main_action);
var other_actions = buttonObject.other_actions;
if (other_actions) {
if (!Array.isArray(other_actions))
raiseException("other_actions is not an array", other_actions);
for (var i = 0; i < other_actions.length; i++) {
validateAction(other_actions[i]);
}
}
}
function validateLayout(layoutObject) {
if (!layoutObject.id) {
if (!layoutObject.name)
raiseException("name or id is missing in", layoutObject);
if (!layoutObject.short_name)
raiseException("short_name or id is missing in", layoutObject);
} else {
if (layoutObject.name)
raiseException("Should not define id and name together in", layoutObject);
if (layoutObject.short_name)
raiseException("Should not define id and short_name together in", layoutObject);
}
if (!layoutObject.buttons)
raiseException("buttons is missing in", layoutObject);
for (var i = 0; i < layoutObject.buttons.length; i++) {
validateButton(layoutObject.buttons[i]);
}
}
function parseJson(jsonString) {
var jsonObject = JSON.parse(jsonString);
validateLayout(jsonObject);
return jsonObject;
}
lomiri-terminal-app-v2.0.2/app/qml/NotifyDialog.qml 0000664 0000000 0000000 00000001607 14512741156 0022251 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2013 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored by: Arto Jalkanen
*/
import QtQuick 2.4
import Lomiri.Components 1.3
import Lomiri.Components.Popups 1.3
Dialog {
id: root
Button {
text: i18n.tr("OK")
onClicked: {
PopupUtils.close(root)
}
}
}
lomiri-terminal-app-v2.0.2/app/qml/PressFeedback.qml 0000664 0000000 0000000 00000001544 14512741156 0022362 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2014 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored-by: Filippo Scognamiglio
*/
import QtQuick 2.4
import QtFeedback 5.0
HapticsEffect {
attackIntensity: 0.0
attackTime: 50
intensity: 1.0
duration: 10
fadeTime: 50
fadeIntensity: 0.0
}
lomiri-terminal-app-v2.0.2/app/qml/Settings/ 0000775 0000000 0000000 00000000000 14512741156 0020742 5 ustar 00root root 0000000 0000000 lomiri-terminal-app-v2.0.2/app/qml/Settings/BackgroundOpacityEditor.qml 0000664 0000000 0000000 00000003563 14512741156 0026243 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2017 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored by: Florian Boucault
*/
import QtQuick 2.4
import Lomiri.Components 1.3
import QMLTermWidget 1.0
ColorSchemeEditor {
id: backgroundOpacityEditor
width: units.gu(31)
title: i18n.tr("Background opacity:")
property bool colorSchemeChanging: false
property bool switchingToCustomizedScheme: false
onColorSchemeChanged: {
if (switchingToCustomizedScheme) return;
colorSchemeChanging = true;
slider.value = colorScheme.opacity() * slider.maximumValue;
colorSchemeChanging = false;
}
Slider {
id: slider
anchors {
left: parent.left
right: parent.right
}
minimumValue: 0
maximumValue: 100
live: true
onValueChanged: {
if (colorSchemeChanging) return;
switchingToCustomizedScheme = true;
backgroundOpacityEditor.switchToCustomizedScheme();
switchingToCustomizedScheme = false;
backgroundOpacityEditor.colorScheme.setOpacity(value / maximumValue);
backgroundOpacityEditor.saveCustomizedScheme();
}
function formatValue(v) {
return "%1 %".arg(v.toFixed(1));
}
}
}
lomiri-terminal-app-v2.0.2/app/qml/Settings/ColorComponentSlider.qml 0000664 0000000 0000000 00000005067 14512741156 0025571 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2016 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored-by: Florian Boucault
*/
import QtQuick 2.4
import QtQuick.Layouts 1.3
import Lomiri.Components 1.3
MouseArea {
id: colorComponentSlider
property string label
property alias value: slider.value
property int minimumValue: 0
property int maximumValue: 255
function setValue(newValue) {
value = Math.min(maximumValue, Math.max(newValue, minimumValue));
}
height: row.height
onWheel: {
if (wheel.angleDelta.y >= 0) {
setValue(value+1);
} else {
setValue(value-1);
}
}
RowLayout {
id: row
spacing: units.gu(2)
anchors {
left: parent.left
right: parent.right
}
Label {
text: colorComponentSlider.label
textSize: Label.Large
}
Slider {
id: slider
Layout.fillWidth: true
minimumValue: colorComponentSlider.minimumValue
maximumValue: colorComponentSlider.maximumValue
stepSize: 1
live: true
function formatValue(v) {
return "";
}
}
TextFieldStyled {
id: textField
implicitWidth: units.gu(6)
hasClearButton: false
horizontalAlignment: TextInput.AlignHCenter
validator: IntValidator {
bottom: colorComponentSlider.minimumValue
top: colorComponentSlider.maximumValue
}
inputMethodHints: Qt.ImhDigitsOnly
Keys.onUpPressed: setValue(value+1)
Keys.onDownPressed: setValue(value-1)
}
DoubleBinding {
source: slider
target: textField
sourceProperty: "value"
targetProperty: "text"
function sourceToTarget(sourceValue) {
return Math.round(sourceValue);
}
}
}
}
lomiri-terminal-app-v2.0.2/app/qml/Settings/ColorPickerPopup.qml 0000664 0000000 0000000 00000006133 14512741156 0024720 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2016 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored-by: Florian Boucault
*/
import QtQuick 2.4
import Lomiri.Components 1.3
import Lomiri.Components.Popups 1.3
Popover {
id: colorPickerPopup
contentWidth: units.gu(38)
grabDismissAreaEvents: false
property color originalColor
property var setColor
property color currentColor: Qt.rgba(redComponent.value / 255,
greenComponent.value / 255,
blueComponent.value / 255,
1.0)
onCurrentColorChanged: setColor(currentColor)
property bool square: true
function setCurrentColor(color) {
redComponent.value = color.r * 255;
greenComponent.value = color.g * 255;
blueComponent.value = color.b * 255;
}
Component.onCompleted: setCurrentColor(originalColor)
Rectangle {
anchors {
left: parent.left
right: parent.right
}
height: childrenRect.height + 2*units.gu(2)
// This adds a contour to the Popover
function newColorWithAlpha(color, alpha) {
return Qt.rgba(color.r, color.g, color.b, alpha);
}
color: "transparent"
radius: units.dp(5)
border.color: newColorWithAlpha(theme.palette.normal.base, 0.2)
border.width: units.dp(1)
Column {
anchors {
top: parent.top
left: parent.left
right: parent.right
margins: units.gu(2)
}
spacing: units.gu(1)
ColorComponentSlider {
id: redComponent
anchors {
left: parent.left
right: parent.right
}
label: i18n.tr("R:")
}
ColorComponentSlider {
id: greenComponent
anchors {
left: parent.left
right: parent.right
}
label: i18n.tr("G:")
}
ColorComponentSlider {
id: blueComponent
anchors {
left: parent.left
right: parent.right
}
label: i18n.tr("B:")
}
Button {
text: i18n.tr("Undo")
color: theme.palette.selected.overlay
onClicked: setCurrentColor(originalColor)
}
}
}
}
lomiri-terminal-app-v2.0.2/app/qml/Settings/ColorRow.qml 0000664 0000000 0000000 00000004056 14512741156 0023230 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2016 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored by: Florian Boucault
*/
import QtQuick 2.4
import Lomiri.Components 1.3
import Lomiri.Components.Popups 1.3
import QMLTermWidget 1.0
ColorSchemeEditor {
id: colorRow
property int start
property int count
spacing: units.gu(1)
Row {
id: colors
spacing: units.gu(1)
Repeater {
model: colorRow.count
Rectangle {
radius: units.dp(3)
width: units.gu(3)
height: width
border.color: theme.palette.normal.base
border.width: units.dp(1)
color: colorScheme.getColor(start+index)
function setColor(color) {
colorScheme.setColor(start+index, color);
}
MouseArea {
anchors.fill: parent
onClicked: {
var colorPicker = PopupUtils.open(Qt.resolvedUrl("ColorPickerPopup.qml"),
parent,
{"originalColor": colorScheme.getColor(start+index),
"setColor": setColor});
colorPicker.Component.onDestruction.connect(colorRow.saveCustomizedScheme);
colorRow.switchToCustomizedScheme();
}
}
}
}
}
}
lomiri-terminal-app-v2.0.2/app/qml/Settings/ColorSchemeEditor.qml 0000664 0000000 0000000 00000003024 14512741156 0025026 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2016-2017 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored by: Florian Boucault
*/
import QtQuick 2.4
import Lomiri.Components 1.3
import QMLTermWidget 1.0
Column {
id: colorSchemeEditor
property string title
property var colorScheme
function saveCustomizedScheme() {
colorScheme.write(terminalAppRoot.customizedSchemeFile)
}
function switchToCustomizedScheme() {
if (settings.colorScheme != terminalAppRoot.customizedSchemeName) {
colorScheme.write(terminalAppRoot.customizedSchemeFile);
ColorSchemeManager.loadCustomColorScheme(terminalAppRoot.customizedSchemeFile);
settings.colorScheme = terminalAppRoot.customizedSchemeName;
}
}
width: childrenRect.width
Label {
anchors {
left: parent.left
right: parent.right
}
elide: Text.ElideRight
text: colorSchemeEditor.title
}
}
lomiri-terminal-app-v2.0.2/app/qml/Settings/ComboBox.qml 0000664 0000000 0000000 00000011376 14512741156 0023175 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2016 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored-by: Florian Boucault
*/
import QtQuick 2.4
import Lomiri.Components 1.3
import Lomiri.Components.Popups 1.3
MouseArea {
id: comboBox
property var model
property int currentIndex: 0
property var bindingTarget
property string bindingProperty
readonly property var currentItem: model.get ? model.get(currentIndex)
: model[currentIndex]
readonly property string currentText: textRole ? currentItem[textRole] : currentItem
property string textRole
property string valueRole
implicitWidth: units.gu(21)
implicitHeight: units.gu(4)
DoubleBinding {
source: bindingTarget
sourceProperty: bindingProperty
target: comboBox
targetProperty: "currentIndex"
function listModelIndexOf(listModel, value, role) {
for (var i = 0; i < listModel.count; i++) {
if (listModel.get(i)[role] === value) {
return i;
}
}
return -1;
}
function jsListIndexOf(listModel, value, role) {
if (role == "") {
return listModel.indexOf(value);
}
for (var i = 0; i < listModel.length; i++) {
if (listModel[i][role] === value) {
return i;
}
}
return -1;
}
function sourceToTarget(sourceValue) {
return comboBox.model.get ? listModelIndexOf(comboBox.model, sourceValue, comboBox.valueRole)
: jsListIndexOf(comboBox.model, sourceValue, comboBox.valueRole);
}
function targetToSource(currentIndex) {
return comboBox.valueRole ? comboBox.currentItem[comboBox.valueRole] : comboBox.currentItem;
}
}
Rectangle {
anchors.fill: parent
color: theme.palette.normal.field
border.color: theme.palette.normal.base
border.width: units.dp(1)
radius: units.dp(3)
Icon {
anchors {
right: parent.right
rightMargin: units.gu(2)
verticalCenter: parent.verticalCenter
verticalCenterOffset: -units.gu(0.5)
}
width: units.gu(1)
height: units.gu(1)
asynchronous: true
name: "up"
}
Icon {
anchors {
right: parent.right
rightMargin: units.gu(2)
verticalCenter: parent.verticalCenter
verticalCenterOffset: units.gu(0.5)
}
width: units.gu(1)
height: units.gu(1)
asynchronous: true
name: "down"
}
}
Label {
id: currentLabel
anchors {
fill: parent
leftMargin: units.gu(2)
rightMargin: units.gu(5)
}
text: comboBox.currentText
elide: Text.ElideRight
verticalAlignment: Text.AlignVCenter
color: theme.palette.normal.overlayText
}
Binding {
target: currentLabel
property: "font.family"
value: comboBox.fontFamilyFromModel ? comboBox.fontFamilyFromModel(comboBox.currentText) : undefined
when: typeof comboBox.fontFamilyFromModel !== "undefined"
}
onWheel: {
var count = comboBox.model.length ? comboBox.model.length :
comboBox.model.count ? comboBox.model.count : Infinity
if (wheel.angleDelta.y > 0 && comboBox.currentIndex > 0) {
comboBox.currentIndex--;
} else if (wheel.angleDelta.y < 0 && comboBox.currentIndex < count - 1) {
comboBox.currentIndex++;
}
}
preventStealing: true
onPressed: {
var properties = {
"model": comboBox.model,
"itemHeight": comboBox.height,
"itemMargins": currentLabel.anchors.leftMargin,
"contentWidth": comboBox.width,
"comboBox": comboBox,
"textRole": comboBox.textRole
}
PopupUtils.open(Qt.resolvedUrl("ComboBoxPopup.qml"), comboBox, properties);
}
}
lomiri-terminal-app-v2.0.2/app/qml/Settings/ComboBoxPopup.qml 0000664 0000000 0000000 00000007357 14512741156 0024225 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2016 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored-by: Florian Boucault
*/
import QtQuick 2.4
import Lomiri.Components 1.3
import Lomiri.Components.Popups 1.3
Popover {
id: comboBoxPopup
implicitHeight: 5.5 * itemHeight
contentHeight: Math.min(implicitHeight, listView.count * itemHeight)
callerMargin: -units.gu(1)
property var model
property real itemHeight
property real itemMargins
property string textRole
property ComboBox comboBox
property bool square: true
property real selectedItemY: currentIndex * itemHeight
ScrollView {
width: comboBoxPopup.contentWidth
height: comboBoxPopup.contentHeight
ListView {
id: listView
width: comboBoxPopup.contentWidth
height: comboBoxPopup.contentHeight
model: comboBoxPopup.model
clip: true
currentIndex: comboBoxPopup.comboBox.currentIndex
delegate: MouseArea {
id: mouseArea
anchors {
left: parent.left
right: parent.right
}
height: comboBoxPopup.itemHeight
onClicked: {
comboBoxPopup.comboBox.currentIndex = index;
PopupUtils.close(comboBoxPopup);
}
hoverEnabled: true
Rectangle {
visible: mouseArea.containsMouse
anchors.fill: parent
color: theme.palette.selected.overlay
border.width: units.dp(1)
border.color: Qt.darker(color, 1.02)
antialiasing: true
}
Rectangle {
visible: index == currentIndex
x: comboBoxPopup.itemMargins / 2 - width / 2
anchors.verticalCenter: parent.verticalCenter
width: units.gu(0.5)
height: width
color: theme.palette.selected.overlayText
antialiasing: true
radius: width/2
}
Label {
id: label
anchors {
fill: parent
leftMargin: comboBoxPopup.itemMargins
rightMargin: comboBoxPopup.itemMargins
}
text: textRole != "" ? (model[textRole] ? model[textRole] : modelData[textRole]) : modelData
elide: Text.ElideRight
verticalAlignment: Text.AlignVCenter
color: index == currentIndex ?
theme.palette.selected.overlayText
: theme.palette.normal.overlayText
Binding {
target: label
property: "font.family"
value: comboBox.fontFamilyFromModel ? comboBox.fontFamilyFromModel(label.text) : undefined
when: typeof comboBox.fontFamilyFromModel !== "undefined"
}
}
}
}
}
}
lomiri-terminal-app-v2.0.2/app/qml/Settings/ComboBoxQQ1.qml 0000664 0000000 0000000 00000010361 14512741156 0023511 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2016 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored-by: Florian Boucault
*/
import QtQuick 2.4
import Lomiri.Components 1.3
import QtQuick.Controls 1.4 as QtQuickControls
import QtQuick.Controls.Styles 1.4
QtQuickControls.ComboBox {
id: comboBox
style: ComboBoxStyle {
id: comboBoxStyle
padding {
top: 0
left: units.gu(2)
right: units.gu(5)
bottom: 0
}
background: Rectangle {
implicitWidth: units.gu(27)
implicitHeight: units.gu(4)
color: theme.palette.normal.field
border.color: theme.palette.normal.base
border.width: units.dp(1)
radius: units.dp(3)
Icon {
anchors {
right: parent.right
rightMargin: units.gu(2)
verticalCenter: parent.verticalCenter
verticalCenterOffset: -units.gu(0.5)
}
width: units.gu(1)
height: units.gu(1)
asynchronous: true
name: "up"
}
Icon {
anchors {
right: parent.right
rightMargin: units.gu(2)
verticalCenter: parent.verticalCenter
verticalCenterOffset: units.gu(0.5)
}
width: units.gu(1)
height: units.gu(1)
asynchronous: true
name: "down"
}
}
label: Label {
text: control.currentText
elide: Text.ElideRight
verticalAlignment: Text.AlignVCenter
color: comboBoxStyle.textColor
}
selectionColor: theme.palette.selected.overlay
textColor: theme.palette.normal.overlayText
selectedTextColor: theme.palette.selected.overlayText
__dropDownStyle: MenuStyle {
id: menuStyle
font: comboBoxStyle.font
__labelColor: comboBoxStyle.textColor
__selectedLabelColor: comboBoxStyle.selectedTextColor
__maxPopupHeight: units.gu(30)
__backgroundColor: theme.palette.normal.overlay
__selectedBackgroundColor: comboBoxStyle.selectionColor
frame: Rectangle {
color: menuStyle.__backgroundColor
}
__leftLabelMargin: units.gu(2)
__rightLabelMargin: units.gu(2)
itemDelegate.label: Label {
width: units.gu(27) - menuStyle.__leftLabelMargin - menuStyle.__rightLabelMargin
height: units.gu(4)
text: formatMnemonic(styleData.text, styleData.underlineMnemonic)
elide: Text.ElideRight
verticalAlignment: Text.AlignVCenter
color: __currentTextColor
}
itemDelegate.checkmarkIndicator: Rectangle {
visible: styleData.checked
x: menuStyle.__leftLabelMargin / 2 - width / 2 + (__mirrored ? 4 : -4)
width: units.gu(0.5)
height: width
color: __labelColor
antialiasing: true
radius: width/2
}
itemDelegate.background: Rectangle {
visible: styleData.selected && styleData.enabled
color: __selectedBackgroundColor
border.width: units.dp(1)
border.color: Qt.darker(__selectedBackgroundColor, 1.02)
antialiasing: true
}
__scrollerStyle: ScrollViewStyle {
transientScrollBars: true
}
}
}
}
lomiri-terminal-app-v2.0.2/app/qml/Settings/DoubleBinding.qml 0000664 0000000 0000000 00000003730 14512741156 0024165 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2016 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored by: Florian Boucault
*/
import QtQuick 2.4
QtObject {
id: doubleBinding
property var source
property string sourceProperty
property var target
property string targetProperty
function sourceToTarget(sourceValue) {
return sourceValue;
}
function targetToSource(targetValue) {
return targetValue;
}
Component.onCompleted: {
if (source && target && sourceProperty && targetProperty) {
updateTarget();
connectSourceChanges();
}
}
function connectTargetChanges() {
target[targetProperty+"Changed"].connect(updateSource);
}
function disconnectTargetChanges() {
target[targetProperty+"Changed"].disconnect(updateSource);
}
function connectSourceChanges() {
source[sourceProperty+"Changed"].connect(updateTarget);
}
function disconnectSourceChanges() {
source[sourceProperty+"Changed"].disconnect(updateTarget);
}
function updateTarget() {
disconnectTargetChanges();
target[targetProperty] = sourceToTarget(source[sourceProperty]);
connectTargetChanges();
}
function updateSource() {
disconnectSourceChanges();
source[sourceProperty] = targetToSource(target[targetProperty]);
connectSourceChanges();
}
}
lomiri-terminal-app-v2.0.2/app/qml/Settings/SettingsCard.qml 0000664 0000000 0000000 00000003540 14512741156 0024051 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2016 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored by: Florian Boucault
*/
import QtQuick 2.4
import Lomiri.Components 1.3
Rectangle {
id: settingsCard
property string title
property real margins: units.gu(2)
default property alias contentItem: content.children
width: parent.width
height: content.height
+ content.anchors.topMargin + content.anchors.bottomMargin
color: theme.palette.normal.overlay
Label {
id: titleLabel
anchors {
top: parent.top
left: parent.left
right: parent.right
topMargin: settingsCard.margins
leftMargin: settingsCard.margins
rightMargin: settingsCard.margins
}
text: settingsCard.title
textSize: Label.Large
elide: Text.ElideRight
}
Item {
id: content
anchors {
top: parent.top
left: parent.left
right: parent.right
leftMargin: settingsCard.margins
rightMargin: settingsCard.margins
topMargin: settingsCard.margins + titleLabel.height + units.gu(1)
bottomMargin: settingsCard.margins
}
height: childrenRect.height
}
}
lomiri-terminal-app-v2.0.2/app/qml/Settings/SettingsInterfaceSection.qml 0000664 0000000 0000000 00000021561 14512741156 0026430 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2016 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored by: Florian Boucault
*/
import QtQuick 2.4
import QtQuick.Layouts 1.3
import Lomiri.Components 1.3
import Terminal 0.1
import QMLTermWidget 1.0
SettingsSection {
id: section
windowColor: theme.palette.selected.overlay
flickableItem: scrollView.flickableItem
ScrollView {
id: scrollView
anchors.fill: parent
Item {
// not a child of ScrollView, but it's reparented to
// ScrollView.viewport. For that reason we can not use 'anchors'
// but we have to set the width instead.
width: section.width
height: childrenRect.height + 2 * section.margins
Column {
anchors {
right: parent.right
left: parent.left
top: parent.top
margins: section.margins
}
spacing: units.gu(1)
SettingsCard {
id: textCard
title: i18n.tr("Text")
Row {
spacing: units.gu(2)
Item {
width: childrenRect.width
height: childrenRect.height
Label {
id: fontStyleLabel
text: i18n.tr("Font:")
}
ComboBox {
id: fontStyleCombo
anchors {
top: fontStyleLabel.bottom
topMargin: units.gu(1)
}
function fontFamilyFromModel(model) {
return model;
}
model: Fonts.monospaceFamilies
bindingTarget: settings
bindingProperty: "fontStyle"
}
}
Item {
width: childrenRect.width
height: childrenRect.height
Label {
id: fontSizeLabel
text: i18n.tr("Font Size:")
}
ComboBox {
id: fontSizeCombo
anchors {
top: fontSizeLabel.bottom
topMargin: units.gu(1)
}
width: units.gu(9)
function arrayOfNumbers(min, max) {
var list = [];
for (var i = min; i <= max; i++) {
list.push(i);
}
return list;
}
model: arrayOfNumbers(settings.minFontSize, settings.maxFontSize)
bindingTarget: settings
bindingProperty: "fontSize"
}
}
}
}
SettingsCard {
id: colorsCard
title: i18n.tr("Colors")
// TODO This is a workaround at the moment.
// The application should get them from the c++.
property var model: [
{"name": i18n.tr("Ubuntu"), "value": "Ubuntu"},
{"name": i18n.tr("Green on black"), "value": "GreenOnBlack"},
{"name": i18n.tr("White on black"), "value": "WhiteOnBlack"},
{"name": i18n.tr("Black on white"), "value": "BlackOnWhite"},
{"name": i18n.tr("Black on random light"), "value": "BlackOnRandomLight"},
{"name": i18n.tr("Linux"), "value": "Linux"},
{"name": i18n.tr("Cool retro term"), "value": "cool-retro-term"},
{"name": i18n.tr("Dark pastels"), "value": "DarkPastels"},
{"name": i18n.tr("Black on light yellow"), "value": "BlackOnLightYellow"},
{"name": i18n.tr("Customized"), "value": terminalAppRoot.customizedSchemeName},
]
property var currentScheme: ColorSchemeManager.findColorScheme(settings.colorScheme)
Column {
spacing: units.gu(2)
Row {
ColorRow {
width: units.gu(16)
title: i18n.tr("Background:")
colorScheme: colorsCard.currentScheme
start: 1
count: 1
}
ColorRow {
width: units.gu(16)
title: i18n.tr("Text:")
colorScheme: colorsCard.currentScheme
start: 0
count: 1
}
}
BackgroundOpacityEditor {
colorScheme: colorsCard.currentScheme
}
ColorRow {
title: i18n.tr("Normal palette:")
colorScheme: colorsCard.currentScheme
start: 2
count: 8
}
ColorRow {
title: i18n.tr("Bright palette:")
colorScheme: colorsCard.currentScheme
start: 12
count: 8
}
Column {
spacing: units.gu(1)
Label {
text: i18n.tr("Preset:")
}
ComboBox {
model: colorsCard.model
bindingTarget: settings
bindingProperty: "colorScheme"
textRole: "name"
valueRole: "value"
}
}
}
}
SettingsCard {
id: layoutsCard
visible: !QuickUtils.keyboardAttached
title: i18n.tr("Layouts")
Column {
width: Math.min(parent.width, units.gu(32))
Repeater {
model: settings.profilesList
delegate: RowLayout {
anchors {
left: parent.left
right: parent.right
}
height: units.gu(5)
Label {
text: name
Layout.fillWidth: true
}
Switch {
checked: profileVisible
property bool completed: false
onCheckedChanged: {
settings.profilesList.setProperty(index, "profileVisible", checked);
if (completed) settings.profilesChanged();
}
Component.onCompleted: completed = true
}
}
}
}
}
}
}
}
}
lomiri-terminal-app-v2.0.2/app/qml/Settings/SettingsPage.qml 0000664 0000000 0000000 00000004477 14512741156 0024066 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2016 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored by: Florian Boucault
*/
import QtQuick 2.4
import Lomiri.Components 1.3
Page {
id: settingsPage
objectName: "settingsPage"
implicitWidth: units.gu(60)
implicitHeight: units.gu(80)
property color windowColor: currentSection.windowColor
header: PageHeader {
leadingActionBar.actions: [
Action {
text: i18n.tr("close")
iconName: "back"
onTriggered: settingsLoader.active = false
}
]
title: i18n.tr("Preferences")
flickable: currentSection && currentSection.flickableItem ?
currentSection.flickableItem : null
StyleHints {
backgroundColor: theme.palette.normal.overlay
}
property var selectedAction: sections.actions[sections.selectedIndex]
sections {
actions: [
Action {
text: i18n.tr("Interface")
property string source: Qt.resolvedUrl("SettingsInterfaceSection.qml")
},
Action {
text: i18n.tr("Shortcuts")
property string source: Qt.resolvedUrl("SettingsShortcutsSection.qml")
}
]
}
}
property SettingsSection currentSection: sectionLoader.item ? sectionLoader.item : null
Loader {
id: sectionLoader
anchors {
top: currentSection.flickableItem ? parent.top : settingsPage.header.bottom
bottom: parent.bottom
left: parent.left
right: parent.right
}
source: settingsPage.header.selectedAction.source
focus: true
}
}
lomiri-terminal-app-v2.0.2/app/qml/Settings/SettingsSection.qml 0000664 0000000 0000000 00000001632 14512741156 0024604 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2016 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored by: Florian Boucault
*/
import QtQuick 2.4
import Lomiri.Components 1.3
Item {
id: settingsSection
property real margins: units.gu(2)
property color windowColor: theme.palette.normal.overlay
property Flickable flickableItem: null
}
lomiri-terminal-app-v2.0.2/app/qml/Settings/SettingsShortcutsSection.qml 0000664 0000000 0000000 00000022230 14512741156 0026520 0 ustar 00root root 0000000 0000000 /*
* Copyright (C) 2016 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* 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, see .
*
* Authored by: Florian Boucault
*/
import QtQuick 2.4
import QtQuick.Layouts 1.3
import QtQml.Models 2.2
import Lomiri.Components 1.3
SettingsSection {
id: section
margins: units.gu(4)
ColumnLayout {
anchors {
right: parent.right
left: parent.left
top: parent.top
margins: section.margins
}
height: Math.min(parent.height - section.margins * 2, units.gu(60))
spacing: units.gu(2)
RowLayout {
height: searchField.height
anchors {
right: parent.right
left: parent.left
}
spacing: units.gu(2)
TextFieldStyled {
id: searchField
primaryItem: Icon {
height: parent.height / 2
width: height
name: "find"
asynchronous: true
color: theme.palette.normal.baseText
}
}
Label {
Layout.fillWidth: true
verticalAlignment: Text.AlignVCenter
text: i18n.tr("Showing %1 of %2").arg(shortcutsList.count)
.arg(allShortcutsModel.count)
elide: Text.ElideRight
color: theme.palette.normal.base
visible: searchField.text
}
}
ListView {
id: shortcutsList
Layout.fillHeight: true
anchors {
right: parent.right
left: parent.left
}
Rectangle {
anchors.fill: parent
radius: units.dp(3)
border.color: theme.palette.normal.base
border.width: units.dp(1)
color: "transparent"
}
clip: true
Scrollbar {
flickableItem: shortcutsList
align: Qt.AlignTrailing
}
focus: true
section {
property: "section"
delegate: Item {
width: parent.width
implicitHeight: units.gu(4)
Label {
anchors {
fill: parent
leftMargin: units.gu(2)
}
verticalAlignment: Text.AlignVCenter
text: i18n.tr(section)
elide: Text.ElideRight
}
Rectangle {
anchors {
left: parent.left
right: parent.right
bottom: parent.bottom
}
height: units.dp(1)
color: theme.palette.normal.base
}
}
}
model: DelegateModel {
filterOnGroup: filteringGroup.criteria ? "filtered" : ""
groups: [
DelegateModelGroup {
id: filteringGroup
includeByDefault: true
name: "filtered"
property string criteria: searchField.text
onCriteriaChanged: update()
function update() {
if (count != 0) {
remove(0, count);
}
for ( var i=0; i