From 9f9b624124c8a76bef5c299653c7ba7ef0534673 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B5=D0=BB=D0=B8=D0=BF=D0=B5=D0=BD=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Sun, 22 Jan 2017 21:14:32 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/libs@159 a8b55f48-bf90-11e4-a774-851b48703e85 --- CMakeLists.txt | 2 +- cd_utils/CMakeLists.txt | 24 --- cd_utils/cdutils_core.cpp | 29 ++- cd_utils/cdutils_core.h | 17 +- cd_utils/cdutils_k.cpp | 2 +- cd_utils/cdutils_types.cpp | 59 +++++- cd_utils/cdutils_types.h | 8 +- cd_utils/pult/CMakeLists.txt | 60 ------ qcd_utils/CMakeLists.txt | 52 +++++ qcd_utils/clean.bat | 4 + qcd_utils/make_lib.bat | 1 + qcd_utils/pult/CMakeLists.txt | 21 ++ {cd_utils => qcd_utils}/pult/cd_pult.conf | 0 {cd_utils => qcd_utils}/pult/cd_pult.cpp | 0 {cd_utils => qcd_utils}/pult/cd_pult.h | 2 +- {cd_utils => qcd_utils}/pult/cd_pult.qrc | 0 {cd_utils => qcd_utils}/pult/cd_pult.ui | 0 {cd_utils => qcd_utils}/pult/form.cpp | 10 +- {cd_utils => qcd_utils}/pult/form.h | 0 {cd_utils => qcd_utils}/pult/form.ui | 114 ++++++++-- .../pult/icons/accessories-calculator.png | Bin {cd_utils => qcd_utils}/pult/icons/alpha.png | Bin .../pult/icons/application-exit.png | Bin .../pult/icons/archive-extract.png | Bin .../pult/icons/configure.png | Bin .../pult/icons/dialog-close.png | Bin .../pult/icons/document-export.png | Bin .../pult/icons/document-import.png | Bin .../pult/icons/document-open.png | Bin .../pult/icons/document-save-.png | Bin .../pult/icons/document-save.png | Bin .../pult/icons/edit-clear-.png | Bin .../pult/icons/edit-clear-locationbar-rtl.png | Bin .../pult/icons/edit-clear.png | Bin .../pult/icons/edit-copy.png | Bin .../pult/icons/edit-delete.png | Bin .../pult/icons/edit-find-.png | Bin .../pult/icons/edit-find.png | Bin .../pult/icons/edit-guides.png | Bin .../pult/icons/edit-paste.png | Bin .../pult/icons/expand_s_x.png | Bin .../pult/icons/expand_s_y.png | Bin .../pult/icons/expand_x.png | Bin .../pult/icons/expand_y.png | Bin .../pult/icons/item-add.png | Bin {cd_utils => qcd_utils}/pult/icons/item.png | Bin .../pult/icons/layer-visible-off.png | Bin .../pult/icons/layer-visible-on.png | Bin .../pult/icons/list-add.png | Bin .../pult/icons/media-playback-pause.png | Bin .../pult/icons/media-playback-stop.png | Bin .../pult/icons/media-record.png | Bin .../pult/icons/node-add.png | Bin {cd_utils => qcd_utils}/pult/icons/node.png | Bin .../pult/icons/view-grid.png | Bin .../pult/icons/view-refresh.png | Bin .../pult/icons/zoom-fit-best.png | Bin .../pult/icons/zoom-fit-height.png | Bin {cd_utils => qcd_utils}/pult/main.cpp | 0 qcd_utils/qcd_core.cpp | 196 ++++++++++++++++++ qcd_utils/qcd_core.h | 65 ++++++ .../cd_kmodel.cpp => qcd_utils/qcd_kmodel.cpp | 2 +- .../cd_kmodel.h => qcd_utils/qcd_kmodel.h | 7 +- .../cdkview.cpp => qcd_utils/qcd_kview.cpp | 5 +- .../pult/cdkview.h => qcd_utils/qcd_kview.h | 11 +- 65 files changed, 547 insertions(+), 144 deletions(-) delete mode 100644 cd_utils/pult/CMakeLists.txt create mode 100644 qcd_utils/CMakeLists.txt create mode 100644 qcd_utils/clean.bat create mode 100644 qcd_utils/make_lib.bat create mode 100644 qcd_utils/pult/CMakeLists.txt rename {cd_utils => qcd_utils}/pult/cd_pult.conf (100%) rename {cd_utils => qcd_utils}/pult/cd_pult.cpp (100%) rename {cd_utils => qcd_utils}/pult/cd_pult.h (95%) rename {cd_utils => qcd_utils}/pult/cd_pult.qrc (100%) rename {cd_utils => qcd_utils}/pult/cd_pult.ui (100%) rename {cd_utils => qcd_utils}/pult/form.cpp (82%) rename {cd_utils => qcd_utils}/pult/form.h (100%) rename {cd_utils => qcd_utils}/pult/form.ui (61%) rename {cd_utils => qcd_utils}/pult/icons/accessories-calculator.png (100%) rename {cd_utils => qcd_utils}/pult/icons/alpha.png (100%) rename {cd_utils => qcd_utils}/pult/icons/application-exit.png (100%) rename {cd_utils => qcd_utils}/pult/icons/archive-extract.png (100%) rename {cd_utils => qcd_utils}/pult/icons/configure.png (100%) rename {cd_utils => qcd_utils}/pult/icons/dialog-close.png (100%) rename {cd_utils => qcd_utils}/pult/icons/document-export.png (100%) rename {cd_utils => qcd_utils}/pult/icons/document-import.png (100%) rename {cd_utils => qcd_utils}/pult/icons/document-open.png (100%) rename {cd_utils => qcd_utils}/pult/icons/document-save-.png (100%) rename {cd_utils => qcd_utils}/pult/icons/document-save.png (100%) rename {cd_utils => qcd_utils}/pult/icons/edit-clear-.png (100%) rename {cd_utils => qcd_utils}/pult/icons/edit-clear-locationbar-rtl.png (100%) rename {cd_utils => qcd_utils}/pult/icons/edit-clear.png (100%) rename {cd_utils => qcd_utils}/pult/icons/edit-copy.png (100%) rename {cd_utils => qcd_utils}/pult/icons/edit-delete.png (100%) rename {cd_utils => qcd_utils}/pult/icons/edit-find-.png (100%) rename {cd_utils => qcd_utils}/pult/icons/edit-find.png (100%) rename {cd_utils => qcd_utils}/pult/icons/edit-guides.png (100%) rename {cd_utils => qcd_utils}/pult/icons/edit-paste.png (100%) rename {cd_utils => qcd_utils}/pult/icons/expand_s_x.png (100%) rename {cd_utils => qcd_utils}/pult/icons/expand_s_y.png (100%) rename {cd_utils => qcd_utils}/pult/icons/expand_x.png (100%) rename {cd_utils => qcd_utils}/pult/icons/expand_y.png (100%) rename {cd_utils => qcd_utils}/pult/icons/item-add.png (100%) rename {cd_utils => qcd_utils}/pult/icons/item.png (100%) rename {cd_utils => qcd_utils}/pult/icons/layer-visible-off.png (100%) rename {cd_utils => qcd_utils}/pult/icons/layer-visible-on.png (100%) rename {cd_utils => qcd_utils}/pult/icons/list-add.png (100%) rename {cd_utils => qcd_utils}/pult/icons/media-playback-pause.png (100%) rename {cd_utils => qcd_utils}/pult/icons/media-playback-stop.png (100%) rename {cd_utils => qcd_utils}/pult/icons/media-record.png (100%) rename {cd_utils => qcd_utils}/pult/icons/node-add.png (100%) rename {cd_utils => qcd_utils}/pult/icons/node.png (100%) rename {cd_utils => qcd_utils}/pult/icons/view-grid.png (100%) rename {cd_utils => qcd_utils}/pult/icons/view-refresh.png (100%) rename {cd_utils => qcd_utils}/pult/icons/zoom-fit-best.png (100%) rename {cd_utils => qcd_utils}/pult/icons/zoom-fit-height.png (100%) rename {cd_utils => qcd_utils}/pult/main.cpp (100%) create mode 100644 qcd_utils/qcd_core.cpp create mode 100644 qcd_utils/qcd_core.h rename cd_utils/pult/cd_kmodel.cpp => qcd_utils/qcd_kmodel.cpp (96%) rename cd_utils/pult/cd_kmodel.h => qcd_utils/qcd_kmodel.h (92%) rename cd_utils/pult/cdkview.cpp => qcd_utils/qcd_kview.cpp (92%) rename cd_utils/pult/cdkview.h => qcd_utils/qcd_kview.h (87%) diff --git a/CMakeLists.txt b/CMakeLists.txt index df6f80b..93a8be8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,7 +21,7 @@ if (WIN32) set(PIP_DLL_DIR "${CMAKE_CURRENT_BINARY_DIR}/pip") endif() -set(LIST_LIBS pip qad_widgets qad_utils qad_application qad_blockview qad_graphic qad_sql_table piqt cd_utils kx_utils piqt_utils touch_widgets qglview) +set(LIST_LIBS pip qad_widgets qad_utils qad_application qad_blockview qad_graphic qad_sql_table piqt cd_utils qcd_utils kx_utils piqt_utils touch_widgets qglview) foreach(L ${LIST_LIBS}) add_subdirectory(${L}) include_directories(${L}) diff --git a/cd_utils/CMakeLists.txt b/cd_utils/CMakeLists.txt index 81140cf..9539958 100644 --- a/cd_utils/CMakeLists.txt +++ b/cd_utils/CMakeLists.txt @@ -8,7 +8,6 @@ if (MINGW) endif() include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${PIP_INCLUDES}) set(PULT_NAME "cd_pult") -option(PULT "Build ${PULT_NAME}" 1) option(LIB "System install" 1) option(DEBUG "Build with -g3" 0) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -Wall") @@ -29,24 +28,6 @@ target_link_libraries(${PROJECT_NAME} ${PIP_LIBRARY}) add_executable(cdutilstest "cdutilstest.cpp" "cdtest.h") target_link_libraries(cdutilstest ${PIP_LIBRARY} ${PROJECT_NAME}) -if (NOT DEFINED ENV{QNX_HOST}) - if (PULT) - add_subdirectory(pult) - # find_package(Qt4 REQUIRED) - # find_package(OpenGL REQUIRED) - # include_directories(${QT_INCLUDES}) - # set(CPPS "kx_pult.cpp" "kx_pult.h" "kx_pult.ui" "main_kx_pult.cpp") - # set(MOCS "kx_pult.h") - # file(GLOB UIS "*.ui") - # file(GLOB RES "*.qrc") - # qt4_wrap_cpp(CMOCS ${MOCS} OPTIONS -nw) - # qt4_wrap_ui(CUIS ${UIS}) - # qt4_add_resources(RESS ${RES}) - # add_executable(${KX_PULT_NAME} WIN32 ${CPPS} ${CMOCS} ${CUIS} ${RESS} ${MOCS}) - # set(LIBS ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTOPENGL_LIBRARY} ${OPENGL_LIBRARIES} ${PIP_LIBRARY} qad_graphic qad_utils qad_widgets) - # target_link_libraries(${KX_PULT_NAME} ${LIBS} ${PROJECT_NAME}) - endif () -endif () if (LIB) if (WIN32) set(CMAKE_INSTALL_PREFIX ${MINGW_DIR}) @@ -63,8 +44,3 @@ else () install(TARGETS ${PROJECT_NAME} DESTINATION bin) message(STATUS "Install to local \"bin\"") endif () -#if (NOT DEFINED ENV{QNX_HOST}) -# if (KX_PULT) -# install(TARGETS ${KX_PULT_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) -# endif () -#endif () diff --git a/cd_utils/cdutils_core.cpp b/cd_utils/cdutils_core.cpp index 871a2af..54b96fb 100644 --- a/cd_utils/cdutils_core.cpp +++ b/cd_utils/cdutils_core.cpp @@ -57,11 +57,11 @@ __Core_Initializer__::~__Core_Initializer__() { CDCore::CDCore() { setName("CDCore"); - CONNECTU(&connection, dataReceivedEvent, this, dataReceived); - PIString s(app_config); - connection.configureFromString(&s); datatr.setPacketSize(960); - connection.start(); + CONNECTU(&connection, dataReceivedEvent, this, dataReceived); + /*PIString s(app_config); + connection.configureFromString(&s); + connection.start();*/ k_.name = "__root__"; k_.alias = "root"; @@ -78,7 +78,7 @@ CDCore::CDCore() { k_.section(11)[3] = KType(3, "1", "1", "88"); k_.section(11)[4] = KType(4, "0", "0", "88"); k_.section(11)[6] = KType(6, "0", "0", "88");*/ - //piCout << s; + //piCout << s; } @@ -99,6 +99,8 @@ void CDCore::k_write(PIIODevice * d) { void CDCore::k_read(PIIODevice * d) { PIConfig conf(d, PIIODevice::ReadOnly); k_.read(&(conf.rootEntry())); + k_.makePath(); + K_ChangedGlobal(); PIVector ds = connection.allDevices(); // piForeach(PIIODevice * d, ds) { // if (d) @@ -109,6 +111,8 @@ void CDCore::k_read(PIIODevice * d) { void CDCore::k_parse(PIIODevice * d) { k_ = CDParser::parse(d, CDType::cdK); + k_.makePath(); + K_ChangedGlobal(); k_.name = "__root__"; k_.alias = "root"; } @@ -126,15 +130,28 @@ void CDCore::k_update(PIIODevice * d) { uk.update(k_, kn); //piCout << k_.count() << uk.count(); k_ = uk; + k_.makePath(); + K_ChangedGlobal(); } void CDCore::k_calculate() { k_.calculate(); + K_ChangedGlobal(); } -void CDCore::reinitConnection(const PIString & configuration) { +void CDCore::initApp() { + init(appConfig()); +} + + +void CDCore::initPult() { + init(pultConfig()); +} + + +void CDCore::init(const PIString & configuration) { PIString c = configuration; connection.stop(); connection.removeAllDevices(); diff --git a/cd_utils/cdutils_core.h b/cd_utils/cdutils_core.h index d7e9d1e..557d9cf 100644 --- a/cd_utils/cdutils_core.h +++ b/cd_utils/cdutils_core.h @@ -25,6 +25,8 @@ class CDCore: public PIObject { PIOBJECT(CDUtils::CDCore) friend class __Core_Initializer__; + friend class CDSection; + friend class KInterface; public: static CDCore * instance() {return __Core_Initializer__::__instance__;} @@ -32,23 +34,27 @@ public: EVENT(K_SendFail) EVENT(K_Received) EVENT(K_ReceiveFail) + EVENT(K_ChangedGlobal) EVENT1(K_KeepNamesRequest, bool*, kn) EVENT_HANDLER(void, K_Send); EVENT_HANDLER(void, K_Request); - CDSection k_; - void k_write(PIIODevice * d); void k_read(PIIODevice * d); void k_parse(PIIODevice * d); void k_update(PIIODevice * d); void k_calculate(); - PIString pultConfig() {return PIString(pult_config);} - PIString appConfig() {return PIString(app_config);} - void reinitConnection(const PIString & configuration); + void initApp(); + void initPult(); + void init(const PIString & configuration); void startPing(); bool inProgress() {return sendt.isRunning();} + CDSection & k() {return k_;} + + static PIString pultConfig() {return PIString(pult_config);} + static PIString appConfig() {return PIString(app_config);} + private: CDCore(); ~CDCore(); @@ -65,6 +71,7 @@ private: PIByteArray send_data; PIThread sendt; PITimer x_timer; + CDSection k_; }; diff --git a/cd_utils/cdutils_k.cpp b/cd_utils/cdutils_k.cpp index c93d62e..e8f0a80 100644 --- a/cd_utils/cdutils_k.cpp +++ b/cd_utils/cdutils_k.cpp @@ -89,7 +89,7 @@ bool KInterface::configure(const PIString & config, const PIString & sect) { void KInterface::reinitConnection(const PIString &configuration) { - core->reinitConnection(configuration); + core->init(configuration); } diff --git a/cd_utils/cdutils_types.cpp b/cd_utils/cdutils_types.cpp index 29e3733..058f6cb 100644 --- a/cd_utils/cdutils_types.cpp +++ b/cd_utils/cdutils_types.cpp @@ -231,6 +231,14 @@ CDType & CDSection::operator [](const PIString & name_) { } +CDType & CDSection::operator [](const PIDeque & path_) { + if (path_.isEmpty()) return null; + CDSection & s(*this); + for (int i = 0; i < path_.size_s() - 1; ++i) + s = s.section(path_[i]); + return s[path_.back()]; +} + int CDSection::count(bool recursive) const { int ret = k.size_s(); if (recursive) { @@ -333,18 +341,14 @@ void CDSection::read(const void * ep) { void CDSection::update(CDSection & v, bool keep_names) { // piCout << "[CDSection] update start"; - PIMap vk_ids; + PIMap prev_k_f; PISet used; PIMap::iterator i; - for (i = v.k.begin(); i != v.k.end(); ++i) - vk_ids[i.value().name_] = i.value().index_; + if (keep_names) { + for (i = k.begin(); i != k.end(); ++i) + prev_k_f[i.value().name_] = i.value().formula(); + } for (i = k.begin(); i != k.end(); ++i) { - if (keep_names) { - if (vk_ids.contains(i.value().name_)) { - k[i.key()] = v.k[vk_ids[i.value().name_]]; - continue; - } - } if (v.k.contains(i.key())) { PIString f = k[i.key()].formula_; CDType & cdt = v.k[i.key()]; @@ -352,10 +356,17 @@ void CDSection::update(CDSection & v, bool keep_names) { k[i.key()] = cdt; used << i.key(); } + if (keep_names) { + CDType & ck(k[i.key()]); + if (prev_k_f.contains(ck.name_)) + ck.setFormula(prev_k_f[ck.name_]); + } } for (i = v.k.begin(); i != v.k.end(); ++i) { if (!used.contains(i.key())) k[i.key()] = i.value(); + CDType & ck(k[i.key()]); + ck.setFormula(prev_k_f.value(ck.name_)); } used.clear(); PIMap::iterator j; @@ -415,3 +426,33 @@ void CDSection::calculateRecursive(PIEvaluator * e) { } +void CDSection::makePath(PIDeque p) { + PIDeque tp; + PIMap::iterator i; + for (i = k.begin(); i != k.end(); ++i) { + tp = p; + tp << i.key(); + i.value().path_ = tp; + } + PIMap::iterator j; + for (j = s.begin(); j != s.end(); ++j) { + tp = p; + tp << j.key(); + j.value().makePath(tp); + } +} + + +PIVector CDSection::children(bool recursive) const { + PIVector ret; + PIMap::const_iterator i; + for (i = k.begin(); i != k.end(); ++i) + ret << const_cast(&(i.value())); + if (!recursive) return ret; + PIMap::const_iterator j; + for (j = s.begin(); j != s.end(); ++j) + ret << j.value().children(true); + return ret; +} + + diff --git a/cd_utils/cdutils_types.h b/cd_utils/cdutils_types.h index 21d3660..2888be7 100644 --- a/cd_utils/cdutils_types.h +++ b/cd_utils/cdutils_types.h @@ -35,6 +35,7 @@ public: operator double() const {return value_d;} const PIStringList & enumValues() const {return enum_values;} const PIString & errorString() const {return error_;} + PIDeque path() const {return path_;} protected: bool calculate(PIEvaluator * e, PIVector stack = PIVector()); @@ -44,6 +45,7 @@ protected: PIString value_s, formula_, comment_, error_; PIStringList enum_values; CDSection * parent; + PIDeque path_; double value_d; int value_i; bool value_b, calculated; @@ -66,6 +68,8 @@ public: const CDType operator [](int v) const {return k[v];} CDType & operator [](const PIString & name_); const CDType operator [](const PIString & name_) const {return (*this)[name_];} + CDType & operator [](const PIDeque & path_); + const CDType operator [](const PIDeque & path_) const {return (*this)[path_];} CDSection & section(int v) {return s[v];} const CDSection section(int v) const {return s[v];} @@ -75,6 +79,8 @@ public: PIVector indexes() const {return k.keys();} PIStringList index_names() const; void calculate(); + void makePath(PIDeque p = PIDeque()); + PIVector children(bool recursive = true) const; PIString name; PIString alias; @@ -110,7 +116,7 @@ inline PICout operator <<(PICout s, const CDUtils::CDType & v) { } s << v.name() << "(" << v.index() << ")] = " << v.value(); s.restoreControl(); - return s;\ + return s; } #endif // CDUTILS_TYPES_H diff --git a/cd_utils/pult/CMakeLists.txt b/cd_utils/pult/CMakeLists.txt deleted file mode 100644 index ff303a7..0000000 --- a/cd_utils/pult/CMakeLists.txt +++ /dev/null @@ -1,60 +0,0 @@ -project(cd_pult) -cmake_minimum_required(VERSION 2.6) -if (NOT LIBPROJECT) - find_package(PIP REQUIRED) -endif () -if (MINGW) - find_package(MinGW REQUIRED) -endif() -find_package(Qt4 REQUIRED) -find_package(OpenGL REQUIRED) -include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${PIP_INCLUDES} ${QT_INCLUDES} ${CMAKE_CURRENT_SOURCE_DIR}/../) -file(GLOB CPPS "*.cpp") -file(GLOB MOCS "*.h") -file(GLOB UIS "*.ui") -file(GLOB RES "*.qrc") -qt4_wrap_cpp(CMOCS ${MOCS} OPTIONS -nw) -qt4_wrap_ui(CUIS ${UIS}) -qt4_add_resources(RESS ${RES}) -add_executable(${PROJECT_NAME} ${CPPS} ${CMOCS} ${CUIS} ${RESS} ${MOCS}) -set(LIBS ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTOPENGL_LIBRARY} ${OPENGL_LIBRARIES} ${PIP_LIBRARY} qad_graphic qad_utils qad_widgets) -target_link_libraries(${PROJECT_NAME} ${LIBS} cd_utils) - -# if (NOT DEFINED ENV{QNX_HOST}) - # if (PULT) - # find_package(Qt4 REQUIRED) - # find_package(OpenGL REQUIRED) - # include_directories(${QT_INCLUDES}) - # set(CPPS "kx_pult.cpp" "kx_pult.h" "kx_pult.ui" "main_kx_pult.cpp") - # set(MOCS "kx_pult.h") - # file(GLOB UIS "*.ui") - # file(GLOB RES "*.qrc") - # qt4_wrap_cpp(CMOCS ${MOCS} OPTIONS -nw) - # qt4_wrap_ui(CUIS ${UIS}) - # qt4_add_resources(RESS ${RES}) - # add_executable(${KX_PULT_NAME} WIN32 ${CPPS} ${CMOCS} ${CUIS} ${RESS} ${MOCS}) - # set(LIBS ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTOPENGL_LIBRARY} ${OPENGL_LIBRARIES} ${PIP_LIBRARY} qad_graphic qad_utils qad_widgets) - # target_link_libraries(${KX_PULT_NAME} ${LIBS} ${PROJECT_NAME}) - # endif () -# endif () -# if (LIB) - # if (WIN32) - # set(CMAKE_INSTALL_PREFIX ${MINGW_DIR}) - # install(FILES ${HDRS_UTILS} DESTINATION ${MINGW_INCLUDE}) - # install(TARGETS ${PROJECT_NAME} DESTINATION ${MINGW_LIB}) - # install(TARGETS ${PROJECT_NAME} DESTINATION ${MINGW_BIN}) - # else () - # set(CMAKE_INSTALL_PREFIX /usr) - # install(FILES ${HDRS_UTILS} DESTINATION ${CMAKE_INSTALL_PREFIX}/include) - # install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) - # endif () - # message(STATUS "Install to system \"${CMAKE_INSTALL_PREFIX}\"") -# else () - # install(TARGETS ${PROJECT_NAME} DESTINATION bin) - # message(STATUS "Install to local \"bin\"") -# endif () -# if (NOT DEFINED ENV{QNX_HOST}) - # if (KX_PULT) - # install(TARGETS ${KX_PULT_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) - # endif () -# endif () diff --git a/qcd_utils/CMakeLists.txt b/qcd_utils/CMakeLists.txt new file mode 100644 index 0000000..fa23aef --- /dev/null +++ b/qcd_utils/CMakeLists.txt @@ -0,0 +1,52 @@ +project(qcd_utils) +cmake_minimum_required(VERSION 2.6) +if (NOT LIBPROJECT) + find_package(PIP REQUIRED) +endif () +if (MINGW) + find_package(MinGW REQUIRED) +endif() +find_package(Qt4 REQUIRED) +include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${PIP_INCLUDES} ${QT_INCLUDES}) +set(PULT_NAME "cd_pult") +option(PULT "Build ${PULT_NAME}" 1) +option(LIB "System install" 1) +option(DEBUG "Build with -g3" 0) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -Wall") +if (DEBUG) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3") +endif () +file(GLOB CPPS "*.cpp") +file(GLOB MOCS "*.h") +file(GLOB UIS "*.ui") +file(GLOB RES "*.qrc") +qt4_wrap_cpp(CMOCS ${MOCS} OPTIONS -nw) +qt4_wrap_ui(CUIS ${UIS}) +qt4_add_resources(RESS ${RES}) +add_library(${PROJECT_NAME} SHARED ${CPPS} ${CMOCS} ${CUIS} ${RESS} ${MOCS}) +set(LIBS ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${PIP_LIBRARY} qad_widgets cd_utils piqt) +target_link_libraries(${PROJECT_NAME} ${LIBS}) + +if (NOT DEFINED ENV{QNX_HOST}) + if (PULT) + add_subdirectory(pult) + endif () +endif () + if (LIB) + if (WIN32) + set(CMAKE_INSTALL_PREFIX ${MINGW_DIR}) + install(FILES ${MOCS} DESTINATION ${MINGW_INCLUDE}) + install(TARGETS ${PROJECT_NAME} DESTINATION ${MINGW_LIB}) + install(TARGETS ${PROJECT_NAME} DESTINATION ${MINGW_BIN}) + get_filename_component(QTDIR ${QT_QMAKE_EXECUTABLE} PATH) + install(TARGETS ${PROJECT_NAME} DESTINATION ${QTDIR}) + else () + set(CMAKE_INSTALL_PREFIX /usr) + install(FILES ${MOCS} DESTINATION ${CMAKE_INSTALL_PREFIX}/include) + install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) + endif () + message(STATUS "Install to system \"${CMAKE_INSTALL_PREFIX}\"") +else () + install(TARGETS ${PROJECT_NAME} DESTINATION bin) + message(STATUS "Install to local \"bin\"") +endif () diff --git a/qcd_utils/clean.bat b/qcd_utils/clean.bat new file mode 100644 index 0000000..3a657d9 --- /dev/null +++ b/qcd_utils/clean.bat @@ -0,0 +1,4 @@ +#make clean +del /q /f /s CMakeFiles +rmdir /q /s CMakeFiles +del /q /f CMakeCache.txt Makefile cmake_install.cmake install_manifest.txt *.user* *~ *cxx moc_* ui_* qrc_* *.o *.exe *.a *.dll *.lib core *.qrc.depends diff --git a/qcd_utils/make_lib.bat b/qcd_utils/make_lib.bat new file mode 100644 index 0000000..0148a43 --- /dev/null +++ b/qcd_utils/make_lib.bat @@ -0,0 +1 @@ +cmake -G "MinGW Makefiles" -DLIB=1 && make install . %* diff --git a/qcd_utils/pult/CMakeLists.txt b/qcd_utils/pult/CMakeLists.txt new file mode 100644 index 0000000..6ab75ee --- /dev/null +++ b/qcd_utils/pult/CMakeLists.txt @@ -0,0 +1,21 @@ +project(cd_pult) +cmake_minimum_required(VERSION 2.6) +if (NOT LIBPROJECT) + find_package(PIP REQUIRED) +endif () +if (MINGW) + find_package(MinGW REQUIRED) +endif() +find_package(Qt4 REQUIRED) +find_package(OpenGL REQUIRED) +include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${PIP_INCLUDES} ${QT_INCLUDES} ${CMAKE_CURRENT_SOURCE_DIR}/../) +file(GLOB PULT_CPPS "*.cpp") +file(GLOB PULT_MOCS "*.h") +file(GLOB PULT_UIS "*.ui") +file(GLOB PULT_RES "*.qrc") +qt4_wrap_cpp(PULT_CMOCS ${PULT_MOCS} OPTIONS -nw) +qt4_wrap_ui(PULT_CUIS ${PULT_UIS}) +qt4_add_resources(PULT_RESS ${PULT_RES}) +add_executable(${PROJECT_NAME} ${PULT_CPPS} ${PULT_CMOCS} ${PULT_CUIS} ${PULT_RESS} ${PULT_MOCS}) +set(LIBS ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTOPENGL_LIBRARY} ${OPENGL_LIBRARIES} ${PIP_LIBRARY} qad_graphic qad_utils qad_widgets qcd_utils) +target_link_libraries(${PROJECT_NAME} ${LIBS} cd_utils) diff --git a/cd_utils/pult/cd_pult.conf b/qcd_utils/pult/cd_pult.conf similarity index 100% rename from cd_utils/pult/cd_pult.conf rename to qcd_utils/pult/cd_pult.conf diff --git a/cd_utils/pult/cd_pult.cpp b/qcd_utils/pult/cd_pult.cpp similarity index 100% rename from cd_utils/pult/cd_pult.cpp rename to qcd_utils/pult/cd_pult.cpp diff --git a/cd_utils/pult/cd_pult.h b/qcd_utils/pult/cd_pult.h similarity index 95% rename from cd_utils/pult/cd_pult.h rename to qcd_utils/pult/cd_pult.h index d8bee3d..56b1326 100644 --- a/cd_utils/pult/cd_pult.h +++ b/qcd_utils/pult/cd_pult.h @@ -24,7 +24,7 @@ #include "qpievaluator.h" #include "cdutils_core.h" #include "cdutils_k.h" -#include "cd_kmodel.h" +#include "qcd_kmodel.h" namespace Ui { diff --git a/cd_utils/pult/cd_pult.qrc b/qcd_utils/pult/cd_pult.qrc similarity index 100% rename from cd_utils/pult/cd_pult.qrc rename to qcd_utils/pult/cd_pult.qrc diff --git a/cd_utils/pult/cd_pult.ui b/qcd_utils/pult/cd_pult.ui similarity index 100% rename from cd_utils/pult/cd_pult.ui rename to qcd_utils/pult/cd_pult.ui diff --git a/cd_utils/pult/form.cpp b/qcd_utils/pult/form.cpp similarity index 82% rename from cd_utils/pult/form.cpp rename to qcd_utils/pult/form.cpp index 12576df..3a67da9 100644 --- a/cd_utils/pult/form.cpp +++ b/qcd_utils/pult/form.cpp @@ -1,14 +1,19 @@ #include "form.h" #include "ui_form.h" -#include "QFileDialog" +#include +#include #include "cdutils_k.h" +#include "cdutils_core.h" +#include "qcd_core.h" + using namespace CDUtils; + Form::Form(QWidget *parent) : QWidget(parent), ui(new Ui::Form) { + CDCore::instance()->initPult(); ui->setupUi(this); ui->treeView->setKFile(""); ui->treeView->refresh(); - } @@ -28,6 +33,7 @@ void Form::on_pushButton_4_clicked() { ui->treeView->setKFile(QFileDialog::getOpenFileName(this, "Open")); ui->treeView->loadK(); ui->treeView->setKFile(""); + qDebug() << QCDCore::instance()->bindWindow(this); } diff --git a/cd_utils/pult/form.h b/qcd_utils/pult/form.h similarity index 100% rename from cd_utils/pult/form.h rename to qcd_utils/pult/form.h diff --git a/cd_utils/pult/form.ui b/qcd_utils/pult/form.ui similarity index 61% rename from cd_utils/pult/form.ui rename to qcd_utils/pult/form.ui index 27af223..28d1999 100644 --- a/cd_utils/pult/form.ui +++ b/qcd_utils/pult/form.ui @@ -6,21 +6,18 @@ 0 0 - 581 - 432 + 731 + 508 Form - - - - - + + - Save + Refresh @@ -31,10 +28,20 @@ - - + + - Receive + Save + + + + + + + + + + Calculate @@ -59,20 +66,66 @@ - - + + - Calculate + Receive + + + + + 0 + 0 + + + + GroupBox + + + + + + CheckBox + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + SpinSlider + QWidget +
spinslider.h
+
CDKView QTreeView -
cdkview.h
+
qcd_kview.h
busyStatusChanged(bool) sendK() @@ -81,6 +134,7 @@ loadK() clear() clearK() + refresh()
@@ -93,11 +147,11 @@ receiveK() - 571 + 264 60 - 410 + 264 152 @@ -109,11 +163,11 @@ setDisabled(bool) - 309 + 264 174 - 571 + 264 60 @@ -125,11 +179,11 @@ clearK() - 571 + 264 89 - 468 + 264 188 @@ -141,7 +195,7 @@ sendK() - 199 + 137 60 @@ -166,5 +220,21 @@ + + buttonRefresh + clicked() + treeView + refresh() + + + 223 + 114 + + + 217 + 134 + + + diff --git a/cd_utils/pult/icons/accessories-calculator.png b/qcd_utils/pult/icons/accessories-calculator.png similarity index 100% rename from cd_utils/pult/icons/accessories-calculator.png rename to qcd_utils/pult/icons/accessories-calculator.png diff --git a/cd_utils/pult/icons/alpha.png b/qcd_utils/pult/icons/alpha.png similarity index 100% rename from cd_utils/pult/icons/alpha.png rename to qcd_utils/pult/icons/alpha.png diff --git a/cd_utils/pult/icons/application-exit.png b/qcd_utils/pult/icons/application-exit.png similarity index 100% rename from cd_utils/pult/icons/application-exit.png rename to qcd_utils/pult/icons/application-exit.png diff --git a/cd_utils/pult/icons/archive-extract.png b/qcd_utils/pult/icons/archive-extract.png similarity index 100% rename from cd_utils/pult/icons/archive-extract.png rename to qcd_utils/pult/icons/archive-extract.png diff --git a/cd_utils/pult/icons/configure.png b/qcd_utils/pult/icons/configure.png similarity index 100% rename from cd_utils/pult/icons/configure.png rename to qcd_utils/pult/icons/configure.png diff --git a/cd_utils/pult/icons/dialog-close.png b/qcd_utils/pult/icons/dialog-close.png similarity index 100% rename from cd_utils/pult/icons/dialog-close.png rename to qcd_utils/pult/icons/dialog-close.png diff --git a/cd_utils/pult/icons/document-export.png b/qcd_utils/pult/icons/document-export.png similarity index 100% rename from cd_utils/pult/icons/document-export.png rename to qcd_utils/pult/icons/document-export.png diff --git a/cd_utils/pult/icons/document-import.png b/qcd_utils/pult/icons/document-import.png similarity index 100% rename from cd_utils/pult/icons/document-import.png rename to qcd_utils/pult/icons/document-import.png diff --git a/cd_utils/pult/icons/document-open.png b/qcd_utils/pult/icons/document-open.png similarity index 100% rename from cd_utils/pult/icons/document-open.png rename to qcd_utils/pult/icons/document-open.png diff --git a/cd_utils/pult/icons/document-save-.png b/qcd_utils/pult/icons/document-save-.png similarity index 100% rename from cd_utils/pult/icons/document-save-.png rename to qcd_utils/pult/icons/document-save-.png diff --git a/cd_utils/pult/icons/document-save.png b/qcd_utils/pult/icons/document-save.png similarity index 100% rename from cd_utils/pult/icons/document-save.png rename to qcd_utils/pult/icons/document-save.png diff --git a/cd_utils/pult/icons/edit-clear-.png b/qcd_utils/pult/icons/edit-clear-.png similarity index 100% rename from cd_utils/pult/icons/edit-clear-.png rename to qcd_utils/pult/icons/edit-clear-.png diff --git a/cd_utils/pult/icons/edit-clear-locationbar-rtl.png b/qcd_utils/pult/icons/edit-clear-locationbar-rtl.png similarity index 100% rename from cd_utils/pult/icons/edit-clear-locationbar-rtl.png rename to qcd_utils/pult/icons/edit-clear-locationbar-rtl.png diff --git a/cd_utils/pult/icons/edit-clear.png b/qcd_utils/pult/icons/edit-clear.png similarity index 100% rename from cd_utils/pult/icons/edit-clear.png rename to qcd_utils/pult/icons/edit-clear.png diff --git a/cd_utils/pult/icons/edit-copy.png b/qcd_utils/pult/icons/edit-copy.png similarity index 100% rename from cd_utils/pult/icons/edit-copy.png rename to qcd_utils/pult/icons/edit-copy.png diff --git a/cd_utils/pult/icons/edit-delete.png b/qcd_utils/pult/icons/edit-delete.png similarity index 100% rename from cd_utils/pult/icons/edit-delete.png rename to qcd_utils/pult/icons/edit-delete.png diff --git a/cd_utils/pult/icons/edit-find-.png b/qcd_utils/pult/icons/edit-find-.png similarity index 100% rename from cd_utils/pult/icons/edit-find-.png rename to qcd_utils/pult/icons/edit-find-.png diff --git a/cd_utils/pult/icons/edit-find.png b/qcd_utils/pult/icons/edit-find.png similarity index 100% rename from cd_utils/pult/icons/edit-find.png rename to qcd_utils/pult/icons/edit-find.png diff --git a/cd_utils/pult/icons/edit-guides.png b/qcd_utils/pult/icons/edit-guides.png similarity index 100% rename from cd_utils/pult/icons/edit-guides.png rename to qcd_utils/pult/icons/edit-guides.png diff --git a/cd_utils/pult/icons/edit-paste.png b/qcd_utils/pult/icons/edit-paste.png similarity index 100% rename from cd_utils/pult/icons/edit-paste.png rename to qcd_utils/pult/icons/edit-paste.png diff --git a/cd_utils/pult/icons/expand_s_x.png b/qcd_utils/pult/icons/expand_s_x.png similarity index 100% rename from cd_utils/pult/icons/expand_s_x.png rename to qcd_utils/pult/icons/expand_s_x.png diff --git a/cd_utils/pult/icons/expand_s_y.png b/qcd_utils/pult/icons/expand_s_y.png similarity index 100% rename from cd_utils/pult/icons/expand_s_y.png rename to qcd_utils/pult/icons/expand_s_y.png diff --git a/cd_utils/pult/icons/expand_x.png b/qcd_utils/pult/icons/expand_x.png similarity index 100% rename from cd_utils/pult/icons/expand_x.png rename to qcd_utils/pult/icons/expand_x.png diff --git a/cd_utils/pult/icons/expand_y.png b/qcd_utils/pult/icons/expand_y.png similarity index 100% rename from cd_utils/pult/icons/expand_y.png rename to qcd_utils/pult/icons/expand_y.png diff --git a/cd_utils/pult/icons/item-add.png b/qcd_utils/pult/icons/item-add.png similarity index 100% rename from cd_utils/pult/icons/item-add.png rename to qcd_utils/pult/icons/item-add.png diff --git a/cd_utils/pult/icons/item.png b/qcd_utils/pult/icons/item.png similarity index 100% rename from cd_utils/pult/icons/item.png rename to qcd_utils/pult/icons/item.png diff --git a/cd_utils/pult/icons/layer-visible-off.png b/qcd_utils/pult/icons/layer-visible-off.png similarity index 100% rename from cd_utils/pult/icons/layer-visible-off.png rename to qcd_utils/pult/icons/layer-visible-off.png diff --git a/cd_utils/pult/icons/layer-visible-on.png b/qcd_utils/pult/icons/layer-visible-on.png similarity index 100% rename from cd_utils/pult/icons/layer-visible-on.png rename to qcd_utils/pult/icons/layer-visible-on.png diff --git a/cd_utils/pult/icons/list-add.png b/qcd_utils/pult/icons/list-add.png similarity index 100% rename from cd_utils/pult/icons/list-add.png rename to qcd_utils/pult/icons/list-add.png diff --git a/cd_utils/pult/icons/media-playback-pause.png b/qcd_utils/pult/icons/media-playback-pause.png similarity index 100% rename from cd_utils/pult/icons/media-playback-pause.png rename to qcd_utils/pult/icons/media-playback-pause.png diff --git a/cd_utils/pult/icons/media-playback-stop.png b/qcd_utils/pult/icons/media-playback-stop.png similarity index 100% rename from cd_utils/pult/icons/media-playback-stop.png rename to qcd_utils/pult/icons/media-playback-stop.png diff --git a/cd_utils/pult/icons/media-record.png b/qcd_utils/pult/icons/media-record.png similarity index 100% rename from cd_utils/pult/icons/media-record.png rename to qcd_utils/pult/icons/media-record.png diff --git a/cd_utils/pult/icons/node-add.png b/qcd_utils/pult/icons/node-add.png similarity index 100% rename from cd_utils/pult/icons/node-add.png rename to qcd_utils/pult/icons/node-add.png diff --git a/cd_utils/pult/icons/node.png b/qcd_utils/pult/icons/node.png similarity index 100% rename from cd_utils/pult/icons/node.png rename to qcd_utils/pult/icons/node.png diff --git a/cd_utils/pult/icons/view-grid.png b/qcd_utils/pult/icons/view-grid.png similarity index 100% rename from cd_utils/pult/icons/view-grid.png rename to qcd_utils/pult/icons/view-grid.png diff --git a/cd_utils/pult/icons/view-refresh.png b/qcd_utils/pult/icons/view-refresh.png similarity index 100% rename from cd_utils/pult/icons/view-refresh.png rename to qcd_utils/pult/icons/view-refresh.png diff --git a/cd_utils/pult/icons/zoom-fit-best.png b/qcd_utils/pult/icons/zoom-fit-best.png similarity index 100% rename from cd_utils/pult/icons/zoom-fit-best.png rename to qcd_utils/pult/icons/zoom-fit-best.png diff --git a/cd_utils/pult/icons/zoom-fit-height.png b/qcd_utils/pult/icons/zoom-fit-height.png similarity index 100% rename from cd_utils/pult/icons/zoom-fit-height.png rename to qcd_utils/pult/icons/zoom-fit-height.png diff --git a/cd_utils/pult/main.cpp b/qcd_utils/pult/main.cpp similarity index 100% rename from cd_utils/pult/main.cpp rename to qcd_utils/pult/main.cpp diff --git a/qcd_utils/qcd_core.cpp b/qcd_utils/qcd_core.cpp new file mode 100644 index 0000000..175a691 --- /dev/null +++ b/qcd_utils/qcd_core.cpp @@ -0,0 +1,196 @@ +#include "qcd_core.h" +#include "cdutils_core.h" +#include "piqt.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace CDUtils; + + +int __QCore_Initializer__::count_(0); +QCDCore * __QCore_Initializer__::__instance__(0); + + +__QCore_Initializer__::__QCore_Initializer__() { + count_++; + if (count_ > 1) return; + __instance__ = new QCDCore(); +} + + +__QCore_Initializer__::~__QCore_Initializer__() { + count_--; + if (count_ > 0) return; + if (__instance__ != 0) { + delete __instance__; + __instance__ = 0; + } +} + + + + +QCDCore::QCDCore() { + setObjectName("QCDCore"); + setName("QCDCore"); + CONNECTU(CDCore::instance(), K_ChangedGlobal, this, K_ChangedGlobal); + updating = false; +} + + +QCDCore::~QCDCore() { +} + + +void QCDCore::K_ChangedGlobal() { + QMetaObject::invokeMethod(this, "updateBindedWidgets", Qt::QueuedConnection); +} + + +void QCDCore::slotBool(bool v) { + QWidget * w = (QWidget*)sender(); + if (!w || updating) return; + PIDeque path = binded_widgets.value(w); + CDCore::instance()->k()[path].setValue(PIString::fromBool(v)); +} + + +void QCDCore::slotInt(int v) { + QWidget * w = (QWidget*)sender(); + if (!w || updating) return; + PIDeque path = binded_widgets.value(w); + CDCore::instance()->k()[path].setValue(PIString::fromNumber(v)); +} + + +void QCDCore::slotDouble(double v) { + QWidget * w = (QWidget*)sender(); + if (!w || updating) return; + PIDeque path = binded_widgets.value(w); + CDCore::instance()->k()[path].setValue(PIString::fromNumber(v)); +} + + +void QCDCore::slotText(QString v) { + QWidget * w = (QWidget*)sender(); + if (!w || updating) return; + PIDeque path = binded_widgets.value(w); + CDCore::instance()->k()[path].setValue(Q2PIString(v)); +} + + +int QCDCore::bindWindow(QWidget * wnd) { + if (!wnd) return 0; + CDCore::instance()->k().makePath(); + return bindWidgets(wnd->findChildren()); +} + + +int QCDCore::bindWidgets(QList wl) { + int ret = 0; + foreach (QWidget * w, wl) + if (bindWidget(w)) ++ret; + return ret; +} + + +bool QCDCore::bindWidget(QWidget * w) { + if (!w) return false; + QString on = w->objectName(); + PIVector ak = CDCore::instance()->k().children(); + piForeachC (CDType * k, ak) { + if (!on.endsWith(PI2QString(k->name()))) continue; + QString cn = w->metaObject()->className(); + bool ok = false; + if (cn == "QCheckBox" || cn == "QGroupBox") { + connect(w, SIGNAL(toggled(bool)), this, SLOT(slotBool(bool)), Qt::UniqueConnection); + ok = true; + } + if (cn == "QSpinBox" || cn == "QSlider" || cn == "QScrollBar") { + connect(w, SIGNAL(valueChanged(int)), this, SLOT(slotInt(int)), Qt::UniqueConnection); + ok = true; + } + if (cn == "QDoubleSpinBox" || cn == "SpinSlider") { + connect(w, SIGNAL(valueChanged(double)), this, SLOT(slotDouble(double)), Qt::UniqueConnection); + ok = true; + } + if (cn == "QLineEdit" || cn == "CLineEdit") { + connect(w, SIGNAL(textChanged(QString)), this, SLOT(slotText(QString)), Qt::UniqueConnection); + ok = true; + } + if (!ok) continue; + binded_widgets[w] = k->path(); + return true; + } + return false; +} + + +void QCDCore::updateBindedWidgets() { + QMapIterator > it(binded_widgets); + updating = true; + while (it.hasNext()) { + QWidget * w = it.next().key(); + QString cn = w->metaObject()->className(); + const CDType k(CDCore::instance()->k()[it.value()]); + if (cn == "QCheckBox") qobject_cast(w)->setChecked(k.toBool()); + if (cn == "QGroupBox") qobject_cast(w)->setChecked(k.toBool()); + if (cn == "QSpinBox") qobject_cast(w)->setValue(k.toInt()); + if (cn == "QSlider") qobject_cast(w)->setValue(k.toInt()); + if (cn == "QScrollBar") qobject_cast(w)->setValue(k.toInt()); + if (cn == "QDoubleSpinBox") qobject_cast(w)->setValue(k.toDouble()); + if (cn == "SpinSlider") qobject_cast(w)->setValue(k.toDouble()); + if (cn == "QLineEdit") qobject_cast(w)->setText(PI2QString(k.value())); + if (cn == "CLineEdit") qobject_cast(w)->setText(PI2QString(k.value())); + } + updating = false; +} + + +int QCDCore::unbindWindow(QWidget * wnd) { + if (!wnd) return 0; + return unbindWidgets(wnd->findChildren()); +} + + +int QCDCore::unbindWidgets(QList wl) { + int ret = 0; + foreach (QWidget * w, wl) + if (unbindWidget(w)) ++ret; + return ret; +} + + +bool QCDCore::unbindWidget(QWidget * w) { + if (!w) return false; + if (!binded_widgets.contains(w)) return false; + QString cn = w->metaObject()->className(); + if (cn == "QCheckBox" || cn == "QGroupBox") + disconnect(w, SIGNAL(toggled(bool)), this, SLOT(slotBool(bool))); + if (cn == "QSpinBox" || cn == "QSlider" || cn == "QScrollBar") + disconnect(w, SIGNAL(valueChanged(int)), this, SLOT(slotInt(int))); + if (cn == "QDoubleSpinBox" || cn == "SpinSlider") + disconnect(w, SIGNAL(valueChanged(double)), this, SLOT(slotDouble(double))); + if (cn == "QLineEdit" || cn == "CLineEdit") + disconnect(w, SIGNAL(textChanged(QString)), this, SLOT(slotText(QString))); + binded_widgets.remove(w); + return true; +} + + +void QCDCore::unbindAllWidgets() { + QMapIterator > it(binded_widgets); + while (it.hasNext()) { + QWidget * w = it.next().key(); + unbindWidget(w); + } + binded_widgets.clear(); +} diff --git a/qcd_utils/qcd_core.h b/qcd_utils/qcd_core.h new file mode 100644 index 0000000..a870ce7 --- /dev/null +++ b/qcd_utils/qcd_core.h @@ -0,0 +1,65 @@ +#ifndef QCD_CORE_H +#define QCD_CORE_H + +#include +#include +#include "piobject.h" + + +class QCDCore; + + +class __QCore_Initializer__ { +public: + __QCore_Initializer__(); + ~__QCore_Initializer__(); + static int count_; + static QCDCore * __instance__; +}; + + +class QCDCore: public QObject, public PIObject +{ + Q_OBJECT + PIOBJECT(QCDCore) + friend class __QCore_Initializer__; +public: + static QCDCore * instance() {return __QCore_Initializer__::__instance__;} + + int bindWindow(QWidget * wnd); + int bindWidgets(QList wl); + bool bindWidget(QWidget * w); + void updateBindedWidgets(); + int unbindWindow(QWidget * wnd); + int unbindWidgets(QList wl); + bool unbindWidget(QWidget * w); + void unbindAllWidgets(); + +private: + QCDCore(); + ~QCDCore(); + + EVENT_HANDLER(void, K_ChangedGlobal); + + QMap > binded_widgets; + bool updating; + +private slots: + void slotBool(bool v); + void slotInt(int v); + void slotDouble(double v); + void slotText(QString v); + +public slots: + + +signals: + + +}; + + +static __QCore_Initializer__ __QCore_initializer__; + + +#endif // QCD_CORE_H diff --git a/cd_utils/pult/cd_kmodel.cpp b/qcd_utils/qcd_kmodel.cpp similarity index 96% rename from cd_utils/pult/cd_kmodel.cpp rename to qcd_utils/qcd_kmodel.cpp index 5d39d6f..b513fdc 100644 --- a/cd_utils/pult/cd_kmodel.cpp +++ b/qcd_utils/qcd_kmodel.cpp @@ -1,4 +1,4 @@ -#include "cd_kmodel.h" +#include "qcd_kmodel.h" #include "cdutils_k.h" #include "piqt.h" #include diff --git a/cd_utils/pult/cd_kmodel.h b/qcd_utils/qcd_kmodel.h similarity index 92% rename from cd_utils/pult/cd_kmodel.h rename to qcd_utils/qcd_kmodel.h index 3b275b4..db496e5 100644 --- a/cd_utils/pult/cd_kmodel.h +++ b/qcd_utils/qcd_kmodel.h @@ -1,7 +1,6 @@ -#ifndef CD_KMODEL_H -#define CD_KMODEL_H +#ifndef QCD_KMODEL_H +#define QCD_KMODEL_H -//#include "cdutils_k.h" #include #include #include @@ -78,4 +77,4 @@ signals: }; -#endif // CD_KMODEL_H +#endif // QCD_KMODEL_H diff --git a/cd_utils/pult/cdkview.cpp b/qcd_utils/qcd_kview.cpp similarity index 92% rename from cd_utils/pult/cdkview.cpp rename to qcd_utils/qcd_kview.cpp index 89a30fa..ac6c57a 100644 --- a/cd_utils/pult/cdkview.cpp +++ b/qcd_utils/qcd_kview.cpp @@ -1,7 +1,7 @@ #include #include "cdutils_k.h" -#include "cdkview.h" -#include "cd_kmodel.h" +#include "qcd_kview.h" +#include "qcd_kmodel.h" #include "piqt.h" #include "pifile.h" @@ -69,6 +69,7 @@ void CDKView::saveK() { void CDKView::loadK() { K.readFile(); + K.calculate(); refresh(); } diff --git a/cd_utils/pult/cdkview.h b/qcd_utils/qcd_kview.h similarity index 87% rename from cd_utils/pult/cdkview.h rename to qcd_utils/qcd_kview.h index 1dfaa15..062fbf3 100644 --- a/cd_utils/pult/cdkview.h +++ b/qcd_utils/qcd_kview.h @@ -1,25 +1,26 @@ -#ifndef CDKVIEW_H -#define CDKVIEW_H +#ifndef QCD_KVIEW_H +#define QCD_KVIEW_H #include "piobject.h" #include class CDKItemModel; -class CDKView : public QTreeView, public PIObject +class CDKView: public QTreeView, public PIObject { Q_OBJECT PIOBJECT(CDKView) public: explicit CDKView(QWidget *parent = 0); ~CDKView(); - void refresh(); + void setKFile(const QString & filename); void startPing(); CDKItemModel * CDKModel() {return kmodel;} public slots: + void refresh(); void sendK(); void receiveK(); void saveK(); @@ -57,4 +58,4 @@ signals: }; -#endif // CDKVIEW_H +#endif // QCD_KVIEW_H