Giter Site home page Giter Site logo

gpospelov / qt-mvvm Goto Github PK

View Code? Open in Web Editor NEW
277.0 18.0 79.0 33.06 MB

Model View ViewModel framework for large Qt C++ applications

License: GNU General Public License v3.0

CMake 3.26% C++ 96.49% C 0.26%
qt-applications viewmodel-framework qt5 mvvm cmake multi-platform node-editor property-editor

qt-mvvm's Issues

DataLoader minor fixes, part II

  • Instead of two vertical toolbars with buttons make one horizontal (up to @AlexanderSchober)
  • Provide a working selector "import as a new collection", or "add to current collection"
  • Add two different test ASCII files somewhere to the root of quickrefl example. It is handy to have something in hands to try loader. You can generate them with BornAgain (up to @AlexanderSchober).
  • After loading a new graph, make corresponding viewport selected so user already sees the plot.

Make QML example

  • Introduce backend and register it in QML
  • Provide property editor with group property

Visual Studio 2019 compiler crash on trying to compile tests

With the following message:

C:\Users\DmitryYurov\Documents\Software\qt-mvvm\Source\tests\viewmodel\TestAxisPlotControllers.cpp : fatal error C1001: An internal error has occurred in the compiler.
(compiler file 'd:\agent_work\3\s\src\vctools\Compiler\Utc\src\p2\main.c', line 160)
To work around this problem, try simplifying or changing the program near the locations listed above.
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
Internal Compiler Error in C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.22.27905\bin\HostX86\x64\CL.exe. You will be prompted to send an error report to Microsoft later.
INTERNAL COMPILER ERROR in 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.22.27905\bin\HostX86\x64\CL.exe'
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information

Consider alternative names instead of "viewmodel"

How to maximize the cognitive load of keeping a concept X apart from the related concepts "model" and "view"? Right, choose a name like X="view model".

There may be good theoretical grounds for the term "view model", but for API users and library codevelopers it is about the worst possible choice.

Wikipedia says "The view model has been described as a state of the data in the model." What then about the term "state"? Other suggestions?

missing CMakeLists.txt in thirdparty/gtest/googletest

cmake fails with message:

CMake Error at thirdparty/gtest/CMakeLists.txt:10 (add_subdirectory):
  The source directory

    /G/tmp/qt-mvvm/thirdparty/gtest/googletest

  does not contain a CMakeLists.txt file.


-- Configuring incomplete, errors occurred!

Split the project

  • Create DaRefl repository
  • Move DaRefl
  • Enable testing
  • Attach qt-mvv as a submodule
  • Make directory structure flat
  • Update header guards
  • Update project source file header
  • Add AUTHORS
  • Beautify the code
  • Enable continuos integration

Doxygen comments: uniform C++ style

Prefer C++ style (//!) over C style (/*!).

Omit @class lines in fornt of class definitions.

Omit @brief tag where not specially required.

Finish DataLoader

  • Column settings should be saved in QSettings
  • Fix data column names not being utilized
  • Manage NaN values in the imported data
  • Add possibility to ignore columns for import
  • Fixed the QDialog issue

Make package installable

  • Make all libraries installablle
  • Provide generation of MVVMConfig.cmake and MVVMTargets.cmake
  • Make qt-mvvm accessible via find_package
  • Make all examples installable.
  • Make all examples compilable as a standalone projects
  • Provides so versions

DataLoader minor fixes

  • Use QSettings as in WelcomeViewSettings to rely on common config.
  • Change icons to material design
  • Make QSplitter splitting on equal half between "Selected Files" and "Text Selection Rules"
  • Enable selector "Merge into one dataset".
  • Take care of FIXME marks

Empty directory thirdparty/gtest/googletest

Similar issue #3 which was closed but not resolved.

CMake fails to build:

$ cmake ..
-- The CXX compiler identification is GNU 9.2.1
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
--   Qt5::Widgets /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.12.5
--   Includes: /usr/include/x86_64-linux-gnu/qt5/;/usr/include/x86_64-linux-gnu/qt5/QtWidgets;/usr/include/x86_64-linux-gnu/qt5/QtGui;/usr/include/x86_64-linux-gnu/qt5/QtCore;/usr/lib/x86_64-linux-gnu/qt5//mkspecs/linux-g++;/usr/include
CMake Error at thirdparty/gtest/CMakeLists.txt:10 (add_subdirectory):
  The source directory

    /G/ext/qt-mvvm/thirdparty/gtest/googletest

  does not contain a CMakeLists.txt file.


-- Configuring incomplete, errors occurred!

Actually, in my fresh clone the directory thirdparty/gtest/googletest is empty.

In the Github source browser, I do see a link to the upstream googletest repository. This link, however, seems to be ignored by git clone on my Debian/testing system.

Add two splitters for ImportWindow

Should separate tree with graphs, from the plot, and from plot properties. Consider saving relative splitter positions in QSettings. Use WelcomeViewSettings as an example

Introduce ViewModelBuilder

  • Make setter for ViewModel in ViewModelController
  • Move all ViewModel standard factory methods in dedicated folder
  • Introduce ViewModelBuilder or generic CreateViewModel
  • Cleanup LayerEditor example
  • Consider templated functions
CreateViewModel<AllItemsStrategy, NameLabelStrategy>(session_model)

Directory structure: Shorten source tree

For command-line addicts, source/libmvvm_viewmodel/mvvm/ is painful. Also, I see no good reason for such verbosity.

What about

lib/model
lib/state

(state to replace viewmodel as per #50)

Or create two libraries, and have an even flatter directory structure

libmodel
libstate

Add tooltip to SessionItem

  • Add TOOLTIP data role
  • Add tolltip get/set to SessionItem
  • Provide filtering of tooltip data during serialization
  • Use tooltips from memory during de-serialization
  • Forward tooltip to ViewModel

Create a library `libmvvm_view`

  • Introduce new library libmvvm_widgets
  • Move all custom trees, plotting there.
  • Make libmvvm_viewmodel containing only Qt-related view models

Create WelcomeView

  • Check saving in "mouse" example
  • Prevent closing of app on unsaved dialog
  • Provide modelLoaded signal
  • Recent projects
  • Application Actions
  • Menu File
  • Implement scroll bar for RecentProjectsWidget
  • Implement Logo
  • Make labels instead of buttons
  • Implement DaRefl version number
  • Implement exit in file menu
  • Implement recent-projects in a menu

Completed in gpospelov/DaRefl#4

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.