version 2.0.0_alpha

Important! All QtWraps macros renamed!
Qt 6 support
Graphic export feature
qad_types cross-Qt small changes
This commit is contained in:
2021-03-05 13:05:23 +03:00
parent add26cf9ad
commit 7b011ed242
46 changed files with 815 additions and 219 deletions

View File

@@ -1,10 +1,10 @@
cmake_minimum_required(VERSION 3.0)
cmake_policy(SET CMP0017 NEW) # need include() with .cmake
project(qad)
set(qad_MAJOR 1)
set(qad_MINOR 18)
set(qad_MAJOR 2)
set(qad_MINOR 0)
set(qad_REVISION 0)
set(qad_SUFFIX )
set(qad_SUFFIX alpha)
set(qad_COMPANY SHS)
set(qad_DOMAIN org.SHS)
@@ -32,17 +32,17 @@ option(UTILS "Build various utils" ${_plugins_default_})
option(DESIGNER_PLUGINS "Build Qt designer plugins" ${_plugins_default_})
macro(qad_library NAME _MODULES _LIBS)
shstk_qt_project(qad_${NAME} FALSE "qad" "${_MODULES}" "${_LIBS}" ${ARGN})
shstk_qt_install("qad" FALSE qad_${NAME} "${out_HDR}" "out_QM")
shstk_qad_project(qad_${NAME} FALSE "qad" "${_MODULES}" "${_LIBS}" ${ARGN})
shstk_qad_install("qad" FALSE qad_${NAME} "${out_HDR}" "out_QM")
endmacro()
macro(qad_application NAME _MODULES _LIBS)
shstk_qt_project(${NAME} TRUE "qad" "${_MODULES}" "${_LIBS}" ${ARGN})
shstk_qt_install("qad" TRUE ${NAME} "" "out_QM")
shstk_qad_project(${NAME} TRUE "qad" "${_MODULES}" "${_LIBS}" ${ARGN})
shstk_qad_install("qad" TRUE ${NAME} "" "out_QM")
endmacro()
macro(qad_plugin NAME _MODULES _LIBS)
shstk_qt_plugin(qad_${NAME} "${_MODULES}" "qad_${NAME};${_LIBS}")
shstk_qad_plugin(qad_${NAME} "${_MODULES}" "qad_${NAME};${_LIBS}")
endmacro()
shstk_install(qad FALSE "" "${qad_VERSION_FILE}")

View File

@@ -30,7 +30,7 @@ shstk_is_parent_exists(hasParent PARENT_DIRECTORY)
shstk_set_find_dirs(qad)
set(_SEARCH_DIR ${qad_LIBDIR})
find_qt(Core QUIET)
qad_find_qt(Core QUIET)
if(NOT SOME_QT_FOUND)
message(WARNING "No qt found, please install qt")
set(QAD_FOUND OFF CACHE BOOL "")

View File

@@ -1,19 +1,19 @@
#[[
find_qt([<Module1> <Module2> ...] [Qt4] [Qt5])
qad_find_qt([<Module1> <Module2> ...] [Qt4] [Qt5] [Qt6])
Find Qt4 or/and Qt5 packages
If Qt4/5 found, set
* Qt<4/5>_ROOT var to Qt root dir
* Qt<4/5>_BIN var to Qt binary dir
* Qt<4/5>_PLUGINS_DIR var to Qt plugins dir
* Qt<4/5>_LANG_DIR var to Qt translations dir
Find Qt4 or/and Qt5, Qt6 packages
If Qt4/5/6 found, set
* Qt<4/5/6>_ROOT var to Qt root dir
* Qt<4/5/6>_BIN var to Qt binary dir
* Qt<4/5/6>_PLUGINS_DIR var to Qt plugins dir
* Qt<4/5/6>_LANG_DIR var to Qt translations dir
Also set variable SOME_QT_FOUND
qt_sources(<src_out_var> [NO_DEFAULT] [DIR <dir>] [<regexp> ...])
qad_sources(<src_out_var> [NO_DEFAULT] [DIR <dir>] [<regexp> ...])
Collect all sources, optionally in directory <dir> and
Additional filters <regexp>. By default filter files with regexps
@@ -23,34 +23,34 @@ Default filters disabled with option NO_DEFAULT
qt_wrap(<file0> <file1> ... [HDRS <hrd_var>] [CPPS <cpp_var>] [QMS <qm_var>])
qad_wrap(<file0> <file1> ... [HDRS <hrd_var>] [CPPS <cpp_var>] [QMS <qm_var>])
Prepare sources for compile
Store headers to <hrd_var>, all wrapped Qt4 files to <cpp_var>_Qt4 and Qt5 files to <cpp_var>_Qt5
version are automatic detected after find_qt() call
Store headers to <hrd_var>, all wrapped Qt4 files to <cpp_var>_Qt4, Qt5 files to <cpp_var>_Qt5 and Qt6 files to <cpp_var>_Qt6
version are automatic detected after qad_find_qt() call
qt_add_executable(<name> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] source1 [source2 ...])
qad_add_executable(<name> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] source1 [source2 ...])
Add executables for founded Qt versions, target names is <name><TARGET_SUFFIX_Qt?>
All needed Qt includes automatic added to corresponding targets
<source> cant be CPPS variable passed to qt_wrap() or some list or filename
<source> cant be CPPS variable passed to qad_wrap() or some list or filename
qt_add_library(<name> [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] source1 [source2 ...])
qad_add_library(<name> [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] source1 [source2 ...])
Add library for founded Qt versions, target names is <name><TARGET_SUFFIX_Qt?>
All needed Qt includes automatic added to corresponding targets
<source> cant be CPPS variable passed to qt_wrap() or some list or filename
<source> cant be CPPS variable passed to qad_wrap() or some list or filename
qt_target_link_libraries(<name> ... <item> ...)
qad_target_link_libraries(<name> ... <item> ...)
Link targets for founded Qt versions, target names is <name><TARGET_SUFFIX_Qt?>
All needed Qt libraries automatic added to corresponding targets
@@ -60,7 +60,7 @@ add <MULTILIB_SUFFIX_Qt?> or individual <MULTILIB_>libname<_SUFFIX_Qt?>
qt_target_compile_definitions(<name> ...)
qad_target_compile_definitions(<name> ...)
Syntax similar to original "target_compile_definitions()"
Specify compile definitions to use when compiling a given <name>
@@ -68,7 +68,7 @@ Specify compile definitions to use when compiling a given <name>
qt_target_include_directories(<name> ...)
qad_target_include_directories(<name> ...)
Syntax similar to original "target_include_directories()"
Add include directories to a target
@@ -76,7 +76,7 @@ Add include directories to a target
qt_install(...)
qad_install(...)
Syntax similar to original "install()"
Install targets for founded Qt versions
@@ -90,12 +90,12 @@ to corresponding Qt plugins directory
Add LANG type for first argument - in this case you should
specify variable name, not variable value!
e.g. "qt_install(LANG my_QM DESTINATION QtLang)"
e.g. "qad_install(LANG my_QM DESTINATION QtLang)"
qt_install_lang(<name> DESTINATION <dir> [PATHS <path0> [<path1>] [...] ])
qad_install_lang(<name> DESTINATION <dir> [PATHS <path0> [<path1>] [...] ])
Search Qt translations for all <name> dependencies
in Qt<?>_LANG_DIR for <name>_LANG languages
@@ -105,23 +105,23 @@ You should use "set_lang()" macro before this action
qt_get_target(<name> <var> [Qt4 | Qt5])
qad_get_target(<name> <var> [Qt4 | Qt5 | Qt6])
Write real <name> Qt target name to <var>
If Qt4 or Qt5 specified, search for this version,
If Qt4 or Qt5, Qt6 specified, search for this version,
otherwise returns greatest version
qt_get_targets(<name> <var>)
qad_get_targets(<name> <var>)
Write all real <name> Qt target names to <var>
qt_generate_export_header(<name> ...)
qad_generate_export_header(<name> ...)
Call generate_export_header on Qt multitarget
@@ -162,7 +162,7 @@ QuickControls2;QuickParticles;QuickShapes;QuickTemplates2;QuickTest;QuickWidgets
ShaderTools;Sql;Svg;SvgWidgets;Test;Tools;UiPlugin;UiTools;Widgets;Xml")
set(_QT_VERSIONS_ 4 5)
set(_QT_VERSIONS_ 4 5 6)
foreach(_v ${_QT_VERSIONS_})
if (NOT DEFINED TARGET_SUFFIX_Qt${_v})
set(TARGET_SUFFIX_Qt${_v} "${_v}")
@@ -176,7 +176,7 @@ endif()
#set(TARGET_SUFFIX_Qt4 "")
macro(find_qt)
macro(qad_find_qt)
set(_QCOMP)
foreach(_v ${_QT_VERSIONS_})
set(_NEED${_v} 0)
@@ -307,6 +307,75 @@ macro(find_qt)
endif()
endif()
endif()
if (_NEED6)
#set(_MSG 1)
#if (Qt6_FOUND)
# set(_MSG 0)
#endif()
set(_QCOMP6 Core LinguistTools UiPlugin Widgets ${_QCOMP})
list(REMOVE_DUPLICATES _QCOMP6)
find_package(Qt6 COMPONENTS ${_QCOMP6} QUIET)
if (DEFINED ANDROID_PLATFORM)
set(CMAKE_SHARED_MODULE_SUFFIX_CXX ".so")
set(CMAKE_SHARED_LIBRARY_SUFFIX_CXX ".so")
set(CMAKE_SHARED_MODULE_SUFFIX_C ".so")
set(CMAKE_SHARED_LIBRARY_SUFFIX_C ".so")
endif()
if (Qt6Core_FOUND)
set(LOCAL_FOUND6 1)
set(_Qt6Modules)
foreach(m ${_QCOMP6})
if (m IN_LIST __qt_modules_6)
if (${Qt6${m}_FOUND})
set(__lib ${Qt6${m}_LIBRARIES})
if (DEFINED ANDROID_PLATFORM)
if (m IN_LIST __qt_bug_modules)
get_target_property(__lib Qt6::${m} LOCATION)
endif()
endif()
list(APPEND _Qt6Modules ${m})
list(APPEND Qt6_INCLUDES ${Qt6${m}_INCLUDE_DIRS})
list(APPEND Qt6_LIBRARIES ${__lib})
else()
if (NOT "x${_QUIET}" STREQUAL "xQUIET")
message(FATAL_ERROR "Qt6${m} NOT FOUND")
endif()
endif()
endif()
endforeach()
#get_property(_up_dir TARGET Qt6::UiPlugin PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
#message("${_up_dir}")
#if (NOT "x${_up_dir}" STREQUAL "x")
# list(APPEND Qt6_INCLUDES ${_up_dir})
#endif()
get_target_property(_Qt6_qmake Qt6::qmake LOCATION)
get_filename_component(_Qt6_BIN ${_Qt6_qmake} PATH)
foreach(_p ${Qt6Gui_PLUGINS})
get_target_property(_l ${_p} LOCATION)
get_filename_component(_l ${_l} DIRECTORY)
string(FIND "${_l}" "/" _ind REVERSE)
string(SUBSTRING "${_l}" 0 ${_ind} _l)
#message("Qt6: plugins dir: ${Qt6_PLUGINS_DIR}")
break()
endforeach()
string(FIND "${_Qt6_BIN}" "/" _ind REVERSE)
string(SUBSTRING "${_Qt6_BIN}" 0 ${_ind} _Qt6_ROOT)
set(Qt6_ROOT "${_Qt6_ROOT}" CACHE STRING "")
set(Qt6_BIN "${_Qt6_BIN}" CACHE STRING "")
set(Qt6_LANG_DIR ${Qt6_BIN}/../translations CACHE STRING "")
if ("x${Qt6_PLUGINS_DIR}" STREQUAL "x")
set(Qt6_PLUGINS_DIR "${Qt6_ROOT}/plugins" CACHE STRING "")
endif()
if (APPLE)
list(APPEND MOC_INC_Qt6 "-F${Qt6_ROOT}/lib")
endif()
if (NOT _QT6_MSG)
message(STATUS "Found Qt6: ${_Qt6_qmake} (version \"${Qt6_VERSION}\")")
set(_QT6_MSG 1 CACHE BOOL "msg_qt6" FORCE)
message(STATUS "Found Qt6 modules: ${_Qt6Modules}")
endif()
endif()
endif()
foreach(_v ${_QT_VERSIONS_})
if (LOCAL_FOUND${_v})
set(SOME_QT_FOUND 1 CACHE BOOL "" FORCE)
@@ -321,7 +390,7 @@ macro(find_qt)
endmacro()
macro(qt_sources OUT)
macro(qad_sources OUT)
set(${OUT})
set(_DIR "")
set(_IS_DIR 0)
@@ -357,7 +426,7 @@ macro(qt_sources OUT)
endmacro()
macro(qt_wrap)
macro(qad_wrap)
set(HDR_VAR)
set(CPP_VAR)
set(QM_VAR)
@@ -471,8 +540,16 @@ macro(qt_wrap)
set(${QM${_v}_VAR} "")
qt5_add_translation(${QM${_v}_VAR} ${TS_LIST})
endif()
elseif (${_v} EQUAL 6)
qt6_wrap_cpp(MOCS${_v} ${H_LIST} OPTIONS -nw ${MOC_INC_Qt6})
qt6_wrap_ui(CUIS${_v} ${UI_LIST})
qt6_add_resources(CRES${_v} ${RES_LIST})
if (WAS_QM_ARG)
set(${QM${_v}_VAR} "")
qt6_add_translation(${QM${_v}_VAR} ${TS_LIST})
endif()
else()
# Qt6 ...
# Qt7 ...
endif()
#message("${${QM${_v}_VAR}}")
list(APPEND ${CPP${_v}_VAR} ${CPP_LIST})
@@ -520,7 +597,8 @@ macro(__qt_set_defines _NAME _T)
endmacro()
macro(qt_add_executable _NAME)
macro(qad_add_executable _NAME)
#message("*qad_add_executable: \"${_NAME}\"")
foreach(_v ${_QT_VERSIONS_})
if (LOCAL_FOUND${_v})
_qt_split_add_args(_PREF _ARGS ${ARGN})
@@ -537,6 +615,7 @@ macro(qt_add_executable _NAME)
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 exe: \"${_TARGET}\"")
if(APPLE)
set(CMAKE_INSTALL_NAME_DIR "${_PREV_CIND}")
@@ -559,7 +638,8 @@ macro(qt_add_executable _NAME)
endmacro()
macro(qt_add_library _NAME)
macro(qad_add_library _NAME)
#message("*qad_add_library: \"${_NAME}\"")
foreach(_v ${_QT_VERSIONS_})
if (LOCAL_FOUND${_v})
_qt_split_add_args(_PREF _ARGS ${ARGN})
@@ -573,6 +653,7 @@ macro(qt_add_library _NAME)
endif()
set(_TARGET ${_NAME}${TARGET_SUFFIX_Qt${_v}})
add_library(${_TARGET} ${_PREF} ${_ARGS})
#message("add lib: \"${_TARGET} ${_PREF}\"")
set(_${_NAME}_is_qt 1)
target_include_directories(${_TARGET} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/qt${_v})
target_include_directories(${_TARGET} PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${Qt${_v}_INCLUDES})
@@ -610,7 +691,7 @@ macro(_qt_multitarget_suffix_ _OUT _IN _v)
endmacro()
macro(qt_target_link_libraries _NAME)
macro(qad_target_link_libraries _NAME)
foreach(_v ${_QT_VERSIONS_})
if (LOCAL_FOUND${_v})
set(_TARGET ${_NAME}${TARGET_SUFFIX_Qt${_v}})
@@ -633,7 +714,7 @@ macro(qt_target_link_libraries _NAME)
endmacro()
macro(qt_target_compile_definitions _NAME)
macro(qad_target_compile_definitions _NAME)
foreach(_v ${_QT_VERSIONS_})
if (LOCAL_FOUND${_v})
set(_TARGET ${_NAME}${TARGET_SUFFIX_Qt${_v}})
@@ -643,7 +724,7 @@ macro(qt_target_compile_definitions _NAME)
endmacro()
macro(qt_target_include_directories _NAME)
macro(qad_target_include_directories _NAME)
foreach(_v ${_QT_VERSIONS_})
if (LOCAL_FOUND${_v})
set(_TARGET ${_NAME}${TARGET_SUFFIX_Qt${_v}})
@@ -653,7 +734,7 @@ macro(qt_target_include_directories _NAME)
endmacro()
macro(qt_install)
macro(qad_install)
set(_prev_inst)
set(__add_args)
#message("command: ${ARGN}")
@@ -771,7 +852,7 @@ macro(_qt_gather_deps _T _out __p)
endmacro()
macro(qt_install_lang _NAME)
macro(qad_install_lang _NAME)
set(_prev_inst)
#message("command: ${ARGN}")
set(_PATHS)
@@ -849,7 +930,7 @@ macro(qt_install_lang _NAME)
endmacro()
macro(qt_get_target _NAME _OUT)
macro(qad_get_target _NAME _OUT)
set(${_OUT})
set(_ver)
foreach(_i ${ARGN})
@@ -871,7 +952,7 @@ macro(qt_get_target _NAME _OUT)
endmacro()
macro(qt_get_targets _NAME _OUT)
macro(qad_get_targets _NAME _OUT)
set(${_OUT})
foreach(_v ${_QT_VERSIONS_})
if (LOCAL_FOUND${_v})
@@ -881,9 +962,9 @@ macro(qt_get_targets _NAME _OUT)
endmacro()
macro(qt_generate_export_header _NAME)
qt_get_target(${_NAME} _some_target)
qt_get_target(${_NAME} _targets)
macro(qad_generate_export_header _NAME)
qad_get_target(${_NAME} _some_target)
qad_get_target(${_NAME} _targets)
foreach(_t ${_targets})
set_target_properties(${_t} PROPERTIES DEFINE_SYMBOL ${_NAME}_EXPORTS)
endforeach()

View File

@@ -94,7 +94,13 @@ bool EMainWindow::eventFilter(QObject * o, QEvent * e) {
if (tdocks.contains((QDockWidget*)o))
popup = popup || ((QDockWidget*)o)->titleBarWidget()->geometry().contains(((QMouseEvent*)e)->pos());
if (popup) {
createPopupMenu()->popup(((QMouseEvent*)e)->globalPos());
createPopupMenu()->popup(
#if QT_VERSION_MAJOR <= 5
((QMouseEvent*)e)->globalPos()
#else
((QMouseEvent*)e)->globalPosition().toPoint()
#endif
);
return true;
}
}

View File

@@ -22,7 +22,6 @@
#include <QTranslator>
#include <QUrl>
#include <QDesktopWidget>
#include <QInputDialog>
#include <QClipboard>
#include <QRadioButton>
@@ -138,7 +137,8 @@ public slots:
void newFile();
void openFile();
void openFiles();
bool saveFile(bool ask = false);
bool saveFile(bool ask);
bool saveFile() {return saveFile(false);}
bool saveAsFile();
void clearRecent();

View File

@@ -79,7 +79,8 @@ public slots:
void setDuplicatesEnabled(bool yes) {duplicates_ = yes;}
void setLimit(int l);
void setHistoryColor(const QColor & c);
void clear(bool silent = false);
void clear(bool silent);
void clear() {clear(false);}
void undo();
void redo();

View File

@@ -29,7 +29,7 @@ void AlignedTextItem::setFont(const QFont & f) {
QFont AlignedTextItem::sceneFont(const QFont & f) {
QFont ret = f;
double scl = 16. / QApplication::fontMetrics().size(0, "0").height();
double scl = 16. / fontHeight();
ret.setPointSizeF(ret.pointSizeF() * scl);
return ret;
}

View File

@@ -611,7 +611,7 @@ void BlockBusItem::mousePressEvent(QGraphicsSceneMouseEvent * e) {
}
if (e->buttons().testFlag(Qt::LeftButton )) btncnt++;
if (e->buttons().testFlag(Qt::RightButton)) btncnt++;
if (e->buttons().testFlag(Qt::MidButton)) btncnt++;
if (e->buttons().testFlag(QT_MID_BUTTON )) btncnt++;
if (btncnt > 0) mm_mods = e->modifiers();
if (btncnt >= 2 && e->button() == Qt::RightButton) {
//qDebug() << "bus revert";
@@ -724,7 +724,7 @@ void BlockBusItem::mouseReleaseEvent(QGraphicsSceneMouseEvent * e) {
int btncnt = 0;
if (e->buttons().testFlag(Qt::LeftButton )) btncnt++;
if (e->buttons().testFlag(Qt::RightButton)) btncnt++;
if (e->buttons().testFlag(Qt::MidButton)) btncnt++;
if (e->buttons().testFlag(QT_MID_BUTTON )) btncnt++;
if (btncnt == 0) mm_cancel = false;
if (new_segment) {
QMetaObject::invokeMethod(scene()->views().back(), "newBranchAccept", Q_ARG(BlockBusItem * , this));

View File

@@ -168,9 +168,10 @@ void BlockItem::clearPins() {
void BlockItem::clearDecors() {
bool pbs = false;
if (scene()) pbs = scene()->blockSignals(true);
if (scene())
if (scene()) {
foreach (QGraphicsItem * i, decors_)
scene()->sendEvent(i, new QGraphicsSceneEvent(QEvent::Close));
}
qDeleteAll(decors_);
decors_.clear();
if (scene()) {

View File

@@ -14,14 +14,6 @@
const QString _BlockView_Mime_ = "_BlockView_copypaste_";
template <typename T> QSet<T> QList2QSet(const QList<T> & l) {
#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
return QSet<T>(l.begin(), l.end());
#else
return QSet<T>::fromList(l);
#endif
}
BlockView::BlockView(QWidget * parent): QGraphicsView(parent), tmp_bus(true) {
_init();
}
@@ -218,7 +210,7 @@ bool BlockView::eventFilter(QObject * o, QEvent * e) {
}
if (me->buttons().testFlag(Qt::LeftButton )) btncnt++;
if (me->buttons().testFlag(Qt::RightButton)) btncnt++;
if (me->buttons().testFlag(Qt::MidButton )) btncnt++;
if (me->buttons().testFlag(QT_MID_BUTTON )) btncnt++;
mm_cancel = btncnt >= 2;
match_bus = bus_from = 0;
hpin = 0;
@@ -266,7 +258,7 @@ bool BlockView::eventFilter(QObject * o, QEvent * e) {
mm_drag = moved = false;
screen_point = me->screenPos();
scene_point = me->scenePos();
if ((me->button() == Qt::MidButton) || (me->button() == Qt::RightButton)) {
if ((me->button() == QT_MID_BUTTON) || (me->button() == Qt::RightButton)) {
thumbShow();
restartTimer(timer_thumb, thumb_hide_delay);
return true;
@@ -525,10 +517,10 @@ bool BlockView::eventFilter(QObject * o, QEvent * e) {
case QEvent::GraphicsSceneMouseRelease:
if (me->buttons().testFlag(Qt::LeftButton)) btncnt++;
if (me->buttons().testFlag(Qt::RightButton)) btncnt++;
if (me->buttons().testFlag(Qt::MidButton)) btncnt++;
if (me->buttons().testFlag(QT_MID_BUTTON)) btncnt++;
cur_bus = 0;
mm_cancel = btncnt > 0;
if (mm_cancel || (me->button() == Qt::MidButton) || (me->button() == Qt::RightButton)) {
if (mm_cancel || (me->button() == QT_MID_BUTTON) || (me->button() == Qt::RightButton)) {
mm_ci = 0;
return true;
}
@@ -665,19 +657,19 @@ void BlockView::timerEvent(QTimerEvent * e) {
void BlockView::wheelEvent(QWheelEvent * e) {
if (!navigation) return;
if (wheel_zoom || e->modifiers().testFlag(Qt::ControlModifier)) {
#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
double scl = 1. - e->angleDelta().y() / 500.;
#else
#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
double scl = 1. - e->delta() / 500.;
#else
double scl = 1. - e->angleDelta().y() / 500.;
#endif
if (!is_nav_anim || (nav_anim.state() != QPropertyAnimation::Running))
nav_target = _nav();
QRectF r = nav_target;
double vw = viewport()->width(), vh = viewport()->height();
#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
double cx = double(e->position().x()) / vw, cy = double(e->position().y()) / vh;
#else
#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
double cx = double(e->pos().x()) / vw, cy = double(e->pos().y()) / vh;
#else
double cx = double(e->position().x()) / vw, cy = double(e->position().y()) / vh;
#endif
double pw = r.width(), ph = r.height();
r.setWidth(r.width() * scl);
@@ -692,7 +684,7 @@ void BlockView::wheelEvent(QWheelEvent * e) {
void BlockView::mousePressEvent(QMouseEvent * event) {
press_point = event->pos();
if (event->buttons().testFlag(Qt::MidButton) || event->buttons().testFlag(Qt::RightButton)) {
if (event->buttons().testFlag(QT_MID_BUTTON) || event->buttons().testFlag(Qt::RightButton)) {
setCursor(Qt::ClosedHandCursor);
//sel_rect.hide();
if (sel_rect.scene())
@@ -723,7 +715,7 @@ void BlockView::scrolled() {
void BlockView::mouseMoveEvent(QMouseEvent * event) {
if (!event) return;
if (navigation) {
if (event->buttons().testFlag(Qt::MidButton) || event->buttons().testFlag(Qt::RightButton)) {
if (event->buttons().testFlag(QT_MID_BUTTON) || event->buttons().testFlag(Qt::RightButton)) {
QPoint dp = (press_point - event->pos());
horizontalScrollBar()->setValue(horizontalScrollBar()->value() + dp.x());
verticalScrollBar()->setValue(verticalScrollBar()->value() + dp.y());
@@ -740,7 +732,7 @@ void BlockView::mouseMoveEvent(QMouseEvent * event) {
void BlockView::mouseDoubleClickEvent(QMouseEvent * event) {
if (event->buttons().testFlag(Qt::MidButton) || event->buttons().testFlag(Qt::RightButton)) {
if (event->buttons().testFlag(QT_MID_BUTTON) || event->buttons().testFlag(Qt::RightButton)) {
fitInView();
return;
}

View File

@@ -223,7 +223,8 @@ protected slots:
void startBusPointMove(int bus_type);
void endBusPointMove();
void pinHoverInOut(BlockItemPin * pin);
void checkPaste(bool queued = false);
void checkPaste(bool queued);
void checkPaste() {checkPaste(false);}
public slots:
void setGridPen(const QPen & pen) {grid_pen = pen; _updateBack();}

View File

@@ -119,7 +119,7 @@ void _DTSizeItem::doubleClick() {
void _DTSizeItem::resizeHandles() {
double sz = QApplication::fontMetrics().size(0, "0").height() / 3.;
double sz = fontHeight() / 3.;
QRectF r(-sz, -sz, sz*2, sz*2);
for (int i = 0; i < 8; ++i)
rects[i].setRect(r);
@@ -235,7 +235,7 @@ actions_Z_up(this), actions_Z_top(this), actions_Z_down(this), actions_Z_bottom(
ui->labelBrush->setMinimumSize(ui->labelPen->minimumSize());
ui->labelBrush->setMaximumSize(ui->labelBrush->minimumSize());
widget_props->setEnabled(false);
int fh = qMax<int>(QApplication::fontMetrics().size(0, "0").height(), 22);
int fh = qMax<int>(fontHeight(), 22);
int thick = lineThickness();
QSize sz(fh * 2.5, fh);
ui->comboLineStyle->setIconSize(sz);

View File

@@ -1,4 +1,5 @@
#include "markdown.h"
#include <QIODevice>
#include <QDebug>
#ifndef NO_MARKDOWN
extern "C" {

View File

@@ -1 +1 @@
qad_library(graphic "Gui;Widgets;OpenGL" "qad_widgets;${OPENGL_LIBRARIES}")
qad_library(graphic "Gui;Widgets;OpenGL;OpenGLWidgets" "qad_widgets;${OPENGL_LIBRARIES}")

View File

@@ -212,10 +212,20 @@ bool Graphic::eventFilter(QObject * o, QEvent * e) {
break;
case QEvent::TouchUpdate: {
if (!navigation || !gestures) break;
QList<QTouchEvent::TouchPoint> tpl = ((QTouchEvent*)e)->touchPoints();
QList<QTouchEvent::TouchPoint> tpl =
#if QT_VERSION_MAJOR <= 5
((QTouchEvent*)e)->touchPoints();
#else
((QTouchEvent*)e)->points();
#endif
if (tpl.size() == 2) {
need_mouse_pan = false;
QPointF dp = tpl[0].scenePos() - tpl[1].scenePos();
QPointF dp =
#if QT_VERSION_MAJOR <= 5
tpl[0].scenePos() - tpl[1].scenePos();
#else
tpl[0].scenePosition() - tpl[1].scenePosition();
#endif
gesture_angle = rad2deg_qpie * qAtan2(qAbs(dp.y()), qAbs(dp.x()));
}
} break;
@@ -432,7 +442,7 @@ void Graphic::canvasMousePressEvent(QMouseEvent * e) {
startpos = prevpos;
startpos_r = canvas2real(startpos);
if (cancel || gestures) return;
if (e->button() == Qt::MidButton) curaction = gaMove;
if (e->button() == QT_MID_BUTTON) curaction = gaMove;
if (e->button() == Qt::RightButton) {
if (bufferActive) {
curpos = startpos;
@@ -700,6 +710,7 @@ void Graphic::setButtons(Graphic::Buttons b) {
ui->graphic_buttonClear->setVisible(b.testFlag(Clear));
ui->graphic_buttonConfigure->setVisible(b.testFlag(Configure));
ui->graphic_buttonSave->setVisible(b.testFlag(Save));
ui->graphic_buttonExport->setVisible(b.testFlag(Export));
ui->graphic_buttonClose->setVisible(b.testFlag(Close));
ui->graphic_checkPause->setVisible(b.testFlag(Pause));
if (ui->graphic_buttonAutofit ->isVisible() || ui->graphic_checkGrid ->isVisible() || ui->graphic_checkGuides->isVisible() ||
@@ -793,10 +804,8 @@ void Graphic::setDefaultRect(const QRectF & rect) {
}
void Graphic::saveImage() {
QString str = QFileDialog::getSaveFileName(this, tr("Save Image"), ppath, "PNG(*.png);;JPEG(*.jpg *.jpeg);;BMP(*.bmp);;TIFF(*.tiff *.tif);;PPM(*.ppm)");
if (str == "") return;
ppath = str;
void Graphic::saveImage(QString filename) {
ppath = filename;
QPixmap im(canvas->size());
canvas->render(&im);
im.save(ppath);
@@ -804,6 +813,50 @@ void Graphic::saveImage() {
}
void Graphic::exportGraphics(QString filename) {
ppath = filename;
QFile f(filename);
if (!f.open(QIODevice::ReadWrite)) {
QMessageBox::critical(this, tr("Export graphics"), tr("Can`t open file \"%1\"!").arg(filename));
return;
}
f.resize(0);
QTextStream ts(&f);
ts << "#";
for (int i = 0; i < graphics.size(); ++i) {
GraphicType & g(graphics[i]);
if (!g.visible) continue;
ts << ";" << (g.name + "_X") << ";" << (g.name + "_Y");
}
ts << "\n";
bool has_data = true;
int ind = 0;
QString line;
while (has_data) {
has_data = false;
line.clear();
line += QString::number(ind + 1);
for (int i = 0; i < graphics.size(); ++i) {
GraphicType & g(graphics[i]);
if (!g.visible) continue;
if (ind >= g.polyline.size()) {
line += ";;";
continue;
}
has_data = true;
line += ";";
line += QString::number(g.polyline[ind].x(), 'g', 9);
line += ";";
line += QString::number(g.polyline[ind].y(), 'g', 9);
}
++ind;
line += "\n";
if (has_data)
ts << line;
}
}
void Graphic::setOpenGL(bool on) {
#ifdef HAS_GL
isOGL = on;
@@ -1546,6 +1599,20 @@ void Graphic::on_graphic_buttonConfigure_clicked() {
}
void Graphic::on_graphic_buttonSave_clicked() {
QString f = QFileDialog::getSaveFileName(this, tr("Save Image"), ppath, "PNG(*.png);;JPEG(*.jpg *.jpeg);;BMP(*.bmp);;TIFF(*.tiff *.tif);;PPM(*.ppm)");
if (f.isEmpty()) return;
saveImage(f);
}
void Graphic::on_graphic_buttonExport_clicked() {
QString f = QFileDialog::getSaveFileName(this, tr("Export graphics"), ppath, "CSV(*.csv)");
if (f.isEmpty()) return;
exportGraphics(f);
}
void Graphic::on_graphic_checkGuides_toggled(bool checked) {
guides = checked;
setGuidesCursor();

View File

@@ -134,6 +134,7 @@ public:
Legend = 0x80,
Configure = 0x100,
Save = 0x200,
Export = 0x400,
Clear = 0x800,
Close = 0x1000,
Pause = 0x2000,
@@ -314,9 +315,11 @@ public slots:
void setVisualRect(const QRectF & rect);
void setDefaultRect(const QRectF & rect);
void autofit() {on_graphic_buttonAutofit_clicked();}
void saveImage();
void saveImage(QString filename);
void exportGraphics(QString filename);
void clear();
void update(bool force = false);
void update(bool force);
void update() {update(false);}
void updateGraphics() {findGraphicsRect(); update();}
void setCurrentGraphic(int arg) {if (arg < 0 || arg >= graphics.size()) return; curGraphic = arg;}
void setTraceGraphic(int arg) {if (arg < 0 || arg >= graphics.size()) return; curTrace = arg;}
@@ -421,7 +424,8 @@ protected slots:
void on_graphic_buttonAutofit_clicked();
void on_graphic_buttonConfigure_clicked();
void on_graphic_buttonFullscreen_clicked() {fullscreen();}
void on_graphic_buttonSave_clicked() {saveImage();}
void on_graphic_buttonSave_clicked();
void on_graphic_buttonExport_clicked();
void on_graphic_checkGrid_toggled(bool checked) {grid = checked; update();}
void on_graphic_checkGuides_toggled(bool checked);
void on_graphic_actionExpandX_triggered(bool checked);
@@ -462,7 +466,9 @@ public:
__GraphicRegistrator__() {
qRegisterMetaType<QVector<QPointF> >("QVector<QPointF>");
qRegisterMetaType<Graphic::GraphicsData>("Graphic::GraphicsData");
#if QT_VERSION_MAJOR <= 5
qRegisterMetaTypeStreamOperators<Graphic::GraphicsData>("Graphic::GraphicsData");
#endif
}
};

View File

@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>564</width>
<height>484</height>
<width>575</width>
<height>440</height>
</rect>
</property>
<property name="minimumSize">
@@ -180,6 +180,17 @@
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="graphic_buttonExport">
<property name="toolTip">
<string>Export graphics ...</string>
</property>
<property name="icon">
<iconset resource="../blockview/qad_blockview.qrc">
<normaloff>:/icons/document-edit.png</normaloff>:/icons/document-edit.png</iconset>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">

View File

@@ -20,7 +20,11 @@ private:
if (e->type() != QEvent::Paint) return QWidget::event(e);
e->accept();
QStyleOption opt;
#if QT_VERSION_MAJOR <= 5
opt.init(this);
#else
opt.initFrom(this);
#endif
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
emit paintEvent((QPaintEvent * )e);

View File

@@ -1,8 +1,5 @@
#include "piqt.h"
#include "qvariantedit.h"
#if QT_VERSION >= 0x050200
# include <QGeoCoordinate>
#endif
const QAD::Enum PI2QADEnum(const PIVariantTypes::Enum & el) {
@@ -60,24 +57,105 @@ const QVariant PI2QVariant(const PIVariant & v) {
const PIVariant Q2PIVariant(const QVariant & v) {
#if QT_VERSION_MAJOR <= 5
switch (v.type()) {
case QVariant::Bool: return PIVariant(v.toBool());
case QVariant::Int: return PIVariant(v.toInt());
case QVariant::UInt: return PIVariant(v.toUInt());
case QVariant::LongLong: return PIVariant(v.toLongLong());
case QVariant::ULongLong: return PIVariant(v.toULongLong());
case QVariant::Double: return PIVariant(v.toDouble());
case QVariant::ByteArray: return PIVariant(Q2PIByteArray(v.toByteArray()));
case QVariant::String: return PIVariant(Q2PIString(v.toString()));
case QVariant::StringList: return PIVariant(Q2PIStringList(v.toStringList()));
case QVariant::Time: return PIVariant(Q2PITime(v.toTime()));
case QVariant::Date: return PIVariant(Q2PIDate(v.toDate()));
case QVariant::DateTime: return PIVariant(Q2PIDateTime(v.toDateTime()));
case QVariant::Color: return PIVariant(Q2PIColor(v.value<QColor>()));
#else
switch (v.metaType().id()) {
#endif
#if QT_VERSION_MAJOR <= 5
case QVariant::Bool:
#else
case QMetaType::Bool:
#endif
return PIVariant(v.toBool());
#if QT_VERSION_MAJOR <= 5
case QVariant::Int:
#else
case QMetaType::Int:
#endif
return PIVariant(v.toInt());
#if QT_VERSION_MAJOR <= 5
case QVariant::UInt:
#else
case QMetaType::UInt:
#endif
return PIVariant(v.toUInt());
#if QT_VERSION_MAJOR <= 5
case QVariant::LongLong:
#else
case QMetaType::LongLong:
#endif
return PIVariant(v.toLongLong());
#if QT_VERSION_MAJOR <= 5
case QVariant::ULongLong:
#else
case QMetaType::ULongLong:
#endif
return PIVariant(v.toULongLong());
#if QT_VERSION_MAJOR <= 5
case QVariant::Double:
#else
case QMetaType::Double:
#endif
return PIVariant(v.toDouble());
#if QT_VERSION_MAJOR <= 5
case QVariant::ByteArray:
#else
case QMetaType::QByteArray:
#endif
return PIVariant(Q2PIByteArray(v.toByteArray()));
#if QT_VERSION_MAJOR <= 5
case QVariant::String:
#else
case QMetaType::QString:
#endif
return PIVariant(Q2PIString(v.toString()));
#if QT_VERSION_MAJOR <= 5
case QVariant::StringList:
#else
case QMetaType::QStringList:
#endif
return PIVariant(Q2PIStringList(v.toStringList()));
#if QT_VERSION_MAJOR <= 5
case QVariant::Time:
#else
case QMetaType::QTime:
#endif
return PIVariant(Q2PITime(v.toTime()));
#if QT_VERSION_MAJOR <= 5
case QVariant::Date:
#else
case QMetaType::QDate:
#endif
return PIVariant(Q2PIDate(v.toDate()));
#if QT_VERSION_MAJOR <= 5
case QVariant::DateTime:
#else
case QMetaType::QDateTime:
#endif
return PIVariant(Q2PIDateTime(v.toDateTime()));
#if QT_VERSION_MAJOR <= 5
case QVariant::Color:
#else
case QMetaType::QColor:
#endif
return PIVariant(Q2PIColor(v.value<QColor>()));
#if QT_VERSION_MAJOR <= 5
case QVariant::Point:
case QVariant::PointF: return PIVariant(Q2PIPoint(v.toPointF()));
case QVariant::PointF:
#else
case QMetaType::QPoint:
case QMetaType::QPointF:
#endif
return PIVariant(Q2PIPoint(v.toPointF()));
#if QT_VERSION_MAJOR <= 5
case QVariant::Rect:
case QVariant::RectF: return PIVariant(Q2PIRect(v.toRectF()));
case QVariant::RectF:
#else
case QMetaType::QRect:
case QMetaType::QRectF:
#endif
return PIVariant(Q2PIRect(v.toRectF()));
default: break;
}
if (v.canConvert<float>()) return PIVariant(v.value<float>());
@@ -126,7 +204,7 @@ const PIVariantTypes::Dir QAD2PIDir(const QAD::Dir & v) {
}
#if QT_VERSION >= 0x050200
#ifdef PIQT_HAS_GEOPOSITION
const QGeoCoordinate PI2QGeoPosition(const PIGeoPosition & v) {
PIGeoPosition p(v);
p.transformTo(PIGeoPosition::Cartesian);

View File

@@ -20,16 +20,28 @@
#ifndef PIQT_H
#define PIQT_H
#include "pimathmatrix.h"
#include "pipropertystorage.h"
#include "qad_types.h"
#include <QVector3D>
#include <QDateTime>
#include <QColor>
#if QT_VERSION >= 0x050200
#include "pimathmatrix.h"
#include "pipropertystorage.h"
#include "qad_types.h"
#include "piqt_macros.h"
#if QT_VERSION_MAJOR == 5
# if QT_VERSION >= QT_VERSION_CHECK(5, 2, 0)
# define PIQT_HAS_GEOPOSITION
# endif
#endif
#if QT_VERSION_MAJOR == 6
# if QT_VERSION >= QT_VERSION_CHECK(6, 1, 0)
# define PIQT_HAS_GEOPOSITION
# endif
#endif
#ifdef PIQT_HAS_GEOPOSITION
# include <QGeoCoordinate>
# include "pigeoposition.h"
#endif
#include "piqt_macros.h"
#include "qad_piqt_export.h"
@@ -137,7 +149,7 @@ QAD_PIQT_EXPORT const PIVariantTypes::IODevice QAD2PIIODevice(const QAD::IODevic
//inline const PIVariant QString2PIVariant(const QString & v) {return PIVariant::readFromString(QString2PIString(v));}
#if QT_VERSION >= 0x050200
#ifdef PIQT_HAS_GEOPOSITION
QAD_PIQT_EXPORT const QGeoCoordinate PI2QGeoPosition(const PIGeoPosition & v);
QAD_PIQT_EXPORT const PIGeoPosition Q2PIGeoPosition(const QGeoCoordinate & v);
#endif

View File

@@ -47,7 +47,14 @@
namespace PIQt {
template<typename T> T removePtr(T*) {}
template<typename T> QArgument<T> qargument(const T & v) {return QArgument<T>(QMetaType::typeName(qMetaTypeId<T>()), v);}
template<typename T> QArgument<T> qargument(const T & v) {
return QArgument<T>(
#if QT_VERSION_MAJOR <= 5
QMetaType::typeName(qMetaTypeId<T>())
#else
QMetaType::fromType<T>().name()
#endif
, v);}
template <typename SR, typename O, typename... ARGS>
void piqConnect(PIObject * source, const char * event, void(*func)(void*,ARGS...), O * target, SR(O::*slot)(ARGS...)) {

View File

@@ -5,39 +5,38 @@ ConfigHighlighter::ConfigHighlighter(QTextDocument * parent): QSyntaxHighlighter
HighlightingRule rule;
valueNameFormat.setForeground(QColor(0, 64, 154));
rule.pattern = QRegExp("[^=]"); //"\\b[A-Za-z0-9_]+(?=\\()");
rule.pattern = QRegularExpression("[^=]"); //"\\b[A-Za-z0-9_]+(?=\\()");
rule.format = valueNameFormat;
highlightingRules.append(rule);
valueFormat.setForeground(QColor(192, 0, 0));
rule.pattern = QRegExp("=[^\n]*");
rule.pattern = QRegularExpression("=[^\n]*");
rule.format = valueFormat;
highlightingRules.append(rule);
equalFormat.setFontWeight(QFont::Bold);
equalFormat.setForeground(QColor(96, 126, 0));
rule.pattern = QRegExp("=");
rule.pattern = QRegularExpression("=");
rule.format = equalFormat;
highlightingRules.append(rule);
sectionFormat.setFontWeight(QFont::Bold);
sectionFormat.setForeground(QColor(0, 32, 64));
rule.pattern = QRegExp("\\[.*\\]");
rule.pattern = QRegularExpression("\\[.*\\]");
rule.format = sectionFormat;
highlightingRules.append(rule);
//substFormat.setFontWeight(QFont::Bold);
substFormat.setForeground(QColor(192, 0, 192));
rule.pattern = QRegExp("\\$\\{.*\\}+");
rule.pattern.setMinimal(true);
rule.pattern = QRegularExpression("\\$\\{.*\\}+");
//rule.pattern.setMinimal(true);
rule.format = substFormat;
highlightingRules.append(rule);
rule.pattern = QRegExp("\\$\\{[^\\{]*\\}+");
rule.pattern = QRegularExpression("\\$\\{[^\\{]*\\}+");
highlightingRules.append(rule);
singleLineCommentFormat.setFontItalic(true);
singleLineCommentFormat.setForeground(QColor(128, 128, 128));
rule.pattern = QRegExp("#[^\n]*");
rule.pattern = QRegularExpression("#[^\n]*");
rule.format = singleLineCommentFormat;
highlightingRules.append(rule);
@@ -50,21 +49,37 @@ ConfigHighlighter::ConfigHighlighter(QTextDocument * parent): QSyntaxHighlighter
void ConfigHighlighter::highlightBlock(const QString & text) {
foreach (const HighlightingRule &rule, highlightingRules) {
QRegExp expression(rule.pattern);
QRegularExpression expression(rule.pattern);
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
QRegularExpressionMatchIterator i = expression.globalMatch(text);
while (i.hasNext()) {
QRegularExpressionMatch match = i.next();
setFormat(match.capturedStart(), match.capturedLength(), rule.format);
}
#else
int index = expression.indexIn(text);
while (index >= 0) {
int length = expression.matchedLength();
setFormat(index, length, rule.format);
index = expression.indexIn(text, index + length);
}
#endif
}
setCurrentBlockState(0);
QRegExp expression = QRegExp("[ |\t]");
QRegularExpression expression("[ |\t]");
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
QRegularExpressionMatchIterator i = expression.globalMatch(text);
while (i.hasNext()) {
QRegularExpressionMatch match = i.next();
setFormat(match.capturedStart(), match.capturedLength(), spaceFormat);
}
#else
int index = expression.indexIn(text);
while (index >= 0) {
int length = expression.matchedLength();
setFormat(index, length, spaceFormat);
index = expression.indexIn(text, index + length);
}
#endif
}

View File

@@ -23,6 +23,12 @@
#include <QSyntaxHighlighter>
#include <QTextCursor>
#include <QTextCharFormat>
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
# include <QRegularExpression>
#else
# include <QRegExp>
typedef QRegExp QRegularExpression;
#endif
#include "qad_piqt_utils_export.h"
class QTextDocument;
@@ -39,12 +45,12 @@ private:
void highlightBlock(const QString &text);
struct QAD_PIQT_UTILS_EXPORT HighlightingRule {
QRegExp pattern;
QRegularExpression pattern;
QTextCharFormat format;
};
QVector<HighlightingRule> highlightingRules;
QRegExp commentStartExpression, commentEndExpression;
QRegularExpression commentStartExpression, commentEndExpression;
QTextCharFormat singleLineCommentFormat, valueNameFormat, valueFormat, equalFormat, sectionFormat, spaceFormat, substFormat;
};

View File

@@ -1,10 +1,10 @@
if (((DEFINED QGLVIEW) AND QGLVIEW) OR (NOT DEFINED QGLVIEW))
find_package(OpenGL REQUIRED)
shstk_qt_project(qglview FALSE "qad" "Gui;OpenGL;Xml" "qad_widgets;qad_utils;${OPENGL_LIBRARIES}")
shstk_qt_install("qad" FALSE qglview "${out_HDR}" "${out_QM}")
shstk_qad_project(qglview FALSE "qad" "Gui;OpenGL;Xml" "qad_widgets;qad_utils;${OPENGL_LIBRARIES}")
shstk_qad_install("qad" FALSE qglview "${out_HDR}" "${out_QM}")
qt_sources(test_SRC DIR "qglview_test")
qt_wrap(${test_SRC} CPPS test_CPP)
qt_add_executable(qglview_test test_CPP)
qt_target_link_libraries(qglview_test qglview)
qad_sources(test_SRC DIR "qglview_test")
qad_wrap(${test_SRC} CPPS test_CPP)
qad_add_executable(qglview_test test_CPP)
qad_target_link_libraries(qglview_test qglview)
endif()

View File

@@ -1 +1 @@
shstk_qt_plugin(qglview "Gui;Widgets;OpenGL" "qglview")
shstk_qad_plugin(qglview "Gui;Widgets;OpenGL" "qglview")

View File

@@ -45,6 +45,7 @@
#include <QCheckBox>
#include <QDebug>
#include <QElapsedTimer>
#include <QActionGroup>
#include "qpiconfig.h"
#include "qad_sql_table_export.h"

View File

@@ -150,6 +150,7 @@ PropertyStorage::Property PropertyStorage::parsePropertyLine(QString l) {
ret.value = QVariant(typeFromLetter(pt));
if (!pv.isEmpty()) {
//qDebug() << "set value !" << pv;
#if QT_VERSION_MAJOR <= 5
switch (ret.value.type()) {
case QVariant::Bool: pv = pv.toLower(); ret.value = (pv == "on" || pv == "true" || pv == "enable" || pv == "enabled" || pv.toInt() > 0 ? true : false); break;
case QVariant::Int: ret.value = pv.toInt(); break;
@@ -160,6 +161,18 @@ PropertyStorage::Property PropertyStorage::parsePropertyLine(QString l) {
case QVariant::Color: ret.value = QColor(pv); break;
default: ret.value = pv; break;
};
#else
switch (ret.value.metaType().id()) {
case QMetaType::Bool: pv = pv.toLower(); ret.value = (pv == "on" || pv == "true" || pv == "enable" || pv == "enabled" || pv.toInt() > 0 ? true : false); break;
case QMetaType::Int: ret.value = pv.toInt(); break;
case QMetaType::UInt: ret.value = pv.toUInt(); break;
case QMetaType::LongLong: ret.value = pv.toLongLong(); break;
case QMetaType::ULongLong: ret.value = pv.toULongLong(); break;
case QMetaType::Double: ret.value = pv.toDouble(); break;
case QMetaType::QColor: ret.value = QColor(pv); break;
default: ret.value = pv; break;
};
#endif
}
return ret;
}

View File

@@ -115,9 +115,6 @@ protected:
inline QDebug operator <<(QDebug s, const PropertyStorage::Property & p) {s.nospace() << p.name << " (0x" << QString::number(p.flags, 16) << ") = " << p.value; return s.space();}
inline QDataStream & operator <<(QDataStream & s, const PropertyStorage & p) {s << p.properties(); return s;}
inline QDataStream & operator >>(QDataStream & s, PropertyStorage & p) {s >> p.properties(); return s;}
inline QDataStream & operator <<(QDataStream & s, const PropertyStorage::Property & p) {
ChunkStream cs;
cs << cs.chunk(1, p.name) << cs.chunk(2, p.comment) << cs.chunk(3, p.value) << cs.chunk(4, p.flags);
@@ -137,5 +134,8 @@ inline QDataStream & operator >>(QDataStream & s, PropertyStorage::Property & p)
return s;
}
inline QDataStream & operator <<(QDataStream & s, const PropertyStorage & p) {s << p.properties(); return s;}
inline QDataStream & operator >>(QDataStream & s, PropertyStorage & p) {s >> p.properties(); return s;}
#endif // PROPERTYSTORAGE_H

View File

@@ -26,25 +26,22 @@ __QADTypesRegistrator__::__QADTypesRegistrator__() {
_inited = true;
qRegisterMetaType<QAD::Enumerator>("QAD::Enumerator");
qRegisterMetaTypeStreamOperators<QAD::Enumerator>("QAD::Enumerator");
qRegisterMetaType<QAD::Enum>("QAD::Enum");
qRegisterMetaTypeStreamOperators<QAD::Enum>("QAD::Enum");
qRegisterMetaType<QAD::File>("QAD::File");
qRegisterMetaTypeStreamOperators<QAD::File>("QAD::File");
qRegisterMetaType<QAD::Dir>("QAD::Dir");
qRegisterMetaTypeStreamOperators<QAD::Dir>("QAD::Dir");
qRegisterMetaType<QAD::IODevice>("QAD::IODevice");
qRegisterMetaTypeStreamOperators<QAD::IODevice>("QAD::IODevice");
qRegisterMetaType<QAD::MathVector>("QAD::MathVector");
qRegisterMetaTypeStreamOperators<QAD::MathVector>("QAD::MathVector");
qRegisterMetaType<QAD::MathMatrix>("QAD::MathMatrix");
#if QT_VERSION_MAJOR <= 5
qRegisterMetaTypeStreamOperators<QAD::Enumerator>("QAD::Enumerator");
qRegisterMetaTypeStreamOperators<QAD::Enum>("QAD::Enum");
qRegisterMetaTypeStreamOperators<QAD::File>("QAD::File");
qRegisterMetaTypeStreamOperators<QAD::Dir>("QAD::Dir");
qRegisterMetaTypeStreamOperators<QAD::IODevice>("QAD::IODevice");
qRegisterMetaTypeStreamOperators<QAD::MathVector>("QAD::MathVector");
qRegisterMetaTypeStreamOperators<QAD::MathMatrix>("QAD::MathMatrix");
#endif
#if QT_VERSION >= 0x050200
QMetaType::registerConverter<QAD::Enum, int>(&QAD::Enum::selectedValue);
@@ -185,7 +182,13 @@ QString QAD::IODevice::toString() const {
QVariant::Type typeFromLetter(const QString & l) {
#if QT_VERSION_MAJOR <= 5
QVariant::Type
#else
QMetaType
#endif
typeFromLetter(const QString & l) {
#if QT_VERSION_MAJOR <= 5
if (l.isEmpty()) return QVariant::String;
QString ft = l.left(1);
if (ft == "l") return QVariant::StringList;
@@ -204,6 +207,26 @@ QVariant::Type typeFromLetter(const QString & l) {
if (ft == "V") return (QVariant::Type)qMetaTypeId<QAD::MathVector>();
if (ft == "M") return (QVariant::Type)qMetaTypeId<QAD::MathMatrix>();
return QVariant::String;
#else
if (l.isEmpty()) return QMetaType::fromType<QString>();
QString ft = l.left(1);
if (ft == "l") return QMetaType::fromType<QStringList >();
if (ft == "b") return QMetaType::fromType<bool >();
if (ft == "n") return QMetaType::fromType<int >();
if (ft == "f") return QMetaType::fromType<double >();
if (ft == "c") return QMetaType::fromType<QColor >();
if (ft == "r") return QMetaType::fromType<QRect >();
if (ft == "a") return QMetaType::fromType<QRectF >();
if (ft == "p") return QMetaType::fromType<QPoint >();
if (ft == "v") return QMetaType::fromType<QPointF >();
if (ft == "e") return QMetaType::fromType<QAD::Enum >();
if (ft == "F") return QMetaType::fromType<QAD::File >();
if (ft == "D") return QMetaType::fromType<QAD::Dir >();
if (ft == "d") return QMetaType::fromType<QAD::IODevice >();
if (ft == "V") return QMetaType::fromType<QAD::MathVector>();
if (ft == "M") return QMetaType::fromType<QAD::MathMatrix>();
return QMetaType::fromType<QString>();
#endif
}
@@ -252,7 +275,11 @@ int fontHeight(const QWidget * w) {
}
# endif
#endif
#if QT_VERSION_MAJOR <= 5
return QApplication::fontMetrics().size(0, "0").height();
#else
return QFontMetricsF(QApplication::font()).size(0, "0").height();
#endif
}
@@ -276,3 +303,10 @@ QSize preferredIconSize(float x, const QWidget * w) {
double appScale(const QWidget * w) {
return qMax<double>(fontHeight(w) / 15., 1.);
}
void enableHighDPI() {
#if QT_VERSION_MAJOR == 5
QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps, true);
#endif
}

View File

@@ -20,7 +20,7 @@
#ifndef QAD_TYPES_H
#define QAD_TYPES_H
#include <QCoreApplication>
#include <QApplication>
#include "propertystorage.h"
#include "qad_utils_export.h"
@@ -31,6 +31,16 @@
QCoreApplication::setOrganizationName(__TARGET_COMPANY__); \
QCoreApplication::setApplicationVersion(__TARGET_VERSION__);
#if QT_VERSION_MAJOR <= 5
# define QT_MID_BUTTON Qt::MidButton
# include <QMapIterator>
template<typename K, typename T>
using QMultiMapIterator = QMapIterator<K,T>;
#else
# define QT_MID_BUTTON Qt::MiddleButton
#endif
class QMetaEnum;
@@ -167,13 +177,47 @@ inline QRectF enlargedRect(const QRectF & r, qreal dx, qreal dy, qreal v) {
return QRectF(r.left() - v + dx, r.top() - v + dy, r.width() + v+v, r.height() + v+v);
}
QAD_UTILS_EXPORT QVariant::Type typeFromLetter(const QString & l);
template <typename T> QSet<T> QList2QSet(const QList<T> & l) {
#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
return QSet<T>(l.begin(), l.end());
#else
return QSet<T>::fromList(l);
#endif
}
template <typename K, typename T>
void addToMap(QMap<K, T> & into, const QMap<K, T> & what) {
QMapIterator<K, T> it(what);
while (it.hasNext()) {
it.next();
if (!into.contains(it.key()))
into[it.key()] = it.value();
}
}
template <typename K, typename T>
void addToMapOverwrite(QMap<K, T> & into, const QMap<K, T> & what) {
QMapIterator<K, T> it(what);
while (it.hasNext()) {
it.next();
into[it.key()] = it.value();
}
}
QAD_UTILS_EXPORT
#if QT_VERSION_MAJOR <= 5
QVariant::Type
#else
QMetaType
#endif
typeFromLetter(const QString & l);
QAD_UTILS_EXPORT QString uniqueName(QString n, const QStringList & names);
QAD_UTILS_EXPORT int fontHeight(const QWidget * w = 0);
QAD_UTILS_EXPORT int lineThickness(const QWidget * w = 0);
QAD_UTILS_EXPORT QSize preferredIconSize(float x = 1.f, const QWidget * w = 0);
QAD_UTILS_EXPORT double appScale(const QWidget * w = 0);
QAD_UTILS_EXPORT void enableHighDPI();
#endif // QAD_TYPES_H

View File

@@ -303,6 +303,9 @@ QPIConfig::QPIConfig(const QString & path, QStringList dirs) {
return;
}
dev->close();
#if QT_VERSION_MAJOR > 5
stream.setEncoding(QStringConverter::Utf8);
#endif
setFileName(cp);
open(QIODevice::ReadOnly);
parse();
@@ -347,7 +350,15 @@ void QPIConfig::setString(QString * str) {
void QPIConfig::setCodec(const char * codecName) {
codec = codecName;
#if QT_VERSION_MAJOR <= 5
stream.setCodec(codecName);
#else
QString cn = QString(codecName).toLower().remove(' ').remove('-').trimmed();
QStringConverter::Encoding sc = QStringConverter::System;
if (cn == "utf8" ) sc = QStringConverter::Utf8 ;
else if (cn == "utf16") sc = QStringConverter::Utf16;
stream.setEncoding(sc);
#endif
parse();
}
@@ -770,8 +781,10 @@ void QPIConfig::parse(QString content) {
stream.seek(0);
other.clear();
lines = centry = 0;
#if QT_VERSION_MAJOR <= 5
if (!codec.isEmpty())
stream.setCodec(codec.toLatin1().data());
#endif
while (!stream.atEnd()) {
other.push_back(QString());
src = str = parseLine(stream.readLine());

View File

@@ -106,7 +106,13 @@ void EComboBox::filterChanged(const QString & text, bool first) {
return;
}
for (int i = 0; i < iv.model()->rowCount(); ++i) {
iv.setRowHidden(i, pi, !iv.model()->index(i, 0, pi).data().toString().contains(QRegExp(text, Qt::CaseInsensitive)));
iv.setRowHidden(i, pi, !iv.model()->index(i, 0, pi).data().toString().contains(
#if QT_VERSION_MAJOR <= 5
QRegExp(text, Qt::CaseInsensitive)
#else
QRegularExpression(text, QRegularExpression::CaseInsensitiveOption)
#endif
));
iv.model()->setData(iv.model()->index(i, 0), iv.model()->index(i, 0, pi).data().toString(), Qt::ToolTipRole);
}
iv.show();

View File

@@ -2,7 +2,11 @@
#include <QLineEdit>
#include <QLabel>
#include <QDebug>
#if QT_VERSION_MAJOR <= 5
# include <QRegExp>
#else
# include <QRegularExpression>
#endif
#include <QPainter>
#include <QTimer>
#include <QStyle>
@@ -292,7 +296,13 @@ void EvalSpinBox::focusOutEvent(QFocusEvent * event) {
void EvalSpinBox::wheelEvent(QWheelEvent * event) {
if (event->modifiers().testFlag(Qt::ShiftModifier))
stepByDouble(event->delta() > 0 ? 0.1 : -0.1);
stepByDouble(
#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
event->delta()
#else
event->angleDelta().y()
#endif
> 0 ? 0.1 : -0.1);
else
QAbstractSpinBox::wheelEvent(event);
}
@@ -304,8 +314,8 @@ void EvalSpinBox::stepByDouble(double steps) {
QString t = text();
if (eval->check(t)) {
t = eval->expression();
//QRegExp re("(\\-?\\d+)");
QRegExp re("[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)");
#if QT_VERSION_MAJOR <= 5
/* QRegExp re("[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)");
int pos = 0;
if ((pos = re.indexIn(t)) != -1) {
double v = t.mid(pos, re.matchedLength()).toDouble();
@@ -316,6 +326,10 @@ void EvalSpinBox::stepByDouble(double steps) {
double v = steps;
t = QString::number(v) + t;
}
#else*/
QRegularExpression re("[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)");
/// TODO andrey
#endif
eval->check(t);
lineEdit()->setText(eval->expression());
}

View File

@@ -482,7 +482,13 @@ bool QCodeEdit::eventFilter(QObject * o, QEvent * e) {
break;
case QEvent::DragMove:
if (!isEnabled()) break;
drag_cursor = ui->textCode->cursorForPosition(((QDragMoveEvent*)e)->pos());
drag_cursor = ui->textCode->cursorForPosition(
#if QT_VERSION_MAJOR <= 5
((QDragMoveEvent*)e)->pos()
#else
((QDragMoveEvent*)e)->position().toPoint()
#endif
);
repaintCursor();
break;
case QEvent::MouseButtonRelease:

View File

@@ -226,7 +226,8 @@ public slots:
void setShowSpaces(bool yes);
void setShowLineNumbers(bool yes);
void search(const QString & t);
void searchNext(bool next = true);
void searchNext(bool next);
void searchNext() {searchNext(true);}
void searchPrevious();
void hideSearch();
void setWordCompletitionEnabled(bool on) {word_complete = on;}

View File

@@ -61,7 +61,13 @@ bool QPIConfigWidget::eventFilter(QObject * o, QEvent * e) {
if (((QMouseEvent * )e)->buttons() == Qt::RightButton) {
qApp->processEvents();
itemClicked(pi, 1);
popupMenu.popup(((QMouseEvent * )e)->globalPos());
popupMenu.popup(
#if QT_VERSION_MAJOR <= 5
((QMouseEvent * )e)->globalPos()
#else
((QMouseEvent * )e)->globalPosition().toPoint()
#endif
);
}
}
}

View File

@@ -210,99 +210,167 @@ void QVariantEdit::_recreate(const QVariant & new_value) {
return;
}
_delete();
#if QT_VERSION_MAJOR <= 5
switch (new_value.type()) {
#else
switch (new_value.metaType().id()) {
#endif
#if QT_VERSION_MAJOR <= 5
case QVariant::Bool:
#else
case QMetaType::Bool:
#endif
_check = new QCheckBox(this);
_check->setAutoFillBackground(true);
_cur_edit = _check;
connect(_check, SIGNAL(toggled(bool)), this, SLOT(_changed()));
break;
#if QT_VERSION_MAJOR <= 5
case QVariant::Int:
#else
case QMetaType::Int:
#endif
_spin = new QDoubleSpinBox(this);
_spin->setDecimals(0);
_spin->setRange(-0x7FFFFFFF, 0x7FFFFFFF);
_cur_edit = _spin;
connect(_spin, SIGNAL(valueChanged(double)), this, SLOT(_changed()));
break;
#if QT_VERSION_MAJOR <= 5
case QVariant::UInt:
#else
case QMetaType::UInt:
#endif
_spin = new QDoubleSpinBox(this);
_spin->setDecimals(0);
_spin->setRange(0, 0xFFFFFFFF);
_cur_edit = _spin;
connect(_spin, SIGNAL(valueChanged(double)), this, SLOT(_changed()));
break;
#if QT_VERSION_MAJOR <= 5
case QVariant::LongLong:
#else
case QMetaType::LongLong:
#endif
_spin = new QDoubleSpinBox(this);
_spin->setDecimals(0);
_spin->setRange(-0x7FFFFFFFFFFFFFFFL, 0x7FFFFFFFFFFFFFFFL);
_cur_edit = _spin;
connect(_spin, SIGNAL(valueChanged(double)), this, SLOT(_changed()));
break;
#if QT_VERSION_MAJOR <= 5
case QVariant::ULongLong:
#else
case QMetaType::ULongLong:
#endif
_spin = new QDoubleSpinBox(this);
_spin->setDecimals(0);
_spin->setRange(0L, 0x7FFFFFFFFFFFFFFFL);
_cur_edit = _spin;
connect(_spin, SIGNAL(valueChanged(double)), this, SLOT(_changed()));
break;
#if QT_VERSION_MAJOR <= 5
case QVariant::Double:
#else
case QMetaType::Double:
#endif
_espin = new EvalSpinBox(this);
//_spin->setDecimals(5);
//_spin->setRange(-1E+199, 1E+199);
_cur_edit = _espin;
connect(_espin, SIGNAL(valueChanged(double)), this, SLOT(_changed()));
break;
#if QT_VERSION_MAJOR <= 5
case QVariant::Color:
#else
case QMetaType::QColor:
#endif
_color = new ColorButton(this);
_color->setUseAlphaChannel(true);
_cur_edit = _color;
connect(_color, SIGNAL(colorChanged(QColor)), this, SLOT(_changed()));
break;
#if QT_VERSION_MAJOR <= 5
case QVariant::String:
#else
case QMetaType::QString:
#endif
_line = new CLineEdit(this);
_cur_edit = _line;
connect(_line, SIGNAL(textChanged(QString)), this, SLOT(_changed()));
break;
#if QT_VERSION_MAJOR <= 5
case QVariant::StringList:
#else
case QMetaType::QStringList:
#endif
_list = new StringListEdit(this);
_cur_edit = _list;
connect(_list, SIGNAL(valueChanged()), this, SLOT(_changed()));
break;
#if QT_VERSION_MAJOR <= 5
case QVariant::Rect:
#else
case QMetaType::QRect:
#endif
_rect = new QRectEdit(this);
_rect->setDecimals(0);
_cur_edit = _rect;
connect(_rect, SIGNAL(valueChanged(QRectF)), this, SLOT(_changed()));
break;
#if QT_VERSION_MAJOR <= 5
case QVariant::RectF:
#else
case QMetaType::QRectF:
#endif
_rect = new QRectEdit(this);
_rect->setDecimals(3);
_cur_edit = _rect;
connect(_rect, SIGNAL(valueChanged(QRectF)), this, SLOT(_changed()));
break;
#if QT_VERSION_MAJOR <= 5
case QVariant::Point:
#else
case QMetaType::QPoint:
#endif
_point = new QPointEdit(this);
_point->setDecimals(0);
_cur_edit = _point;
connect(_point, SIGNAL(valueChanged(QPointF)), this, SLOT(_changed()));
break;
#if QT_VERSION_MAJOR <= 5
case QVariant::PointF:
#else
case QMetaType::QPointF:
#endif
_point = new QPointEdit(this);
_point->setDecimals(3);
_cur_edit = _point;
connect(_point, SIGNAL(valueChanged(QPointF)), this, SLOT(_changed()));
break;
#if QT_VERSION_MAJOR <= 5
case QVariant::Date:
#else
case QMetaType::QDate:
#endif
_date = new QDateEdit(this);
_cur_edit = _date;
connect(_date, SIGNAL(dateTimeChanged(QDateTime)), this, SLOT(_changed()));
break;
#if QT_VERSION_MAJOR <= 5
case QVariant::Time:
#else
case QMetaType::QTime:
#endif
_date = new QTimeEdit(this);
_cur_edit = _date;
connect(_date, SIGNAL(dateTimeChanged(QDateTime)), this, SLOT(_changed()));
break;
#if QT_VERSION_MAJOR <= 5
case QVariant::DateTime:
#else
case QMetaType::QDateTime:
#endif
_date = new QDateTimeEdit(this);
_cur_edit = _date;
connect(_date, SIGNAL(dateTimeChanged(QDateTime)), this, SLOT(_changed()));
@@ -351,23 +419,107 @@ void QVariantEdit::_recreate(const QVariant & new_value) {
QVariant QVariantEdit::value() const {
#if QT_VERSION_MAJOR <= 5
switch (_value.type()) {
case QVariant::Bool: return _check->isChecked();
case QVariant::Int: return int(_spin->value());
case QVariant::UInt: return (unsigned int)(_spin->value());
case QVariant::LongLong: return qlonglong(_spin->value());
case QVariant::ULongLong: return qulonglong(_spin->value());
case QVariant::Double: return _espin->value();
case QVariant::Color: return _color->color();
case QVariant::String: return _line->text();
case QVariant::StringList: return _list->value();
case QVariant::Rect: return _rect->value().toRect();
case QVariant::RectF: return _rect->value();
case QVariant::Point: return _point->value().toPoint();
case QVariant::PointF: return _point->value();
case QVariant::Date: return _date->date();
case QVariant::Time: return _date->time();
case QVariant::DateTime: return _date->dateTime();
#else
switch (_value.metaType().id()) {
#endif
#if QT_VERSION_MAJOR <= 5
case QVariant::Bool:
#else
case QMetaType::Bool:
#endif
return _check->isChecked();
#if QT_VERSION_MAJOR <= 5
case QVariant::Int:
#else
case QMetaType::Int:
#endif
return int(_spin->value());
#if QT_VERSION_MAJOR <= 5
case QVariant::UInt:
#else
case QMetaType::UInt:
#endif
return (unsigned int)(_spin->value());
#if QT_VERSION_MAJOR <= 5
case QVariant::LongLong:
#else
case QMetaType::LongLong:
#endif
return qlonglong(_spin->value());
#if QT_VERSION_MAJOR <= 5
case QVariant::ULongLong:
#else
case QMetaType::ULongLong:
#endif
return qulonglong(_spin->value());
#if QT_VERSION_MAJOR <= 5
case QVariant::Double:
#else
case QMetaType::Double:
#endif
return _espin->value();
#if QT_VERSION_MAJOR <= 5
case QVariant::Color:
#else
case QMetaType::QColor:
#endif
return _color->color();
#if QT_VERSION_MAJOR <= 5
case QVariant::String:
#else
case QMetaType::QString:
#endif
return _line->text();
#if QT_VERSION_MAJOR <= 5
case QVariant::StringList:
#else
case QMetaType::QStringList:
#endif
return _list->value();
#if QT_VERSION_MAJOR <= 5
case QVariant::Rect:
#else
case QMetaType::QRect:
#endif
return _rect->value().toRect();
#if QT_VERSION_MAJOR <= 5
case QVariant::RectF:
#else
case QMetaType::QRectF:
#endif
return _rect->value();
#if QT_VERSION_MAJOR <= 5
case QVariant::Point:
#else
case QMetaType::QPoint:
#endif
return _point->value().toPoint();
#if QT_VERSION_MAJOR <= 5
case QVariant::PointF:
#else
case QMetaType::QPointF:
#endif
return _point->value();
#if QT_VERSION_MAJOR <= 5
case QVariant::Date:
#else
case QMetaType::QDate:
#endif
return _date->date();
#if QT_VERSION_MAJOR <= 5
case QVariant::Time:
#else
case QMetaType::QTime:
#endif
return _date->time();
#if QT_VERSION_MAJOR <= 5
case QVariant::DateTime:
#else
case QMetaType::QDateTime:
#endif
return _date->dateTime();
default:
if (_value.canConvert<QAD::Enum>() && _enum) {
QAD::Enum ret;

View File

@@ -8,6 +8,7 @@
#endif
#include "session_manager.h"
#include "qad_locations.h"
#include "qad_types.h"
SessionManager::SessionManager(QString file) {
@@ -107,7 +108,7 @@ void SessionManager::save() {
sr.setValue(floats[i].first, *floats[i].second, false);
QSet<QObject*> all_list;
foreach (QObject * c, tsc) {
all_list |= QSet<QObject*>::fromList(c->findChildren<QObject*>());
all_list |= QList2QSet(c->findChildren<QObject*>());
}
QMap<const QMetaObject*, QByteArray> funcs = metaFunctions(all_list, "sessionSave");
//qDebug() << "check for save" << all_list.size();
@@ -231,7 +232,7 @@ void SessionManager::load(bool onlyMainwindow) {
*floats[i].second = sr.getValue(floats[i].first, *floats[i].second).toFloat();
QSet<QObject*> all_list;
foreach (QObject * c, tsc) {
all_list |= QSet<QObject*>::fromList(c->findChildren<QObject*>());
all_list |= QList2QSet(c->findChildren<QObject*>());
}
QMap<const QMetaObject*, QByteArray> funcs = metaFunctions(all_list, "sessionLoad");
//qDebug() << "check for load" << all_list.size();

View File

@@ -117,8 +117,10 @@ private:
public slots:
void save();
void load(bool onlyMainwindow = false);
void clear(bool with_filename = true);
void load(bool onlyMainwindow);
void load() {load(false);}
void clear(bool with_filename);
void clear() {clear(true);}
signals:
void loading(QPIConfig & );

View File

@@ -4,9 +4,7 @@
int main(int argc, char * argv[]) {
QApplication a(argc, argv);
#if QT_VERSION >= 0x050000
a.setAttribute(Qt::AA_UseHighDpiPixmaps, true);
#endif
enableHighDPI();
a.setWindowIcon(QIcon(":/icons/blockview.png"));
BlockEditor w;
if (a.arguments().size() > 1)

View File

@@ -2,6 +2,7 @@
#include "piqt_connection_edit.h"
#include <QFileDialog>
#include <qpiconfig.h>
#include <qad_types.h>
#include <evalspinbox.h>
#include <piintrospection_server.h>
@@ -9,9 +10,7 @@
int main(int argc, char * argv[]) {
PIINTROSPECTION_START
QApplication a(argc, argv);
#if QT_VERSION >= 0x050000
a.setAttribute(Qt::AA_UseHighDpiPixmaps, true);
#endif
enableHighDPI();
ConnectionEdit w;
if (a.arguments().size() > 1) {
QPIConfig cfg(a.arguments()[1]);

View File

@@ -4,7 +4,6 @@
#include "ui_pidumper.h"
#include <QImage>
#include <QTime>
#include <QDesktopWidget>
#include <qmath.h>
#include <QDebug>
#include "piqt.h"

View File

@@ -4,9 +4,7 @@
int main(int argc, char * argv[]) {
QApplication a(argc, argv);
#if QT_VERSION >= 0x050000
a.setAttribute(Qt::AA_UseHighDpiPixmaps, true);
#endif
enableHighDPI();
PIDumper w;
w.show();
return a.exec();

View File

@@ -4,7 +4,6 @@
#include "ui_piintrospector.h"
#include <QImage>
#include <QTime>
#include <QDesktopWidget>
#include <QDebug>
#include <emainwindow.h>
#include "piqt.h"

View File

@@ -1,13 +1,35 @@
#include <QApplication>
#include <QPlainTextEdit>
#include "piintrospector.h"
#include "qcodeedit.h"
int main(int argc, char * argv[]) {
QApplication a(argc, argv);
#if QT_VERSION >= 0x050000
a.setAttribute(Qt::AA_UseHighDpiPixmaps, true);
#endif
enableHighDPI();
QPIIntrospector w;
/*QCodeEdit w;
w.setEditorFont(QFont("dejavu sans mono", 10));
w.setText(
"Telegram.addCommand(\"Поискать 💰\", \"find_money\");\n"
"Telegram.addCommand(\"🔍Исследования\", \"research\");\n"
"Telegram.addCommand(\"📖Инфо/🌍Планета\", \"planet_info\");\n"
"Telegram.addCommand(\"📖Инфо/💻Дерево исследований\", \"research_map\");\n"
"Telegram.addCommand(\"📖Инфо/🌌Сканер планет\", \"map_info\");\n"
"Telegram.addCommand(\"🛠Строительство/📖Инфо\", \"planet_info\");\n"
"Telegram.addCommand(\"🛠Строительство/⛏Шахта\", \"info_plant\");\n"
"Telegram.addCommand(\"🛠Строительство/⛏Шахта/📖Инфо\", \"info_plant\");\n"
"Telegram.addCommand(\"🛠Строительство/⛏Шахта/🛠Cтроить ⛏Шахту\", \"build_plant\");\n"
"Telegram.addCommand(\"🛠Строительство/⚡️Электростанция\", \"info_solar\");\n"
"Telegram.addCommand(\"🛠Строительство/⚡️Электростанция/📖Инфо\", \"info_solar\");\n"
"Telegram.addCommand(\"🛠Строительство/⚡️Электростанция/🛠Cтроить ⚡️Электростанцию\", \"build_solar\");\n"
"Telegram.addCommand(\"🛠Строительство/🔋Аккумулятор\", \"info_accum\");\n"
"Telegram.addCommand(\"🛠Строительство/🔋Аккумулятор/📖Инфо\", \"info_accum\");\n"
"Telegram.addCommand(\"🛠Строительство/🔋Аккумулятор/🛠Cтроить 🔋Аккумулятор\", \"build_accum\");\n"
"Telegram.addCommand(\"🛠Строительство/📦Хранилище\", \"info_storage\");\n"
"Telegram.addCommand(\"🛠Строительство/📦Хранилище/📖Инфо\", \"info_storage\");\n"
);
//w.textEdit()->setCursorWidth(1);*/
w.show();
return a.exec();
}

View File

@@ -1,12 +1,11 @@
#include <QApplication>
#include "qad_types.h"
#include "mainwindow.h"
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
#if QT_VERSION >= 0x050000
a.setAttribute(Qt::AA_UseHighDpiPixmaps, true);
#endif
enableHighDPI();
MainWindow w;
w.show();
return a.exec();