GithubHelp home page GithubHelp logo

copperspice / diamond Goto Github PK

View Code? Open in Web Editor NEW
19.0 7.0 4.0 5.97 MB

Cross platform programmers editor, uses the CopperSpice libraries

Home Page: https://www.copperspice.com/

License: GNU General Public License v2.0

C++ 95.64% CMake 2.96% C 1.40%
editor copperspice gui

diamond's Introduction

CopperSpice

Introduction

CopperSpice is a set of individual libraries which can be used to develop cross platform software applications in C++. It is a totally open source project released under the LGPL V2.1 license and was initially derived from the Qt framework. Over the last several years CopperSpice has completely diverged, with a goal of providing a first class GUI library to unite the C++ community.

Our motivation for developing CopperSpice was to change the fundamental design and turn the existing framework into a set of libraries for C++ developers. We are accomplishing this by leveraging modern C++ functionality, new technology, and modern tooling. CopperSpice currently requires C++17 or newer.

The libraries available in CopperSpice include:

  • CsCore
  • CsGui
  • CsMultimedia
  • CsNetwork
  • CsOpenGL
  • CsScript
  • CsSql
  • CsSvg
  • CsVulkan
  • CsWebKit
  • CsXml
  • CsXmlPatterns

There are also several open source BSD licensed libraries which are used by CopperSpice and available as stand alone libraries for anyone developing C++ applications.

  • CsCrypto
  • CsLibGuarded
  • CsPaint
  • CsPointer
  • CsSignal
  • CsString

System Requirements

To use the CopperSpice libraries a C++17 compiler and a C++17 standard library are required.

CopperSpice CMake build files are provided with the source distribution. We recommend your projects should also use CMake and Ninja for the build system.

For additional information about building from source, refer to our CopperSpice Overview Documentation or the KitchenSink demo application for sample CMake project files.

Building

The CopperSpice libraries are built using the CMake build system.

Using the CopperSpice Libraries

  • Any C++ application using CopperSpice can be built with CMake or any build system which imports CMake files
  • CopperSpice can be linked directly into any standard C++ application

Documentation

Overview

The CopperSpice Overview documentation includes information on building CopperSpice, downloading prebuilt binary files, package requirements, setting up an application which links with CopperSpice, migrating to CopperSpice, and general configuration information.

https://www.copperspice.com/docs/cs_overview/index.html

API

The API contains full class documentation and multiple tutorials for CopperSpice and is available directly on our website and from our download page.

https://www.copperspice.com/docs/cs_api/index.html

Offline

Both the CS Overview and API documentation can be downloaded for offline use. They are available in a compressed tar file or zip format.

https://download.copperspice.com/copperspice/documentation

Major Enhancements

  • Reflection
    • No Meta-Object Compiler is required for generating meta data, all references were removed
    • The functionality provided by moc was replaced with compile time templates
    • CopperSpice automatically generates meta data for processing Signals/ Slots and Introspection
    • A template class can now inherit from QObject with no restrictions on types
    • Complex data types such as QMap<QString, int> can be used for signal or slot arguments
  • Enhanced Functionality
    • CopperSpice makes extensive use of modern C++ features
      • constexpr, lambda expressions, templates, variadic templates, template variables
      • move semantics, structured bindings, tuple, decltype, SFINAE, and type traits
    • Redesigned all container classes to use the C++ standard library containers, iterators, and algorithms
    • Refactored all Mutex and Lock classes
    • CopperSpice includes a majority of the Qt 5 classes
    • Platform independent plugin system based on standard C++
    • High DPI Rendering Support
    • Redesigned pointer classes
  • Integration of CsLibGuarded
    • Used to manage shared data
  • Integration of CsSignal
    • Improved thread aware Signal/Slot delivery
    • Increased efficiency while maintaining the full Signal/Slot API
    • Deadlocks in Signal/Slot processing have been eliminated
  • Integration of CsString
    • Improved storage to properly represent Unicode strings
    • QString8 (UTF-8) and QString16 (UTF-16) classes
    • Added QStringView, QStringParser, and QRegularExpression

Presentations

Our YouTube channel contains videos about C++, graphics, build systems, CopperSpice, DoxyPress, and other topics related to software development.

https://www.youtube.com/copperspice

Links to technical presentations recorded at CppCon, CppNow, embBO++, MeetingC++, and code::dive, can be found on our presentation page.

https://www.copperspice.com/presentations.html

Authors and Key Contributors

The CS team welcomes contributors of all skill levels. When submitting a pull request please observe our Coding Style Guidelines.

https://www.copperspice.com/style_guide/source_code_style.html

  • Ansel Sermersheim
  • Barbara Geller
  • Jan Wilmans
  • Tim van Deurzen
  • Paul Bendixen
  • Peter Bindels
  • Mortaro Marcello
  • Adam Mensel
  • Robin Mills
  • Ivailo Monev
  • Adam Mensel
  • Matan Nassaw
  • Jeff Cohen
  • Daniel Pfeifer
  • Zbigniew Skowron
  • Johan Förberg
  • Dennis Menschel

License

This library is released under the LGPL V2.1 license. For more information refer to the LICENSE file provided with this project.

References

diamond's People

Contributors

adriaandegroot avatar bgeller avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

diamond's Issues

Paste text in the "Column mode" does not work correctly

Hare Krishna, All!

Paste text in the "Column mode" does not work correctly. First char is OK - other characters are inserted at the beginning of the following lines!

Hare Krishna! Thank You!
With best regards, Navadvipa Chandra das.

Diamond needs Hunspell for compilation

diamond needs hunspell for compilation. This dependency is not listed in README.md.
Under Ubuntu 18.04 installing libhunspell-dev was enough

sudo apt install libhunspell-dev

Diamond hangs when pushing Close in HTML view

Diamond hangs when pushing Close in any HTML view.
Clicking close on any page of Diamond Help causes Diamond to hang.
Same thing happens in "Display as HTML" view.

This is not a crash - the application simply stops reacting to any inputs.

Windows 10, Diamond Version: 1.2.3, Build # 05/01/2017

Tab Spacing

Hare Krishna, All!

I want Tab Spacing == 2 .
When to move the selected block of text, it is better to have a separate "Indent" setting and the value 1 suits me.

Hare Krishna! Thank You!
With best regards, Navadvipa Chandra das.

(Relesed version 1.3.7) Does not build with Copperspice 1.7.4

I can't tell if Copperspice 1.7.4 is actually released; there's a tag, but it's not listed as a release on the GH page, nor are there tarballs. So this might be chasing ahead of things.

In CopperSpirce 762c02aa9c71c85bdb1c5cb1ce711085a97e1017,

commit 762c02aa9c71c85bdb1c5cb1ce711085a97e1017
Author: Barbara Geller <[email protected]>
Date:   Thu Feb 10 16:05:18 2022 -0800

    Remove redundant enum Qt::Modifier, replace with Qt::KeyboardModifier

The modifier Qt::CTRL was removed, but this is used in several places in the Diamond codebase. Example build failures:

diamond-cs-1.3.7_2/src/dialog_macro.cpp:172:19: error: no member named 'SHIFT' in 'Qt'
         case Qt::SHIFT:
              ~~~~^
diamond-cs-1.3.7_2/src/dialog_macro.cpp:176:19: error: no member named 'CTRL' in 'Qt'
         case Qt::CTRL:
              ~~~~^
diamond-cs-1.3.7_2/src/dialog_macro.cpp:180:19: error: no member named 'META' in 'Qt'
         case Qt::META:

'clang-cl' issue

I've built the CopperSpice libraries using MSVC-2019 and used them to build KitchenSink
and Diamond just fine. And both programs works fine.

But using clang-cl (the supposedly 100% compatible MSVC compiler driver) to compile Diamond, I'm getting
17 unresolved link errors for these symbols:

__declspec(dllimport) public: __thiscall Cs::QRegularExpression<class QString8>::QRegularExpression<class QString8>(class Cs::QRegularExpression<class QString8> &&)
__declspec(dllimport) public: __thiscall Cs::QRegularExpression<class QString8>::QRegularExpression<class QString8>(class Cs::QRegularExpression<class QString8> const &)
__declspec(dllimport) public: __thiscall Cs::QRegularExpression<class QString8>::QRegularExpression<class QString8>(class QString8 const &,class QFlags<enum QPatternOption>)
__declspec(dllimport) public: __thiscall Cs::QRegularExpression<class QString8>::QRegularExpression<class QString8>(void)
__declspec(dllimport) public: __thiscall Cs::QRegularExpression<class QString8>::~QRegularExpression<class QString8>(void)
__declspec(dllimport) public: __thiscall Cs::QRegularExpressionMatch<class QString8>::QRegularExpressionMatch<class QString8>(void)
__declspec(dllimport) public: __thiscall Cs::QRegularExpressionMatch<class QString8>::~QRegularExpressionMatch<class QString8>(void)
__declspec(dllimport) public: bool __thiscall Cs::QRegularExpressionMatch<class QString8>::hasMatch(void)const
__declspec(dllimport) public: class Cs::QRegularExpression<class QString8> & __thiscall Cs::QRegularExpression<class QString8>::operator=(class Cs::QRegularExpression<class QString8> &&)
__declspec(dllimport) public: class Cs::QRegularExpression<class QString8> & __thiscall Cs::QRegularExpression<class QString8>::operator=(class Cs::QRegularExpression<class QString8> const &)
__declspec(dllimport) public: class Cs::QRegularExpressionMatch<class QString8> & __thiscall Cs::QRegularExpressionMatch<class QString8>::operator=(class Cs::QRegularExpressionMatch<class QString8> &&)
__declspec(dllimport) public: class Cs::QRegularExpressionMatch<class QString8> __thiscall Cs::QRegularExpression<class QString8>::match(class QString8 const &)const
__declspec(dllimport) public: class Cs::QRegularExpressionMatch<class QString8> __thiscall Cs::QRegularExpression<class QString8>::match(class QString8 const &,class QString8::const_iterator,enum QMatchType,class QFlags<enum QMatchOption>)const
__declspec(dllimport) public: class QString8::const_iterator __thiscall Cs::QRegularExpressionMatch<class QString8>::capturedEnd(int)const
__declspec(dllimport) public: class QString8::const_iterator __thiscall Cs::QRegularExpressionMatch<class QString8>::capturedStart(int)const
__declspec(dllimport) public: int __thiscall Cs::QRegularExpressionMatch<class QString8>::capturedLength(int)const
__declspec(dllimport) public: void __thiscall Cs::QRegularExpression<class QString8>::setPatternOptions(class QFlags<enum QPatternOption>)

in search.obj and syntax.obj.

I suspect there's is an issue with the cl option -Zc:wchar_t that clang-cl does not like.
Or how some UTF-8 issue (?). Any pointers on this?

"Display as HTML" crashes on non-html files

"Display as HTML" crashes on files that are not HTML (i.e. any boost asio header file).

Additionally session (open tabs) is apparently not saved when new tabs are being open, so after a crash old state of session is restored.

Windows 10, Diamond Version: 1.2.3, Build # 05/01/2017

CsPrinterDriverCups is expected

CopperSpice is expected to be built with Cups plugin.

cs_copy_plugins(CsPrinterDriver)

it is not checked if the plugin exists, resulting in the following error at the install target

-- Installing: /home/nero/repos/diamond/_install/./platforms/CsGuiXcb1.6.so
CMake Error at src/cmake_install.cmake:105 (file):
  file INSTALL cannot find
  "/home/nero/copperspice/_install/lib/CsPrinterDriverCups1.6.so":
  No such file or directory.
Call Stack (most recent call first):
  cmake_install.cmake:42 (include)


Makefile:107: recipe for target 'install' failed
make: *** [install] Error 1

copperspice compiled from cs-1.6.1

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.