Compare commits
147 Commits
cd61d10c61
...
concurrent
| Author | SHA1 | Date | |
|---|---|---|---|
| a29302e2e6 | |||
| a5e5c289db | |||
| a49aeda257 | |||
| 79db8ea408 | |||
| c359ba34a6 | |||
| 760c57a843 | |||
| 61316462fa | |||
| 4e3baadd70 | |||
| 8324776fb8 | |||
| 65f3cc0698 | |||
| b72ef08892 | |||
| 8363ad29ef | |||
| ab4f2a3d40 | |||
| 754d46a250 | |||
| ba5a30a7dd | |||
| 50efa51975 | |||
| 8bb52f59fe | |||
| 3acec2297b | |||
| d39488397c | |||
| 97a0bad71d | |||
| f02c38884b | |||
| a195ec4006 | |||
| d15b6ff855 | |||
| bd6e672568 | |||
| 2c9279248d | |||
| e67c1925b1 | |||
| 7741878f3e | |||
| 61e16d4f1b | |||
| 5bd869968e | |||
| 94f1b68b6f | |||
| 86439ae05c | |||
| a64e03b28d | |||
| 9d708342ca | |||
| 265251d47d | |||
| 8962d051ea | |||
| e513e2f16a | |||
| 8ab6a4716f | |||
| ab330967f3 | |||
| 46dd2eeaad | |||
| fdee11cbc0 | |||
| 4dbca6f145 | |||
| 57c19a2e8c | |||
| 14c8a359bd | |||
| e45464f480 | |||
| 892c2e48a3 | |||
| f0340c5d48 | |||
| db37f8b963 | |||
| a7f182a7cb | |||
| b8e4e7203f | |||
| 1010eaf6db | |||
| 007e3db9ef | |||
| dbff7cec26 | |||
| 3c94cce018 | |||
| ab356664e2 | |||
| 2945c07a31 | |||
| 0ffcedb5ef | |||
| 87f49853b2 | |||
| c269dd6b9e | |||
| cb739f61b0 | |||
| 54ad05ffef | |||
| 2857dee71c | |||
| 5abe72697d | |||
| e90f5d23c4 | |||
| c1fa375145 | |||
| 69b0ee9d1a | |||
| b6e86b6160 | |||
| 1384cf3c21 | |||
| 6a84167a58 | |||
| da32c7c723 | |||
| 0418638fc9 | |||
| 8dd574fef1 | |||
| 3137dc7c03 | |||
| a627ea557e | |||
| da939e30c7 | |||
| a8625e2333 | |||
| 8406767c76 | |||
| 7395146bfb | |||
| 09511b6afd | |||
| 2d509afe89 | |||
| fda0983d0b | |||
| 880bda410a | |||
| 3d64351da6 | |||
| 52b00ac0ab | |||
| e3000e5ebc | |||
| d9cb8da8ae | |||
| 7855536959 | |||
| 9bbe763184 | |||
| 68945371f5 | |||
| 5d1706834b | |||
| e3ab26dc4c | |||
| af8c3a44ff | |||
| 4bc671584c | |||
| bed8f9e2f0 | |||
| 72e7b42813 | |||
| 961dd32c69 | |||
| b65f154f29 | |||
| cab5d7334a | |||
| 03442306b9 | |||
| c5b61c619c | |||
| ada132e992 | |||
| 54954c9ae7 | |||
| 2e59133c66 | |||
| 9db04f5aa0 | |||
| 30d1faff9a | |||
| 864940446d | |||
| 36487e636f | |||
| 47fd2bfc8a | |||
| a10ba790f5 | |||
| 446e74a51d | |||
| ef9e75d584 | |||
| 854f1dc3e9 | |||
| 965d845a64 | |||
| 682e493fa3 | |||
| 63012cd7e4 | |||
| ccd6838508 | |||
| 0df5b36586 | |||
| 9e2032cd27 | |||
| aa5b8af51c | |||
| b5f69363cc | |||
| d4ddaf5f58 | |||
| 3267e13aa8 | |||
| 96dd4202d5 | |||
| f674b6fe2f | |||
| b60e2db625 | |||
| b3d9dc8133 | |||
| 18854891f4 | |||
| 11e903dc24 | |||
| 6a037a8367 | |||
| 90d73ba248 | |||
| fa7851ade0 | |||
| 13e20d7c83 | |||
| 163a5b943e | |||
| ad5bb3a750 | |||
| c8369d2bd9 | |||
| a4eada7441 | |||
| fdedf11f00 | |||
| 2c7528fe6d | |||
| c38ad9f907 | |||
| dcee031d8b | |||
| 92d469750e | |||
| ced89be7c8 | |||
| 5519d4117b | |||
| 3606f0c90a | |||
| 59a20f4cd8 | |||
| 0e3aec8539 | |||
| fe715857fb | |||
| 2c3310250a |
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
/.svn
|
||||
CMakeLists.txt.user*
|
||||
/project_fs_build
|
||||
/qad/qad_version.h
|
||||
/qglengine/core/qglengine_version.h
|
||||
106
CMakeLists.txt
106
CMakeLists.txt
@@ -15,6 +15,9 @@ set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
||||
if(NOT DEFINED BUILD_NUMBER)
|
||||
set(BUILD_NUMBER 9999)
|
||||
endif()
|
||||
if("x${BUILD_NUMBER}" STREQUAL "x")
|
||||
set(BUILD_NUMBER 0)
|
||||
endif()
|
||||
set(_COMPANY SHS)
|
||||
set(_DOMAIN org.SHS)
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR}/pip)
|
||||
@@ -31,7 +34,7 @@ else()
|
||||
link_directories(/usr/local/lib)
|
||||
endif()
|
||||
else()
|
||||
set(CMAKE_INSTALL_RPATH "\$ORIGIN/lib")
|
||||
set(CMAKE_INSTALL_RPATH "\$ORIGIN;\$ORIGIN/lib")
|
||||
endif()
|
||||
endif()
|
||||
if (DEFINED ANDROID_PLATFORM)
|
||||
@@ -51,11 +54,19 @@ if(CMAKE_CROSSCOMPILING)
|
||||
set(INSTALL_PREFIX "${CMAKE_STAGING_PREFIX}")
|
||||
endif()
|
||||
endif()
|
||||
option(CROSSTOOLS "Crosstools minimal build" 0)
|
||||
option(LIB "System install" 1)
|
||||
option(QGLVIEW "Build QGLview library and utils" 0)
|
||||
option(QGLENGINE "Build QGLENGINE library and utils" 0)
|
||||
option(UTILS "Build various utils" ${_plugins_default_})
|
||||
option(DESIGNER_PLUGINS "Build qt designer plugins" ${_plugins_default_})
|
||||
if (CROSSTOOLS)
|
||||
set(LIB 1)
|
||||
set(QGLVIEW 0)
|
||||
set(QGLENGINE 0)
|
||||
set(UTILS 0)
|
||||
set(DESIGNER_PLUGINS 0)
|
||||
endif()
|
||||
if (CMAKE_BUILD_TYPE MATCHES Debug)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3 -Wall")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g3 -Wall")
|
||||
@@ -91,15 +102,17 @@ else()
|
||||
endif()
|
||||
|
||||
foreach(F ${PIP_FOLDERS})
|
||||
list(APPEND PIP_INCLUDES "${CMAKE_CURRENT_SOURCE_DIR}/pip/src_main/${F}")
|
||||
list(APPEND PIP_INCLUDES "${CMAKE_CURRENT_SOURCE_DIR}/pip/lib/main/${F}")
|
||||
endforeach(F)
|
||||
#message(${PIP_INCLUDES})
|
||||
if(CMAKE_CROSSCOMPILING OR (DEFINED ANDROID_PLATFORM))
|
||||
set(PIP_CMG "pip_cmg")
|
||||
set(PIP_RC "pip_rc")
|
||||
set(PIP_DEPLOY_TOOL "deploy_tool")
|
||||
else()
|
||||
set(PIP_CMG "${CMAKE_CURRENT_BINARY_DIR}/pip/utils/code_model_generator/pip_cmg")
|
||||
set(PIP_RC "${CMAKE_CURRENT_BINARY_DIR}/pip/utils/resources_compiler/pip_rc")
|
||||
set(PIP_DEPLOY_TOOL "${CMAKE_CURRENT_BINARY_DIR}/pip/utils/deploy_tool/deploy_tool")
|
||||
endif()
|
||||
if(WIN32)
|
||||
set(PIP_DLL_DIR "${CMAKE_CURRENT_BINARY_DIR}/pip")
|
||||
@@ -107,53 +120,64 @@ endif()
|
||||
|
||||
set(QAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/qad)
|
||||
|
||||
include(QtWraps)
|
||||
find_qt(Core QUIET)
|
||||
set(QtVersions)
|
||||
set(SomeQtFound 0)
|
||||
foreach(_v ${_QT_VERSIONS_})
|
||||
option(Qt${_v} "Build for Qt${_v}" 1)
|
||||
if (Qt${_v})
|
||||
#message("Qt${_v} -> ${LOCAL_FOUND${_v}}")
|
||||
if (LOCAL_FOUND${_v})
|
||||
list(APPEND QtVersions Qt${_v})
|
||||
set(SomeQtFound 1)
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
if (CROSSTOOLS)
|
||||
|
||||
add_subdirectory(pip)
|
||||
file(GLOB CMAKES "qad/cmake/*.cmake" "qad/cmake/*.in")
|
||||
install(FILES ${CMAKES} DESTINATION ${CMAKE_ROOT}/Modules)
|
||||
|
||||
if(UTILS)
|
||||
message(STATUS "Building with utils")
|
||||
else()
|
||||
message(STATUS "Building only libraries")
|
||||
endif()
|
||||
|
||||
add_subdirectory(pip)
|
||||
set(_DIRS)
|
||||
if (SomeQtFound)
|
||||
message(STATUS "Building Qt-derived targets for ${QtVersions}")
|
||||
add_subdirectory(qad)
|
||||
set(_DIRS piqt piqt_utils qcd_utils)
|
||||
if (Qt5)
|
||||
if (QGLVIEW)
|
||||
list(APPEND _DIRS qglview)
|
||||
endif()
|
||||
if (QGLENGINE)
|
||||
list(APPEND _DIRS qglengine)
|
||||
include(QtWraps)
|
||||
find_qt(Core QUIET)
|
||||
set(QtVersions)
|
||||
set(SomeQtFound 0)
|
||||
foreach(_v ${_QT_VERSIONS_})
|
||||
option(Qt${_v} "Build for Qt${_v}" 1)
|
||||
if (Qt${_v})
|
||||
#message("Qt${_v} -> ${LOCAL_FOUND${_v}}")
|
||||
if (LOCAL_FOUND${_v})
|
||||
list(APPEND QtVersions Qt${_v})
|
||||
set(SomeQtFound 1)
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(UTILS)
|
||||
message(STATUS "Building with utils")
|
||||
else()
|
||||
message(STATUS "Building only libraries")
|
||||
endif()
|
||||
|
||||
add_subdirectory(pip)
|
||||
set(_DIRS)
|
||||
if (SomeQtFound)
|
||||
message(STATUS "Building Qt-derived targets for ${QtVersions}")
|
||||
add_subdirectory(qad)
|
||||
set(_DIRS piqt piqt_utils qcd_utils)
|
||||
if (Qt5)
|
||||
list(APPEND _DIRS)
|
||||
if (QGLVIEW)
|
||||
list(APPEND _DIRS qglview)
|
||||
endif()
|
||||
if (QGLENGINE)
|
||||
list(APPEND _DIRS qglengine)
|
||||
endif()
|
||||
endif()
|
||||
foreach(_D ${_DIRS})
|
||||
list(APPEND QT_MULTILIB_LIST ${_D})
|
||||
endforeach(_D)
|
||||
include_directories(piqt)
|
||||
else()
|
||||
message(STATUS "None of Qt found, skip Qt-derived targets")
|
||||
endif()
|
||||
include_directories(cd_utils)
|
||||
list(INSERT _DIRS 0 cd_utils)
|
||||
foreach(_D ${_DIRS})
|
||||
list(APPEND QT_MULTILIB_LIST ${_D})
|
||||
add_subdirectory(${_D})
|
||||
endforeach(_D)
|
||||
include_directories(piqt)
|
||||
else()
|
||||
message(STATUS "None of Qt found, skip Qt-derived targets")
|
||||
|
||||
endif()
|
||||
include_directories(cd_utils)
|
||||
list(INSERT _DIRS 0 cd_utils)
|
||||
foreach(_D ${_DIRS})
|
||||
add_subdirectory(${_D})
|
||||
endforeach(_D)
|
||||
|
||||
if(WIN32)
|
||||
foreach(PIP_LT ${PIP_LIBS_TARGETS})
|
||||
|
||||
70
Jenkinsfile
vendored
70
Jenkinsfile
vendored
@@ -1,10 +1,62 @@
|
||||
node {
|
||||
def img
|
||||
def def_args = "--no-cache --build-arg LIBS_BUILD_NUMBER=${env.BUILD_NUMBER} --build-arg JOBS_COUNT=4"
|
||||
if (env.DOCKER_PREFIX) {
|
||||
img = docker.build("${env.DOCKER_PREFIX}/libs", "${def_args} --build-arg DOCKER_PREFIX=${env.DOCKER_PREFIX} .")
|
||||
} else {
|
||||
img = docker.build("libs", "${def_args} .")
|
||||
def build_docker(name) {
|
||||
def image = "${name}-libs"
|
||||
echo "Build image ${image}"
|
||||
def pref = ""
|
||||
if (env.DOCKER_PREFIX) {
|
||||
pref = "--build-arg DOCKER_PREFIX=${env.DOCKER_PREFIX}/"
|
||||
}
|
||||
img.push()
|
||||
}
|
||||
def jobs = 4
|
||||
if (env.JOBS_COUNT) {
|
||||
jobs = "${env.JOBS_COUNT}"
|
||||
}
|
||||
def args = "${pref} --build-arg LIBS_BUILD_NUMBER=${env.BUILD_NUMBER} --build-arg JOBS_COUNT=${jobs}"
|
||||
dir ("docker/${image}") {
|
||||
sh "docker build ${args} --no-cache -t ${image} ."
|
||||
}
|
||||
return "\n - ${image}"
|
||||
}
|
||||
node {
|
||||
stage("checkout") {
|
||||
checkout scm
|
||||
}
|
||||
def _envmap = [:]
|
||||
def _env = sh(script: "env", returnStdout: true).trim().split("\n")
|
||||
_env.each{ l ->
|
||||
def _ind = l.indexOf('=');
|
||||
def _n = l.substring(0, _ind);
|
||||
def _v = l.substring(_ind + 1);
|
||||
_envmap["${_n}"] = "${_v}";
|
||||
}
|
||||
def _msg = "Built images:"
|
||||
def platforms = ['debian', 'osx', 'windows', 'android', 'pi']
|
||||
for (int i = 0; i < platforms.size(); ++i) {
|
||||
if (_envmap["BUILD_${platforms[i]}"] == "1") {
|
||||
stage("${platforms[i]}-libs") {
|
||||
_msg += build_docker("${platforms[i]}")
|
||||
}
|
||||
}
|
||||
}
|
||||
sh "docker system prune -f"
|
||||
echo "${_msg}"
|
||||
}
|
||||
pipeline {
|
||||
agent {
|
||||
label 'master'
|
||||
}
|
||||
stages {
|
||||
stage("PIP doc") {
|
||||
steps {
|
||||
checkout scm
|
||||
sh "rm -rf share"
|
||||
sh "rm -vf *.zip"
|
||||
sh "mkdir -p build"
|
||||
sh "cd build && cmake -DLIB=0 -DCMAKE_INSTALL_PREFIX=`pwd` ../"
|
||||
sh "cd build && make doc"
|
||||
sh "cd share/doc && zip -r ../../pip_doc.zip pip"
|
||||
sh "cp share/doc/pip/html/pip.qch ./"
|
||||
archiveArtifacts 'pip_doc.zip'
|
||||
archiveArtifacts 'pip.qch'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
165
LICENSE.txt
Normal file
165
LICENSE.txt
Normal file
@@ -0,0 +1,165 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
||||
This version of the GNU Lesser General Public License incorporates
|
||||
the terms and conditions of version 3 of the GNU General Public
|
||||
License, supplemented by the additional permissions listed below.
|
||||
|
||||
0. Additional Definitions.
|
||||
|
||||
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||
General Public License.
|
||||
|
||||
"The Library" refers to a covered work governed by this License,
|
||||
other than an Application or a Combined Work as defined below.
|
||||
|
||||
An "Application" is any work that makes use of an interface provided
|
||||
by the Library, but which is not otherwise based on the Library.
|
||||
Defining a subclass of a class defined by the Library is deemed a mode
|
||||
of using an interface provided by the Library.
|
||||
|
||||
A "Combined Work" is a work produced by combining or linking an
|
||||
Application with the Library. The particular version of the Library
|
||||
with which the Combined Work was made is also called the "Linked
|
||||
Version".
|
||||
|
||||
The "Minimal Corresponding Source" for a Combined Work means the
|
||||
Corresponding Source for the Combined Work, excluding any source code
|
||||
for portions of the Combined Work that, considered in isolation, are
|
||||
based on the Application, and not on the Linked Version.
|
||||
|
||||
The "Corresponding Application Code" for a Combined Work means the
|
||||
object code and/or source code for the Application, including any data
|
||||
and utility programs needed for reproducing the Combined Work from the
|
||||
Application, but excluding the System Libraries of the Combined Work.
|
||||
|
||||
1. Exception to Section 3 of the GNU GPL.
|
||||
|
||||
You may convey a covered work under sections 3 and 4 of this License
|
||||
without being bound by section 3 of the GNU GPL.
|
||||
|
||||
2. Conveying Modified Versions.
|
||||
|
||||
If you modify a copy of the Library, and, in your modifications, a
|
||||
facility refers to a function or data to be supplied by an Application
|
||||
that uses the facility (other than as an argument passed when the
|
||||
facility is invoked), then you may convey a copy of the modified
|
||||
version:
|
||||
|
||||
a) under this License, provided that you make a good faith effort to
|
||||
ensure that, in the event an Application does not supply the
|
||||
function or data, the facility still operates, and performs
|
||||
whatever part of its purpose remains meaningful, or
|
||||
|
||||
b) under the GNU GPL, with none of the additional permissions of
|
||||
this License applicable to that copy.
|
||||
|
||||
3. Object Code Incorporating Material from Library Header Files.
|
||||
|
||||
The object code form of an Application may incorporate material from
|
||||
a header file that is part of the Library. You may convey such object
|
||||
code under terms of your choice, provided that, if the incorporated
|
||||
material is not limited to numerical parameters, data structure
|
||||
layouts and accessors, or small macros, inline functions and templates
|
||||
(ten or fewer lines in length), you do both of the following:
|
||||
|
||||
a) Give prominent notice with each copy of the object code that the
|
||||
Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
4. Combined Works.
|
||||
|
||||
You may convey a Combined Work under terms of your choice that,
|
||||
taken together, effectively do not restrict modification of the
|
||||
portions of the Library contained in the Combined Work and reverse
|
||||
engineering for debugging such modifications, if you also do each of
|
||||
the following:
|
||||
|
||||
a) Give prominent notice with each copy of the Combined Work that
|
||||
the Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
c) For a Combined Work that displays copyright notices during
|
||||
execution, include the copyright notice for the Library among
|
||||
these notices, as well as a reference directing the user to the
|
||||
copies of the GNU GPL and this license document.
|
||||
|
||||
d) Do one of the following:
|
||||
|
||||
0) Convey the Minimal Corresponding Source under the terms of this
|
||||
License, and the Corresponding Application Code in a form
|
||||
suitable for, and under terms that permit, the user to
|
||||
recombine or relink the Application with a modified version of
|
||||
the Linked Version to produce a modified Combined Work, in the
|
||||
manner specified by section 6 of the GNU GPL for conveying
|
||||
Corresponding Source.
|
||||
|
||||
1) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (a) uses at run time
|
||||
a copy of the Library already present on the user's computer
|
||||
system, and (b) will operate properly with a modified version
|
||||
of the Library that is interface-compatible with the Linked
|
||||
Version.
|
||||
|
||||
e) Provide Installation Information, but only if you would otherwise
|
||||
be required to provide such information under section 6 of the
|
||||
GNU GPL, and only to the extent that such information is
|
||||
necessary to install and execute a modified version of the
|
||||
Combined Work produced by recombining or relinking the
|
||||
Application with a modified version of the Linked Version. (If
|
||||
you use option 4d0, the Installation Information must accompany
|
||||
the Minimal Corresponding Source and Corresponding Application
|
||||
Code. If you use option 4d1, you must provide the Installation
|
||||
Information in the manner specified by section 6 of the GNU GPL
|
||||
for conveying Corresponding Source.)
|
||||
|
||||
5. Combined Libraries.
|
||||
|
||||
You may place library facilities that are a work based on the
|
||||
Library side by side in a single library together with other library
|
||||
facilities that are not Applications and are not covered by this
|
||||
License, and convey such a combined library under terms of your
|
||||
choice, if you do both of the following:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work based
|
||||
on the Library, uncombined with any other library facilities,
|
||||
conveyed under the terms of this License.
|
||||
|
||||
b) Give prominent notice with the combined library that part of it
|
||||
is a work based on the Library, and explaining where to find the
|
||||
accompanying uncombined form of the same work.
|
||||
|
||||
6. Revised Versions of the GNU Lesser General Public License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions
|
||||
of the GNU Lesser General Public License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Library as you received it specifies that a certain numbered version
|
||||
of the GNU Lesser General Public License "or any later version"
|
||||
applies to it, you have the option of following the terms and
|
||||
conditions either of that published version or of any later version
|
||||
published by the Free Software Foundation. If the Library as you
|
||||
received it does not specify a version number of the GNU Lesser
|
||||
General Public License, you may choose any version of the GNU Lesser
|
||||
General Public License ever published by the Free Software Foundation.
|
||||
|
||||
If the Library as you received it specifies that a proxy can decide
|
||||
whether future versions of the GNU Lesser General Public License shall
|
||||
apply, that proxy's public statement of acceptance of any version is
|
||||
permanent authorization for you to choose that version for the
|
||||
Library.
|
||||
19
README.md
19
README.md
@@ -1,5 +1,7 @@
|
||||
# Main SHS SDK libraries repo
|
||||
|
||||
## Introduction
|
||||
|
||||
This repo contains PIP, QAD and derived projects:
|
||||
* cd_utils - PIP-based client/server library for read, transmit and use custom structures of coefficients
|
||||
* qcd_utils - Qt bindings to CDUtils and "CD Pult" executable - full-featured CD client
|
||||
@@ -7,6 +9,7 @@ This repo contains PIP, QAD and derived projects:
|
||||
* piqt_utils - Gui libraries and executables to edit PIConnection configs and watch PIIntrospection
|
||||
* qglview - old Qt-base OpenGL engine
|
||||
* qglengine - new Qt-base OpenGL engine
|
||||
|
||||
## Compile
|
||||
This repo can be compile with GCC/MinGW/Clang, for Qt 4/5.
|
||||
|
||||
@@ -18,6 +21,7 @@ CMake options:
|
||||
* **DESIGNER_PLUGINS** - build or not Qt Designer plugins, enabled by default
|
||||
* **QGLVIEW** - build or not QGLView, disabled by default
|
||||
* **QGLENGINE** - build or not QGLEngine, disabled by default
|
||||
|
||||
## Windows scripts
|
||||
Build steps for i686 architecture:
|
||||
1. unzip mingw.7z to C:\mingw
|
||||
@@ -36,6 +40,15 @@ Build steps for amd64 architecture:
|
||||
|
||||
Build steps for both architectures:
|
||||
-- follow previos steps, but on '4' state run make_libs_all.bat
|
||||
## Non-Windows scripts
|
||||
Script "make_libs.sh" compile and install SDK for current environment, e.g.
|
||||
`./make_libs.sh -j4`
|
||||
|
||||
## Non-Windows scripts
|
||||
Script "make_libs.sh" compile and install SDK for current environment, e.g.
|
||||
`./make_libs.sh -j4`
|
||||
|
||||
## Docker
|
||||
This repo provide Dockerfile, so you can exec `docker build -t libs .` in this directory
|
||||
and make docker image "libs" with installed SHS SDK for:
|
||||
* Debian 10
|
||||
* Windows x64
|
||||
* MacOS
|
||||
* Android ndk 21 armeabi-v71, arm64-v8a, x86, x86_64
|
||||
|
||||
165
cd_utils/LICENSE.txt
Normal file
165
cd_utils/LICENSE.txt
Normal file
@@ -0,0 +1,165 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
||||
This version of the GNU Lesser General Public License incorporates
|
||||
the terms and conditions of version 3 of the GNU General Public
|
||||
License, supplemented by the additional permissions listed below.
|
||||
|
||||
0. Additional Definitions.
|
||||
|
||||
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||
General Public License.
|
||||
|
||||
"The Library" refers to a covered work governed by this License,
|
||||
other than an Application or a Combined Work as defined below.
|
||||
|
||||
An "Application" is any work that makes use of an interface provided
|
||||
by the Library, but which is not otherwise based on the Library.
|
||||
Defining a subclass of a class defined by the Library is deemed a mode
|
||||
of using an interface provided by the Library.
|
||||
|
||||
A "Combined Work" is a work produced by combining or linking an
|
||||
Application with the Library. The particular version of the Library
|
||||
with which the Combined Work was made is also called the "Linked
|
||||
Version".
|
||||
|
||||
The "Minimal Corresponding Source" for a Combined Work means the
|
||||
Corresponding Source for the Combined Work, excluding any source code
|
||||
for portions of the Combined Work that, considered in isolation, are
|
||||
based on the Application, and not on the Linked Version.
|
||||
|
||||
The "Corresponding Application Code" for a Combined Work means the
|
||||
object code and/or source code for the Application, including any data
|
||||
and utility programs needed for reproducing the Combined Work from the
|
||||
Application, but excluding the System Libraries of the Combined Work.
|
||||
|
||||
1. Exception to Section 3 of the GNU GPL.
|
||||
|
||||
You may convey a covered work under sections 3 and 4 of this License
|
||||
without being bound by section 3 of the GNU GPL.
|
||||
|
||||
2. Conveying Modified Versions.
|
||||
|
||||
If you modify a copy of the Library, and, in your modifications, a
|
||||
facility refers to a function or data to be supplied by an Application
|
||||
that uses the facility (other than as an argument passed when the
|
||||
facility is invoked), then you may convey a copy of the modified
|
||||
version:
|
||||
|
||||
a) under this License, provided that you make a good faith effort to
|
||||
ensure that, in the event an Application does not supply the
|
||||
function or data, the facility still operates, and performs
|
||||
whatever part of its purpose remains meaningful, or
|
||||
|
||||
b) under the GNU GPL, with none of the additional permissions of
|
||||
this License applicable to that copy.
|
||||
|
||||
3. Object Code Incorporating Material from Library Header Files.
|
||||
|
||||
The object code form of an Application may incorporate material from
|
||||
a header file that is part of the Library. You may convey such object
|
||||
code under terms of your choice, provided that, if the incorporated
|
||||
material is not limited to numerical parameters, data structure
|
||||
layouts and accessors, or small macros, inline functions and templates
|
||||
(ten or fewer lines in length), you do both of the following:
|
||||
|
||||
a) Give prominent notice with each copy of the object code that the
|
||||
Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
4. Combined Works.
|
||||
|
||||
You may convey a Combined Work under terms of your choice that,
|
||||
taken together, effectively do not restrict modification of the
|
||||
portions of the Library contained in the Combined Work and reverse
|
||||
engineering for debugging such modifications, if you also do each of
|
||||
the following:
|
||||
|
||||
a) Give prominent notice with each copy of the Combined Work that
|
||||
the Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
c) For a Combined Work that displays copyright notices during
|
||||
execution, include the copyright notice for the Library among
|
||||
these notices, as well as a reference directing the user to the
|
||||
copies of the GNU GPL and this license document.
|
||||
|
||||
d) Do one of the following:
|
||||
|
||||
0) Convey the Minimal Corresponding Source under the terms of this
|
||||
License, and the Corresponding Application Code in a form
|
||||
suitable for, and under terms that permit, the user to
|
||||
recombine or relink the Application with a modified version of
|
||||
the Linked Version to produce a modified Combined Work, in the
|
||||
manner specified by section 6 of the GNU GPL for conveying
|
||||
Corresponding Source.
|
||||
|
||||
1) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (a) uses at run time
|
||||
a copy of the Library already present on the user's computer
|
||||
system, and (b) will operate properly with a modified version
|
||||
of the Library that is interface-compatible with the Linked
|
||||
Version.
|
||||
|
||||
e) Provide Installation Information, but only if you would otherwise
|
||||
be required to provide such information under section 6 of the
|
||||
GNU GPL, and only to the extent that such information is
|
||||
necessary to install and execute a modified version of the
|
||||
Combined Work produced by recombining or relinking the
|
||||
Application with a modified version of the Linked Version. (If
|
||||
you use option 4d0, the Installation Information must accompany
|
||||
the Minimal Corresponding Source and Corresponding Application
|
||||
Code. If you use option 4d1, you must provide the Installation
|
||||
Information in the manner specified by section 6 of the GNU GPL
|
||||
for conveying Corresponding Source.)
|
||||
|
||||
5. Combined Libraries.
|
||||
|
||||
You may place library facilities that are a work based on the
|
||||
Library side by side in a single library together with other library
|
||||
facilities that are not Applications and are not covered by this
|
||||
License, and convey such a combined library under terms of your
|
||||
choice, if you do both of the following:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work based
|
||||
on the Library, uncombined with any other library facilities,
|
||||
conveyed under the terms of this License.
|
||||
|
||||
b) Give prominent notice with the combined library that part of it
|
||||
is a work based on the Library, and explaining where to find the
|
||||
accompanying uncombined form of the same work.
|
||||
|
||||
6. Revised Versions of the GNU Lesser General Public License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions
|
||||
of the GNU Lesser General Public License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Library as you received it specifies that a certain numbered version
|
||||
of the GNU Lesser General Public License "or any later version"
|
||||
applies to it, you have the option of following the terms and
|
||||
conditions either of that published version or of any later version
|
||||
published by the Free Software Foundation. If the Library as you
|
||||
received it does not specify a version number of the GNU Lesser
|
||||
General Public License, you may choose any version of the GNU Lesser
|
||||
General Public License ever published by the Free Software Foundation.
|
||||
|
||||
If the Library as you received it specifies that a proxy can decide
|
||||
whether future versions of the GNU Lesser General Public License shall
|
||||
apply, that proxy's public statement of acceptance of any version is
|
||||
permanent authorization for you to choose that version for the
|
||||
Library.
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
CD Utils - Control-Debug utilites
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef CDUTILS_C_H
|
||||
#define CDUTILS_C_H
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
CD Utils - Control-Debug utilites
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef CDUTILS_CORE_H
|
||||
#define CDUTILS_CORE_H
|
||||
|
||||
|
||||
@@ -135,7 +135,7 @@ bool Interface::configure(const PIString & config) {
|
||||
PIConfig conf(config, PIIODevice::ReadOnly);
|
||||
PIConfig::Entry & e(conf.getValue(core->typeLetter(s->cd_type_)));
|
||||
bool ret = false;
|
||||
setFileName(e.getValue("file", file(), &ret));
|
||||
setFileName(e.getValue("file", file(), &ret).toString());
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
CD Utils - Control-Debug utilites
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef CDUTILS_INTERFACE_H
|
||||
#define CDUTILS_INTERFACE_H
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
CD Utils - Control-Debug utilites
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef CDUTILS_K_H
|
||||
#define CDUTILS_K_H
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
CD Utils - Control-Debug utilites
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef CDUTILS_M_H
|
||||
#define CDUTILS_M_H
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
CD Utils - Control-Debug utilites
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef CDUTILS_PARSER_H
|
||||
#define CDUTILS_PARSER_H
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
CD Utils - Control-Debug utilites
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef CDUTILS_PROTOCOL_H
|
||||
#define CDUTILS_PROTOCOL_H
|
||||
|
||||
|
||||
@@ -524,7 +524,7 @@ void CDSection::read(const void * ep) {
|
||||
case CDType::cdNull: break;
|
||||
case CDType::cdK:
|
||||
c = CDType(id, e->getValue("v").comment(), e->getValue("v").type(), e->getValue("v").value(), e->getValue("f").value(), e->getValue("f").comment(), cd_type_);
|
||||
ev = e->getValue("ev", "");
|
||||
ev = e->getValue("ev", "").value();
|
||||
if (!ev.isEmpty())
|
||||
c.enum_values = c.parseEnumComment(ev);
|
||||
break;
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
CD Utils - Control-Debug utilites
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef CDUTILS_TYPES_H
|
||||
#define CDUTILS_TYPES_H
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
CD Utils - Control-Debug utilites
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef CDUTILS_X_H
|
||||
#define CDUTILS_X_H
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ set Qt5_ROOT=%ANDROID_QT5_DIR%\lib\cmake
|
||||
rem set Qt5_DIR=%Qt5_ROOT%\Qt5
|
||||
if NOT [%QARCH%]==[] (
|
||||
@echo on
|
||||
cmake_mgw -Wno-dev -DCMAKE_TOOLCHAIN_FILE=%ANDROID_NDK_HOME%\build\cmake\android.toolchain.cmake -DANDROID_STL=c++_shared -DANDROID_PLATFORM=android-%_PLATFORM_% -DANDROID_ABI=%AARCH% -DICU=0 -DQt4=0 -DQt5=1 -DQGLVIEW=0 -DQGLENGINE=0 -DQt5_DIR=%Qt5_ROOT%\Qt5 -DQt5LinguistTools_DIR=%Qt5_ROOT%\Qt5LinguistTools -DQt5UiPlugin_DIR=%Qt5_ROOT%\Qt5UiPlugin -DQt5UiTools_DIR=%Qt5_ROOT%\Qt5UiTools -DQt5Widgets_DIR=%Qt5_ROOT%\Qt5Widgets -DQt5Core_DIR=%Qt5_ROOT%\Qt5Core -DQt5Gui_DIR=%Qt5_ROOT%\Qt5Gui -DQt5Sql_DIR=%Qt5_ROOT%\Qt5Sql -DQt5OpenGL_DIR=%Qt5_ROOT%\Qt5OpenGL -DQt5PrintSupport_DIR=%Qt5_ROOT%\Qt5PrintSupport -DQt5Script_DIR=%Qt5_ROOT%\Qt5Script -DQt5Positioning_DIR=%Qt5_ROOT%\Qt5Positioning -DQt5Network_DIR=%Qt5_ROOT%\Qt5Network -DQt5Qml_DIR=%Qt5_ROOT%\Qt5Qml -DQt5Quick_DIR=%Qt5_ROOT%\Qt5Quick -DQt5QuickWidgets_DIR=%Qt5_ROOT%\Qt5QuickWidgets %~3 %~4 %~5 %~6
|
||||
cmake_mgw -Wno-dev -DCMAKE_TOOLCHAIN_FILE=%ANDROID_NDK_HOME%\build\cmake\android.toolchain.cmake -DANDROID_STL=c++_shared -DANDROID_PLATFORM=android-%_PLATFORM_% -DANDROID_ABI=%AARCH% -DICU=0 -DQt4=0 -DQt5=1 -DQGLVIEW=0 -DQGLENGINE=0 -DQt5_DIR=%Qt5_ROOT%\Qt5 -DQt5LinguistTools_DIR=%Qt5_ROOT%\Qt5LinguistTools -DQt5UiPlugin_DIR=%Qt5_ROOT%\Qt5UiPlugin -DQt5UiTools_DIR=%Qt5_ROOT%\Qt5UiTools -DQt5Widgets_DIR=%Qt5_ROOT%\Qt5Widgets -DQt5Core_DIR=%Qt5_ROOT%\Qt5Core -DQt5Gui_DIR=%Qt5_ROOT%\Qt5Gui -DQt5Sql_DIR=%Qt5_ROOT%\Qt5Sql -DQt5OpenGL_DIR=%Qt5_ROOT%\Qt5OpenGL -DQt5PrintSupport_DIR=%Qt5_ROOT%\Qt5PrintSupport -DQt5Script_DIR=%Qt5_ROOT%\Qt5Script -DQt5Positioning_DIR=%Qt5_ROOT%\Qt5Positioning -DQt5Network_DIR=%Qt5_ROOT%\Qt5Network -DQt5Qml_DIR=%Qt5_ROOT%\Qt5Qml -DQt5Quick_DIR=%Qt5_ROOT%\Qt5Quick -DQt5QuickWidgets_DIR=%Qt5_ROOT%\Qt5QuickWidgets -DQt5QmlModels_DIR=%Qt5_ROOT%\Qt5QmlModels -DQt5AndroidExtras_DIR=%Qt5_ROOT%\Qt5AndroidExtras %~3 %~4 %~5 %~6
|
||||
) else (
|
||||
@echo on
|
||||
cmake_mgw -Wno-dev -DCMAKE_TOOLCHAIN_FILE=%ANDROID_NDK_HOME%\build\cmake\android.toolchain.cmake -DANDROID_STL=c++_shared -DANDROID_PLATFORM=android-%_PLATFORM_% -DANDROID_ABI=%AARCH% -DICU=0 -DQt4=0 -DQt5=0 -DQGLVIEW=0 %~3 %~4 %~5 %~6
|
||||
|
||||
@@ -1,50 +1,38 @@
|
||||
ARG DOCKER_PREFIX=wapmobil
|
||||
|
||||
FROM ${DOCKER_PREFIX}/android
|
||||
ARG DOCKER_PREFIX=wapmobil/
|
||||
FROM ${DOCKER_PREFIX}android
|
||||
|
||||
ARG LIBS_BUILD_NUMBER=9999
|
||||
ARG JOBS_COUNT=4
|
||||
|
||||
WORKDIR /soft
|
||||
#RUN svn co svn://db.shs.com.ru/libs --username peri4 --password a --no-auth-cache --non-interactive --trust-server-cert
|
||||
RUN git clone -b release --depth 1 --recursive https://git.shs.tools/SHS/libs.git
|
||||
|
||||
WORKDIR /soft/build_libs_linux
|
||||
RUN cmake -DICU=0 -DQGLENGINE=1 -DQGLVIEW=1 -DBUILD_NUMBER=${LIBS_BUILD_NUMBER} ../libs/ \
|
||||
&& make install -j${JOBS_COUNT} && rm -rf * \
|
||||
WORKDIR /soft/libs_build_host
|
||||
RUN cmake -DICU=0 -DCROSSTOOLS=1 -DBUILD_NUMBER=${LIBS_BUILD_NUMBER} ../libs \
|
||||
&& make install -j${JOBS_COUNT} \
|
||||
&& rm -rf * \
|
||||
&& ldconfig
|
||||
|
||||
WORKDIR /soft/build_libs_windows
|
||||
RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/windows -DICU=0 -DLIB=0 -DQGLENGINE=1 -DQGLVIEW=1 -DBUILD_NUMBER=${LIBS_BUILD_NUMBER} -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Windows.cmake ../libs/ \
|
||||
&& make install -j${JOBS_COUNT} && rm -rf *
|
||||
|
||||
WORKDIR /soft/build_libs_macos
|
||||
RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/osx -DICU=0 -DLIB=0 -DQGLENGINE=1 -DQGLVIEW=1 -DBUILD_NUMBER=${LIBS_BUILD_NUMBER} -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Darwin.cmake ../libs/ \
|
||||
&& make install -j${JOBS_COUNT} && rm -rf *
|
||||
|
||||
WORKDIR /soft/libs_build_anroid
|
||||
ENV _ANDROID_TOOLCHAIN=/usr/lib/android-sdk/ndk-bundle/build/cmake/android.toolchain.cmake
|
||||
|
||||
ENV _CUR_ABI=armeabi-v7a
|
||||
WORKDIR /soft/build_libs_android_${_CUR_ABI}
|
||||
RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DICU=0 -DLIB=0 -DQGLENGINE=0 -DQGLVIEW=0 -DBUILD_NUMBER=${LIBS_BUILD_NUMBER} -DCMAKE_TOOLCHAIN_FILE=${_ANDROID_TOOLCHAIN} -DQt5_DIR=/soft/android/qt/lib/cmake/Qt5 -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} ../libs/ \
|
||||
&& make install -j${JOBS_COUNT} && rm -rf *
|
||||
|
||||
ENV _CUR_ABI=arm64-v8a
|
||||
WORKDIR /soft/build_libs_android_${_CUR_ABI}
|
||||
WORKDIR /soft/libs_build_android_${_CUR_ABI}
|
||||
RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DICU=0 -DLIB=0 -DQGLENGINE=0 -DQGLVIEW=0 -DBUILD_NUMBER=${LIBS_BUILD_NUMBER} -DCMAKE_TOOLCHAIN_FILE=${_ANDROID_TOOLCHAIN} -DQt5_DIR=/soft/android/qt/lib/cmake/Qt5 -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} ../libs/ \
|
||||
&& make install -j${JOBS_COUNT} && rm -rf *
|
||||
|
||||
ENV _CUR_ABI=x86
|
||||
WORKDIR /soft/build_libs_android_${_CUR_ABI}
|
||||
WORKDIR /soft/libs_build_android_${_CUR_ABI}
|
||||
RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DICU=0 -DLIB=0 -DQGLENGINE=0 -DQGLVIEW=0 -DBUILD_NUMBER=${LIBS_BUILD_NUMBER} -DCMAKE_TOOLCHAIN_FILE=${_ANDROID_TOOLCHAIN} -DQt5_DIR=/soft/android/qt/lib/cmake/Qt5 -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} ../libs/ \
|
||||
&& make install -j${JOBS_COUNT} && rm -rf *
|
||||
|
||||
ENV _CUR_ABI=x86_64
|
||||
WORKDIR /soft/build_libs_android_${_CUR_ABI}
|
||||
WORKDIR /soft/libs_build_android_${_CUR_ABI}
|
||||
RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/android/${_CUR_ABI} -DICU=0 -DLIB=0 -DQGLENGINE=0 -DQGLVIEW=0 -DBUILD_NUMBER=${LIBS_BUILD_NUMBER} -DCMAKE_TOOLCHAIN_FILE=${_ANDROID_TOOLCHAIN} -DQt5_DIR=/soft/android/qt/lib/cmake/Qt5 -DANDROID_PLATFORM=${NDK_PLATFORM} -DANDROID_ABI=${_CUR_ABI} ../libs/ \
|
||||
&& make install -j${JOBS_COUNT} && rm -rf *
|
||||
|
||||
WORKDIR /soft/src
|
||||
|
||||
# examples
|
||||
# docker build --no-cache -t libs .
|
||||
# cd <your_project_dir>
|
||||
# docker run --rm -it -v $(pwd):/soft/src libs bash
|
||||
16
docker/debian-libs/Dockerfile
Normal file
16
docker/debian-libs/Dockerfile
Normal file
@@ -0,0 +1,16 @@
|
||||
ARG DOCKER_PREFIX=wapmobil/
|
||||
FROM ${DOCKER_PREFIX}debian
|
||||
|
||||
ARG LIBS_BUILD_NUMBER=9999
|
||||
ARG JOBS_COUNT=4
|
||||
|
||||
WORKDIR /soft
|
||||
RUN git clone -b release --depth 1 --recursive https://git.shs.tools/SHS/libs.git
|
||||
|
||||
WORKDIR /soft/libs_build_debian
|
||||
RUN cmake -DICU=0 -DLIB=1 -DQGLENGINE=1 -DQGLVIEW=1 -DBUILD_NUMBER=${LIBS_BUILD_NUMBER} ../libs \
|
||||
&& make install -j${JOBS_COUNT} \
|
||||
&& rm -rf * \
|
||||
&& ldconfig
|
||||
|
||||
WORKDIR /soft/src
|
||||
20
docker/osx-libs/Dockerfile
Normal file
20
docker/osx-libs/Dockerfile
Normal file
@@ -0,0 +1,20 @@
|
||||
ARG DOCKER_PREFIX=wapmobil/
|
||||
FROM ${DOCKER_PREFIX}osx
|
||||
|
||||
ARG LIBS_BUILD_NUMBER=9999
|
||||
ARG JOBS_COUNT=4
|
||||
|
||||
WORKDIR /soft
|
||||
RUN git clone -b release --depth 1 --recursive https://git.shs.tools/SHS/libs.git
|
||||
|
||||
WORKDIR /soft/libs_build_host
|
||||
RUN cmake -DICU=0 -DCROSSTOOLS=1 -DBUILD_NUMBER=${LIBS_BUILD_NUMBER} ../libs \
|
||||
&& make install -j${JOBS_COUNT} \
|
||||
&& rm -rf * \
|
||||
&& ldconfig
|
||||
|
||||
WORKDIR /soft/libs_build_osx
|
||||
RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/osx -DICU=0 -DLIB=0 -DQGLENGINE=1 -DQGLVIEW=1 -DBUILD_NUMBER=${LIBS_BUILD_NUMBER} -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Darwin.cmake ../libs/ \
|
||||
&& make install -j${JOBS_COUNT} && rm -rf *
|
||||
|
||||
WORKDIR /soft/src
|
||||
20
docker/pi-libs/Dockerfile
Normal file
20
docker/pi-libs/Dockerfile
Normal file
@@ -0,0 +1,20 @@
|
||||
ARG DOCKER_PREFIX=wapmobil/
|
||||
FROM ${DOCKER_PREFIX}pi
|
||||
|
||||
ARG LIBS_BUILD_NUMBER=9999
|
||||
ARG JOBS_COUNT=4
|
||||
|
||||
WORKDIR /soft
|
||||
RUN git clone -b release --depth 1 --recursive https://git.shs.tools/SHS/libs.git
|
||||
|
||||
WORKDIR /soft/libs_build_host
|
||||
RUN cmake -DICU=0 -DCROSSTOOLS=1 -DBUILD_NUMBER=${LIBS_BUILD_NUMBER} ../libs \
|
||||
&& make install -j${JOBS_COUNT} \
|
||||
&& rm -rf * \
|
||||
&& ldconfig
|
||||
|
||||
WORKDIR /soft/libs_build_pi
|
||||
RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/pi/usr -DICU=0 -DLIB=0 -DQGLENGINE=0 -DQGLVIEW=0 -DBUILD_NUMBER=${LIBS_BUILD_NUMBER} -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-RPi.cmake ../libs/ \
|
||||
&& make install -j${JOBS_COUNT} && rm -rf *
|
||||
|
||||
WORKDIR /soft/src
|
||||
20
docker/windows-libs/Dockerfile
Normal file
20
docker/windows-libs/Dockerfile
Normal file
@@ -0,0 +1,20 @@
|
||||
ARG DOCKER_PREFIX=wapmobil/
|
||||
FROM ${DOCKER_PREFIX}windows
|
||||
|
||||
ARG LIBS_BUILD_NUMBER=9999
|
||||
ARG JOBS_COUNT=4
|
||||
|
||||
WORKDIR /soft
|
||||
RUN git clone -b release --depth 1 --recursive https://git.shs.tools/SHS/libs.git
|
||||
|
||||
WORKDIR /soft/libs_build_host
|
||||
RUN cmake -DICU=0 -DCROSSTOOLS=1 -DBUILD_NUMBER=${LIBS_BUILD_NUMBER} ../libs \
|
||||
&& make install -j${JOBS_COUNT} \
|
||||
&& rm -rf * \
|
||||
&& ldconfig
|
||||
|
||||
WORKDIR /soft/libs_build_windows
|
||||
RUN cmake -DCMAKE_INSTALL_PREFIX=/soft/windows -DICU=0 -DLIB=0 -DQGLENGINE=1 -DQGLVIEW=1 -DBUILD_NUMBER=${LIBS_BUILD_NUMBER} -DCMAKE_TOOLCHAIN_FILE=/soft/toolchain-Windows.cmake ../libs/ \
|
||||
&& make install -j${JOBS_COUNT} && rm -rf *
|
||||
|
||||
WORKDIR /soft/src
|
||||
@@ -4,19 +4,19 @@
|
||||
/*
|
||||
PIP - Platform Independent Primitives
|
||||
Protocol, input/output channel (COM, UDP)
|
||||
Copyright (C) 2020 Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
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
|
||||
it under the terms of the GNU Lesser 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.
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
2
pip
2
pip
Submodule pip updated: f4cbd499a8...5df43a45f2
165
piqt/LICENSE.txt
Normal file
165
piqt/LICENSE.txt
Normal file
@@ -0,0 +1,165 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
||||
This version of the GNU Lesser General Public License incorporates
|
||||
the terms and conditions of version 3 of the GNU General Public
|
||||
License, supplemented by the additional permissions listed below.
|
||||
|
||||
0. Additional Definitions.
|
||||
|
||||
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||
General Public License.
|
||||
|
||||
"The Library" refers to a covered work governed by this License,
|
||||
other than an Application or a Combined Work as defined below.
|
||||
|
||||
An "Application" is any work that makes use of an interface provided
|
||||
by the Library, but which is not otherwise based on the Library.
|
||||
Defining a subclass of a class defined by the Library is deemed a mode
|
||||
of using an interface provided by the Library.
|
||||
|
||||
A "Combined Work" is a work produced by combining or linking an
|
||||
Application with the Library. The particular version of the Library
|
||||
with which the Combined Work was made is also called the "Linked
|
||||
Version".
|
||||
|
||||
The "Minimal Corresponding Source" for a Combined Work means the
|
||||
Corresponding Source for the Combined Work, excluding any source code
|
||||
for portions of the Combined Work that, considered in isolation, are
|
||||
based on the Application, and not on the Linked Version.
|
||||
|
||||
The "Corresponding Application Code" for a Combined Work means the
|
||||
object code and/or source code for the Application, including any data
|
||||
and utility programs needed for reproducing the Combined Work from the
|
||||
Application, but excluding the System Libraries of the Combined Work.
|
||||
|
||||
1. Exception to Section 3 of the GNU GPL.
|
||||
|
||||
You may convey a covered work under sections 3 and 4 of this License
|
||||
without being bound by section 3 of the GNU GPL.
|
||||
|
||||
2. Conveying Modified Versions.
|
||||
|
||||
If you modify a copy of the Library, and, in your modifications, a
|
||||
facility refers to a function or data to be supplied by an Application
|
||||
that uses the facility (other than as an argument passed when the
|
||||
facility is invoked), then you may convey a copy of the modified
|
||||
version:
|
||||
|
||||
a) under this License, provided that you make a good faith effort to
|
||||
ensure that, in the event an Application does not supply the
|
||||
function or data, the facility still operates, and performs
|
||||
whatever part of its purpose remains meaningful, or
|
||||
|
||||
b) under the GNU GPL, with none of the additional permissions of
|
||||
this License applicable to that copy.
|
||||
|
||||
3. Object Code Incorporating Material from Library Header Files.
|
||||
|
||||
The object code form of an Application may incorporate material from
|
||||
a header file that is part of the Library. You may convey such object
|
||||
code under terms of your choice, provided that, if the incorporated
|
||||
material is not limited to numerical parameters, data structure
|
||||
layouts and accessors, or small macros, inline functions and templates
|
||||
(ten or fewer lines in length), you do both of the following:
|
||||
|
||||
a) Give prominent notice with each copy of the object code that the
|
||||
Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
4. Combined Works.
|
||||
|
||||
You may convey a Combined Work under terms of your choice that,
|
||||
taken together, effectively do not restrict modification of the
|
||||
portions of the Library contained in the Combined Work and reverse
|
||||
engineering for debugging such modifications, if you also do each of
|
||||
the following:
|
||||
|
||||
a) Give prominent notice with each copy of the Combined Work that
|
||||
the Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
c) For a Combined Work that displays copyright notices during
|
||||
execution, include the copyright notice for the Library among
|
||||
these notices, as well as a reference directing the user to the
|
||||
copies of the GNU GPL and this license document.
|
||||
|
||||
d) Do one of the following:
|
||||
|
||||
0) Convey the Minimal Corresponding Source under the terms of this
|
||||
License, and the Corresponding Application Code in a form
|
||||
suitable for, and under terms that permit, the user to
|
||||
recombine or relink the Application with a modified version of
|
||||
the Linked Version to produce a modified Combined Work, in the
|
||||
manner specified by section 6 of the GNU GPL for conveying
|
||||
Corresponding Source.
|
||||
|
||||
1) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (a) uses at run time
|
||||
a copy of the Library already present on the user's computer
|
||||
system, and (b) will operate properly with a modified version
|
||||
of the Library that is interface-compatible with the Linked
|
||||
Version.
|
||||
|
||||
e) Provide Installation Information, but only if you would otherwise
|
||||
be required to provide such information under section 6 of the
|
||||
GNU GPL, and only to the extent that such information is
|
||||
necessary to install and execute a modified version of the
|
||||
Combined Work produced by recombining or relinking the
|
||||
Application with a modified version of the Linked Version. (If
|
||||
you use option 4d0, the Installation Information must accompany
|
||||
the Minimal Corresponding Source and Corresponding Application
|
||||
Code. If you use option 4d1, you must provide the Installation
|
||||
Information in the manner specified by section 6 of the GNU GPL
|
||||
for conveying Corresponding Source.)
|
||||
|
||||
5. Combined Libraries.
|
||||
|
||||
You may place library facilities that are a work based on the
|
||||
Library side by side in a single library together with other library
|
||||
facilities that are not Applications and are not covered by this
|
||||
License, and convey such a combined library under terms of your
|
||||
choice, if you do both of the following:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work based
|
||||
on the Library, uncombined with any other library facilities,
|
||||
conveyed under the terms of this License.
|
||||
|
||||
b) Give prominent notice with the combined library that part of it
|
||||
is a work based on the Library, and explaining where to find the
|
||||
accompanying uncombined form of the same work.
|
||||
|
||||
6. Revised Versions of the GNU Lesser General Public License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions
|
||||
of the GNU Lesser General Public License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Library as you received it specifies that a certain numbered version
|
||||
of the GNU Lesser General Public License "or any later version"
|
||||
applies to it, you have the option of following the terms and
|
||||
conditions either of that published version or of any later version
|
||||
published by the Free Software Foundation. If the Library as you
|
||||
received it does not specify a version number of the GNU Lesser
|
||||
General Public License, you may choose any version of the GNU Lesser
|
||||
General Public License ever published by the Free Software Foundation.
|
||||
|
||||
If the Library as you received it specifies that a proxy can decide
|
||||
whether future versions of the GNU Lesser General Public License shall
|
||||
apply, that proxy's public statement of acceptance of any version is
|
||||
permanent authorization for you to choose that version for the
|
||||
Library.
|
||||
19
piqt/piqt.h
19
piqt/piqt.h
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
PIQt - PIP <-> Qt convertions
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef PIQT_H
|
||||
#define PIQT_H
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ list(APPEND QT_MULTILIB_LIST ${PROJECT_NAME})
|
||||
set(QT_MULTILIB_LIST ${QT_MULTILIB_LIST} PARENT_SCOPE)
|
||||
include_directories(${PIP_INCLUDES} ${QAD_INCLUDES})
|
||||
file(GLOB SRC "*.h" "*.cpp" "*.ui" "*.qrc" "lang/*.ts")
|
||||
pip_code_model(CCM "../pip/src_main/io_devices/piiodevice.h" "../pip/src_main/io_utils/pipacketextractor.h" OPTIONS "-DPIP_EXPORT" "-Es")
|
||||
pip_code_model(CCM "../pip/lib/main/io_devices/piiodevice.h" "../pip/lib/main/io_utils/pipacketextractor.h" OPTIONS "-DPIP_EXPORT" "-Es")
|
||||
find_qt(${QtVersions} Core Gui)
|
||||
qt_wrap(${SRC} HDRS out_HDR CPPS out_CPP QMS out_QM)
|
||||
qt_add_library(${PROJECT_NAME} ${LIBTYPE} out_CPP CCM)
|
||||
|
||||
165
piqt_utils/LICENSE.txt
Normal file
165
piqt_utils/LICENSE.txt
Normal file
@@ -0,0 +1,165 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
||||
This version of the GNU Lesser General Public License incorporates
|
||||
the terms and conditions of version 3 of the GNU General Public
|
||||
License, supplemented by the additional permissions listed below.
|
||||
|
||||
0. Additional Definitions.
|
||||
|
||||
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||
General Public License.
|
||||
|
||||
"The Library" refers to a covered work governed by this License,
|
||||
other than an Application or a Combined Work as defined below.
|
||||
|
||||
An "Application" is any work that makes use of an interface provided
|
||||
by the Library, but which is not otherwise based on the Library.
|
||||
Defining a subclass of a class defined by the Library is deemed a mode
|
||||
of using an interface provided by the Library.
|
||||
|
||||
A "Combined Work" is a work produced by combining or linking an
|
||||
Application with the Library. The particular version of the Library
|
||||
with which the Combined Work was made is also called the "Linked
|
||||
Version".
|
||||
|
||||
The "Minimal Corresponding Source" for a Combined Work means the
|
||||
Corresponding Source for the Combined Work, excluding any source code
|
||||
for portions of the Combined Work that, considered in isolation, are
|
||||
based on the Application, and not on the Linked Version.
|
||||
|
||||
The "Corresponding Application Code" for a Combined Work means the
|
||||
object code and/or source code for the Application, including any data
|
||||
and utility programs needed for reproducing the Combined Work from the
|
||||
Application, but excluding the System Libraries of the Combined Work.
|
||||
|
||||
1. Exception to Section 3 of the GNU GPL.
|
||||
|
||||
You may convey a covered work under sections 3 and 4 of this License
|
||||
without being bound by section 3 of the GNU GPL.
|
||||
|
||||
2. Conveying Modified Versions.
|
||||
|
||||
If you modify a copy of the Library, and, in your modifications, a
|
||||
facility refers to a function or data to be supplied by an Application
|
||||
that uses the facility (other than as an argument passed when the
|
||||
facility is invoked), then you may convey a copy of the modified
|
||||
version:
|
||||
|
||||
a) under this License, provided that you make a good faith effort to
|
||||
ensure that, in the event an Application does not supply the
|
||||
function or data, the facility still operates, and performs
|
||||
whatever part of its purpose remains meaningful, or
|
||||
|
||||
b) under the GNU GPL, with none of the additional permissions of
|
||||
this License applicable to that copy.
|
||||
|
||||
3. Object Code Incorporating Material from Library Header Files.
|
||||
|
||||
The object code form of an Application may incorporate material from
|
||||
a header file that is part of the Library. You may convey such object
|
||||
code under terms of your choice, provided that, if the incorporated
|
||||
material is not limited to numerical parameters, data structure
|
||||
layouts and accessors, or small macros, inline functions and templates
|
||||
(ten or fewer lines in length), you do both of the following:
|
||||
|
||||
a) Give prominent notice with each copy of the object code that the
|
||||
Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
4. Combined Works.
|
||||
|
||||
You may convey a Combined Work under terms of your choice that,
|
||||
taken together, effectively do not restrict modification of the
|
||||
portions of the Library contained in the Combined Work and reverse
|
||||
engineering for debugging such modifications, if you also do each of
|
||||
the following:
|
||||
|
||||
a) Give prominent notice with each copy of the Combined Work that
|
||||
the Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
c) For a Combined Work that displays copyright notices during
|
||||
execution, include the copyright notice for the Library among
|
||||
these notices, as well as a reference directing the user to the
|
||||
copies of the GNU GPL and this license document.
|
||||
|
||||
d) Do one of the following:
|
||||
|
||||
0) Convey the Minimal Corresponding Source under the terms of this
|
||||
License, and the Corresponding Application Code in a form
|
||||
suitable for, and under terms that permit, the user to
|
||||
recombine or relink the Application with a modified version of
|
||||
the Linked Version to produce a modified Combined Work, in the
|
||||
manner specified by section 6 of the GNU GPL for conveying
|
||||
Corresponding Source.
|
||||
|
||||
1) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (a) uses at run time
|
||||
a copy of the Library already present on the user's computer
|
||||
system, and (b) will operate properly with a modified version
|
||||
of the Library that is interface-compatible with the Linked
|
||||
Version.
|
||||
|
||||
e) Provide Installation Information, but only if you would otherwise
|
||||
be required to provide such information under section 6 of the
|
||||
GNU GPL, and only to the extent that such information is
|
||||
necessary to install and execute a modified version of the
|
||||
Combined Work produced by recombining or relinking the
|
||||
Application with a modified version of the Linked Version. (If
|
||||
you use option 4d0, the Installation Information must accompany
|
||||
the Minimal Corresponding Source and Corresponding Application
|
||||
Code. If you use option 4d1, you must provide the Installation
|
||||
Information in the manner specified by section 6 of the GNU GPL
|
||||
for conveying Corresponding Source.)
|
||||
|
||||
5. Combined Libraries.
|
||||
|
||||
You may place library facilities that are a work based on the
|
||||
Library side by side in a single library together with other library
|
||||
facilities that are not Applications and are not covered by this
|
||||
License, and convey such a combined library under terms of your
|
||||
choice, if you do both of the following:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work based
|
||||
on the Library, uncombined with any other library facilities,
|
||||
conveyed under the terms of this License.
|
||||
|
||||
b) Give prominent notice with the combined library that part of it
|
||||
is a work based on the Library, and explaining where to find the
|
||||
accompanying uncombined form of the same work.
|
||||
|
||||
6. Revised Versions of the GNU Lesser General Public License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions
|
||||
of the GNU Lesser General Public License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Library as you received it specifies that a certain numbered version
|
||||
of the GNU Lesser General Public License "or any later version"
|
||||
applies to it, you have the option of following the terms and
|
||||
conditions either of that published version or of any later version
|
||||
published by the Free Software Foundation. If the Library as you
|
||||
received it does not specify a version number of the GNU Lesser
|
||||
General Public License, you may choose any version of the GNU Lesser
|
||||
General Public License ever published by the Free Software Foundation.
|
||||
|
||||
If the Library as you received it specifies that a proxy can decide
|
||||
whether future versions of the GNU Lesser General Public License shall
|
||||
apply, that proxy's public statement of acceptance of any version is
|
||||
permanent authorization for you to choose that version for the
|
||||
Library.
|
||||
@@ -1,6 +1,6 @@
|
||||
project(piintrospector)
|
||||
file(GLOB SRC "*.h" "*.cpp" "*.ui" "*.qrc" "lang/*.ts")
|
||||
set(PII_ROOT "../../pip/src_main/introspection")
|
||||
set(PII_ROOT "../../pip/lib/main/introspection")
|
||||
pip_code_model(PII_CCM "${PII_ROOT}/piintrospection_server_p.h" "${PII_ROOT}/piintrospection_threads_p.h" OPTIONS "-DPIP_EXPORT" "-Es")
|
||||
find_qt(${QtVersions} Core Gui)
|
||||
qt_wrap(${SRC} HDRS out_HDR CPPS out_CPP QMS out_QM)
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
PIQt Utils - Qt utilites for PIP
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef CONNECTION_EDIT_H
|
||||
#define CONNECTION_EDIT_H
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
PIQt Utils - Qt utilites for PIP
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef CONNECTION_VIEW_H
|
||||
#define CONNECTION_VIEW_H
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
PIQt Utils - Qt utilites for PIP
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef CONF_HIGHLIGHTER_H
|
||||
#define CONF_HIGHLIGHTER_H
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
PIQt Utils - Qt utilites for PIP
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef PIQT_IODEVICE_EDIT_H
|
||||
#define PIQT_IODEVICE_EDIT_H
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
PIQt Utils - Qt utilites for PIP
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef PIQT_IODEVICE_EDIT_DIALOG_H
|
||||
#define PIQT_IODEVICE_EDIT_DIALOG_H
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
PIQt Utils - Qt utilites for PIP
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef QPICONNECTION_H
|
||||
#define QPICONNECTION_H
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
\"Name\" : \"ProjectFilesystemPlugin\",
|
||||
\"Version\" : \"1.0.0\",
|
||||
\"CompatVersion\" : \"1.0.0\",
|
||||
\"Version\" : \"1.1.0\",
|
||||
\"CompatVersion\" : \"1.1.0\",
|
||||
\"Vendor\" : \"Peri4\",
|
||||
\"Copyright\" : \"(C) Peri4\",
|
||||
\"License\" : \"LGPLv3\",
|
||||
|
||||
@@ -29,6 +29,7 @@ QFileInfo projectfs_menu_target;
|
||||
|
||||
ProjectFilesystemWidget::ProjectFilesystemWidget(QWidget * parent): QWidget(parent) {
|
||||
setupUi(this);
|
||||
in_proc = need_rebuild = false;
|
||||
int is = style()->pixelMetric(QStyle::PM_ButtonIconSize, 0, this);
|
||||
label->setFixedSize(is, is);
|
||||
buttonClear->setIcon(Utils::Icons::CLEAN.icon());
|
||||
@@ -74,6 +75,7 @@ void ProjectFilesystemWidget::changeEvent(QEvent *e) {
|
||||
|
||||
void ProjectFilesystemWidget::createTree(QTreeWidgetItem * ti, const QString & dir) {
|
||||
QFileInfoList fl = QDir(dir).entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot, QDir::LocaleAware | QDir::DirsFirst);
|
||||
checkProcEvents();
|
||||
for (QFileInfo i: fl) {
|
||||
QString nit = i.fileName();
|
||||
if (i.isDir()) {
|
||||
@@ -163,7 +165,20 @@ void ProjectFilesystemWidget::setExtVariable() {
|
||||
}
|
||||
|
||||
|
||||
void ProjectFilesystemWidget::checkProcEvents() {
|
||||
if (tm.elapsed() < 10) return;
|
||||
QApplication::processEvents();
|
||||
tm.start();
|
||||
}
|
||||
|
||||
|
||||
void ProjectFilesystemWidget::projectsChanged() {
|
||||
if (in_proc) {
|
||||
need_rebuild = true;
|
||||
return;
|
||||
}
|
||||
in_proc = true;
|
||||
tm.start();
|
||||
last_expanded.clear();
|
||||
item_map.clear();
|
||||
int spos = tree->verticalScrollBar()->value();
|
||||
@@ -192,6 +207,11 @@ void ProjectFilesystemWidget::projectsChanged() {
|
||||
QApplication::restoreOverrideCursor();
|
||||
qApp->processEvents();
|
||||
tree->verticalScrollBar()->setValue(spos);
|
||||
in_proc = false;
|
||||
if (need_rebuild) {
|
||||
need_rebuild = false;
|
||||
projectsChanged();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include <extensionsystem/iplugin.h>
|
||||
#include <QSortFilterProxyModel>
|
||||
#include <QFileSystemModel>
|
||||
#include <QElapsedTimer>
|
||||
#include <QMenu>
|
||||
|
||||
extern QFileInfo projectfs_menu_target;
|
||||
@@ -32,13 +33,16 @@ protected:
|
||||
void rememberExpanded(QTreeWidgetItem * ti);
|
||||
void restoreExpanded(QTreeWidgetItem * ti);
|
||||
void setExtVariable();
|
||||
void checkProcEvents();
|
||||
|
||||
bool in_proc, need_rebuild;
|
||||
ExtensionSystem::IPlugin * proj_plug;
|
||||
QMenu popup_menu;
|
||||
QMap<QString, QTreeWidgetItem*> item_map;
|
||||
QSet<QString> last_expanded;
|
||||
FilterDialog filter_dialog;
|
||||
FilterDialog::Filter cur_filter;
|
||||
QElapsedTimer tm;
|
||||
|
||||
public slots:
|
||||
void projectsChanged();
|
||||
|
||||
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.0)
|
||||
cmake_policy(SET CMP0017 NEW) # need include() with .cmake
|
||||
project(qad)
|
||||
set(_QAD_MAJOR 1)
|
||||
set(_QAD_MINOR 1)
|
||||
set(_QAD_MINOR 5)
|
||||
set(_QAD_REVISION 0)
|
||||
set(_QAD_SUFFIX )
|
||||
set(_QAD_COMPANY SHS)
|
||||
@@ -48,7 +48,10 @@ endif()
|
||||
|
||||
|
||||
# Version
|
||||
set(QAD_VERSION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/qad_version.h")
|
||||
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/qad_version.h")
|
||||
file(REMOVE "${CMAKE_CURRENT_SOURCE_DIR}/qad_version.h")
|
||||
endif()
|
||||
set(QAD_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/qad_version.h")
|
||||
set_version(QAD
|
||||
MAJOR "${_QAD_MAJOR}"
|
||||
MINOR "${_QAD_MINOR}"
|
||||
|
||||
165
qad/LICENSE.txt
Normal file
165
qad/LICENSE.txt
Normal file
@@ -0,0 +1,165 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
||||
This version of the GNU Lesser General Public License incorporates
|
||||
the terms and conditions of version 3 of the GNU General Public
|
||||
License, supplemented by the additional permissions listed below.
|
||||
|
||||
0. Additional Definitions.
|
||||
|
||||
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||
General Public License.
|
||||
|
||||
"The Library" refers to a covered work governed by this License,
|
||||
other than an Application or a Combined Work as defined below.
|
||||
|
||||
An "Application" is any work that makes use of an interface provided
|
||||
by the Library, but which is not otherwise based on the Library.
|
||||
Defining a subclass of a class defined by the Library is deemed a mode
|
||||
of using an interface provided by the Library.
|
||||
|
||||
A "Combined Work" is a work produced by combining or linking an
|
||||
Application with the Library. The particular version of the Library
|
||||
with which the Combined Work was made is also called the "Linked
|
||||
Version".
|
||||
|
||||
The "Minimal Corresponding Source" for a Combined Work means the
|
||||
Corresponding Source for the Combined Work, excluding any source code
|
||||
for portions of the Combined Work that, considered in isolation, are
|
||||
based on the Application, and not on the Linked Version.
|
||||
|
||||
The "Corresponding Application Code" for a Combined Work means the
|
||||
object code and/or source code for the Application, including any data
|
||||
and utility programs needed for reproducing the Combined Work from the
|
||||
Application, but excluding the System Libraries of the Combined Work.
|
||||
|
||||
1. Exception to Section 3 of the GNU GPL.
|
||||
|
||||
You may convey a covered work under sections 3 and 4 of this License
|
||||
without being bound by section 3 of the GNU GPL.
|
||||
|
||||
2. Conveying Modified Versions.
|
||||
|
||||
If you modify a copy of the Library, and, in your modifications, a
|
||||
facility refers to a function or data to be supplied by an Application
|
||||
that uses the facility (other than as an argument passed when the
|
||||
facility is invoked), then you may convey a copy of the modified
|
||||
version:
|
||||
|
||||
a) under this License, provided that you make a good faith effort to
|
||||
ensure that, in the event an Application does not supply the
|
||||
function or data, the facility still operates, and performs
|
||||
whatever part of its purpose remains meaningful, or
|
||||
|
||||
b) under the GNU GPL, with none of the additional permissions of
|
||||
this License applicable to that copy.
|
||||
|
||||
3. Object Code Incorporating Material from Library Header Files.
|
||||
|
||||
The object code form of an Application may incorporate material from
|
||||
a header file that is part of the Library. You may convey such object
|
||||
code under terms of your choice, provided that, if the incorporated
|
||||
material is not limited to numerical parameters, data structure
|
||||
layouts and accessors, or small macros, inline functions and templates
|
||||
(ten or fewer lines in length), you do both of the following:
|
||||
|
||||
a) Give prominent notice with each copy of the object code that the
|
||||
Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
4. Combined Works.
|
||||
|
||||
You may convey a Combined Work under terms of your choice that,
|
||||
taken together, effectively do not restrict modification of the
|
||||
portions of the Library contained in the Combined Work and reverse
|
||||
engineering for debugging such modifications, if you also do each of
|
||||
the following:
|
||||
|
||||
a) Give prominent notice with each copy of the Combined Work that
|
||||
the Library is used in it and that the Library and its use are
|
||||
covered by this License.
|
||||
|
||||
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||
document.
|
||||
|
||||
c) For a Combined Work that displays copyright notices during
|
||||
execution, include the copyright notice for the Library among
|
||||
these notices, as well as a reference directing the user to the
|
||||
copies of the GNU GPL and this license document.
|
||||
|
||||
d) Do one of the following:
|
||||
|
||||
0) Convey the Minimal Corresponding Source under the terms of this
|
||||
License, and the Corresponding Application Code in a form
|
||||
suitable for, and under terms that permit, the user to
|
||||
recombine or relink the Application with a modified version of
|
||||
the Linked Version to produce a modified Combined Work, in the
|
||||
manner specified by section 6 of the GNU GPL for conveying
|
||||
Corresponding Source.
|
||||
|
||||
1) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (a) uses at run time
|
||||
a copy of the Library already present on the user's computer
|
||||
system, and (b) will operate properly with a modified version
|
||||
of the Library that is interface-compatible with the Linked
|
||||
Version.
|
||||
|
||||
e) Provide Installation Information, but only if you would otherwise
|
||||
be required to provide such information under section 6 of the
|
||||
GNU GPL, and only to the extent that such information is
|
||||
necessary to install and execute a modified version of the
|
||||
Combined Work produced by recombining or relinking the
|
||||
Application with a modified version of the Linked Version. (If
|
||||
you use option 4d0, the Installation Information must accompany
|
||||
the Minimal Corresponding Source and Corresponding Application
|
||||
Code. If you use option 4d1, you must provide the Installation
|
||||
Information in the manner specified by section 6 of the GNU GPL
|
||||
for conveying Corresponding Source.)
|
||||
|
||||
5. Combined Libraries.
|
||||
|
||||
You may place library facilities that are a work based on the
|
||||
Library side by side in a single library together with other library
|
||||
facilities that are not Applications and are not covered by this
|
||||
License, and convey such a combined library under terms of your
|
||||
choice, if you do both of the following:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work based
|
||||
on the Library, uncombined with any other library facilities,
|
||||
conveyed under the terms of this License.
|
||||
|
||||
b) Give prominent notice with the combined library that part of it
|
||||
is a work based on the Library, and explaining where to find the
|
||||
accompanying uncombined form of the same work.
|
||||
|
||||
6. Revised Versions of the GNU Lesser General Public License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions
|
||||
of the GNU Lesser General Public License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Library as you received it specifies that a certain numbered version
|
||||
of the GNU Lesser General Public License "or any later version"
|
||||
applies to it, you have the option of following the terms and
|
||||
conditions either of that published version or of any later version
|
||||
published by the Free Software Foundation. If the Library as you
|
||||
received it does not specify a version number of the GNU Lesser
|
||||
General Public License, you may choose any version of the GNU Lesser
|
||||
General Public License ever published by the Free Software Foundation.
|
||||
|
||||
If the Library as you received it specifies that a proxy can decide
|
||||
whether future versions of the GNU Lesser General Public License shall
|
||||
apply, that proxy's public statement of acceptance of any version is
|
||||
permanent authorization for you to choose that version for the
|
||||
Library.
|
||||
@@ -63,7 +63,7 @@ AboutWindow::AboutWindow(QWidget * parent): QDialog(parent), ui(new Ui::AboutWin
|
||||
//ui->verticalSpacer->changeSize(1, 1, QSizePolicy::Preferred, QSizePolicy::Preferred);
|
||||
#endif
|
||||
#ifdef MOBILE_VIEW
|
||||
// ui->layoutMain->addSpacerItem(new QSpacerItem(1, 1, QSizePolicy::Preferred, QSizePolicy::Expanding));
|
||||
ui->layoutMain->addSpacerItem(new QSpacerItem(1, 1, QSizePolicy::Preferred, QSizePolicy::Expanding));
|
||||
#else
|
||||
QRect r;
|
||||
# if QT_VERSION < 0x050000
|
||||
@@ -154,6 +154,7 @@ void AboutWindow::changeEvent(QEvent *e) {
|
||||
switch (e->type()) {
|
||||
case QEvent::LanguageChange:
|
||||
ui->retranslateUi(this);
|
||||
setWindowTitle(QApplication::applicationName() + " - " + tr("About"));
|
||||
break;
|
||||
case QEvent::FontChange:
|
||||
case QEvent::Polish:
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
QAD - Qt ADvanced
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef ABOUTWINDOW_H
|
||||
#define ABOUTWINDOW_H
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
QAD - Qt ADvanced
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef EDOCKWIDGET_H
|
||||
#define EDOCKWIDGET_H
|
||||
|
||||
@@ -15,8 +34,8 @@ class QAD_EXPORT EDockWidget: public QDockWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit EDockWidget(const QString & title, QWidget * parent = 0, Qt::WindowFlags flags = 0): QDockWidget(title, parent, flags) {init();}
|
||||
explicit EDockWidget(QWidget * parent = 0, Qt::WindowFlags flags = 0): QDockWidget(parent, flags) {init();}
|
||||
explicit EDockWidget(const QString & title, QWidget * parent = 0, Qt::WindowFlags flags = Qt::WindowFlags()): QDockWidget(title, parent, flags) {init();}
|
||||
explicit EDockWidget(QWidget * parent = 0, Qt::WindowFlags flags = Qt::WindowFlags()): QDockWidget(parent, flags) {init();}
|
||||
~EDockWidget() {delete btn_hide; delete btn_dock; delete lbl_title; delete lbl_icon; delete header;}
|
||||
|
||||
void setFeatures(QDockWidget::DockWidgetFeatures features);
|
||||
|
||||
@@ -31,7 +31,6 @@ action_show_all_docks(this), action_hide_all_docks(this), first_show(true) {
|
||||
EMainWindow::~EMainWindow() {
|
||||
if (tid > 0) killTimer(tid);
|
||||
tid = 0;
|
||||
saveSession();
|
||||
}
|
||||
|
||||
|
||||
@@ -72,6 +71,7 @@ void EMainWindow::showEvent(QShowEvent * e) {
|
||||
|
||||
void EMainWindow::closeEvent(QCloseEvent * e) {
|
||||
if (!checkSave()) e->ignore();
|
||||
else saveSession();
|
||||
}
|
||||
|
||||
|
||||
@@ -119,6 +119,22 @@ void EMainWindow::timerEvent(QTimerEvent * e) {
|
||||
}
|
||||
|
||||
|
||||
void EMainWindow::changeEvent(QEvent * e) {
|
||||
QMainWindow::changeEvent(e);
|
||||
switch (e->type()) {
|
||||
case QEvent::LanguageChange:
|
||||
action_show_all_tools.setText(tr("Show all"));
|
||||
action_show_all_docks.setText(tr("Show all"));
|
||||
action_hide_all_tools.setText(tr("Hide all"));
|
||||
action_hide_all_docks.setText(tr("Hide all"));
|
||||
action_clear_recent->setText(tr("Clear recent list"));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
QMenu * EMainWindow::createPopupMenu() {
|
||||
QMenu * menuPopup = new QMenu;
|
||||
QWidgetAction * wa;
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
QAD - Qt ADvanced
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef EMAINWINDOW_H
|
||||
#define EMAINWINDOW_H
|
||||
|
||||
@@ -73,6 +92,7 @@ protected:
|
||||
void closeEvent(QCloseEvent * );
|
||||
bool eventFilter(QObject * o, QEvent * e);
|
||||
void timerEvent(QTimerEvent * e);
|
||||
void changeEvent(QEvent * e);
|
||||
QMenu * createPopupMenu();
|
||||
void addToRecent(const QString & path);
|
||||
void prepareRecent();
|
||||
|
||||
@@ -91,6 +91,18 @@ bool ETabWidget::eventFilter(QObject * o, QEvent * e) {
|
||||
}
|
||||
|
||||
|
||||
void ETabWidget::changeEvent(QEvent * e) {
|
||||
QTabWidget::changeEvent(e);
|
||||
switch (e->type()) {
|
||||
case QEvent::LanguageChange:
|
||||
retranslate();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void ETabWidget::buttonClicked() {
|
||||
QToolButton * s = qobject_cast<QToolButton * >(sender());
|
||||
if (s == 0) return;
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
QAD - Qt ADvanced
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef ETABWIDGET_H
|
||||
#define ETABWIDGET_H
|
||||
|
||||
@@ -30,6 +49,7 @@ private:
|
||||
bool eventFilter(QObject * o, QEvent * e);
|
||||
void tabInserted(int) {emit countChanged();}
|
||||
void tabRemoved(int) {emit countChanged();}
|
||||
void changeEvent(QEvent * e);
|
||||
|
||||
struct TabButton {
|
||||
TabButton(int r, const QIcon & i, const QString & t) {role = r; icon = i; visible = true; srcToolTip = t; toolTip = QApplication::translate("MainWindow", t.toUtf8(), 0/*, QCoreApplication::UnicodeUTF8*/);}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "historyview.h"
|
||||
#include <QEvent>
|
||||
|
||||
|
||||
HistoryView::HistoryView(QWidget* parent): QListWidget(parent) {
|
||||
@@ -89,6 +90,18 @@ void HistoryView::checkLimit() {
|
||||
}
|
||||
|
||||
|
||||
void HistoryView::changeEvent(QEvent * e) {
|
||||
QListWidget::changeEvent(e);
|
||||
switch (e->type()) {
|
||||
case QEvent::LanguageChange:
|
||||
actions_[-1].text = tr("History cleared");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void HistoryView::itemClicked(QListWidgetItem * item) {
|
||||
if (!active_) return;
|
||||
if (index == row(item) + 1) return;
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
QAD - Qt ADvanced
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef HISTORYVIEW_H
|
||||
#define HISTORYVIEW_H
|
||||
|
||||
@@ -46,6 +65,7 @@ private:
|
||||
};
|
||||
|
||||
void checkLimit();
|
||||
void changeEvent(QEvent * e);
|
||||
QString actionText(int action, int count_);
|
||||
|
||||
QMap<int, Action> actions_;
|
||||
|
||||
144
qad/application/lang/qad_application_en.ts
Normal file
144
qad/application/lang/qad_application_en.ts
Normal file
@@ -0,0 +1,144 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="en_US">
|
||||
<context>
|
||||
<name>AboutWindow</name>
|
||||
<message>
|
||||
<location filename="../aboutwindow.ui" line="14"/>
|
||||
<source> - About</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../aboutwindow.ui" line="41"/>
|
||||
<source>Versions</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../aboutwindow.ui" line="56"/>
|
||||
<source>Build</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../aboutwindow.ui" line="71"/>
|
||||
<source>Authors</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../aboutwindow.ui" line="100"/>
|
||||
<source>About Qt...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../aboutwindow.ui" line="111"/>
|
||||
<source>OK</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../aboutwindow.cpp" line="33"/>
|
||||
<location filename="../aboutwindow.cpp" line="157"/>
|
||||
<source>About</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EMainWindow</name>
|
||||
<message>
|
||||
<location filename="../emainwindow.cpp" line="12"/>
|
||||
<location filename="../emainwindow.cpp" line="130"/>
|
||||
<source>Clear recent list</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../emainwindow.cpp" line="15"/>
|
||||
<location filename="../emainwindow.cpp" line="16"/>
|
||||
<location filename="../emainwindow.cpp" line="126"/>
|
||||
<location filename="../emainwindow.cpp" line="127"/>
|
||||
<source>Show all</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../emainwindow.cpp" line="17"/>
|
||||
<location filename="../emainwindow.cpp" line="18"/>
|
||||
<location filename="../emainwindow.cpp" line="128"/>
|
||||
<location filename="../emainwindow.cpp" line="129"/>
|
||||
<source>Hide all</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../emainwindow.cpp" line="152"/>
|
||||
<source>Toolbars</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../emainwindow.cpp" line="177"/>
|
||||
<source>Docks</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../emainwindow.cpp" line="395"/>
|
||||
<source>Select file to open</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../emainwindow.cpp" line="404"/>
|
||||
<source>Select files to open</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../emainwindow.cpp" line="414"/>
|
||||
<source>Save changes%1?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../emainwindow.cpp" line="414"/>
|
||||
<source> in</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../emainwindow.cpp" line="427"/>
|
||||
<source>Select file to save</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>HistoryView</name>
|
||||
<message>
|
||||
<location filename="../historyview.cpp" line="17"/>
|
||||
<location filename="../historyview.cpp" line="97"/>
|
||||
<source>History cleared</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>LogView</name>
|
||||
<message>
|
||||
<location filename="../logview.ui" line="92"/>
|
||||
<source>Category:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../logview.ui" line="119"/>
|
||||
<location filename="../logview.cpp" line="37"/>
|
||||
<location filename="../logview.cpp" line="133"/>
|
||||
<source>Clear</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../logview.cpp" line="35"/>
|
||||
<location filename="../logview.cpp" line="131"/>
|
||||
<source>Select All</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../logview.cpp" line="36"/>
|
||||
<location filename="../logview.cpp" line="132"/>
|
||||
<source>Copy</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../logview.cpp" line="46"/>
|
||||
<source>All</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
@@ -1,47 +1,101 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="ru_RU">
|
||||
<context>
|
||||
<name>AboutWindow</name>
|
||||
<message>
|
||||
<location filename="../aboutwindow.ui" line="14"/>
|
||||
<source> - About</source>
|
||||
<translation> - О программе</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../aboutwindow.ui" line="41"/>
|
||||
<source>Versions</source>
|
||||
<translation>Версии</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../aboutwindow.ui" line="56"/>
|
||||
<source>Build</source>
|
||||
<translation>Сборка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../aboutwindow.ui" line="71"/>
|
||||
<source>Authors</source>
|
||||
<translation>Авторы</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../aboutwindow.ui" line="100"/>
|
||||
<source>About Qt...</source>
|
||||
<translation>О Qt ...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../aboutwindow.ui" line="111"/>
|
||||
<source>OK</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../aboutwindow.cpp" line="33"/>
|
||||
<location filename="../aboutwindow.cpp" line="157"/>
|
||||
<source>About</source>
|
||||
<translation>О программе</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EMainWindow</name>
|
||||
<message>
|
||||
<location filename="../emainwindow.cpp" line="28"/>
|
||||
<location filename="../emainwindow.cpp" line="29"/>
|
||||
<location filename="../emainwindow.cpp" line="12"/>
|
||||
<location filename="../emainwindow.cpp" line="130"/>
|
||||
<source>Clear recent list</source>
|
||||
<translation>Очистить список недавних</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../emainwindow.cpp" line="15"/>
|
||||
<location filename="../emainwindow.cpp" line="16"/>
|
||||
<location filename="../emainwindow.cpp" line="126"/>
|
||||
<location filename="../emainwindow.cpp" line="127"/>
|
||||
<source>Show all</source>
|
||||
<translation>Показать все</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../emainwindow.cpp" line="30"/>
|
||||
<location filename="../emainwindow.cpp" line="31"/>
|
||||
<location filename="../emainwindow.cpp" line="17"/>
|
||||
<location filename="../emainwindow.cpp" line="18"/>
|
||||
<location filename="../emainwindow.cpp" line="128"/>
|
||||
<location filename="../emainwindow.cpp" line="129"/>
|
||||
<source>Hide all</source>
|
||||
<translation>Скрыть все</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../emainwindow.cpp" line="125"/>
|
||||
<location filename="../emainwindow.cpp" line="152"/>
|
||||
<source>Toolbars</source>
|
||||
<translation>Панели инструментов</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../emainwindow.cpp" line="150"/>
|
||||
<location filename="../emainwindow.cpp" line="177"/>
|
||||
<source>Docks</source>
|
||||
<translation>Окна</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../emainwindow.cpp" line="309"/>
|
||||
<location filename="../emainwindow.cpp" line="395"/>
|
||||
<source>Select file to open</source>
|
||||
<translation>Выбрать файл для открытия</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../emainwindow.cpp" line="317"/>
|
||||
<location filename="../emainwindow.cpp" line="404"/>
|
||||
<source>Select files to open</source>
|
||||
<translation>Выберите файлы для открытия</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../emainwindow.cpp" line="414"/>
|
||||
<source>Save changes%1?</source>
|
||||
<translation>Сохранить изменения%1?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../emainwindow.cpp" line="317"/>
|
||||
<location filename="../emainwindow.cpp" line="414"/>
|
||||
<source> in</source>
|
||||
<translation> в</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../emainwindow.cpp" line="329"/>
|
||||
<location filename="../emainwindow.cpp" line="427"/>
|
||||
<source>Select file to save</source>
|
||||
<translation>Выберите файл для сохранения</translation>
|
||||
</message>
|
||||
@@ -49,9 +103,42 @@
|
||||
<context>
|
||||
<name>HistoryView</name>
|
||||
<message>
|
||||
<location filename="../historyview.cpp" line="15"/>
|
||||
<location filename="../historyview.cpp" line="17"/>
|
||||
<location filename="../historyview.cpp" line="97"/>
|
||||
<source>History cleared</source>
|
||||
<translation>История очищена</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>LogView</name>
|
||||
<message>
|
||||
<location filename="../logview.ui" line="92"/>
|
||||
<source>Category:</source>
|
||||
<translation>Категория:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../logview.ui" line="119"/>
|
||||
<location filename="../logview.cpp" line="37"/>
|
||||
<location filename="../logview.cpp" line="133"/>
|
||||
<source>Clear</source>
|
||||
<translation>Очистить</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../logview.cpp" line="35"/>
|
||||
<location filename="../logview.cpp" line="131"/>
|
||||
<source>Select All</source>
|
||||
<translation>Выделить всё</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../logview.cpp" line="36"/>
|
||||
<location filename="../logview.cpp" line="132"/>
|
||||
<source>Copy</source>
|
||||
<translation>Копировать</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../logview.cpp" line="46"/>
|
||||
<source>All</source>
|
||||
<translation>Все</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
||||
2
qad/application/lang/update.bat
Normal file
2
qad/application/lang/update.bat
Normal file
@@ -0,0 +1,2 @@
|
||||
lupdate ../ -ts qad_application_ru.ts
|
||||
lupdate ../ -ts qad_application_en.ts
|
||||
294
qad/application/logview.cpp
Normal file
294
qad/application/logview.cpp
Normal file
@@ -0,0 +1,294 @@
|
||||
#include "logview.h"
|
||||
#include "ui_logview.h"
|
||||
#include "qad_types.h"
|
||||
#include "ecombobox.h"
|
||||
#include <QTextDocument>
|
||||
#include <QAbstractTextDocumentLayout>
|
||||
#include <QTextEdit>
|
||||
#include <QTextBlock>
|
||||
#include <QScrollBar>
|
||||
#include <QPixmap>
|
||||
#include <QEvent>
|
||||
|
||||
|
||||
LogView::Category::Category() {
|
||||
bold = false;
|
||||
}
|
||||
|
||||
|
||||
void LogView::Category::makeIcon(QSize size, QSize size_icon) {
|
||||
icon_image = QImage();
|
||||
if (!image.isNull())
|
||||
icon_image = image.scaled(size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
|
||||
QPixmap px = QPixmap::fromImage(image.scaled(size_icon, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
|
||||
icon.addPixmap(px, QIcon::Active);
|
||||
icon.addPixmap(px, QIcon::Disabled);
|
||||
icon.addPixmap(px, QIcon::Normal);
|
||||
icon.addPixmap(px, QIcon::Selected);
|
||||
}
|
||||
|
||||
|
||||
LogView::LogView(QWidget * parent): QWidget(parent) {
|
||||
ui = new Ui::LogView();
|
||||
ui->setupUi(this);
|
||||
ui->textEdit->setContextMenuPolicy(Qt::ActionsContextMenu);
|
||||
actionLogSelectAll = new QAction(QIcon(":/icons/select-all.png"), tr("Select All"), this);
|
||||
actionLogCopy = new QAction(QIcon(":/icons/edit-copy.png"), tr("Copy"), this);
|
||||
actionLogClear = new QAction(QIcon(":/icons/edit-clear.png"), tr("Clear"), this);
|
||||
connect(actionLogSelectAll, SIGNAL(triggered(bool)), ui->textEdit, SLOT(selectAll()));
|
||||
connect(actionLogCopy, SIGNAL(triggered(bool)), ui->textEdit, SLOT(copy()));
|
||||
connect(actionLogClear, SIGNAL(triggered(bool)), ui->textEdit, SLOT(clear()));
|
||||
ui->textEdit->addAction(actionLogSelectAll);
|
||||
ui->textEdit->addAction(actionLogCopy);
|
||||
ui->textEdit->addAction(actionLogClear);
|
||||
ui->buttonClear->setDefaultAction(ui->actionClear);
|
||||
ui->labelIconSearch->setFixedSize(preferredIconSize(1.2, this));
|
||||
ui->comboCategory->addItem(tr("All"));
|
||||
ui->textEdit->document()->setUndoRedoEnabled(false);
|
||||
setLinesLimit(10000);
|
||||
QTextCursor tc(ui->textEdit->document());
|
||||
def_cf = tc.charFormat();
|
||||
}
|
||||
|
||||
|
||||
LogView::~LogView() {
|
||||
delete ui;
|
||||
}
|
||||
|
||||
|
||||
const QTextEdit * LogView::textEdit() const {
|
||||
return ui->textEdit;
|
||||
}
|
||||
|
||||
|
||||
void LogView::setLogFont(QFont f) {
|
||||
ui->textEdit->document()->setDefaultFont(f);
|
||||
QTextCursor tc(ui->textEdit->document());
|
||||
def_cf = tc.charFormat();
|
||||
}
|
||||
|
||||
|
||||
QFont LogView::logFont() const {
|
||||
return ui->textEdit->document()->defaultFont();
|
||||
}
|
||||
|
||||
|
||||
bool LogView::isFilterVisible() const {
|
||||
return ui->widgetToolbar->isVisible();
|
||||
}
|
||||
|
||||
|
||||
int LogView::linesLimit() const {
|
||||
int ret = ui->textEdit->document()->maximumBlockCount();
|
||||
if (ret > 0) --ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
void LogView::registerCategory(const QString & label, QString keyword, const QImage & icon, QColor color, bool bold) {
|
||||
QRegularExpression regexp(keyword,
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
|
||||
QRegularExpression::PatternOptions(QRegularExpression::CaseInsensitiveOption)
|
||||
#else
|
||||
Qt::CaseInsensitive
|
||||
#endif
|
||||
);
|
||||
registerCategory(label, regexp, icon, color, bold);
|
||||
}
|
||||
|
||||
|
||||
void LogView::registerCategory(const QString & label, QRegularExpression regexp, const QImage & icon, QColor color, bool bold) {
|
||||
if (!regexp.isValid() || regexp.pattern().isEmpty()) return;
|
||||
removeCategory(regexp);
|
||||
Category c;
|
||||
c.regexp = regexp;
|
||||
c.label = label;
|
||||
c.image = icon;
|
||||
c.color = color;
|
||||
c.bold = bold;
|
||||
c.makeIcon(iconImageSize(), preferredIconSize(1., this));
|
||||
categories.append(c);
|
||||
ui->comboCategory->addItem(c.icon, label, QVariant(regexp));
|
||||
}
|
||||
|
||||
|
||||
void LogView::removeCategory(QString keyword) {
|
||||
QRegularExpression regexp(keyword,
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
|
||||
QRegularExpression::PatternOptions(QRegularExpression::CaseInsensitiveOption)
|
||||
#else
|
||||
Qt::CaseInsensitive
|
||||
#endif
|
||||
);
|
||||
removeCategory(regexp);
|
||||
}
|
||||
|
||||
|
||||
void LogView::removeCategory(QRegularExpression regexp) {
|
||||
Category c;
|
||||
c.regexp = regexp;
|
||||
categories.removeAll(c);
|
||||
for (int i = 1; i < ui->comboCategory->count(); ++i) {
|
||||
if (ui->comboCategory->itemData(i).
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
|
||||
toRegularExpression()
|
||||
#else
|
||||
toRegExp()
|
||||
#endif
|
||||
.pattern() == regexp.pattern()) {
|
||||
ui->comboCategory->removeItem(i);
|
||||
--i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LogView::clearCategories() {
|
||||
ui->comboCategory->blockSignals(true);
|
||||
while (ui->comboCategory->count() > 1)
|
||||
ui->comboCategory->removeItem(ui->comboCategory->count() - 1);
|
||||
categories.clear();
|
||||
ui->comboCategory->blockSignals(false);
|
||||
filter();
|
||||
}
|
||||
|
||||
|
||||
void LogView::addText(const QString & text, bool insert_newline) {
|
||||
if (text.isEmpty()) return;
|
||||
QTextCursor tc(ui->textEdit->document());
|
||||
QStringList sl = text.split("\n");
|
||||
tc.movePosition(QTextCursor::End);
|
||||
QScrollBar * bar = ui->textEdit->verticalScrollBar();
|
||||
bool at_end = (bar->value() == bar->maximum()) || bar->isHidden();
|
||||
for (int i = 0; i < sl.size(); ++i) {
|
||||
tc.insertText(sl[i]);
|
||||
if ((i < sl.size() - 1) || insert_newline)
|
||||
newLine();
|
||||
}
|
||||
if (at_end)
|
||||
scrollToBottom();
|
||||
}
|
||||
|
||||
|
||||
void LogView::changeEvent(QEvent * e) {
|
||||
QWidget::changeEvent(e);
|
||||
switch (e->type()) {
|
||||
case QEvent::LanguageChange:
|
||||
ui->retranslateUi(this);
|
||||
ui->comboCategory->setItemText(0, tr("All"));
|
||||
actionLogSelectAll->setText(tr("Select All"));
|
||||
actionLogCopy->setText(tr("Copy"));
|
||||
actionLogClear->setText(tr("Clear"));
|
||||
break;
|
||||
case QEvent::Polish: {
|
||||
ui->labelIconSearch->setFixedSize(preferredIconSize(1.2, this));
|
||||
QSize is = iconImageSize(), is_i = preferredIconSize(1., this);
|
||||
for (int i = 0; i < categories.size(); ++i)
|
||||
categories[i].makeIcon(is, is_i);
|
||||
} break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LogView::newLine() {
|
||||
QTextCursor tc(ui->textEdit->document());
|
||||
tc.movePosition(QTextCursor::End);
|
||||
tc.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor);
|
||||
QString line = tc.selectedText();
|
||||
QImage icon;
|
||||
foreach (const Category & c, categories) {
|
||||
if (line.contains(c.regexp)) {
|
||||
QTextCharFormat cf = def_cf;
|
||||
cf.setForeground(c.color);
|
||||
if (c.bold)
|
||||
cf.setFontWeight(QFont::Bold);
|
||||
tc.setCharFormat(cf);
|
||||
icon = c.icon_image;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!icon.isNull()) {
|
||||
tc.movePosition(QTextCursor::StartOfBlock, QTextCursor::MoveAnchor);
|
||||
tc.insertImage(icon);
|
||||
}
|
||||
QRegularExpression regexp =
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
|
||||
ui->comboCategory->currentData().toRegularExpression();
|
||||
#else
|
||||
ui->comboCategory->itemData(ui->comboCategory->currentIndex()).toRegExp();
|
||||
#endif
|
||||
QString fs = ui->lineEdit->text();
|
||||
if (isFilterVisible())
|
||||
filterBlock(tc.block(), fs, regexp);
|
||||
tc.movePosition(QTextCursor::End);
|
||||
tc.setCharFormat(def_cf);
|
||||
tc.insertBlock();
|
||||
}
|
||||
|
||||
|
||||
QSize LogView::iconImageSize() {
|
||||
int hei = QFontMetrics(ui->textEdit->document()->defaultFont()).height() / 1.25;
|
||||
return QSize(hei, hei);
|
||||
}
|
||||
|
||||
|
||||
void LogView::filterBlock(QTextBlock block, const QString & fs, const QRegularExpression & regexp) {
|
||||
bool vis = true;//, pvis = block.isVisible();
|
||||
QString line = block.text();
|
||||
if (!line.isEmpty()) {
|
||||
if (line[0] == QChar::ObjectReplacementCharacter)
|
||||
line.remove(0, 1);
|
||||
}
|
||||
if (regexp.isValid()) vis = vis && line.contains(regexp);
|
||||
if (!fs.isEmpty()) vis = vis && line.contains(fs, Qt::CaseInsensitive);
|
||||
block.setVisible(vis);
|
||||
//qDebug() << "filterBlock" << line << vis;
|
||||
//if (vis != pvis)
|
||||
// ;//ui->textEdit->document()->mar
|
||||
}
|
||||
|
||||
|
||||
void LogView::setFilterVisible(bool yes) {
|
||||
ui->widgetToolbar->setHidden(!yes);
|
||||
filter();
|
||||
}
|
||||
|
||||
|
||||
void LogView::setLinesLimit(int l) {
|
||||
ui->textEdit->document()->setMaximumBlockCount(l <= 0 ? 0 : l + 1);
|
||||
}
|
||||
|
||||
|
||||
void LogView::clear() {
|
||||
ui->textEdit->clear();
|
||||
}
|
||||
|
||||
|
||||
void LogView::scrollToBottom() {
|
||||
QScrollBar * bar = ui->textEdit->verticalScrollBar();
|
||||
bar->setValue(bar->maximum());
|
||||
}
|
||||
|
||||
|
||||
void LogView::filter() {
|
||||
QTextDocument * doc = ui->textEdit->document();
|
||||
int bc = doc->blockCount();
|
||||
QRegularExpression regexp;
|
||||
QString fs;
|
||||
if (isFilterVisible()) {
|
||||
regexp =
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
|
||||
ui->comboCategory->currentData().toRegularExpression();
|
||||
#else
|
||||
ui->comboCategory->itemData(ui->comboCategory->currentIndex()).toRegExp();
|
||||
#endif
|
||||
fs = ui->lineEdit->text();
|
||||
}
|
||||
QTextBlock bl;
|
||||
for (int i = 0; i < bc; ++i) {
|
||||
bl = doc->findBlockByNumber(i);
|
||||
filterBlock(bl, fs, regexp);
|
||||
}
|
||||
doc->markContentsDirty(0, bl.position() + bl.length());
|
||||
}
|
||||
114
qad/application/logview.h
Normal file
114
qad/application/logview.h
Normal file
@@ -0,0 +1,114 @@
|
||||
/*
|
||||
QAD - Qt ADvanced
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef LOGVIEW_H
|
||||
#define LOGVIEW_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <QIcon>
|
||||
#include <QImage>
|
||||
#include <QTextBlockFormat>
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
|
||||
# include <QRegularExpression>
|
||||
#else
|
||||
# include <QRegExp>
|
||||
typedef QRegExp QRegularExpression;
|
||||
#endif
|
||||
#include "qad_export.h"
|
||||
|
||||
class QTextEdit;
|
||||
class QTextBlock;
|
||||
class QAction;
|
||||
|
||||
namespace Ui {
|
||||
class LogView;
|
||||
}
|
||||
|
||||
class QAD_EXPORT LogView: public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(bool filterVisible READ isFilterVisible WRITE setFilterVisible)
|
||||
Q_PROPERTY(int linesLimit READ linesLimit WRITE setLinesLimit)
|
||||
Q_PROPERTY(QFont logFont READ logFont WRITE setLogFont)
|
||||
public:
|
||||
explicit LogView(QWidget * parent = 0);
|
||||
~LogView();
|
||||
|
||||
const QTextEdit * textEdit() const;
|
||||
void setLogFont(QFont f);
|
||||
QFont logFont() const;
|
||||
|
||||
bool isFilterVisible() const;
|
||||
int linesLimit() const;
|
||||
|
||||
void registerCategory(const QString & label,
|
||||
QString keyword = QString(),
|
||||
const QImage & icon = QImage(),
|
||||
QColor color = QColor(),
|
||||
bool bold = false);
|
||||
|
||||
void registerCategory(const QString & label,
|
||||
QRegularExpression regexp,
|
||||
const QImage & icon = QImage(),
|
||||
QColor color = QColor(),
|
||||
bool bold = false);
|
||||
void removeCategory(QString keyword);
|
||||
void removeCategory(QRegularExpression regexp);
|
||||
void clearCategories();
|
||||
|
||||
void addText(const QString & text, bool insert_newline = true);
|
||||
|
||||
private:
|
||||
struct Category {
|
||||
Category();
|
||||
void makeIcon(QSize size, QSize size_icon);
|
||||
QString label;
|
||||
QRegularExpression regexp;
|
||||
QImage image, icon_image;
|
||||
QIcon icon;
|
||||
QColor color;
|
||||
bool bold;
|
||||
inline bool operator ==(const Category & it) const {return (regexp.pattern() == it.regexp.pattern());}
|
||||
};
|
||||
|
||||
void changeEvent(QEvent * e);
|
||||
void newLine();
|
||||
QSize iconImageSize();
|
||||
void filterBlock(QTextBlock block, const QString & fs, const QRegularExpression & regexp);
|
||||
|
||||
Ui::LogView * ui;
|
||||
QList<Category> categories;
|
||||
QTextCharFormat def_cf;
|
||||
QAction * actionLogSelectAll, * actionLogCopy, * actionLogClear;
|
||||
|
||||
public slots:
|
||||
void setFilterVisible(bool yes);
|
||||
void setLinesLimit(int l);
|
||||
void clear();
|
||||
|
||||
private slots:
|
||||
void scrollToBottom();
|
||||
void filter();
|
||||
|
||||
signals:
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif // LOGVIEW_H
|
||||
198
qad/application/logview.ui
Normal file
198
qad/application/logview.ui
Normal file
@@ -0,0 +1,198 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>LogView</class>
|
||||
<widget class="QWidget" name="LogView">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>724</width>
|
||||
<height>502</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QWidget" name="widgetToolbar" native="true">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QToolButton" name="buttonClear"/>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Preferred</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>1</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="labelIconSearch">
|
||||
<property name="pixmap">
|
||||
<pixmap resource="qad_application.qrc">:/icons/edit-find.png</pixmap>
|
||||
</property>
|
||||
<property name="scaledContents">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="CLineEdit" name="lineEdit"/>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Preferred</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>1</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Category:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="EComboBox" name="comboCategory"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTextEdit" name="textEdit">
|
||||
<property name="undoRedoEnabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="acceptRichText">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="textInteractionFlags">
|
||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
<action name="actionClear">
|
||||
<property name="icon">
|
||||
<iconset resource="qad_application.qrc">
|
||||
<normaloff>:/icons/edit-clear.png</normaloff>:/icons/edit-clear.png</iconset>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Clear</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>CLineEdit</class>
|
||||
<extends>QLineEdit</extends>
|
||||
<header>clineedit.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>EComboBox</class>
|
||||
<extends>QComboBox</extends>
|
||||
<header>ecombobox.h</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources>
|
||||
<include location="qad_application.qrc"/>
|
||||
</resources>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>actionClear</sender>
|
||||
<signal>triggered()</signal>
|
||||
<receiver>LogView</receiver>
|
||||
<slot>clear()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>-1</x>
|
||||
<y>-1</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>361</x>
|
||||
<y>250</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>lineEdit</sender>
|
||||
<signal>textChanged(QString)</signal>
|
||||
<receiver>LogView</receiver>
|
||||
<slot>filter()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>544</x>
|
||||
<y>138</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>728</x>
|
||||
<y>90</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>comboCategory</sender>
|
||||
<signal>currentIndexChanged(int)</signal>
|
||||
<receiver>LogView</receiver>
|
||||
<slot>filter()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>675</x>
|
||||
<y>134</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>728</x>
|
||||
<y>76</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
<slots>
|
||||
<slot>clear()</slot>
|
||||
<slot>filter()</slot>
|
||||
</slots>
|
||||
</ui>
|
||||
69
qad/application/plugin/logviewplugin.cpp
Normal file
69
qad/application/plugin/logviewplugin.cpp
Normal file
@@ -0,0 +1,69 @@
|
||||
#include "logview.h"
|
||||
#include "logviewplugin.h"
|
||||
#include <QtCore/QtPlugin>
|
||||
|
||||
|
||||
LogViewPlugin::LogViewPlugin(QObject * parent): QObject(parent) {
|
||||
m_initialized = false;
|
||||
}
|
||||
|
||||
|
||||
void LogViewPlugin::initialize(QDesignerFormEditorInterface * /* core */) {
|
||||
if (m_initialized)
|
||||
return;
|
||||
|
||||
// Add extension registrations, etc. here
|
||||
|
||||
m_initialized = true;
|
||||
}
|
||||
|
||||
|
||||
bool LogViewPlugin::isInitialized() const {
|
||||
return m_initialized;
|
||||
}
|
||||
|
||||
|
||||
QWidget * LogViewPlugin::createWidget(QWidget * parent) {
|
||||
return new LogView(parent);
|
||||
}
|
||||
|
||||
|
||||
QString LogViewPlugin::name() const {
|
||||
return QLatin1String("LogView");
|
||||
}
|
||||
|
||||
|
||||
QString LogViewPlugin::group() const {
|
||||
return QLatin1String("Display Widgets");
|
||||
}
|
||||
|
||||
|
||||
QIcon LogViewPlugin::icon() const {
|
||||
return QIcon(":/icons/logview.png");
|
||||
}
|
||||
|
||||
|
||||
QString LogViewPlugin::toolTip() const {
|
||||
return QLatin1String("");
|
||||
}
|
||||
|
||||
|
||||
QString LogViewPlugin::whatsThis() const {
|
||||
return QLatin1String("");
|
||||
}
|
||||
|
||||
|
||||
bool LogViewPlugin::isContainer() const {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
QString LogViewPlugin::domXml() const {
|
||||
return QLatin1String("<widget class=\"LogView\" name=\"logView\">\n</widget>\n");
|
||||
}
|
||||
|
||||
|
||||
QString LogViewPlugin::includeFile() const {
|
||||
return QLatin1String("logview.h");
|
||||
}
|
||||
|
||||
36
qad/application/plugin/logviewplugin.h
Normal file
36
qad/application/plugin/logviewplugin.h
Normal file
@@ -0,0 +1,36 @@
|
||||
#ifndef LOGVIEWPLUGIN_H
|
||||
#define LOGVIEWPLUGIN_H
|
||||
|
||||
#include <QObject>
|
||||
#if QT_VERSION >= 0x050000
|
||||
# include <QtUiPlugin/QDesignerCustomWidgetInterface>
|
||||
#else
|
||||
# include <QDesignerCustomWidgetInterface>
|
||||
#endif
|
||||
|
||||
class LogViewPlugin: public QObject, public QDesignerCustomWidgetInterface
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_INTERFACES(QDesignerCustomWidgetInterface)
|
||||
|
||||
public:
|
||||
LogViewPlugin(QObject * parent = 0);
|
||||
|
||||
bool isContainer() const;
|
||||
bool isInitialized() const;
|
||||
QIcon icon() const;
|
||||
QString domXml() const;
|
||||
QString group() const;
|
||||
QString includeFile() const;
|
||||
QString name() const;
|
||||
QString toolTip() const;
|
||||
QString whatsThis() const;
|
||||
QWidget * createWidget(QWidget * parent);
|
||||
void initialize(QDesignerFormEditorInterface * core);
|
||||
|
||||
private:
|
||||
bool m_initialized;
|
||||
|
||||
};
|
||||
|
||||
#endif // LOGVIEWPLUGIN_H
|
||||
@@ -2,12 +2,14 @@
|
||||
#include "edockwidgetplugin.h"
|
||||
#include "emainwindowplugin.h"
|
||||
#include "historyviewplugin.h"
|
||||
#include "logviewplugin.h"
|
||||
|
||||
|
||||
QADApplication::QADApplication(QObject * parent): QObject(parent) {
|
||||
//m_widgets.append(new EDockWidgetPlugin(this));
|
||||
m_widgets.append(new EMainWindowPlugin(this));
|
||||
m_widgets.append(new HistoryViewPlugin(this));
|
||||
m_widgets.append(new LogViewPlugin(this));
|
||||
}
|
||||
|
||||
|
||||
@@ -17,5 +19,5 @@ QList<QDesignerCustomWidgetInterface * > QADApplication::customWidgets() const {
|
||||
|
||||
|
||||
#if QT_VERSION < 0x050000
|
||||
Q_EXPORT_PLUGIN2(qad_graphic_plugin, QADApplication)
|
||||
Q_EXPORT_PLUGIN2(qad_application_plugin, QADApplication)
|
||||
#endif
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
<file>../icons/clear-history.png</file>
|
||||
<file>../icons/layer-visible-off.png</file>
|
||||
<file>../icons/layer-visible-on.png</file>
|
||||
<file>../icons/logview.png</file>
|
||||
<file>../icons/qt.png</file>
|
||||
<file>../icons/select-all.png</file>
|
||||
<file>../icons/select-none.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
QAD - Qt ADvanced
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef QSINGLEAPPLICATION_H
|
||||
#define QSINGLEAPPLICATION_H
|
||||
|
||||
|
||||
@@ -49,6 +49,18 @@ void Ribbon::timerEvent(QTimerEvent * e) {
|
||||
}
|
||||
|
||||
|
||||
void Ribbon::changeEvent(QEvent * e) {
|
||||
QToolBar::changeEvent(e);
|
||||
switch (e->type()) {
|
||||
case QEvent::LanguageChange:
|
||||
retranslate();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Ribbon::_resize() {
|
||||
return; // WARNING
|
||||
for (int i = 0; i < tab->count(); ++i) {
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
QAD - Qt ADvanced
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef RIBBON_H
|
||||
#define RIBBON_H
|
||||
|
||||
@@ -35,6 +54,7 @@ public:
|
||||
private:
|
||||
bool eventFilter(QObject * o, QEvent * e);
|
||||
void timerEvent(QTimerEvent * e);
|
||||
void changeEvent(QEvent *e);
|
||||
void _resize();
|
||||
void _setIconsSize();
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
QAD - Qt ADvanced
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef ALIGNEDTEXTITEM_H
|
||||
#define ALIGNEDTEXTITEM_H
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
QAD - Qt ADvanced
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef BLOCKBASE_H
|
||||
#define BLOCKBASE_H
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
QAD - Qt ADvanced
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef BLOCKBUSITEM_H
|
||||
#define BLOCKBUSITEM_H
|
||||
|
||||
|
||||
@@ -173,6 +173,17 @@ bool BlockEditor::eventFilter(QObject *o, QEvent *e) {
|
||||
}
|
||||
|
||||
|
||||
void BlockEditor::changeEvent(QEvent * e) {
|
||||
QWidget::changeEvent(e);
|
||||
switch (e->type()) {
|
||||
case QEvent::LanguageChange:
|
||||
ui->retranslateUi(this);
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void BlockEditor::on_actionRemove_items_triggered() {
|
||||
QList<QGraphicsItem*> si = ui->blockView->scene()->selectedItems();
|
||||
foreach (QGraphicsItem * i, si)
|
||||
@@ -342,12 +353,12 @@ QWidget * PinAlignDelegate::createEditor(QWidget * parent, const QStyleOptionVie
|
||||
QString PinAlignDelegate::displayText(const QVariant & value, const QLocale & locale) const {
|
||||
int cv = value.toInt();
|
||||
switch (cv) {
|
||||
case Qt::AlignLeft: return "Left"; break;
|
||||
case Qt::AlignRight: return "Right"; break;
|
||||
case Qt::AlignTop: return "Top"; break;
|
||||
case Qt::AlignBottom: return "Bottom"; break;
|
||||
case Qt::AlignLeft: return tr("Left"); break;
|
||||
case Qt::AlignRight: return tr("Right"); break;
|
||||
case Qt::AlignTop: return tr("Top"); break;
|
||||
case Qt::AlignBottom: return tr("Bottom"); break;
|
||||
}
|
||||
return "unknown";
|
||||
return tr("unknown");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
QAD - Qt ADvanced
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef BLOCKEDITOR_H
|
||||
#define BLOCKEDITOR_H
|
||||
|
||||
@@ -52,6 +71,7 @@ private slots:
|
||||
|
||||
private:
|
||||
bool eventFilter(QObject * o, QEvent * e);
|
||||
void changeEvent(QEvent * e);
|
||||
|
||||
Ui::BlockEditor *ui;
|
||||
QMap<int, QTreeWidgetItem*> pin_tli;
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
QAD - Qt ADvanced
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef BLOCKITEM_H
|
||||
#define BLOCKITEM_H
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
QAD - Qt ADvanced
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef BLOCKITEMPIN_H
|
||||
#define BLOCKITEMPIN_H
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
QAD - Qt ADvanced
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef BLOCKVIEW_H
|
||||
#define BLOCKVIEW_H
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
QAD - Qt ADvanced
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef BLOCKVIEWWAVETRACE_H
|
||||
#define BLOCKVIEWWAVETRACE_H
|
||||
|
||||
|
||||
@@ -225,7 +225,7 @@ bool _DTSizeItem::sceneEventFilter(QGraphicsItem * watched, QEvent * event) {
|
||||
|
||||
|
||||
|
||||
DrawTools::DrawTools(BlockView * parent): QObject(parent),
|
||||
DrawTools::DrawTools(BlockView * parent): QWidget(parent),
|
||||
actions_Z_up(this), actions_Z_top(this), actions_Z_down(this), actions_Z_bottom(this) {
|
||||
widget_props = new QWidget();
|
||||
ui = new Ui::DrawTools();
|
||||
@@ -238,9 +238,6 @@ actions_Z_up(this), actions_Z_top(this), actions_Z_down(this), actions_Z_bottom(
|
||||
int fh = qMax<int>(QApplication::fontMetrics().size(0, "0").height(), 22);
|
||||
int thick = lineThickness();
|
||||
QSize sz(fh * 2.5, fh);
|
||||
QStringList styles;
|
||||
styles << tr("NoPen") << tr("Solid") << tr("Dash")
|
||||
<< tr("Dot") << tr("Dash-Dot") << tr("Dash-Dot-Dot");
|
||||
ui->comboLineStyle->setIconSize(sz);
|
||||
for (int i = 0; i < 6; i++) {
|
||||
QPixmap pix(sz);
|
||||
@@ -249,7 +246,7 @@ actions_Z_up(this), actions_Z_top(this), actions_Z_down(this), actions_Z_bottom(
|
||||
p.setPen(QPen(Qt::black, thick, (Qt::PenStyle)i));
|
||||
p.drawLine(0, pix.height() / 2, pix.width(), pix.height() / 2);
|
||||
p.end();
|
||||
ui->comboLineStyle->addItem(QIcon(pix), styles[i]);
|
||||
ui->comboLineStyle->addItem(QIcon(pix), "");
|
||||
}
|
||||
#ifdef Q_OS_MACOS
|
||||
setAlignCompact(true);
|
||||
@@ -264,22 +261,21 @@ actions_Z_up(this), actions_Z_top(this), actions_Z_down(this), actions_Z_bottom(
|
||||
new_item = cur_item = 0;
|
||||
view_ = 0;
|
||||
resize_enabled = true;
|
||||
text_dlg.setWindowTitle(tr("Edit text"));
|
||||
text_dlg.setLayout(new QBoxLayout(QBoxLayout::TopToBottom));
|
||||
QDialogButtonBox * bbox = new QDialogButtonBox(QDialogButtonBox::Save | QDialogButtonBox::Cancel);
|
||||
connect(bbox, SIGNAL(accepted()), &text_dlg, SLOT(accept()));
|
||||
connect(bbox, SIGNAL(rejected()), &text_dlg, SLOT(reject()));
|
||||
text_dlg.layout()->addWidget(&text_edit);
|
||||
text_dlg.layout()->addWidget(bbox);
|
||||
actions_Z_up.setText(tr("Bring\nforward")); actions_Z_up.setIcon(QIcon(":/icons/z-up.png")); actions_Z_up.setEnabled(false);
|
||||
actions_Z_top.setText(tr("Bring\nto front")); actions_Z_top.setIcon(QIcon(":/icons/z-top.png")); actions_Z_top.setEnabled(false);
|
||||
actions_Z_down.setText(tr("Send\nbackward")); actions_Z_down.setIcon(QIcon(":/icons/z-down.png")); actions_Z_down.setEnabled(false);
|
||||
actions_Z_bottom.setText(tr("Send\nto back")); actions_Z_bottom.setIcon(QIcon(":/icons/z-bottom.png")); actions_Z_bottom.setEnabled(false);
|
||||
actions_add << newAction(tr("Draw\nRectangle"), QIcon(":/icons/draw-rectangle.png"), 1)
|
||||
<< newAction(tr("Draw\nEllipse"), QIcon(":/icons/draw-ellipse.png"), 2)
|
||||
<< newAction(tr("Draw\nLine"), QIcon(":/icons/draw-line.png"), 4)
|
||||
<< newAction(tr("Draw\nText"), QIcon(":/icons/draw-text.png"), 0)
|
||||
<< newAction(tr("Draw\nImage"), QIcon(":/icons/view-preview.png"), 3);
|
||||
actions_Z_up.setIcon(QIcon(":/icons/z-up.png")); actions_Z_up.setEnabled(false);
|
||||
actions_Z_top.setIcon(QIcon(":/icons/z-top.png")); actions_Z_top.setEnabled(false);
|
||||
actions_Z_down.setIcon(QIcon(":/icons/z-down.png")); actions_Z_down.setEnabled(false);
|
||||
actions_Z_bottom.setIcon(QIcon(":/icons/z-bottom.png")); actions_Z_bottom.setEnabled(false);
|
||||
actions_add << newAction(QIcon(":/icons/draw-rectangle.png"), 1)
|
||||
<< newAction(QIcon(":/icons/draw-ellipse.png"), 2)
|
||||
<< newAction(QIcon(":/icons/draw-line.png"), 4)
|
||||
<< newAction(QIcon(":/icons/draw-text.png"), 0)
|
||||
<< newAction(QIcon(":/icons/view-preview.png"), 3);
|
||||
buttons_align << ui->buttonAlignTL << ui->buttonAlignTC << ui->buttonAlignTR
|
||||
<< ui->buttonAlignCL << ui->buttonAlignCC << ui->buttonAlignCR
|
||||
<< ui->buttonAlignBL << ui->buttonAlignBC << ui->buttonAlignBR;
|
||||
@@ -321,6 +317,7 @@ actions_Z_up(this), actions_Z_top(this), actions_Z_down(this), actions_Z_bottom(
|
||||
connect(&actions_Z_down, SIGNAL(triggered(bool)), this, SLOT(actionZ_triggered()));
|
||||
connect(&actions_Z_bottom, SIGNAL(triggered(bool)), this, SLOT(actionZ_triggered()));
|
||||
setBlockView(parent);
|
||||
retranslate();
|
||||
}
|
||||
|
||||
|
||||
@@ -331,6 +328,24 @@ DrawTools::~DrawTools() {
|
||||
}
|
||||
|
||||
|
||||
void DrawTools::retranslate() {
|
||||
QStringList styles;
|
||||
styles << tr("NoPen") << tr("Solid") << tr("Dash")
|
||||
<< tr("Dot") << tr("Dash-Dot") << tr("Dash-Dot-Dot");
|
||||
for (int i = 0; i < styles.size(); i++) ui->comboLineStyle->setItemText(i, styles[i]);
|
||||
text_dlg.setWindowTitle(tr("Edit text"));
|
||||
actions_Z_up.setText(tr("Bring\nforward"));
|
||||
actions_Z_top.setText(tr("Bring\nto front"));
|
||||
actions_Z_down.setText(tr("Send\nbackward"));
|
||||
actions_Z_bottom.setText(tr("Send\nto back"));
|
||||
actions_add[0]->setText(tr("Draw\nRectangle"));
|
||||
actions_add[1]->setText(tr("Draw\nEllipse"));
|
||||
actions_add[2]->setText(tr("Draw\nLine"));
|
||||
actions_add[3]->setText(tr("Draw\nText"));
|
||||
actions_add[4]->setText(tr("Draw\nImage"));
|
||||
}
|
||||
|
||||
|
||||
void DrawTools::setBlockView(BlockView * v) {
|
||||
if (view_) view_->viewport()->removeEventFilter(this);
|
||||
disconnect(this, SLOT(selectionChanged()));
|
||||
@@ -454,6 +469,18 @@ bool DrawTools::eventFilter(QObject * o, QEvent * e) {
|
||||
}
|
||||
|
||||
|
||||
void DrawTools::changeEvent(QEvent * e) {
|
||||
QWidget::changeEvent(e);
|
||||
switch (e->type()) {
|
||||
case QEvent::LanguageChange:
|
||||
ui->retranslateUi(this);
|
||||
retranslate();
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
QComboBox * DrawTools::textEditCombo() const {
|
||||
return ui->comboText;
|
||||
}
|
||||
@@ -468,8 +495,8 @@ void DrawTools::changeEvent(QEvent * e) {
|
||||
}
|
||||
*/
|
||||
|
||||
QAction * DrawTools::newAction(const QString & text, const QIcon & icon, int type) {
|
||||
QAction * ret = new QAction(icon, text, this);
|
||||
QAction * DrawTools::newAction(const QIcon & icon, int type) {
|
||||
QAction * ret = new QAction(icon, QString(), this);
|
||||
ret->setCheckable(true);
|
||||
ret->setData(type);
|
||||
return ret;
|
||||
@@ -509,7 +536,7 @@ void DrawTools::alignClicked() {
|
||||
}
|
||||
|
||||
|
||||
void DrawTools::setTollButtonsEnabled(bool pen, bool brush, bool wid_hei) {
|
||||
void DrawTools::setToolButtonsEnabled(bool pen, bool brush, bool wid_hei) {
|
||||
ui->labelPen->setEnabled(pen);
|
||||
ui->colorButtonPen->setEnabled(pen);
|
||||
ui->labelBrush->setEnabled(brush);
|
||||
@@ -620,7 +647,7 @@ void DrawTools::selectionChanged() {
|
||||
font_dlg.blockSignals(true);
|
||||
font_dlg.setCurrentFont(itext->font());
|
||||
font_dlg.blockSignals(false);
|
||||
setTollButtonsEnabled(true, false, false);
|
||||
setToolButtonsEnabled(true, false, false);
|
||||
ui->widgetAlign2->setEnabled(false);
|
||||
ui->widgetAlign9->setEnabled(false);
|
||||
size_item.assignObject(itext);
|
||||
@@ -631,7 +658,7 @@ void DrawTools::selectionChanged() {
|
||||
font_dlg.blockSignals(true);
|
||||
font_dlg.setCurrentFont(iatext->font());
|
||||
font_dlg.blockSignals(false);
|
||||
setTollButtonsEnabled(true, false, false);
|
||||
setToolButtonsEnabled(true, false, false);
|
||||
foreach (QAction * a, menu_hor.actions()) a->setChecked(false);
|
||||
foreach (QAction * a, menu_ver.actions()) a->setChecked(false);
|
||||
align = iatext->alignment();
|
||||
@@ -655,7 +682,7 @@ void DrawTools::selectionChanged() {
|
||||
} else if (ipixmap) {
|
||||
ui->stackedProperties->setCurrentIndex(2);
|
||||
ui->spinScale->setValue(sqrt(ipixmap->transform().determinant()));
|
||||
setTollButtonsEnabled(false, false, false);
|
||||
setToolButtonsEnabled(false, false, false);
|
||||
size_item.assignObject(ipixmap);
|
||||
} else if (irect || iell) {
|
||||
ui->stackedProperties->setCurrentIndex(1);
|
||||
@@ -675,7 +702,7 @@ void DrawTools::selectionChanged() {
|
||||
ui->colorButtonBrush->setColor(ishape->brush().color());
|
||||
ui->spinThick->setValue(ishape->pen().widthF());
|
||||
ui->comboLineStyle->setCurrentIndex(qMin<int>((int)ishape->pen().style(), ui->comboLineStyle->count() - 1));
|
||||
setTollButtonsEnabled(true, true, true);
|
||||
setToolButtonsEnabled(true, true, true);
|
||||
if (resize_enabled)
|
||||
size_item.assignObject(ishape);
|
||||
}
|
||||
@@ -684,7 +711,7 @@ void DrawTools::selectionChanged() {
|
||||
ui->colorButtonPen->setColor(iline->pen().color());
|
||||
ui->spinThick->setValue(iline->pen().widthF());
|
||||
ui->comboLineStyle->setCurrentIndex(qMin<int>((int)iline->pen().style(), ui->comboLineStyle->count() - 1));
|
||||
setTollButtonsEnabled(true, false, false);
|
||||
setToolButtonsEnabled(true, false, false);
|
||||
if (resize_enabled)
|
||||
size_item.assignObject(iline);
|
||||
} else {
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
QAD - Qt ADvanced
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef DRAWTOOLS_H
|
||||
#define DRAWTOOLS_H
|
||||
|
||||
@@ -53,7 +72,7 @@ namespace Ui {
|
||||
}
|
||||
|
||||
|
||||
class QAD_EXPORT DrawTools: public QObject
|
||||
class QAD_EXPORT DrawTools: public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(bool resizeHandlesEnabled READ isResizeHandlesEnabled WRITE setResizeHandlesEnabled)
|
||||
@@ -73,9 +92,10 @@ public:
|
||||
|
||||
protected:
|
||||
bool eventFilter(QObject * o, QEvent * e);
|
||||
void changeEvent(QEvent * e);
|
||||
|
||||
QAction * newAction(const QString & text, const QIcon & icon, int type);
|
||||
void setTollButtonsEnabled(bool pen, bool brush, bool wid_hei);
|
||||
QAction * newAction(const QIcon & icon, int type);
|
||||
void setToolButtonsEnabled(bool pen, bool brush, bool wid_hei);
|
||||
void blockPropSignals(bool block_);
|
||||
void actionAlignTrigger(bool vert, Qt::AlignmentFlag value);
|
||||
void emitZAvailabe(QGraphicsItem * item = 0);
|
||||
@@ -131,6 +151,8 @@ signals:
|
||||
void itemEdited(QGraphicsItem * item);
|
||||
void itemZChanged(QGraphicsItem * item);
|
||||
|
||||
private:
|
||||
void retranslate();
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -526,22 +526,6 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2" rowspan="2">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Preferred</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QLabel" name="labelStyle">
|
||||
<property name="sizePolicy">
|
||||
@@ -561,6 +545,22 @@
|
||||
<item row="1" column="4">
|
||||
<widget class="QComboBox" name="comboLineStyle"/>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Preferred</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
|
||||
383
qad/blockview/lang/qad_blockview_en.ts
Normal file
383
qad/blockview/lang/qad_blockview_en.ts
Normal file
@@ -0,0 +1,383 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="en_US">
|
||||
<context>
|
||||
<name>BlockBusItem</name>
|
||||
<message>
|
||||
<location filename="../blockbusitem.cpp" line="499"/>
|
||||
<source>Add point: Ctrl + LeftClick
|
||||
Remove point\segment: Ctrl + RightClick
|
||||
New branch: Shift + LeftClick
|
||||
Remove connection: Shift + RightClick</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>BlockEditor</name>
|
||||
<message>
|
||||
<location filename="../blockeditor.ui" line="14"/>
|
||||
<source>Block editor</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.ui" line="32"/>
|
||||
<source>Block parameters</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.ui" line="59"/>
|
||||
<source>Width:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.ui" line="79"/>
|
||||
<source>Heigth:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.ui" line="99"/>
|
||||
<source>Pins margin:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.ui" line="119"/>
|
||||
<source>Color:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.ui" line="130"/>
|
||||
<source>Pins</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.ui" line="179"/>
|
||||
<source>Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.ui" line="184"/>
|
||||
<source>Bus</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.ui" line="194"/>
|
||||
<source>Add</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.ui" line="205"/>
|
||||
<source>Clone</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.ui" line="232"/>
|
||||
<source>Remove selected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.ui" line="243"/>
|
||||
<source>Remove all</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.ui" line="346"/>
|
||||
<source>Save</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.ui" line="353"/>
|
||||
<location filename="../blockeditor.ui" line="383"/>
|
||||
<source>Ctrl+S</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.ui" line="376"/>
|
||||
<source>Save as ...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.ui" line="406"/>
|
||||
<source>Load ...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.ui" line="413"/>
|
||||
<source>Ctrl+O</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.ui" line="433"/>
|
||||
<source>Clear</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.ui" line="450"/>
|
||||
<source>Remove items</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.ui" line="453"/>
|
||||
<source>Del</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>DrawTools</name>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="14"/>
|
||||
<source>Form</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="51"/>
|
||||
<source>Font ...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="62"/>
|
||||
<source>Text:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="91"/>
|
||||
<location filename="../drawtools.ui" line="94"/>
|
||||
<source>Edit text ...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="123"/>
|
||||
<location filename="../drawtools.ui" line="137"/>
|
||||
<location filename="../drawtools.ui" line="230"/>
|
||||
<source>Align center left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="178"/>
|
||||
<source>Align center</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="204"/>
|
||||
<source>Align center right</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="256"/>
|
||||
<source>Align top right</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="282"/>
|
||||
<source>Align bottom right</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="308"/>
|
||||
<source>Align bottom center</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="334"/>
|
||||
<source>Align top left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="360"/>
|
||||
<source>Align top center</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="386"/>
|
||||
<source>Align bottom left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="471"/>
|
||||
<source>Width: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="506"/>
|
||||
<source>Thickness: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="522"/>
|
||||
<source>Height:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="538"/>
|
||||
<source>Style:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="591"/>
|
||||
<source>Load image ...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="608"/>
|
||||
<source>Paste image ...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="641"/>
|
||||
<source>Scale:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="750"/>
|
||||
<source>Top</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="758"/>
|
||||
<location filename="../drawtools.ui" line="761"/>
|
||||
<location filename="../drawtools.ui" line="780"/>
|
||||
<location filename="../drawtools.ui" line="783"/>
|
||||
<source>Center</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="769"/>
|
||||
<location filename="../drawtools.ui" line="772"/>
|
||||
<source>Bottom</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="791"/>
|
||||
<location filename="../drawtools.ui" line="794"/>
|
||||
<source>Left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="802"/>
|
||||
<location filename="../drawtools.ui" line="805"/>
|
||||
<source>Right</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="333"/>
|
||||
<source>NoPen</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="333"/>
|
||||
<source>Solid</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="333"/>
|
||||
<source>Dash</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="334"/>
|
||||
<source>Dot</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="334"/>
|
||||
<source>Dash-Dot</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="334"/>
|
||||
<source>Dash-Dot-Dot</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="336"/>
|
||||
<source>Edit text</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="337"/>
|
||||
<source>Bring
|
||||
forward</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="338"/>
|
||||
<source>Bring
|
||||
to front</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="339"/>
|
||||
<source>Send
|
||||
backward</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="340"/>
|
||||
<source>Send
|
||||
to back</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="341"/>
|
||||
<source>Draw
|
||||
Rectangle</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="342"/>
|
||||
<source>Draw
|
||||
Ellipse</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="343"/>
|
||||
<source>Draw
|
||||
Line</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="344"/>
|
||||
<source>Draw
|
||||
Text</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="345"/>
|
||||
<source>Draw
|
||||
Image</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="824"/>
|
||||
<source>Select image</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PinAlignDelegate</name>
|
||||
<message>
|
||||
<location filename="../blockeditor.cpp" line="356"/>
|
||||
<source>Left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.cpp" line="357"/>
|
||||
<source>Right</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.cpp" line="358"/>
|
||||
<source>Top</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.cpp" line="359"/>
|
||||
<source>Bottom</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.cpp" line="361"/>
|
||||
<source>unknown</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
@@ -4,7 +4,7 @@
|
||||
<context>
|
||||
<name>BlockBusItem</name>
|
||||
<message>
|
||||
<location filename="../blockbusitem.cpp" line="453"/>
|
||||
<location filename="../blockbusitem.cpp" line="499"/>
|
||||
<source>Add point: Ctrl + LeftClick
|
||||
Remove point\segment: Ctrl + RightClick
|
||||
New branch: Shift + LeftClick
|
||||
@@ -18,110 +18,110 @@ Remove connection: Shift + RightClick</source>
|
||||
<context>
|
||||
<name>BlockEditor</name>
|
||||
<message>
|
||||
<location filename="../blockeditor/blockeditor.ui" line="14"/>
|
||||
<location filename="../blockeditor.ui" line="14"/>
|
||||
<source>Block editor</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Редактор блока</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor/blockeditor.ui" line="32"/>
|
||||
<location filename="../blockeditor.ui" line="32"/>
|
||||
<source>Block parameters</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Параметры блока</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor/blockeditor.ui" line="59"/>
|
||||
<location filename="../blockeditor.ui" line="59"/>
|
||||
<source>Width:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ширина:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor/blockeditor.ui" line="79"/>
|
||||
<location filename="../blockeditor.ui" line="79"/>
|
||||
<source>Heigth:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Высота:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor/blockeditor.ui" line="99"/>
|
||||
<location filename="../blockeditor.ui" line="99"/>
|
||||
<source>Pins margin:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Поля пина:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor/blockeditor.ui" line="119"/>
|
||||
<location filename="../blockeditor.ui" line="119"/>
|
||||
<source>Color:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Цвет:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor/blockeditor.ui" line="130"/>
|
||||
<location filename="../blockeditor.ui" line="130"/>
|
||||
<source>Pins</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Пины</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor/blockeditor.ui" line="179"/>
|
||||
<location filename="../blockeditor.ui" line="179"/>
|
||||
<source>Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Имя</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor/blockeditor.ui" line="184"/>
|
||||
<location filename="../blockeditor.ui" line="184"/>
|
||||
<source>Bus</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Шина</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor/blockeditor.ui" line="194"/>
|
||||
<location filename="../blockeditor.ui" line="194"/>
|
||||
<source>Add</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Добавить</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor/blockeditor.ui" line="205"/>
|
||||
<location filename="../blockeditor.ui" line="205"/>
|
||||
<source>Clone</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Клонировать</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor/blockeditor.ui" line="232"/>
|
||||
<location filename="../blockeditor.ui" line="232"/>
|
||||
<source>Remove selected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Удалить выбранные</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor/blockeditor.ui" line="243"/>
|
||||
<location filename="../blockeditor.ui" line="243"/>
|
||||
<source>Remove all</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Удалить все</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor/blockeditor.ui" line="330"/>
|
||||
<location filename="../blockeditor.ui" line="346"/>
|
||||
<source>Save</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Сохранить</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor/blockeditor.ui" line="337"/>
|
||||
<location filename="../blockeditor/blockeditor.ui" line="367"/>
|
||||
<location filename="../blockeditor.ui" line="353"/>
|
||||
<location filename="../blockeditor.ui" line="383"/>
|
||||
<source>Ctrl+S</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor/blockeditor.ui" line="360"/>
|
||||
<location filename="../blockeditor.ui" line="376"/>
|
||||
<source>Save as ...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Сохранить как ...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor/blockeditor.ui" line="390"/>
|
||||
<location filename="../blockeditor.ui" line="406"/>
|
||||
<source>Load ...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Открыть ...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor/blockeditor.ui" line="397"/>
|
||||
<location filename="../blockeditor.ui" line="413"/>
|
||||
<source>Ctrl+O</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor/blockeditor.ui" line="417"/>
|
||||
<location filename="../blockeditor.ui" line="433"/>
|
||||
<source>Clear</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Очистить</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor/blockeditor.ui" line="434"/>
|
||||
<location filename="../blockeditor.ui" line="450"/>
|
||||
<source>Remove items</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Удалить элементы</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor/blockeditor.ui" line="437"/>
|
||||
<location filename="../blockeditor.ui" line="453"/>
|
||||
<source>Del</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -214,7 +214,7 @@ Remove connection: Shift + RightClick</source>
|
||||
<translation>Высота:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="554"/>
|
||||
<location filename="../drawtools.ui" line="538"/>
|
||||
<source>Style:</source>
|
||||
<translation>Стиль:</translation>
|
||||
</message>
|
||||
@@ -224,143 +224,176 @@ Remove connection: Shift + RightClick</source>
|
||||
<translation>Загрузить картинку ...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="624"/>
|
||||
<location filename="../drawtools.ui" line="608"/>
|
||||
<source>Paste image ...</source>
|
||||
<translation>Вставить картинку ...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="641"/>
|
||||
<source>Scale:</source>
|
||||
<translation>Масштаб:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="727"/>
|
||||
<location filename="../drawtools.ui" line="750"/>
|
||||
<source>Top</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Верх</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="735"/>
|
||||
<location filename="../drawtools.ui" line="738"/>
|
||||
<location filename="../drawtools.ui" line="757"/>
|
||||
<location filename="../drawtools.ui" line="760"/>
|
||||
<location filename="../drawtools.ui" line="758"/>
|
||||
<location filename="../drawtools.ui" line="761"/>
|
||||
<location filename="../drawtools.ui" line="780"/>
|
||||
<location filename="../drawtools.ui" line="783"/>
|
||||
<source>Center</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Центр</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="746"/>
|
||||
<location filename="../drawtools.ui" line="749"/>
|
||||
<location filename="../drawtools.ui" line="769"/>
|
||||
<location filename="../drawtools.ui" line="772"/>
|
||||
<source>Bottom</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Низ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="768"/>
|
||||
<location filename="../drawtools.ui" line="771"/>
|
||||
<location filename="../drawtools.ui" line="791"/>
|
||||
<location filename="../drawtools.ui" line="794"/>
|
||||
<source>Left</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Лево</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.ui" line="779"/>
|
||||
<location filename="../drawtools.ui" line="782"/>
|
||||
<location filename="../drawtools.ui" line="802"/>
|
||||
<location filename="../drawtools.ui" line="805"/>
|
||||
<source>Right</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Право</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="236"/>
|
||||
<location filename="../drawtools.cpp" line="333"/>
|
||||
<source>NoPen</source>
|
||||
<translation>НетЛинии</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="236"/>
|
||||
<location filename="../drawtools.cpp" line="333"/>
|
||||
<source>Solid</source>
|
||||
<translation>Сплошная</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="236"/>
|
||||
<location filename="../drawtools.cpp" line="333"/>
|
||||
<source>Dash</source>
|
||||
<translation>Штриховая</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="237"/>
|
||||
<location filename="../drawtools.cpp" line="334"/>
|
||||
<source>Dot</source>
|
||||
<translation>Пунктирная</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="237"/>
|
||||
<location filename="../drawtools.cpp" line="334"/>
|
||||
<source>Dash-Dot</source>
|
||||
<translation>ШтрихПунктирная</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="237"/>
|
||||
<location filename="../drawtools.cpp" line="334"/>
|
||||
<source>Dash-Dot-Dot</source>
|
||||
<translation>ШтрихПунктирПунктирная</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="257"/>
|
||||
<location filename="../drawtools.cpp" line="336"/>
|
||||
<source>Edit text</source>
|
||||
<translation>Редактировать текст</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="264"/>
|
||||
<location filename="../drawtools.cpp" line="337"/>
|
||||
<source>Bring
|
||||
forward</source>
|
||||
<translation>Переместить
|
||||
выше</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="265"/>
|
||||
<location filename="../drawtools.cpp" line="338"/>
|
||||
<source>Bring
|
||||
to front</source>
|
||||
<translation>На передний
|
||||
фон</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="266"/>
|
||||
<location filename="../drawtools.cpp" line="339"/>
|
||||
<source>Send
|
||||
backward</source>
|
||||
<translation>Переместить
|
||||
ниже</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="267"/>
|
||||
<location filename="../drawtools.cpp" line="340"/>
|
||||
<source>Send
|
||||
to back</source>
|
||||
<translation>На задний
|
||||
фон</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="268"/>
|
||||
<location filename="../drawtools.cpp" line="341"/>
|
||||
<source>Draw
|
||||
Rectangle</source>
|
||||
<translation>Нарисовать
|
||||
прямоугольник</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="269"/>
|
||||
<location filename="../drawtools.cpp" line="342"/>
|
||||
<source>Draw
|
||||
Ellipse</source>
|
||||
<translation>Нарисовать
|
||||
эллипс</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="270"/>
|
||||
<location filename="../drawtools.cpp" line="343"/>
|
||||
<source>Draw
|
||||
Line</source>
|
||||
<translation>Нарисовать
|
||||
линию</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="271"/>
|
||||
<location filename="../drawtools.cpp" line="344"/>
|
||||
<source>Draw
|
||||
Text</source>
|
||||
<translation>Нарисовать
|
||||
текст</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="272"/>
|
||||
<location filename="../drawtools.cpp" line="345"/>
|
||||
<source>Draw
|
||||
Image</source>
|
||||
<translation>Нарисовать
|
||||
картинку</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../drawtools.cpp" line="778"/>
|
||||
<location filename="../drawtools.cpp" line="824"/>
|
||||
<source>Select image</source>
|
||||
<translation>Выбрать картинку</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PinAlignDelegate</name>
|
||||
<message>
|
||||
<location filename="../blockeditor.cpp" line="356"/>
|
||||
<source>Left</source>
|
||||
<translation>Лево</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.cpp" line="357"/>
|
||||
<source>Right</source>
|
||||
<translation>Право</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.cpp" line="358"/>
|
||||
<source>Top</source>
|
||||
<translation>Верх</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.cpp" line="359"/>
|
||||
<source>Bottom</source>
|
||||
<translation>Низ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../blockeditor.cpp" line="361"/>
|
||||
<source>unknown</source>
|
||||
<translation>неизвестно</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
||||
2
qad/blockview/lang/update.bat
Normal file
2
qad/blockview/lang/update.bat
Normal file
@@ -0,0 +1,2 @@
|
||||
lupdate ../ -ts qad_blockview_ru.ts
|
||||
lupdate ../ -ts qad_blockview_en.ts
|
||||
@@ -1,3 +1,19 @@
|
||||
#[[
|
||||
|
||||
Also create imported targets:
|
||||
* QAD::Utils
|
||||
* QAD::Widgets
|
||||
* QAD::Application
|
||||
* QAD::Blockview
|
||||
* QAD::Graphic
|
||||
* QAD::SQLTable
|
||||
* QAD::TouchWidgets
|
||||
* QAD::Doc
|
||||
|
||||
These targets include directories and dependencies
|
||||
|
||||
]]
|
||||
|
||||
cmake_policy(SET CMP0011 NEW) # don`t affect includer policies
|
||||
cmake_policy(SET CMP0020 NEW) # Automatically link Qt executables to qtmain target on Windows
|
||||
if(NOT LIBPROJECT)
|
||||
@@ -41,6 +57,24 @@ find_file(QAD_H_INCLUDE "qad_types.h" HINTS ${PIP_DIR}/include/qad ${_QAD_INCDIR
|
||||
#endif()
|
||||
set(_SEARCH_DIR ${_QAD_LIBDIR} $ENV{SMSDK_DIR}/lib)
|
||||
set(_QAD_LIBS utils widgets application blockview graphic sql_table touch_widgets doc)
|
||||
|
||||
set(_ITN_utils "Utils" )
|
||||
set(_ITN_widgets "Widgets" )
|
||||
set(_ITN_application "Application" )
|
||||
set(_ITN_blockview "Blockview" )
|
||||
set(_ITN_graphic "Graphic" )
|
||||
set(_ITN_sql_table "SQLTable" )
|
||||
set(_ITN_touch_widgets "TouchWidgets")
|
||||
set(_ITN_doc "Doc" )
|
||||
|
||||
set(_ITLL_widgets "QAD::Utils")
|
||||
set(_ITLL_application "QAD::Widgets")
|
||||
set(_ITLL_blockview "QAD::Widgets")
|
||||
set(_ITLL_graphic "QAD::Widgets")
|
||||
set(_ITLL_sql_table "QAD::Widgets")
|
||||
set(_ITLL_touch_widgets "")
|
||||
set(_ITLL_doc "")
|
||||
|
||||
if(LIBPROJECT)
|
||||
set(QAD_INCLUDES ${QAD_DIR})
|
||||
endif()
|
||||
@@ -52,15 +86,41 @@ foreach(_Q ${_QAD_LIBS})
|
||||
else()
|
||||
foreach(_v ${_QT_VERSIONS_})
|
||||
find_library(QAD${_v}_${_QU}_LIBRARY qad_${_Q}${_v} HINTS ${_SEARCH_DIR})
|
||||
set(MULTILIB_${_Q}_SUFFIX_Qt${_v} ${_v})
|
||||
set(MULTILIB_qad_${_Q}_SUFFIX_Qt${_v} ${_v})
|
||||
if(hasParent)
|
||||
set(MULTILIB_${_Q}_SUFFIX_Qt${_v} ${_v} PARENT_SCOPE)
|
||||
set(MULTILIB_qad_${_Q}_SUFFIX_Qt${_v} ${_v} PARENT_SCOPE)
|
||||
endif()
|
||||
#message(STATUS "MULTILIB_qad_${_Q}_SUFFIX_Qt${_v} = ${_v}")
|
||||
endforeach()
|
||||
endif()
|
||||
#message(STATUS "Library qad_${_Q}5 (${_QU}) -> ${QAD5_${_QU}_LIBRARY} found in ${_SEARCH_DIR}")
|
||||
list(APPEND QT_MULTILIB_LIST qad_${_Q})
|
||||
endforeach()
|
||||
foreach(_Q ${_QAD_LIBS})
|
||||
string(TOUPPER ${_Q} _QU)
|
||||
set(_target QAD::${_ITN_${_Q}})
|
||||
string(REPLACE ":" "_" _target_str "${_target}")
|
||||
foreach(_v ${_QT_VERSIONS_})
|
||||
if(NOT TARGET ${_target}${_v})
|
||||
set(_link_list)
|
||||
foreach(_l ${_ITLL_${_Q}})
|
||||
list(APPEND _link_list ${_l}${_v})
|
||||
endforeach()
|
||||
add_library(${_target}${_v} UNKNOWN IMPORTED)
|
||||
set_target_properties(${_target}${_v} PROPERTIES
|
||||
IMPORTED_LOCATION "${QAD${_v}_${_QU}_LIBRARY}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${QAD_INCLUDES}"
|
||||
INTERFACE_LINK_LIBRARIES "${_link_list}")
|
||||
set(MULTILIB_${_target_str}_SUFFIX_Qt${_v} ${_v})
|
||||
if(hasParent)
|
||||
set(MULTILIB_${_target_str}_SUFFIX_Qt${_v} ${_v} PARENT_SCOPE)
|
||||
endif()
|
||||
#message(STATUS "add imported ${_target}${_v}")
|
||||
#message(STATUS "add MULTILIB MULTILIB_${_target_str}_SUFFIX_Qt${_v} ${_v}")
|
||||
endif()
|
||||
endforeach()
|
||||
list(APPEND QT_MULTILIB_LIST ${_target})
|
||||
endforeach()
|
||||
list(APPEND QT_MULTILIB_LIST qglview qglengine_core qglengine_widgets)
|
||||
foreach(_v ${_QT_VERSIONS_})
|
||||
find_library(QGLVIEW${_v}_LIBRARY qglview${_v} ${_SEARCH_DIR})
|
||||
|
||||
@@ -94,12 +94,12 @@ e.g. "qt_install(LANG my_QM DESTINATION QtLang)"
|
||||
|
||||
|
||||
|
||||
qt_install_lang(<name> DESTINATION <dir>)
|
||||
qt_install_lang(<name> DESTINATION <dir> [PATHS <path0> [<path1>] [...] ])
|
||||
|
||||
Search Qt translations for all <name> dependencies
|
||||
in Qt<?>_LANG_DIR for <name>_LANG languages
|
||||
and install them to <dir>. You can you "set_lang()" macro
|
||||
before this action
|
||||
and install them to <dir>. PATH are additional search paths.
|
||||
You should use "set_lang()" macro before this action
|
||||
|
||||
]]
|
||||
|
||||
@@ -448,6 +448,14 @@ macro(_qt_split_add_args _P _A)
|
||||
endmacro()
|
||||
|
||||
|
||||
macro(__qt_set_defines _NAME _T)
|
||||
target_compile_definitions(${_T} PRIVATE "__TARGET_NAME__=\"${_NAME}\"")
|
||||
target_compile_definitions(${_T} PRIVATE "__TARGET_LABEL__=\"${${_NAME}_LABEL}\"")
|
||||
target_compile_definitions(${_T} PRIVATE "__TARGET_COMPANY__=\"${${_NAME}_COMPANY}\"")
|
||||
target_compile_definitions(${_T} PRIVATE "__TARGET_VERSION__=\"${${_NAME}_VERSION}\"")
|
||||
endmacro()
|
||||
|
||||
|
||||
macro(qt_add_executable _NAME)
|
||||
foreach(_v ${_QT_VERSIONS_})
|
||||
if (LOCAL_FOUND${_v})
|
||||
@@ -457,13 +465,14 @@ macro(qt_add_executable _NAME)
|
||||
set(CMAKE_INSTALL_NAME_DIR "@rpath")
|
||||
else()
|
||||
if(NOT WIN32)
|
||||
set(CMAKE_INSTALL_RPATH "\$ORIGIN/lib")
|
||||
set(CMAKE_INSTALL_RPATH "\$ORIGIN;\$ORIGIN/lib")
|
||||
endif()
|
||||
endif()
|
||||
set(_TARGET ${_NAME}${TARGET_SUFFIX_Qt${_v}})
|
||||
add_executable(${_TARGET} ${_PREF} ${_ARGS})
|
||||
set(_${_NAME}_is_qt 1)
|
||||
target_include_directories(${_TARGET} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/qt${_v} ${Qt${_v}_INCLUDES})
|
||||
__qt_set_defines(${_NAME} ${_TARGET})
|
||||
|
||||
if(APPLE)
|
||||
set(CMAKE_INSTALL_NAME_DIR "${_PREV_CIND}")
|
||||
@@ -495,13 +504,14 @@ macro(qt_add_library _NAME)
|
||||
set(CMAKE_INSTALL_NAME_DIR "@rpath")
|
||||
else()
|
||||
if(NOT WIN32)
|
||||
set(CMAKE_INSTALL_RPATH "\$ORIGIN/lib")
|
||||
set(CMAKE_INSTALL_RPATH "\$ORIGIN;\$ORIGIN/lib")
|
||||
endif()
|
||||
endif()
|
||||
set(_TARGET ${_NAME}${TARGET_SUFFIX_Qt${_v}})
|
||||
add_library(${_TARGET} ${_PREF} ${_ARGS})
|
||||
set(_${_NAME}_is_qt 1)
|
||||
target_include_directories(${_TARGET} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/qt${_v} ${Qt${_v}_INCLUDES})
|
||||
__qt_set_defines(${_NAME} ${_TARGET})
|
||||
#message("add lib: \"${_TARGET}\"")
|
||||
|
||||
if(APPLE)
|
||||
@@ -526,8 +536,9 @@ endmacro()
|
||||
|
||||
|
||||
macro(_qt_multitarget_suffix_ _OUT _IN _v)
|
||||
if (NOT "x${MULTILIB_${_IN}_SUFFIX_Qt${_v}}" STREQUAL "x")
|
||||
set(${_OUT} "${MULTILIB_${_IN}_SUFFIX_Qt${_v}}")
|
||||
string(REPLACE ":" "_" _in_str "${_IN}")
|
||||
if (NOT "x${MULTILIB_${_in_str}_SUFFIX_Qt${_v}}" STREQUAL "x")
|
||||
set(${_OUT} "${MULTILIB_${_in_str}_SUFFIX_Qt${_v}}")
|
||||
else()
|
||||
set(${_OUT} "${MULTILIB_SUFFIX_Qt${_v}}")
|
||||
endif()
|
||||
@@ -544,6 +555,7 @@ macro(qt_target_link_libraries _NAME)
|
||||
list(FIND QT_MULTILIB_LIST "${_i}" _ind)
|
||||
if (_ind GREATER -1)
|
||||
_qt_multitarget_suffix_(_TS ${_i} ${_v})
|
||||
#message(STATUS "${_i} in MULTILIB_LIST, suffix = ${_TS}")
|
||||
list(APPEND _ARGS ${_i}${_TS})
|
||||
else()
|
||||
list(APPEND _ARGS ${_i})
|
||||
@@ -665,9 +677,25 @@ macro(qt_install)
|
||||
endmacro()
|
||||
|
||||
|
||||
macro(qt_install_lang _NAME _dest_tag _DEST)
|
||||
macro(qt_install_lang _NAME)
|
||||
set(_prev_inst)
|
||||
#message("command: ${ARGN}")
|
||||
set(_PATHS)
|
||||
set(_DEST)
|
||||
if(CMAKE_CROSSCOMPILING)
|
||||
list(APPEND _PATHS "${CMAKE_PREFIX_PATH}/lang")
|
||||
endif()
|
||||
set(_cur_arg)
|
||||
set(__args "DESTINATION;PATHS")
|
||||
foreach(_i ${ARGN})
|
||||
if (_i IN_LIST __args)
|
||||
set(_cur_arg "${_i}")
|
||||
elseif("${_cur_arg}" STREQUAL "DESTINATION")
|
||||
set(_DEST "${_i}")
|
||||
elseif("${_cur_arg}" STREQUAL "PATHS")
|
||||
list(APPEND _PATHS "${_i}")
|
||||
endif()
|
||||
endforeach()
|
||||
foreach(_v ${_QT_VERSIONS_})
|
||||
if (LOCAL_FOUND${_v})
|
||||
set(_target)
|
||||
@@ -702,7 +730,8 @@ macro(qt_install_lang _NAME _dest_tag _DEST)
|
||||
list(APPEND _qt_libs "qtbase")
|
||||
foreach (_i ${${PROJECT_NAME}_LANG})
|
||||
foreach (_l ${_qt_libs})
|
||||
set(_qm_path "${Qt${_v}_LANG_DIR}/${_l}_${_i}.qm")
|
||||
unset(_qm_path CACHE)
|
||||
find_file(_qm_path "${_l}_${_i}.qm" PATHS "${Qt${_v}_LANG_DIR}" ${_PATHS} NO_DEFAULT_PATH)
|
||||
if (EXISTS "${_qm_path}")
|
||||
install(FILES ${_qm_path} DESTINATION "${_DEST}")
|
||||
#message("qm = \"${_qm_path}\"")
|
||||
|
||||
@@ -16,6 +16,12 @@ extern "C" {
|
||||
# ifndef MKD_TOC
|
||||
# define MKD_TOC 0x00001000
|
||||
# endif
|
||||
# ifndef MKD_AUTOLINK
|
||||
# define MKD_AUTOLINK 0x00004000
|
||||
# endif
|
||||
# ifndef MKD_GITHUBTAGS
|
||||
# define MKD_GITHUBTAGS 0x08000000
|
||||
# endif
|
||||
#endif
|
||||
|
||||
static QString markdown_css = "table { margin: 5px; background-color: #cccccc; }"
|
||||
@@ -41,7 +47,7 @@ QString md2html(const QByteArray & src) {
|
||||
mkd_set_flag_num(flagm, MKD_DLEXTRA);
|
||||
mkd_set_flag_num(flagm, MKD_FENCEDCODE);
|
||||
#else
|
||||
mkd_flag_t flagm = (MKD_DLEXTRA | MKD_FENCEDCODE);
|
||||
mkd_flag_t flagm = (MKD_DLEXTRA | MKD_FENCEDCODE | MKD_GITHUBTAGS | MKD_AUTOLINK);
|
||||
#endif
|
||||
MMIOT
|
||||
#endif
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
QAD - Qt ADvanced
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef QAD_MARKDOWN_H
|
||||
#define QAD_MARKDOWN_H
|
||||
|
||||
|
||||
@@ -5,10 +5,11 @@
|
||||
#include "ui_graphic_conf.h"
|
||||
#include <QMetaObject>
|
||||
#include <QMessageBox>
|
||||
#if QT_VERSION < 0x050000
|
||||
# include <QTapAndHoldGesture>
|
||||
# include <QPanGesture>
|
||||
# include <QPinchGesture>
|
||||
#include <QTapAndHoldGesture>
|
||||
#include <QPanGesture>
|
||||
#include <QPinchGesture>
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0))
|
||||
# include <QRandomGenerator>
|
||||
#endif
|
||||
#ifndef Q_OS_ANDROID
|
||||
# define HAS_GL
|
||||
@@ -25,17 +26,6 @@ __GraphicRegistrator__ __graphic_registrator__;
|
||||
|
||||
Graphic::Graphic(QWidget * parent): QFrame(parent), canvas(0), line_x_min(this), line_x_max(this), line_y_min(this), line_y_max(this) {
|
||||
canvas_gl = 0;
|
||||
QTranslator * trans = new QTranslator();
|
||||
trans->load(":/lang/qad_graphic_" + QLocale::system().name().left(2));
|
||||
if (trans->isEmpty())
|
||||
trans->load("lang/qad_graphic_" + QLocale::system().name().left(2));
|
||||
#if QT_VERSION >= 0x050000
|
||||
if (!qApp->installTranslator(trans))
|
||||
delete trans;
|
||||
#else
|
||||
qApp->installTranslator(trans);
|
||||
#endif
|
||||
fullscr_dialog = 0;
|
||||
gesture_angle = 45.;
|
||||
leg_update = true;
|
||||
visible_update = fullscr = need_mouse_pan = false;
|
||||
@@ -47,10 +37,6 @@ Graphic::Graphic(QWidget * parent): QFrame(parent), canvas(0), line_x_min(this),
|
||||
#endif
|
||||
ui = new Ui::Graphic();
|
||||
ui->setupUi(this);
|
||||
/*line_x_min.resize(70, 22);
|
||||
line_x_max.resize(70, 22);
|
||||
line_y_min.resize(70, 22);
|
||||
line_y_max.resize(70, 22);*/
|
||||
line_x_min.setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
|
||||
line_x_max.setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
|
||||
((QBoxLayout * )ui->widgetLY->layout())->insertWidget(0, &line_y_min);
|
||||
@@ -59,8 +45,6 @@ Graphic::Graphic(QWidget * parent): QFrame(parent), canvas(0), line_x_min(this),
|
||||
((QBoxLayout * )ui->widgetLX->layout())->addWidget(&line_x_max);
|
||||
tm.restart();
|
||||
grid_numbers_x = grid_numbers_y = 1;
|
||||
LN2 = qLn(2.);
|
||||
LN5 = qLn(5.);
|
||||
LN10 = qLn(10.);
|
||||
line_x_min.setClearButtonVisible(true);
|
||||
line_x_max.setClearButtonVisible(true);
|
||||
@@ -84,10 +68,9 @@ Graphic::Graphic(QWidget * parent): QFrame(parent), canvas(0), line_x_min(this),
|
||||
icon_exp_sy = QIcon(":/icons/expand_s_y.png");
|
||||
icon_pause_b = QImage(":/icons/pause-back.png");
|
||||
icon_pause_f = QImage(":/icons/pause-front.png");
|
||||
aupdate = grid = isFit = isEmpty = navigation = true;
|
||||
aalias = mupdate = bufferActive = isOGL = cancel = isPrinting = guides = hasLblX = hasLblY = isHover = false;
|
||||
aupdate = grid = isFit = navigation = true;
|
||||
aalias = bufferActive = isOGL = cancel = guides = hasLblX = hasLblY = isHover = false;
|
||||
pause_ = only_expand_x = only_expand_y = false;
|
||||
//qDebug() << -DBL_MAX/2. << DBL_MAX/2. << DBL_MIN;
|
||||
limit_.setCoords(-DBL_MAX, -DBL_MAX, DBL_MAX, DBL_MAX);
|
||||
eminx = eminy = DBL_MAX;
|
||||
emaxx = emaxy = DBL_MIN;
|
||||
@@ -95,13 +78,9 @@ Graphic::Graphic(QWidget * parent): QFrame(parent), canvas(0), line_x_min(this),
|
||||
axis_type_x = Numeric;
|
||||
min_repaint_int = 25;
|
||||
inc_x = 1.;
|
||||
legy = 0;
|
||||
buffer = 0;
|
||||
gridx = gridy = 1.;
|
||||
history = 5.;
|
||||
min_int = 1;
|
||||
max_int = 200;
|
||||
mdm = 10.;
|
||||
visible_time = -1.;
|
||||
thick = lineThickness();
|
||||
pause_phase = 0.;
|
||||
@@ -113,8 +92,6 @@ Graphic::Graphic(QWidget * parent): QFrame(parent), canvas(0), line_x_min(this),
|
||||
selbrush.setColor(QColor(60, 175, 255, 100));
|
||||
text_color = palette().color(QPalette::WindowText);
|
||||
grid_pen = QPen(palette().color(QPalette::Disabled, QPalette::WindowText), 0., Qt::DotLine);
|
||||
//graph_pen = QPen(Qt::red);
|
||||
//graph_pen.setCosmetic(true);
|
||||
graphics.append(GraphicType());
|
||||
curGraphic = 0;
|
||||
selpen = palette().color(QPalette::WindowText);
|
||||
@@ -140,11 +117,11 @@ Graphic::~Graphic() {
|
||||
|
||||
|
||||
void Graphic::changeEvent(QEvent * e) {
|
||||
QFrame::changeEvent(e);
|
||||
if (e->type() == QEvent::LanguageChange) {
|
||||
ui->retranslateUi(this);
|
||||
return;
|
||||
}
|
||||
QFrame::changeEvent(e);
|
||||
}
|
||||
|
||||
|
||||
@@ -162,7 +139,6 @@ void Graphic::timerEvent(QTimerEvent * ) {
|
||||
|
||||
|
||||
bool Graphic::eventFilter(QObject * o, QEvent * e) {
|
||||
//qDebug() << "event" << o << e;
|
||||
if (o == canvas) {
|
||||
switch (e->type()) {
|
||||
case QEvent::Gesture:
|
||||
@@ -192,25 +168,7 @@ bool Graphic::eventFilter(QObject * o, QEvent * e) {
|
||||
} break;
|
||||
default: break;
|
||||
}
|
||||
} /*else {
|
||||
if (fullscr) {
|
||||
switch (e->type()) {
|
||||
case QEvent::KeyPress:
|
||||
if ((((QKeyEvent*)e)->key() != Qt::Key_Back) || !fullscr)
|
||||
break;
|
||||
case QEvent::Close:
|
||||
leaveFullscreen();
|
||||
return true;
|
||||
case QEvent::OrientationChange:
|
||||
case QEvent::Resize: {
|
||||
QWidget * rw = canvas->parentWidget();
|
||||
if (rw)
|
||||
canvas->setGeometry(0, 0, rw->width(), rw->height());
|
||||
} break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
return QFrame::eventFilter(o, e);
|
||||
}
|
||||
|
||||
@@ -223,7 +181,6 @@ void Graphic::prepareCanvas(QWidget * w) {
|
||||
connect(w, SIGNAL(wheelEvent(QWheelEvent * )), this, SLOT(canvasWheelEvent(QWheelEvent * )));
|
||||
connect(w, SIGNAL(leaveEvent(QEvent * )), this, SLOT(canvasLeaveEvent(QEvent * )));
|
||||
connect(w, SIGNAL(keyPressEvent(QKeyEvent * )), this, SLOT(canvasKeyPressEvent(QKeyEvent * )));
|
||||
//w->grabGesture(Qt::TapGesture);
|
||||
w->grabGesture(Qt::TapAndHoldGesture);
|
||||
w->grabGesture(Qt::PanGesture);
|
||||
w->grabGesture(Qt::PinchGesture);
|
||||
@@ -246,7 +203,6 @@ void Graphic::procGesture(QGesture * g) {
|
||||
} break;
|
||||
case Qt::PinchGesture: {
|
||||
QPinchGesture * pg = (QPinchGesture*)g;
|
||||
//qDebug() << pg->totalRotationAngle();
|
||||
Qt::KeyboardModifiers km = Qt::NoModifier;
|
||||
if (gesture_angle <= 20.) km = Qt::ControlModifier;
|
||||
if (gesture_angle >= 70.) km = Qt::ShiftModifier;
|
||||
@@ -261,10 +217,8 @@ void Graphic::procGesture(QGesture * g) {
|
||||
QMetaObject::invokeMethod(this, "enterFullscreen", Qt::QueuedConnection);
|
||||
} break;
|
||||
default:
|
||||
qDebug() << g;
|
||||
break;
|
||||
}
|
||||
//qDebug() << g;
|
||||
}
|
||||
|
||||
|
||||
@@ -295,8 +249,6 @@ void Graphic::totalUpdate() {
|
||||
|
||||
void Graphic::canvasPaintEvent() {
|
||||
if (is_lines_update) return;
|
||||
//QMutexLocker ml(&mutex_);
|
||||
//static int pwid = 0, phei = 0;
|
||||
int wid = canvas->width(), hei = canvas->height();
|
||||
if (canvas->isHidden() || wid <= 1 || hei <= 1) return;
|
||||
lastw = wid;
|
||||
@@ -320,19 +272,6 @@ void Graphic::canvasPaintEvent() {
|
||||
drawGuides();
|
||||
return;
|
||||
}
|
||||
//if (!aupdate && !mupdate && pwid == wid && phei == hei) return;
|
||||
/*if (pwid != wid || phei != hei) {
|
||||
line_x_min.move(0, hei - 35);
|
||||
line_x_max.move(0, 0);
|
||||
line_y_min.move(70, hei - line_x_min.height());
|
||||
line_y_max.move(wid - line_y_max.width(), hei - line_x_min.height());
|
||||
}
|
||||
line_x_min.setVisible(grid);
|
||||
line_x_max.setVisible(grid);
|
||||
line_y_min.setVisible(grid);
|
||||
line_y_max.setVisible(grid);*/
|
||||
//pwid = wid;
|
||||
//phei = hei;
|
||||
QPainter p;
|
||||
#ifdef HAS_GL
|
||||
if (isOGL) {
|
||||
@@ -364,7 +303,6 @@ void Graphic::canvasPaintEvent() {
|
||||
else glDisable(GL_MULTISAMPLE);
|
||||
}
|
||||
#endif
|
||||
//p.setRenderHint(QPainter::HighQualityAntialiasing, aalias);
|
||||
fp_size.clear();
|
||||
if (!aalias) p.translate(-0.5, -0.5);
|
||||
drawGraphics();
|
||||
@@ -418,7 +356,7 @@ void Graphic::canvasMouseMoveEvent(QMouseEvent * e) {
|
||||
case gaMove:
|
||||
dp = e->pos() - prevpos;
|
||||
dp.rx() *= selrect.width() / double(gridborder.x() + 5 - lastw);
|
||||
dp.ry() *= selrect.height() / double(lasth - legy - gridborder.y() - 5);
|
||||
dp.ry() *= selrect.height() / double(lasth - gridborder.y() - 5);
|
||||
if (e->modifiers() == Qt::ControlModifier)
|
||||
dp.setY(0.);
|
||||
if (e->modifiers() == Qt::ShiftModifier)
|
||||
@@ -433,7 +371,7 @@ void Graphic::canvasMouseMoveEvent(QMouseEvent * e) {
|
||||
|
||||
|
||||
void Graphic::canvasMousePressEvent(QMouseEvent * e) {
|
||||
emit graphicMousePressEvent(canvas2real(QPointF(e->pos())), e->buttons());
|
||||
emit graphicMousePressEvent(canvas2real(QPointF(e->pos())), e->button());
|
||||
if (!navigation) return;
|
||||
if (gestures && !need_mouse_pan) return;
|
||||
#ifdef HAS_GL
|
||||
@@ -477,7 +415,7 @@ void Graphic::canvasMousePressEvent(QMouseEvent * e) {
|
||||
|
||||
|
||||
void Graphic::canvasMouseReleaseEvent(QMouseEvent * e) {
|
||||
emit graphicMouseReleaseEvent(canvas2real(QPointF(e->pos())), e->buttons());
|
||||
emit graphicMouseReleaseEvent(canvas2real(QPointF(e->pos())), e->button());
|
||||
if (gestures) return;
|
||||
need_mouse_pan = false;
|
||||
if (!navigation) return;
|
||||
@@ -533,11 +471,18 @@ void Graphic::canvasMouseDoubleClickEvent(QMouseEvent * ) {
|
||||
|
||||
|
||||
void Graphic::canvasWheelEvent(QWheelEvent * e) {
|
||||
//if (curaction != gaMove) return;
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
|
||||
emit graphicWheelEvent(canvas2real(e->position()), e->delta()/* TODO: test use angleDelta()*/);
|
||||
#else
|
||||
emit graphicWheelEvent(canvas2real(QPointF(e->pos())), e->delta());
|
||||
#endif
|
||||
if (gestures) return;
|
||||
if (!navigation) return;
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
|
||||
procZoom(e->position(), e->delta(), e->modifiers());
|
||||
#else
|
||||
procZoom(e->pos(), e->delta(), e->modifiers());
|
||||
#endif
|
||||
totalUpdate();
|
||||
}
|
||||
|
||||
@@ -577,7 +522,6 @@ void Graphic::canvasKeyPressEvent(QKeyEvent * e) {
|
||||
|
||||
|
||||
void Graphic::clear() {
|
||||
//cout << "clear" << endl;
|
||||
for (int i = 0; i < graphics.size(); ++i) {
|
||||
graphics[i].polyline.clear();
|
||||
graphics[i].polyline_pause.clear();
|
||||
@@ -591,9 +535,6 @@ void Graphic::clear() {
|
||||
void Graphic::setAntialiasing(bool enabled) {
|
||||
if (aalias == enabled) return;
|
||||
aalias = enabled;
|
||||
/*QGLFormat f = canvas_gl->format();
|
||||
f.setSampleBuffers(enabled);
|
||||
canvas_gl->setFormat(f);*/
|
||||
update();
|
||||
}
|
||||
|
||||
@@ -630,7 +571,6 @@ void Graphic::setHistorySize(double val) {
|
||||
x = pol.back().x() - history;
|
||||
for (int j = pol.size() - 2; j >= 0 ; --j)
|
||||
if (pol[j].x() < x) {
|
||||
//qDebug() << pol.size() << j;
|
||||
pol.erase(pol.begin(), pol.begin() + j);
|
||||
break;
|
||||
}
|
||||
@@ -747,8 +687,6 @@ void Graphic::addPoint(const QPointF & p, int graphic, bool update_) {
|
||||
if (graphic >= graphics.size() || graphic < 0) return;
|
||||
GraphicType & t(graphics[graphic]);
|
||||
if (!t.cvrect.isNull() && !pause_) {
|
||||
// if (graphics[graphic].cvrect.contains(p))
|
||||
// graphics[graphic].cvrect = QRectF();
|
||||
if (t.cvrect.top() < p.y()) t.cvrect.setTop(p.y());
|
||||
if (t.cvrect.bottom() > p.y()) t.cvrect.setBottom(p.y());
|
||||
if (t.cvrect.right() < p.x()) t.cvrect.setRight(p.x());
|
||||
@@ -815,9 +753,7 @@ void Graphic::saveImage() {
|
||||
if (str == "") return;
|
||||
ppath = str;
|
||||
QPixmap im(canvas->size());
|
||||
mupdate = true;
|
||||
canvas->render(&im);
|
||||
mupdate = false;
|
||||
im.save(ppath);
|
||||
update(true);
|
||||
}
|
||||
@@ -840,29 +776,24 @@ void Graphic::setOpenGL(bool on) {
|
||||
ui->canvas_raster->show();
|
||||
canvas = ui->canvas_raster;
|
||||
#endif
|
||||
/*line_x_min.setParent(canvas);
|
||||
line_x_max.setParent(canvas);
|
||||
line_y_min.setParent(canvas);
|
||||
line_y_max.setParent(canvas);
|
||||
line_x_min.show();
|
||||
line_x_max.show();
|
||||
line_y_min.show();
|
||||
line_y_max.show();*/
|
||||
update();
|
||||
}
|
||||
|
||||
|
||||
void Graphic::update(bool force) {
|
||||
mupdate = true;
|
||||
repaintCanvas(force);
|
||||
mupdate = false;
|
||||
}
|
||||
|
||||
|
||||
void Graphic::setGraphicsCount(int arg, bool update) {
|
||||
if (arg < 0) return;
|
||||
while (graphics.size() < arg)
|
||||
while (graphics.size() < arg) {
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0))
|
||||
graphics.append(GraphicType(tr("y(x)"), QColor::fromHsv((graphics.size() * 55) % 360, 255, 255 - QRandomGenerator::global()->generate() % 115)));
|
||||
#else
|
||||
graphics.append(GraphicType(tr("y(x)"), QColor::fromHsv((graphics.size() * 55) % 360, 255, 255 - qrand() % 115)));
|
||||
#endif
|
||||
}
|
||||
while (graphics.size() > arg) {
|
||||
delete graphics.back().pb;
|
||||
graphics.pop_back();
|
||||
@@ -879,76 +810,11 @@ void Graphic::removeGraphic(int arg, bool update) {
|
||||
}
|
||||
|
||||
|
||||
/*void Graphic::setHistogramData(const QVector<float> & g, int graphic) {
|
||||
graphics[graphic].polyline.clear();
|
||||
if (g.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
QVector<float> data = g;
|
||||
QVector<int> hist;
|
||||
int ic = max_int, ci;
|
||||
double md, cd, min, max, range, cx;
|
||||
qSort(data);
|
||||
md = DBL_MAX;
|
||||
min = max = data[0];
|
||||
for (int i = 1; i < data.size(); ++i) {
|
||||
if (min > data[i]) min = data[i];
|
||||
if (max < data[i]) max = data[i];
|
||||
cd = qAbs<float>(data[i] - data[i - 1]);
|
||||
if (md > cd && cd != 0.) md = cd;
|
||||
}
|
||||
range = max - min;
|
||||
md = mdm;
|
||||
//qDebug() << md << range << ic;
|
||||
if (md != 0.)
|
||||
ic = qRound(qMax<double>(qMin<double>(double(ic), range / md), double(min_int)));
|
||||
md = range / ic;
|
||||
hist.resize(ic);
|
||||
foreach (const float & i, data) {
|
||||
ci = qRound((i - min) / range * double(ic - 1));
|
||||
//if (ci < 0) ci = 0;
|
||||
//if (ci >= ic) ci = ic - 1;
|
||||
hist[ci]++;
|
||||
}
|
||||
QPolygonF & cpol(graphics[graphic].polyline);
|
||||
if (hist.size() == 1 || range == 0.) {
|
||||
cpol << QPointF(min - 0.5, 0.) << QPointF(min - 0.25, 0.);
|
||||
cpol << QPointF(min - 0.25, hist[0]) << QPointF(min + 0.25, hist[0]);
|
||||
cpol << QPointF(min + 0.25, 0.) << QPointF(min + 0.5, 0.);
|
||||
} else {
|
||||
cpol << QPointF(min, 0.);
|
||||
for (int i = 0; i < hist.size(); ++i) {
|
||||
cx = i * range / ic + min;
|
||||
cpol << QPointF(cx, hist[i]) << QPointF(cx + md, hist[i]);
|
||||
}
|
||||
cpol << QPointF(range + min, 0.);
|
||||
}
|
||||
updateGraphics();
|
||||
}*/
|
||||
|
||||
|
||||
void Graphic::findGraphicsRect(double start_x, double end_x, double start_y, double end_y) {
|
||||
double cx, cy, maxX, minX, maxY, minY, vx;
|
||||
bool isRangeX = (start_x != end_x), isRangeY = (start_y != end_y);
|
||||
// bool isEmpty = true;
|
||||
//bool fast = true;
|
||||
bool can_fast = (start_x == 0 && end_x == 0 && start_y == 0 && end_y == 0);
|
||||
bool anyVisible = false, isTimeLimit = (visible_time > 0.) && !(isRangeX || isRangeY);
|
||||
//bool force_find = (visible_time > 0.) && (history > 0.) && (visible_time < history);
|
||||
//if (force_find) can_fast = false;
|
||||
// foreach (const GraphicType & t, graphics) {
|
||||
// const QPolygonF & pol(pause_ ? t.polyline_pause : t.polyline);
|
||||
// if (!pol.isEmpty()) {
|
||||
// isEmpty = false;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// if (isEmpty) {
|
||||
// grect = def_rect;
|
||||
// setRectToLines();
|
||||
// return;
|
||||
// }
|
||||
// can_fast = false;
|
||||
vx = -DBL_MAX;
|
||||
minY = minX = DBL_MAX;
|
||||
maxY = maxX = -DBL_MAX;
|
||||
@@ -957,14 +823,12 @@ void Graphic::findGraphicsRect(double start_x, double end_x, double start_y, dou
|
||||
if (vx < (pause_ ? t.max_x_pause : t.max_x)) vx = (pause_ ? t.max_x_pause : t.max_x);
|
||||
}
|
||||
vx -= visible_time;
|
||||
//qDebug() << "[Graphic]" << "can_fast" << can_fast;
|
||||
for (int g = 0; g < graphics.size(); g++) {
|
||||
GraphicType & t(graphics[g]);
|
||||
if (!t.visible) continue;
|
||||
const QPolygonF & pol(pause_ ? t.polyline_pause : t.polyline);
|
||||
if (pol.isEmpty()) continue;
|
||||
bool f = true;
|
||||
//qDebug() << "[Graphic]" << "cvrect:" << t.cvrect << t.cvrect.isNull();
|
||||
if (t.cvrect.isNull() || !can_fast) {
|
||||
for (int i = 0; i < pol.size(); i++) {
|
||||
cx = pol[i].x();
|
||||
@@ -981,10 +845,8 @@ void Graphic::findGraphicsRect(double start_x, double end_x, double start_y, dou
|
||||
if (t.cvrect.right() < cx) t.cvrect.setRight(cx);
|
||||
if (t.cvrect.left() > cx) t.cvrect.setLeft(cx);
|
||||
}
|
||||
//fast = false;
|
||||
}
|
||||
if (f) continue;
|
||||
//qDebug() << "[Graphic]" << "2 cvrect:" << t.cvrect;
|
||||
}
|
||||
anyVisible = true;
|
||||
if (maxY < t.cvrect.top()) maxY = t.cvrect.top();
|
||||
@@ -994,13 +856,10 @@ void Graphic::findGraphicsRect(double start_x, double end_x, double start_y, dou
|
||||
if (!can_fast) t.cvrect = QRectF();
|
||||
}
|
||||
if (!anyVisible) {
|
||||
//qDebug() << "[Graphic]" << "empty autofit";
|
||||
grect = def_rect;
|
||||
setRectToLines();
|
||||
return;
|
||||
}
|
||||
// if (fast) qDebug() << "[Graphic]" << "FAST autofit";
|
||||
// else qDebug() << "[Graphic]" << "autofit";
|
||||
if (maxX > limit_.right()) maxX = limit_.right();
|
||||
if (minX > limit_.right()) minX = limit_.right();
|
||||
if (minX < limit_.left()) minX = limit_.left();
|
||||
@@ -1027,7 +886,7 @@ void Graphic::findGraphicsRect(double start_x, double end_x, double start_y, dou
|
||||
else if (isRangeY) selrect.setRect(minX, start_y, maxX - minX, end_y - start_y);
|
||||
else grect.setRect(minX, minY, maxX - minX, maxY - minY);
|
||||
grect = grect.normalized();
|
||||
if (isFit)/* || isRangeX || isRangeY)*/ {
|
||||
if (isFit) {
|
||||
if (visible_time > 0.) {
|
||||
if (grect.width() > visible_time)
|
||||
grect.setLeft(grect.right() - visible_time);
|
||||
@@ -1039,7 +898,6 @@ void Graphic::findGraphicsRect(double start_x, double end_x, double start_y, dou
|
||||
|
||||
|
||||
void Graphic::drawAction() {
|
||||
//qDebug() << "draw action";
|
||||
int wid = canvas->width(), hei = canvas->height() - gridborder.y(), sx = startpos.x(), sy = startpos.y(), cx = curpos.x(), cy = curpos.y();
|
||||
painter->setPen(selpen);
|
||||
painter->setBrush(selbrush);
|
||||
@@ -1067,7 +925,7 @@ void Graphic::drawAction() {
|
||||
|
||||
|
||||
void Graphic::drawGrid() {
|
||||
int gbx = gridborder.x(), gby = gridborder.y(), cwid = canvas->width(), chei = canvas->height() - legy;
|
||||
int gbx = gridborder.x(), gby = gridborder.y(), cwid = canvas->width(), chei = canvas->height();
|
||||
double px, py, range, step, start;
|
||||
int wid = cwid - gbx - 5, hei = chei - gby - 5, cx, cy, cnt;
|
||||
QRect rect;
|
||||
@@ -1075,7 +933,7 @@ void Graphic::drawGrid() {
|
||||
|
||||
range = selrect.bottom() - selrect.top();
|
||||
if (grad_y == Graphic::Auto) step = splitRange(range, hei / gridy / font_sz.height() / 1.4);
|
||||
else step = gridy;//range / hei * gridy;
|
||||
else step = gridy;
|
||||
start = roundTo(canvas2realY(-hei), step) - step;
|
||||
py = start + step;
|
||||
cy = 0;
|
||||
@@ -1132,7 +990,7 @@ void Graphic::drawGrid() {
|
||||
QString df;
|
||||
if (axis_type_x == Graphic::Numeric) {
|
||||
if (grad_x == Graphic::Auto) step = splitRange(range, wid / gridx / font_sz.width() * 1.4);
|
||||
else step = gridx;//range / wid * gridx;
|
||||
else step = gridx;
|
||||
start = roundTo(canvas2realX(wid), step) + step;
|
||||
px = start + step;
|
||||
if (step > 0.) {
|
||||
@@ -1172,21 +1030,15 @@ void Graphic::drawGrid() {
|
||||
start = roundTo(canvas2realX(wid), step) + step;
|
||||
px = start + step;
|
||||
QDateTime cd = QDateTime::fromMSecsSinceEpoch(px * grid_numbers_x);
|
||||
//qDebug() << "*** start" << cd << step;
|
||||
roundDateTime(cd, cur_scl);
|
||||
//qDebug() << "*** round" << cd;
|
||||
addDateTime(cd, cur_scl);
|
||||
//qDebug() << "*** add" << cd;
|
||||
//qDebug() << "*** cur" << cur_scl[0] << cur_scl[1] << cur_scl[2] << cur_scl[3] << cur_scl[4] << cur_scl[5] << cur_scl[6];
|
||||
if (step > 0.) {
|
||||
cnt = 1000;
|
||||
while (cnt-- > 0) {
|
||||
addDateTime(cd, cur_scl, -1);
|
||||
//roundDateTime(cd, cur_scl);
|
||||
//qDebug() << "next" << cd;
|
||||
cx = real2canvasX(cd.toMSecsSinceEpoch() / grid_numbers_x);
|
||||
if (cx > cwid) continue;
|
||||
if (cx < gbx) {/*qDebug() << cx << "<" << gbx;*/ break;}
|
||||
if (cx < gbx) break;
|
||||
painter->setPen(grid_pen);
|
||||
painter->drawLine(cx, hei + 5, cx, 0);
|
||||
painter->setPen(text_color);
|
||||
@@ -1230,13 +1082,12 @@ void Graphic::drawGraphics() {
|
||||
if (isHover)
|
||||
ui->status->setText(tr("Cursor: ") + pointCoords(canvas2real(QPointF(curpos))));
|
||||
QPointF srp = -selrect.topLeft();
|
||||
double sclx, scly, wid = canvas->width(), hei = canvas->height() - legy;
|
||||
double sclx, scly, wid = canvas->width(), hei = canvas->height();
|
||||
sclx = (wid - gridborder.x() - margins_.left() - margins_.width()) / selrect.width();
|
||||
scly = (hei - gridborder.y() - margins_.top() - margins_.height()) / selrect.height();
|
||||
painter->setClipping(true);
|
||||
painter->setClipRect(QRect(gridborder.x(), 0, wid - gridborder.x(), hei - gridborder.y()));
|
||||
painter->translate(gridborder.x() + margins_.left(), hei - gridborder.y() - margins_.top());
|
||||
//if (isOGL && aalias) pen.setWidthF(1.5f);
|
||||
painter->scale(sclx, -scly);
|
||||
painter->translate(srp);
|
||||
QTransform mat = painter->transform();
|
||||
@@ -1257,8 +1108,6 @@ void Graphic::drawGraphics() {
|
||||
if (t.fill) {
|
||||
cpol = rpol;
|
||||
painter->setBrush(t.fill_color);
|
||||
//cpol.push_front(QPointF(cpol.front().x(), 0.));
|
||||
//cpol.push_back(QPointF(cpol.back().x(), 0.));
|
||||
painter->drawPolygon(mat.map(cpol));
|
||||
} else
|
||||
painter->drawPolyline(mat.map(rpol));
|
||||
@@ -1350,7 +1199,6 @@ double Graphic::splitRange(double range, int count) {
|
||||
|
||||
double Graphic::splitRangeDate(double range, int count, QString * format, int step[7]) {
|
||||
double ret = splitRange(range, count);
|
||||
//qDebug() << "ret =" << ret << getScaleX();
|
||||
if (ret < 1000. * 1) {*format = "ss.zzz"; step[0] = ret;}
|
||||
else if (ret < 1000. * 60) {*format = "h:m:ss"; step[1] = qRound(ret / 1000);}
|
||||
else if (ret < 1000. * 60 * 60) {*format = "h:mm"; step[2] = qRound(ret / 1000 / 60);}
|
||||
@@ -1370,7 +1218,6 @@ double Graphic::roundTo(double value, double round_to) {
|
||||
|
||||
void Graphic::roundDateTime(QDateTime & dt, int c[7]) {
|
||||
QDate d(dt.date()); QTime t(dt.time());
|
||||
//if (c[0] != 0) t.setHMS(t.hour(), t.minute(), t.second(), 0);
|
||||
if (c[1] != 0) t.setHMS(t.hour(), t.minute(), t.second());
|
||||
if (c[2] != 0) t.setHMS(t.hour(), t.minute(), 0);
|
||||
if (c[3] != 0) t.setHMS(t.hour(), 0, 0);
|
||||
@@ -1400,7 +1247,7 @@ double Graphic::canvas2realX(double px) const {
|
||||
|
||||
|
||||
double Graphic::canvas2realY(double py) const {
|
||||
int gby = gridborder.y() + margins_.top(), chei = lasth - legy, hei = chei - gby - margins_.height();
|
||||
int gby = gridborder.y() + margins_.top(), chei = lasth, hei = chei - gby - margins_.height();
|
||||
double cy = chei - py - gby, scly = selrect.height() / (double)hei;
|
||||
return cy * scly + selrect.y();
|
||||
}
|
||||
@@ -1414,7 +1261,7 @@ double Graphic::real2canvasX(double px) const {
|
||||
|
||||
|
||||
double Graphic::real2canvasY(double py) const {
|
||||
int gby = gridborder.y() + margins_.top(), chei = lasth - legy, hei = chei - gby - margins_.height();
|
||||
int gby = gridborder.y() + margins_.top(), chei = lasth, hei = chei - gby - margins_.height();
|
||||
double scly = selrect.height() / (double)hei;
|
||||
return chei - gby - (py - selrect.y()) / scly;
|
||||
}
|
||||
@@ -1469,7 +1316,6 @@ void Graphic::setCanvasCursor(QCursor cursor) {
|
||||
|
||||
void Graphic::swapToBuffer() {
|
||||
QImage timg;
|
||||
//qDebug() << "render start";
|
||||
#ifdef HAS_GL
|
||||
if (isOGL) {
|
||||
timg = canvas_gl->grabFrameBuffer();
|
||||
@@ -1478,16 +1324,12 @@ void Graphic::swapToBuffer() {
|
||||
p.end();
|
||||
}
|
||||
#endif
|
||||
//qDebug() << "render finish";
|
||||
bufferActive = true;
|
||||
}
|
||||
|
||||
|
||||
void Graphic::setRectToLines() {
|
||||
is_lines_update = true;
|
||||
//line_x_min.is_auto = line_x_max.is_auto = line_y_min.is_auto = line_y_max.is_auto = true;
|
||||
//qDebug() << "set to lines" << selrect;
|
||||
//line_x_min.is_reset = line_x_max.is_reset = line_y_min.is_reset = line_y_max.is_reset = isFit;
|
||||
if (line_x_min.isVisible() && line_x_max.isVisible() && line_y_min.isVisible() && line_y_max.isVisible()) {
|
||||
line_x_min.blockSignals(true); line_x_max.blockSignals(true); line_y_min.blockSignals(true); line_y_max.blockSignals(true);
|
||||
if (!line_x_min.hasFocus()) {
|
||||
@@ -1511,12 +1353,7 @@ void Graphic::setRectToLines() {
|
||||
line_y_min.setDefaultText(QString::number(grect.bottom()).toUpper());
|
||||
line_y_max.setDefaultText(QString::number(grect.top()).toUpper());
|
||||
line_x_min.blockSignals(false); line_x_max.blockSignals(false); line_y_min.blockSignals(false); line_y_max.blockSignals(false);
|
||||
// if(isFit) {
|
||||
// line_y_min.setValue(grect.left());
|
||||
// line_y_max.setValue(grect.left());
|
||||
// }
|
||||
}
|
||||
//line_x_min.is_auto = line_x_max.is_auto = line_y_min.is_auto = line_y_max.is_auto = false;
|
||||
is_lines_update = false;
|
||||
}
|
||||
|
||||
@@ -1529,7 +1366,6 @@ void Graphic::checkLines() {
|
||||
|
||||
void Graphic::tick(int index, bool slide, bool update_) {
|
||||
if (slide) {
|
||||
///mutex.lock();
|
||||
GraphicType & t(graphics[index]);
|
||||
if (history > 0.)
|
||||
while (t.polyline.size() > 1) {
|
||||
@@ -1549,17 +1385,13 @@ void Graphic::tick(int index, bool slide, bool update_) {
|
||||
}
|
||||
if (!update_) {
|
||||
if (isFit) findGraphicsRect();
|
||||
///mutex.unlock();
|
||||
return;
|
||||
}
|
||||
//polyline.push_back(QPointF(brick->time_, brick->output(port)));
|
||||
//cout << polyline.size() << endl;
|
||||
if (isFit) findGraphicsRect();
|
||||
if (!slide) {
|
||||
if (aupdate) update();
|
||||
return;
|
||||
}
|
||||
///mutex.unlock();
|
||||
if (aupdate) update();
|
||||
}
|
||||
|
||||
@@ -1650,10 +1482,8 @@ void Graphic::updateLegend(bool es) {
|
||||
}
|
||||
if (!ui->widgetLegend->isVisibleTo(this)) {
|
||||
if (es) emit graphicSettingsChanged();
|
||||
// qDebug() << "skip updateLegend";
|
||||
return;
|
||||
}
|
||||
// qDebug() << "updateLegend" << graphics.size();
|
||||
leg_update = false;
|
||||
int ps = 100;
|
||||
for (int r = 0; r < ui->layoutLegend->rowCount(); ++r)
|
||||
@@ -1669,12 +1499,10 @@ void Graphic::updateLegend(bool es) {
|
||||
for (int i = 0; i < graphics.size(); i++) {
|
||||
graphics[i].pb = new QCheckBox(graphics[i].name);
|
||||
graphics[i].pb->setIconSize(pix.size());
|
||||
//graphics[i].pb->setFlat(true);
|
||||
graphics[i].pb->setIcon(graphics[i].icon);
|
||||
graphics[i].pb->setChecked(graphics[i].visible);
|
||||
graphics[i].pb->setProperty("graphic_num", i);
|
||||
graphics[i].pb->setContextMenuPolicy(Qt::ActionsContextMenu);
|
||||
//qDebug() << graphics[i].pb->actions();
|
||||
QAction * act = new QAction(tr("Check all"), 0);
|
||||
act->setCheckable(true);
|
||||
act->setChecked(true);
|
||||
@@ -1719,7 +1547,6 @@ void Graphic::graphicVisibleChange(bool checked) {
|
||||
if (isFit) on_buttonAutofit_clicked();
|
||||
else update();
|
||||
emit graphicSettingsChanged();
|
||||
//update();
|
||||
}
|
||||
|
||||
|
||||
@@ -1738,7 +1565,6 @@ void Graphic::graphicAllVisibleChange(bool checked) {
|
||||
|
||||
void Graphic::enterFullscreen() {
|
||||
if (fullscr) return;
|
||||
//QMessageBox::information(0, "", "enter");
|
||||
fullscr = true;
|
||||
canvas->hide();
|
||||
#ifdef Q_OS_ANDROID
|
||||
@@ -1750,7 +1576,6 @@ void Graphic::enterFullscreen() {
|
||||
QPushButton * btn = new QPushButton("Leave fullscreen");
|
||||
dlg.layout()->addWidget(btn);
|
||||
connect(btn, SIGNAL(clicked(bool)), this, SLOT(leaveFullscreen()));
|
||||
//connect(fullscr_dialog, SIGNAL(finished(int)), this, SLOT(leaveFullscreen()));
|
||||
canvas->show();
|
||||
dlg.showFullScreen();
|
||||
dlg.exec();
|
||||
@@ -1771,9 +1596,7 @@ void Graphic::leaveFullscreen() {
|
||||
if (tm_fscr.elapsed() < 100) return;
|
||||
#endif
|
||||
if (!fullscr) return;
|
||||
//QMessageBox::information(0, "", "leave");
|
||||
fullscr = false;
|
||||
//canvas->hide();
|
||||
#ifndef Q_OS_ANDROID
|
||||
canvas->showNormal();
|
||||
canvas->hide();
|
||||
@@ -1817,6 +1640,10 @@ QByteArray Graphic::save() {
|
||||
cs.add(9, gridPen()).add(10, graduationX()).add(11, graduationY()).add(12, graduationStepX()).add(13, graduationStepY());
|
||||
cs.add(14, graphics);
|
||||
cs.add(15, isFit).add(16, visualRect());
|
||||
if (backgroundColor() == palette().color(QPalette::Base) &&
|
||||
textColor() == palette().color(QPalette::WindowText) &&
|
||||
gridColor() == palette().color(QPalette::Disabled, QPalette::WindowText))
|
||||
cs.add(17, true);
|
||||
return cs.data().prepend('2');
|
||||
}
|
||||
|
||||
@@ -1824,12 +1651,12 @@ QByteArray Graphic::save() {
|
||||
void Graphic::load(QByteArray ba) {
|
||||
if (ba.isEmpty()) return;
|
||||
char ver = ba[0];
|
||||
//qDebug() << "load" << (int)ver;
|
||||
switch(ver) {
|
||||
case '2': {// version '2':
|
||||
ba.remove(0, 1);
|
||||
QRectF vrect;
|
||||
ChunkStream cs(ba);
|
||||
bool def_colors = false;
|
||||
while (!cs.atEnd()) {
|
||||
switch (cs.read()) {
|
||||
case 1: setAntialiasing(cs.getData<bool>()); break;
|
||||
@@ -1837,10 +1664,10 @@ void Graphic::load(QByteArray ba) {
|
||||
case 3: setBorderInputsVisible(cs.getData<bool>()); break;
|
||||
case 4: setStatusVisible(cs.getData<bool>()); break;
|
||||
case 5: setLegendVisible(cs.getData<bool>()); break;
|
||||
case 6: setBackgroundColor(cs.getData<QColor>()); break;
|
||||
case 7: setTextColor(cs.getData<QColor>()); break;
|
||||
case 6: if (!def_colors) setBackgroundColor(cs.getData<QColor>()); break;
|
||||
case 7: if (!def_colors) setTextColor(cs.getData<QColor>()); break;
|
||||
case 8: setMargins(cs.getData<QRect>()); break;
|
||||
case 9: setGridPen(cs.getData<QPen>()); break;
|
||||
case 9: if (!def_colors) setGridPen(cs.getData<QPen>()); break;
|
||||
case 10: setGraduationX(cs.getData<Graduation>()); break;
|
||||
case 11: setGraduationY(cs.getData<Graduation>()); break;
|
||||
case 12: setGraduationStepX(cs.getData<double>()); break;
|
||||
@@ -1848,6 +1675,12 @@ void Graphic::load(QByteArray ba) {
|
||||
case 14: graphics = cs.getData<QVector<GraphicType> >(); break;
|
||||
case 15: isFit = cs.getData<bool>(); break;
|
||||
case 16: vrect = cs.getData<QRectF>(); break;
|
||||
case 17: if(cs.getData<bool>()) {
|
||||
setTextColor(palette().color(QPalette::WindowText));
|
||||
setGridPen(QPen(palette().color(QPalette::Disabled, QPalette::WindowText), 0., Qt::DotLine));
|
||||
setBackgroundColor(palette().color(QPalette::Base));
|
||||
def_colors = true;
|
||||
} break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
QAD - Qt ADvanced
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef GRAPHIC_H
|
||||
#define GRAPHIC_H
|
||||
|
||||
@@ -9,7 +28,7 @@
|
||||
#include <QDebug>
|
||||
#include <QGridLayout>
|
||||
#include <QFileDialog>
|
||||
#include <QTime>
|
||||
#include <QElapsedTimer>
|
||||
#include <QTranslator>
|
||||
#include <QGestureEvent>
|
||||
#include <qmath.h>
|
||||
@@ -94,16 +113,12 @@ class QAD_EXPORT Graphic: public QFrame
|
||||
Q_PROPERTY(double graduationStepY READ graduationStepY WRITE setGraduationStepY)
|
||||
Q_PROPERTY(AxisType axisType READ axisType WRITE setAxisType)
|
||||
|
||||
Q_PROPERTY(int histogramMinIntervals READ histogramMinIntervals WRITE setHistogramMinIntervals)
|
||||
Q_PROPERTY(int histogramMaxIntervals READ histogramMaxIntervals WRITE setHistogramMaxIntervals)
|
||||
Q_PROPERTY(double histogramMinDeltaMultiplier READ histogramMinDeltaMultiplier WRITE setHistogramMinDeltaMultiplier)
|
||||
|
||||
Q_PROPERTY(Graphic::GraphicsData graphicsData READ graphicsData WRITE setGraphicsData)
|
||||
Q_PROPERTY(QByteArray graphicsDataRaw READ graphicsDataRaw WRITE setGraphicsDataRaw)
|
||||
|
||||
public:
|
||||
Graphic(QWidget * parent = 0);
|
||||
~Graphic();
|
||||
virtual ~Graphic();
|
||||
|
||||
typedef QVector<QVector<QPointF> > GraphicsData;
|
||||
enum GraphicAction {gaNone, gaZoomInRect, gaZoomRangeX, gaZoomRangeY, gaMove};
|
||||
@@ -177,9 +192,6 @@ public:
|
||||
QRectF limit() const {return limit_;}
|
||||
QRect margins() const {return margins_;}
|
||||
int minimumRepaintInterval() const {return min_repaint_int;}
|
||||
int histogramMinIntervals() const {return min_int;}
|
||||
int histogramMaxIntervals() const {return max_int;}
|
||||
double histogramMinDeltaMultiplier() const {return mdm;}
|
||||
double gridNumbersMultiplierX() const {return grid_numbers_x;}
|
||||
double gridNumbersMultiplierY() const {return grid_numbers_y;}
|
||||
Graduation graduationX() const {return grad_x;}
|
||||
@@ -193,17 +205,10 @@ public:
|
||||
QWidget * viewport() const {return canvas;}
|
||||
QByteArray save();
|
||||
void load(QByteArray ba);
|
||||
///void lock() {mutex_.lock();}
|
||||
///void unlock() {mutex_.unlock();}
|
||||
|
||||
///void reset() {mutex.lock(); clear(); mutex.unlock();}
|
||||
void reset() {clear();}
|
||||
|
||||
GraphicType graphic(int arg) {if (arg < 0 || arg >= graphics.size()) return GraphicType(); return graphics[arg];}
|
||||
const QVector<GraphicType> & allGraphics() const {return graphics;}
|
||||
void setAllGraphics(const QVector<GraphicType> & g, bool update = true) {graphics = g; if (update) updateLegend();}
|
||||
// void setHistogramData(const QVector<float> & g, int graphic);
|
||||
// void setHistogramData(const QVector<float> & g) {setHistogramData(g, curGraphic);}
|
||||
|
||||
double canvas2realX(double px) const;
|
||||
double canvas2realY(double py) const;
|
||||
@@ -229,7 +234,8 @@ public slots:
|
||||
void setGraphicColor(const QColor & color) {setGraphicColor(color, curGraphic);}
|
||||
void setGridColor(const QColor & color) {grid_pen.setColor(color); if (aupdate) update();}
|
||||
void setSelectionColor(const QColor & color) {selpen.setColor(color);}
|
||||
void setGraphicStyle(const Qt::PenStyle & style) {graphics[curGraphic].pen.setStyle(style); updateLegend(); if (aupdate) update();}
|
||||
void setGraphicStyle(const Qt::PenStyle & style, int index) {graphics[index].pen.setStyle(style); updateLegend(); if (aupdate) update();}
|
||||
void setGraphicStyle(const Qt::PenStyle & style) {setGraphicStyle(style, curGraphic);}
|
||||
void setGridStyle(const Qt::PenStyle & style) {grid_pen.setStyle(style); if (aupdate) update();}
|
||||
void setSelectionStyle(const Qt::PenStyle & style) {selpen.setStyle(style);}
|
||||
void setGraphicVisible(bool visible, int index) {graphics[index].visible = visible; updateLegendChecks(); if (aupdate) update();}
|
||||
@@ -276,9 +282,6 @@ public slots:
|
||||
void setOnlyExpandY(bool yes);
|
||||
void setOnlyExpandX(bool yes);
|
||||
void setGesturesNavigation(bool yes);
|
||||
void setHistogramMinIntervals(int value) {min_int = value; updateGraphics();}
|
||||
void setHistogramMaxIntervals(int value) {max_int = value; updateGraphics();}
|
||||
void setHistogramMinDeltaMultiplier(double value) {mdm = value; updateGraphics();}
|
||||
void setGraphicsData(const GraphicsData & gd);
|
||||
void setGraphicsDataRaw(const QByteArray & ba);
|
||||
|
||||
@@ -357,8 +360,6 @@ protected:
|
||||
|
||||
Ui::Graphic * ui;
|
||||
UGLWidget * canvas_gl;
|
||||
///QMutex mutex, mutex_;
|
||||
QDialog * fullscr_dialog;
|
||||
QWidget * canvas;
|
||||
QImage * buffer;
|
||||
QPainter * painter;
|
||||
@@ -368,7 +369,7 @@ protected:
|
||||
QVector<GraphicType> graphics;
|
||||
int curGraphic;
|
||||
GraphicAction curaction, prevaction;
|
||||
QRectF grect, rrect, selrect, limit_, def_rect;
|
||||
QRectF grect, selrect, limit_, def_rect;
|
||||
QRect margins_;
|
||||
QSize font_sz;
|
||||
QPoint startpos, curpos, prevpos, gridborder;
|
||||
@@ -378,15 +379,18 @@ protected:
|
||||
Graphic::Alignment align;
|
||||
GraphicConf * conf;
|
||||
EvalSpinBox line_x_min, line_x_max, line_y_min, line_y_max;
|
||||
QTime tm, tm_fscr;
|
||||
QElapsedTimer tm;
|
||||
#ifdef Q_OS_ANDROID
|
||||
QElapsedTimer tm_fscr;
|
||||
#endif
|
||||
QIcon icon_exp_x, icon_exp_y, icon_exp_sx, icon_exp_sy;
|
||||
QImage icon_pause_b, icon_pause_f;
|
||||
Graduation grad_x, grad_y;
|
||||
AxisType axis_type_x;
|
||||
double gridx, gridy, history, visible_time, inc_x, mdm, grid_numbers_x, grid_numbers_y, LN2, LN5, LN10;
|
||||
double gridx, gridy, history, visible_time, inc_x, grid_numbers_x, grid_numbers_y, LN10;
|
||||
double eminx, eminy, emaxx, emaxy, pause_phase, gesture_angle;
|
||||
int legy, lastw, lasth, min_repaint_int, min_int, max_int, timer_pause, thick;
|
||||
bool aalias, aupdate, mupdate, grid, guides, isFit, isEmpty, isOGL, isHover, bufferActive, cancel, pause_, isPrinting, gestures;
|
||||
int lastw, lasth, min_repaint_int, timer_pause, thick;
|
||||
bool aalias, aupdate, grid, guides, isFit, isOGL, isHover, bufferActive, cancel, pause_, gestures;
|
||||
bool hasLblX, hasLblY, navigation, only_expand_y, only_expand_x, is_lines_update, leg_update, visible_update, fullscr, need_mouse_pan;
|
||||
|
||||
protected slots:
|
||||
@@ -405,7 +409,7 @@ protected slots:
|
||||
void lineYMinChanged(double value) {selrect.setBottom(value); checkLines();}
|
||||
void lineYMaxChanged(double value) {selrect.setTop(value); checkLines();}
|
||||
void on_buttonClose_clicked() {emit closeRequest(this);}
|
||||
void on_buttonClear_clicked() {reset(); emit cleared();}
|
||||
void on_buttonClear_clicked() {clear(); emit cleared();}
|
||||
void on_buttonAutofit_clicked();
|
||||
void on_buttonConfigure_clicked();
|
||||
void on_buttonFullscreen_clicked() {fullscreen();}
|
||||
|
||||
@@ -29,11 +29,11 @@ GraphicConf::GraphicConf(QVector<GraphicType> & graphics_, QWidget * parent): QD
|
||||
|
||||
|
||||
void GraphicConf::changeEvent(QEvent * e) {
|
||||
QDialog::changeEvent(e);
|
||||
if (e->type() == QEvent::LanguageChange) {
|
||||
ui->retranslateUi(this);
|
||||
return;
|
||||
}
|
||||
QDialog::changeEvent(e);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
QAD - Qt ADvanced
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef GRAPHIC_CONF_H
|
||||
#define GRAPHIC_CONF_H
|
||||
|
||||
|
||||
387
qad/graphic/lang/qad_graphic_en.ts
Normal file
387
qad/graphic/lang/qad_graphic_en.ts
Normal file
@@ -0,0 +1,387 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="en_US">
|
||||
<context>
|
||||
<name>Graphic</name>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="53"/>
|
||||
<source>Autofit</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="64"/>
|
||||
<source>Grid</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="81"/>
|
||||
<source>Cursor axis</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="95"/>
|
||||
<source>Only expand Y</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="109"/>
|
||||
<source>Only expand X</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="123"/>
|
||||
<source>Fullscreen</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="134"/>
|
||||
<source>Border inputs</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="151"/>
|
||||
<source>Legend</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="168"/>
|
||||
<source>Pause</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="182"/>
|
||||
<source>Configure ...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="193"/>
|
||||
<source>Save image ...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="220"/>
|
||||
<source>Clear</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="231"/>
|
||||
<source>Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="396"/>
|
||||
<source>Cursor: ( ; )</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.cpp" line="387"/>
|
||||
<location filename="../graphic.cpp" line="1231"/>
|
||||
<source>Cursor: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.cpp" line="402"/>
|
||||
<source>Selection</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.cpp" line="403"/>
|
||||
<source>Size</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.cpp" line="407"/>
|
||||
<location filename="../graphic.cpp" line="413"/>
|
||||
<source>Range</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.cpp" line="408"/>
|
||||
<location filename="../graphic.cpp" line="414"/>
|
||||
<source>Length</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.cpp" line="525"/>
|
||||
<location filename="../graphic.cpp" line="566"/>
|
||||
<source>Cursor</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.cpp" line="814"/>
|
||||
<source>Save Image</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.cpp" line="865"/>
|
||||
<source>y(x)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.cpp" line="1678"/>
|
||||
<source>Check all</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GraphicConf</name>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="17"/>
|
||||
<source>Graphic parameters</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="26"/>
|
||||
<source>Appearance</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="34"/>
|
||||
<source>Border inputs</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="41"/>
|
||||
<source>Antialiasing</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="48"/>
|
||||
<source>Status bar</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="55"/>
|
||||
<source>OpenGL</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="62"/>
|
||||
<source>Legend</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="82"/>
|
||||
<source>Background color:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="102"/>
|
||||
<source>Text color:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="121"/>
|
||||
<source>Graphics</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="140"/>
|
||||
<location filename="../graphic_conf.ui" line="236"/>
|
||||
<source>Color:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="154"/>
|
||||
<location filename="../graphic_conf.ui" line="250"/>
|
||||
<source>Style:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="164"/>
|
||||
<source>Lines width:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="184"/>
|
||||
<source>Points width:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="207"/>
|
||||
<source>Fill:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="227"/>
|
||||
<source>Grid</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="260"/>
|
||||
<source>Width:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="274"/>
|
||||
<source>Step X:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="281"/>
|
||||
<source>Step Y:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="288"/>
|
||||
<source>Auto X</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="298"/>
|
||||
<source>Auto Y</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="308"/>
|
||||
<location filename="../graphic_conf.ui" line="311"/>
|
||||
<source>30</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="321"/>
|
||||
<location filename="../graphic_conf.ui" line="324"/>
|
||||
<source>50</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="357"/>
|
||||
<source>Margins</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="363"/>
|
||||
<location filename="../graphic_conf.ui" line="373"/>
|
||||
<location filename="../graphic_conf.ui" line="393"/>
|
||||
<location filename="../graphic_conf.ui" line="433"/>
|
||||
<location filename="../graphic_conf.ui" line="453"/>
|
||||
<source> px</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="383"/>
|
||||
<source>All:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="403"/>
|
||||
<source>Right:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="413"/>
|
||||
<source>Left:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="423"/>
|
||||
<source>Bottom:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="443"/>
|
||||
<source>Top:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.cpp" line="13"/>
|
||||
<source>NoPen</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.cpp" line="13"/>
|
||||
<source>Solid</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.cpp" line="13"/>
|
||||
<source>Dash</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.cpp" line="14"/>
|
||||
<source>Dot</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.cpp" line="14"/>
|
||||
<source>Dash-Dot</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.cpp" line="14"/>
|
||||
<source>Dash-Dot-Dot</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="14"/>
|
||||
<source>QPICalculator</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="29"/>
|
||||
<source>Calculator</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="60"/>
|
||||
<source>Expression</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="65"/>
|
||||
<source>Result</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="76"/>
|
||||
<source>Correct</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="83"/>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="100"/>
|
||||
<source>0</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="111"/>
|
||||
<source>Variables</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="139"/>
|
||||
<source>Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="144"/>
|
||||
<source>Value</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="169"/>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="290"/>
|
||||
<source>Del</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="219"/>
|
||||
<source>Graphics</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="260"/>
|
||||
<source>On</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="265"/>
|
||||
<source>Function</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
@@ -4,129 +4,121 @@
|
||||
<context>
|
||||
<name>Graphic</name>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="44"/>
|
||||
<location filename="../ui_graphic.h" line="320"/>
|
||||
<location filename="../graphic.ui" line="53"/>
|
||||
<source>Autofit</source>
|
||||
<translation>Автомасштаб</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="61"/>
|
||||
<location filename="../ui_graphic.h" line="323"/>
|
||||
<location filename="../graphic.ui" line="64"/>
|
||||
<source>Grid</source>
|
||||
<translation>Сетка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="84"/>
|
||||
<location filename="../ui_graphic.h" line="326"/>
|
||||
<location filename="../graphic.ui" line="81"/>
|
||||
<source>Cursor axis</source>
|
||||
<translation>Плавающие оси</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="104"/>
|
||||
<location filename="../ui_graphic.h" line="329"/>
|
||||
<location filename="../graphic.ui" line="95"/>
|
||||
<source>Only expand Y</source>
|
||||
<translation>Только расширять Y</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="124"/>
|
||||
<location filename="../ui_graphic.h" line="332"/>
|
||||
<location filename="../graphic.ui" line="109"/>
|
||||
<source>Only expand X</source>
|
||||
<translation>Только расширять X</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="144"/>
|
||||
<location filename="../ui_graphic.h" line="335"/>
|
||||
<location filename="../graphic.ui" line="123"/>
|
||||
<source>Fullscreen</source>
|
||||
<translation>Во весь экран</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="161"/>
|
||||
<location filename="../ui_graphic.h" line="338"/>
|
||||
<location filename="../graphic.ui" line="134"/>
|
||||
<source>Border inputs</source>
|
||||
<translation>Граничные поля ввода</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="184"/>
|
||||
<location filename="../ui_graphic.h" line="341"/>
|
||||
<location filename="../graphic.ui" line="151"/>
|
||||
<source>Legend</source>
|
||||
<translation>Легенда</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="207"/>
|
||||
<location filename="../ui_graphic.h" line="344"/>
|
||||
<location filename="../graphic.ui" line="168"/>
|
||||
<source>Pause</source>
|
||||
<translation>Пауза</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="182"/>
|
||||
<source>Configure ...</source>
|
||||
<translation>Настроить ...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="224"/>
|
||||
<location filename="../ui_graphic.h" line="347"/>
|
||||
<location filename="../graphic.ui" line="193"/>
|
||||
<source>Save image ...</source>
|
||||
<translation>Сохранить изображение ...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="257"/>
|
||||
<location filename="../ui_graphic.h" line="350"/>
|
||||
<location filename="../graphic.ui" line="220"/>
|
||||
<source>Clear</source>
|
||||
<translation>Очистить</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="274"/>
|
||||
<location filename="../ui_graphic.h" line="353"/>
|
||||
<location filename="../graphic.ui" line="231"/>
|
||||
<source>Close</source>
|
||||
<translation>Закрыть</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.ui" line="425"/>
|
||||
<location filename="../ui_graphic.h" line="355"/>
|
||||
<location filename="../graphic.ui" line="396"/>
|
||||
<source>Cursor: ( ; )</source>
|
||||
<translation>Курсор: ( ; )</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.cpp" line="205"/>
|
||||
<location filename="../graphic.cpp" line="809"/>
|
||||
<location filename="../graphic.cpp" line="387"/>
|
||||
<location filename="../graphic.cpp" line="1231"/>
|
||||
<source>Cursor: </source>
|
||||
<translation>Курсор: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.cpp" line="216"/>
|
||||
<location filename="../graphic.cpp" line="402"/>
|
||||
<source>Selection</source>
|
||||
<translation>Выделение</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.cpp" line="217"/>
|
||||
<location filename="../graphic.cpp" line="403"/>
|
||||
<source>Size</source>
|
||||
<translation>Размер</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.cpp" line="221"/>
|
||||
<location filename="../graphic.cpp" line="227"/>
|
||||
<location filename="../graphic.cpp" line="407"/>
|
||||
<location filename="../graphic.cpp" line="413"/>
|
||||
<source>Range</source>
|
||||
<translation>Диапазон</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.cpp" line="222"/>
|
||||
<location filename="../graphic.cpp" line="228"/>
|
||||
<location filename="../graphic.cpp" line="408"/>
|
||||
<location filename="../graphic.cpp" line="414"/>
|
||||
<source>Length</source>
|
||||
<translation>Длина</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.cpp" line="329"/>
|
||||
<location filename="../graphic.cpp" line="380"/>
|
||||
<location filename="../graphic.cpp" line="525"/>
|
||||
<location filename="../graphic.cpp" line="566"/>
|
||||
<source>Cursor</source>
|
||||
<translation>Курсор</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.cpp" line="531"/>
|
||||
<location filename="../graphic.cpp" line="814"/>
|
||||
<source>Save Image</source>
|
||||
<translation>Сохранить изображение</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.cpp" line="576"/>
|
||||
<location filename="../graphic.cpp" line="865"/>
|
||||
<source>y(x)</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic.cpp" line="1124"/>
|
||||
<location filename="../graphic.cpp" line="1678"/>
|
||||
<source>Check all</source>
|
||||
<translation>Выбрать все</translation>
|
||||
</message>
|
||||
@@ -135,217 +127,265 @@
|
||||
<name>GraphicConf</name>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="17"/>
|
||||
<location filename="../ui_graphic_conf.h" line="450"/>
|
||||
<source>Graphic parameters</source>
|
||||
<translation>Параметры графика</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="32"/>
|
||||
<location filename="../ui_graphic_conf.h" line="451"/>
|
||||
<location filename="../graphic_conf.ui" line="26"/>
|
||||
<source>Appearance</source>
|
||||
<translation>Внешний вид</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="46"/>
|
||||
<location filename="../ui_graphic_conf.h" line="452"/>
|
||||
<location filename="../graphic_conf.ui" line="34"/>
|
||||
<source>Border inputs</source>
|
||||
<translation>Граничные поля ввода</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="53"/>
|
||||
<location filename="../ui_graphic_conf.h" line="453"/>
|
||||
<location filename="../graphic_conf.ui" line="41"/>
|
||||
<source>Antialiasing</source>
|
||||
<translation>Сглаживание</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="60"/>
|
||||
<location filename="../ui_graphic_conf.h" line="454"/>
|
||||
<location filename="../graphic_conf.ui" line="48"/>
|
||||
<source>Status bar</source>
|
||||
<translation>Панель статуса</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="67"/>
|
||||
<location filename="../ui_graphic_conf.h" line="455"/>
|
||||
<location filename="../graphic_conf.ui" line="55"/>
|
||||
<source>OpenGL</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="74"/>
|
||||
<location filename="../ui_graphic_conf.h" line="456"/>
|
||||
<location filename="../graphic_conf.ui" line="62"/>
|
||||
<source>Legend</source>
|
||||
<translation>Легенда</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="94"/>
|
||||
<location filename="../ui_graphic_conf.h" line="457"/>
|
||||
<location filename="../graphic_conf.ui" line="82"/>
|
||||
<source>Background color:</source>
|
||||
<translation>Цвет фона:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="114"/>
|
||||
<location filename="../ui_graphic_conf.h" line="458"/>
|
||||
<location filename="../graphic_conf.ui" line="102"/>
|
||||
<source>Text color:</source>
|
||||
<translation>Цвет текста:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="133"/>
|
||||
<location filename="../ui_graphic_conf.h" line="459"/>
|
||||
<location filename="../graphic_conf.ui" line="121"/>
|
||||
<source>Graphics</source>
|
||||
<translation>Графики</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="161"/>
|
||||
<location filename="../graphic_conf.ui" line="263"/>
|
||||
<location filename="../ui_graphic_conf.h" line="460"/>
|
||||
<location filename="../ui_graphic_conf.h" line="466"/>
|
||||
<location filename="../graphic_conf.ui" line="140"/>
|
||||
<location filename="../graphic_conf.ui" line="236"/>
|
||||
<source>Color:</source>
|
||||
<translation>Цвет:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="175"/>
|
||||
<location filename="../graphic_conf.ui" line="277"/>
|
||||
<location filename="../ui_graphic_conf.h" line="461"/>
|
||||
<location filename="../ui_graphic_conf.h" line="467"/>
|
||||
<location filename="../graphic_conf.ui" line="154"/>
|
||||
<location filename="../graphic_conf.ui" line="250"/>
|
||||
<source>Style:</source>
|
||||
<translation>Стиль:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="185"/>
|
||||
<location filename="../ui_graphic_conf.h" line="462"/>
|
||||
<location filename="../graphic_conf.ui" line="164"/>
|
||||
<source>Lines width:</source>
|
||||
<translation>Толщина линий:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="205"/>
|
||||
<location filename="../ui_graphic_conf.h" line="463"/>
|
||||
<location filename="../graphic_conf.ui" line="184"/>
|
||||
<source>Points width:</source>
|
||||
<translation>Толщина точек:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="225"/>
|
||||
<location filename="../ui_graphic_conf.h" line="464"/>
|
||||
<location filename="../graphic_conf.ui" line="207"/>
|
||||
<source>Fill:</source>
|
||||
<translation>Заливка:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="245"/>
|
||||
<location filename="../ui_graphic_conf.h" line="465"/>
|
||||
<location filename="../graphic_conf.ui" line="227"/>
|
||||
<source>Grid</source>
|
||||
<translation>Сетка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="287"/>
|
||||
<location filename="../ui_graphic_conf.h" line="468"/>
|
||||
<location filename="../graphic_conf.ui" line="260"/>
|
||||
<source>Width:</source>
|
||||
<translation>Толщина:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="317"/>
|
||||
<location filename="../ui_graphic_conf.h" line="469"/>
|
||||
<location filename="../graphic_conf.ui" line="274"/>
|
||||
<source>Step X:</source>
|
||||
<translation>Шаг X:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="324"/>
|
||||
<location filename="../ui_graphic_conf.h" line="470"/>
|
||||
<location filename="../graphic_conf.ui" line="281"/>
|
||||
<source>Step Y:</source>
|
||||
<translation>Шаг Y:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="347"/>
|
||||
<location filename="../ui_graphic_conf.h" line="471"/>
|
||||
<location filename="../graphic_conf.ui" line="288"/>
|
||||
<source>Auto X</source>
|
||||
<translation>Авто X</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="357"/>
|
||||
<location filename="../ui_graphic_conf.h" line="472"/>
|
||||
<location filename="../graphic_conf.ui" line="298"/>
|
||||
<source>Auto Y</source>
|
||||
<translation>Авто Y</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="308"/>
|
||||
<location filename="../graphic_conf.ui" line="311"/>
|
||||
<source>30</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="321"/>
|
||||
<location filename="../graphic_conf.ui" line="324"/>
|
||||
<source>50</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto step</source>
|
||||
<translation type="obsolete">Автоматический шаг</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="390"/>
|
||||
<location filename="../ui_graphic_conf.h" line="473"/>
|
||||
<location filename="../graphic_conf.ui" line="357"/>
|
||||
<source>Margins</source>
|
||||
<translation>Поля</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="402"/>
|
||||
<location filename="../graphic_conf.ui" line="412"/>
|
||||
<location filename="../graphic_conf.ui" line="432"/>
|
||||
<location filename="../graphic_conf.ui" line="472"/>
|
||||
<location filename="../graphic_conf.ui" line="492"/>
|
||||
<location filename="../ui_graphic_conf.h" line="474"/>
|
||||
<location filename="../ui_graphic_conf.h" line="475"/>
|
||||
<location filename="../ui_graphic_conf.h" line="477"/>
|
||||
<location filename="../ui_graphic_conf.h" line="481"/>
|
||||
<location filename="../ui_graphic_conf.h" line="483"/>
|
||||
<location filename="../graphic_conf.ui" line="363"/>
|
||||
<location filename="../graphic_conf.ui" line="373"/>
|
||||
<location filename="../graphic_conf.ui" line="393"/>
|
||||
<location filename="../graphic_conf.ui" line="433"/>
|
||||
<location filename="../graphic_conf.ui" line="453"/>
|
||||
<source> px</source>
|
||||
<translation> пикс</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="422"/>
|
||||
<location filename="../ui_graphic_conf.h" line="476"/>
|
||||
<location filename="../graphic_conf.ui" line="383"/>
|
||||
<source>All:</source>
|
||||
<translation>Все:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="442"/>
|
||||
<location filename="../ui_graphic_conf.h" line="478"/>
|
||||
<location filename="../graphic_conf.ui" line="403"/>
|
||||
<source>Right:</source>
|
||||
<translation>Правое:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="452"/>
|
||||
<location filename="../ui_graphic_conf.h" line="479"/>
|
||||
<location filename="../graphic_conf.ui" line="413"/>
|
||||
<source>Left:</source>
|
||||
<translation>Левое:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="462"/>
|
||||
<location filename="../ui_graphic_conf.h" line="480"/>
|
||||
<location filename="../graphic_conf.ui" line="423"/>
|
||||
<source>Bottom:</source>
|
||||
<translation>Нижнее:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.ui" line="482"/>
|
||||
<location filename="../ui_graphic_conf.h" line="482"/>
|
||||
<location filename="../graphic_conf.ui" line="443"/>
|
||||
<source>Top:</source>
|
||||
<translation>Верхнее:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.cpp" line="7"/>
|
||||
<location filename="../graphic_conf.cpp" line="13"/>
|
||||
<source>NoPen</source>
|
||||
<translation>НетЛинии</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.cpp" line="7"/>
|
||||
<location filename="../graphic_conf.cpp" line="13"/>
|
||||
<source>Solid</source>
|
||||
<translation>Сплошная</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.cpp" line="7"/>
|
||||
<location filename="../graphic_conf.cpp" line="13"/>
|
||||
<source>Dash</source>
|
||||
<translation>Штриховая</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.cpp" line="8"/>
|
||||
<location filename="../graphic_conf.cpp" line="14"/>
|
||||
<source>Dot</source>
|
||||
<translation>Пунктирная</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.cpp" line="8"/>
|
||||
<location filename="../graphic_conf.cpp" line="14"/>
|
||||
<source>Dash-Dot</source>
|
||||
<translation>ШтрихПунктирная</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../graphic_conf.cpp" line="8"/>
|
||||
<location filename="../graphic_conf.cpp" line="14"/>
|
||||
<source>Dash-Dot-Dot</source>
|
||||
<translation>ШтрихПунктирПунктирная</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="14"/>
|
||||
<source>QPICalculator</source>
|
||||
<translation>Калькулятор</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="29"/>
|
||||
<source>Calculator</source>
|
||||
<translation>Калькулятор</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="60"/>
|
||||
<source>Expression</source>
|
||||
<translation>Выражение</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="65"/>
|
||||
<source>Result</source>
|
||||
<translation>Результат</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="76"/>
|
||||
<source>Correct</source>
|
||||
<translation>Корректно</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="83"/>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="100"/>
|
||||
<source>0</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="111"/>
|
||||
<source>Variables</source>
|
||||
<translation>Переменные</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="139"/>
|
||||
<source>Name</source>
|
||||
<translation>Имя</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="144"/>
|
||||
<source>Value</source>
|
||||
<translation>Значение</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="169"/>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="290"/>
|
||||
<source>Del</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="219"/>
|
||||
<source>Graphics</source>
|
||||
<translation>Графики</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="260"/>
|
||||
<source>On</source>
|
||||
<translation>Вкл</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../qpicalculator/mainwindow.ui" line="265"/>
|
||||
<source>Function</source>
|
||||
<translation>Функция</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
||||
2
qad/graphic/lang/update.bat
Normal file
2
qad/graphic/lang/update.bat
Normal file
@@ -0,0 +1,2 @@
|
||||
lupdate ../ -ts qad_graphic_ru.ts
|
||||
lupdate ../ -ts qad_graphic_en.ts
|
||||
@@ -129,7 +129,7 @@ void MainWindow::saving(QPIConfig & conf) {
|
||||
vc = treeGraphics->topLevelItemCount();
|
||||
for (int i = 0; i < vc; ++i) {
|
||||
QTreeWidgetItem * ti = treeGraphics->topLevelItem(i);
|
||||
vars << QString::number(ti->backgroundColor(1).rgb()) << ti->text(2);
|
||||
vars << QString::number(ti->background(1).color().rgb()) << ti->text(2);
|
||||
}
|
||||
QByteArray ba; QDataStream s(&ba, QIODevice::WriteOnly);
|
||||
s << graphic->allGraphics();
|
||||
|
||||
BIN
qad/icons/logview.png
Normal file
BIN
qad/icons/logview.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 809 B |
BIN
qad/icons/select-all.png
Normal file
BIN
qad/icons/select-all.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 21 KiB |
BIN
qad/icons/select-none.png
Normal file
BIN
qad/icons/select-none.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 36 KiB |
@@ -3,7 +3,7 @@
|
||||
|
||||
#include <QtCore/QtGlobal>
|
||||
|
||||
#ifdef QAD_STATIC_DEFINE
|
||||
#if defined(QAD_STATIC_DEFINE) || defined(DOXYGEN)
|
||||
# define QAD_EXPORT
|
||||
#else
|
||||
# ifdef QAD_SHARED_DEFINE
|
||||
|
||||
54
qad/sql_table/lang/qad_sql_table_en.ts
Normal file
54
qad/sql_table/lang/qad_sql_table_en.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="en_US">
|
||||
<context>
|
||||
<name>SQLTableWidget</name>
|
||||
<message>
|
||||
<location filename="../sql_table_widget.ui" line="14"/>
|
||||
<source>SQLTableWidget</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sql_table_widget.ui" line="51"/>
|
||||
<source>Table doesn`t exists!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sql_table_widget.ui" line="182"/>
|
||||
<source>Add record</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sql_table_widget.ui" line="295"/>
|
||||
<source>Configure filters</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sql_table_widget.ui" line="339"/>
|
||||
<source>Clear</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sql_table_widget.ui" line="347"/>
|
||||
<location filename="../sql_table_widget.ui" line="350"/>
|
||||
<source>Operator AND</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sql_table_widget.ui" line="358"/>
|
||||
<location filename="../sql_table_widget.ui" line="361"/>
|
||||
<source>Operator OR</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sql_table_widget.cpp" line="358"/>
|
||||
<source>Remove selected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../sql_table_widget.cpp" line="447"/>
|
||||
<source>Table "%1" doesn`t exists!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
@@ -1,25 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.0" language="ru_RU">
|
||||
<context>
|
||||
<name>SQLFilterEdit</name>
|
||||
<message utf8="true">
|
||||
<source>≈</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message utf8="true">
|
||||
<source>≠</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message utf8="true">
|
||||
<source>≥</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message utf8="true">
|
||||
<source>≤</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<TS version="2.1" language="ru_RU">
|
||||
<context>
|
||||
<name>SQLTableWidget</name>
|
||||
<message>
|
||||
@@ -54,5 +35,9 @@
|
||||
<source>Table "%1" doesn`t exists!</source>
|
||||
<translation>Таблица "%1" не существует!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>SQLTableWidget</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
||||
2
qad/sql_table/lang/update.bat
Normal file
2
qad/sql_table/lang/update.bat
Normal file
@@ -0,0 +1,2 @@
|
||||
lupdate ../ -ts qad_sql_table_ru.ts
|
||||
lupdate ../ -ts qad_sql_table_en.ts
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
QAD - Qt ADvanced
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef SQL_RECORD_WIDGET_H
|
||||
#define SQL_RECORD_WIDGET_H
|
||||
|
||||
|
||||
@@ -443,6 +443,19 @@ void SQLTableWidget::timerEvent(QTimerEvent * ) {
|
||||
}
|
||||
|
||||
|
||||
void SQLTableWidget::changeEvent(QEvent * e) {
|
||||
QWidget::changeEvent(e);
|
||||
switch (e->type()) {
|
||||
case QEvent::LanguageChange:
|
||||
ui->retranslateUi(this);
|
||||
action_del->setText(tr("Remove selected"));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void SQLTableWidget::setTableName(const QString & t) {
|
||||
ui->labelEmpty->setText(tr("Table \"%1\" doesn`t exists!").arg(t));
|
||||
stopTimer();
|
||||
|
||||
@@ -1,3 +1,22 @@
|
||||
/*
|
||||
QAD - Qt ADvanced
|
||||
|
||||
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef MYSQLTABLE_H
|
||||
#define MYSQLTABLE_H
|
||||
|
||||
@@ -263,6 +282,7 @@ private:
|
||||
|
||||
bool eventFilter(QObject * o, QEvent * e);
|
||||
void timerEvent(QTimerEvent * );
|
||||
void changeEvent(QEvent * e);
|
||||
void stopTimer() {if (timer != 0) killTimer(timer); timer = 0;}
|
||||
bool checkTable();
|
||||
QStringList getTableColumns(const QString & t);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user