Git Product home page Git Product logo

chigraph-gui's Introduction

DISCLAIMER: CHIGRAPH IS IN PRE-PRE-PRE-PRE ALPHA STATUS AND MAY NEVER REACH A STABLE RELEASE. IT'S A TOY PROJECT AS A PROOF OF CONCEPT.

chigraph logo

Coveralls Gitter

Build Status

Platform Status
Linux/macOS Travis branch
Windows AppVeyor
Buildbot (in development) Buildbot

What is chigraph?

Chigraph, pronunced chai-graph, is a new systems programming language. It's fast. It's scalable. And, more importantly, it's easy to learn. How does it achieve such goals? By scrapping the age-old standard of text (not entirely though). Here's a screenshot from the Qt5 GUI:

Screenshot

NOTE This is the repository for the chigraph language. If you are looking for the interface that goes along with it, see https://github.com/chigraph/chigraph-gui

Components

Chigraph is made up of three components:

chi

chi is the command line interface to chigraph. It lets you compile and run chigraph modules:

$ pwd
~/chigrpah/src/
$ chi get github.com/russelltg/hellochigraph/hello/main # download it
$ cd github.com/russelltg/hellochigraph/hello/main
$ chi run main.chimod # run it
Hello World!

libchigraph

libchigraph is the chigraph library that provides all functions for chigraph clients, like code generation, graph representation, etc. Want to compile a chigraph module using libchigraph? (documentation)

#include <chi/Context.hpp>

int main() {
    chi::Contxt myContext{"/path/to/workspace"};

    // download and load the module
    myContxt.loadModule("github.com/russelltg/hellochigraph/hello/main", chi::LoadOptions::FetchDependencies);

    // compile it
    llvm::Module* mod;
    myContxt.compileModule("github.com/russelltg/hellochigraph", &mod);
}

And tada, you have yourself a llvm::Module to do whatever you wish to. It'll have all it's dependencies linked in and a main function waiting to run.

libchigraphdebugger

libchigraphdebugger is a library that makes it easy to implement chigraph debuggers. See the Debugger documentation for more details.

Licensing

It's free! Chigraph is licensed under the Apache License 2.0 so anyone can use it for free, even in proprietary settings (solong you attribute me)

API Documentation

API Documentation (generated by doxygen) can be found here.

Installation

Download installers/appimage

Installers and appimages are avaliable from the releases page (coming soon) for those who don't want to build from sources.

Building from source

See the guide on building from source

Get Involved

Getting involved is easy! If you don't know where to get started, start looking at filed github issues for inspiration. Then just file a PR!

If you have any questions, you're more than welcome to email me: [email protected]

Authors

  • Russell Greene (@russelltg) - Main contributor
  • Aun-Ali Zaidi (@aunali1) - Helped with some platform stuff, packaging

Technology used

Written with StackEdit.

chigraph-gui's People

Contributors

aunali1 avatar russelltg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chigraph-gui's Issues

Possible To Build On Windows?

Hi,russelltg! I want to know is it possible to build on Windows? By the way, this is a gorgeous project, and i love the GUI

How to realize the one-click operation button "Run"

Thank you very much for reading this letter in your busy schedule.

chigraph-gui is a very helpful interface, it seems to be developed based on QtNodes. In the QtNodes3.0 version, I found that when using a connecting line to link two nodes, the output of the previous node will be transmitted to the input of the next node immediately. Run "./examples/text" as shown below. I want to set a "run" button, even when the connection line is connected, no data transmission will be performed between the nodes. Is it possible to modify the source code of QtNodes3.0? If possible, please tell me where to modify it.

image

AppImage from May 7, 2017 crashes on Ubuntu 16.04

constantine@linux:~/Desktop$ ./Chigraph-x86_64.AppImage
Segmentation fault (core dumped)
constantine@linux:~/Desktop$ gdb ./Chigraph-x86_64.AppImage
Reading symbols from ./Chigraph-x86_64.AppImage...(no debugging symbols found)...done.
(gdb) r
Starting program: /home/constantine/Desktop/Chigraph-x86_64.AppImage 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
process 3287 is executing new program: /tmp/.mount_GgvwCw/usr/bin/chigraphgui
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffdc171700 (LWP 3296)]
[New Thread 0x7fffdae68700 (LWP 3297)]

Thread 1 "AppRun" received signal SIGSEGV, Segmentation fault.
0x00007ffff2926cf8 in llvm::SmallVectorTemplateBase<llvm::cl::parser<llvm::ScheduleDAGInstrs* (*)(llvm::MachineSchedContext*)>::OptionInfo, false>::grow(unsigned long) ()
   from /tmp/.mount_GgvwCw/usr/bin/../lib/libLLVM-3.9.so.1
(gdb) bt
#0  0x00007ffff2926cf8 in llvm::SmallVectorTemplateBase<llvm::cl::parser<llvm::ScheduleDAGInstrs* (*)(llvm::MachineSchedContext*)>::OptionInfo, false>::grow(unsigned long) ()
   from /tmp/.mount_GgvwCw/usr/bin/../lib/libLLVM-3.9.so.1
#1  0x00007ffff2926dcb in ?? () from /tmp/.mount_GgvwCw/usr/bin/../lib/libLLVM-3.9.so.1
#2  0x00007fffd1a1b6a4 in llvm::MachinePassRegistry::Add(llvm::MachinePassRegistryNode*) ()
   from /usr/lib/x86_64-linux-gnu/libLLVM-4.0.so.1
#3  0x00007fffd16acc9b in ?? () from /usr/lib/x86_64-linux-gnu/libLLVM-4.0.so.1
#4  0x00007ffff7de76ba in call_init (l=<optimized out>, argc=argc@entry=1, 
    argv=argv@entry=0x7fffffffdc68, env=env@entry=0x7fffffffdc78) at dl-init.c:72
#5  0x00007ffff7de77cb in call_init (env=0x7fffffffdc78, argv=0x7fffffffdc68, argc=1, 
    l=<optimized out>) at dl-init.c:30
#6  _dl_init (main_map=main_map@entry=0x94ab50, argc=1, argv=0x7fffffffdc68, env=0x7fffffffdc78)
    at dl-init.c:120
#7  0x00007ffff7dec8e2 in dl_open_worker (a=a@entry=0x7fffffffc8a0) at dl-open.c:575
#8  0x00007ffff7de7564 in _dl_catch_error (objname=objname@entry=0x7fffffffc890, 
    errstring=errstring@entry=0x7fffffffc898, mallocedp=mallocedp@entry=0x7fffffffc88f, 
    operate=operate@entry=0x7ffff7dec4d0 <dl_open_worker>, args=args@entry=0x7fffffffc8a0)
    at dl-error.c:187
#9  0x00007ffff7debda9 in _dl_open (
    file=0x7fffffffcb20 "/usr/lib/x86_64-linux-gnu/dri/r600_dri.so", mode=-2147483390, 
    caller_dlopen=0x7fffea0be989, nsid=-2, argc=<optimized out>, argv=<optimized out>, 
    env=0x7fffffffdc78) at dl-open.c:660
#10 0x00007fffe924ef09 in dlopen_doit (a=a@entry=0x7fffffffcad0) at dlopen.c:66
#11 0x00007ffff7de7564 in _dl_catch_error (objname=0x7b8260, errstring=0x7b8268, 
---Type <return> to continue, or q <return> to quit---
    mallocedp=0x7b8258, operate=0x7fffe924eeb0 <dlopen_doit>, args=0x7fffffffcad0)
    at dl-error.c:187
#12 0x00007fffe924f571 in _dlerror_run (operate=operate@entry=0x7fffe924eeb0 <dlopen_doit>, 
    args=args@entry=0x7fffffffcad0) at dlerror.c:163
#13 0x00007fffe924efa1 in __dlopen (file=<optimized out>, mode=<optimized out>) at dlopen.c:87
#14 0x00007fffea0be989 in ?? () from /usr/lib64/libGL.so.1
#15 0x00007fffea0c561b in ?? () from /usr/lib64/libGL.so.1
#16 0x00007fffea099991 in ?? () from /usr/lib64/libGL.so.1
#17 0x00007fffea095522 in glXGetFBConfigs () from /usr/lib64/libGL.so.1
#18 0x00007fffea0968c2 in glXChooseFBConfigSGIX () from /usr/lib64/libGL.so.1
#19 0x00007ffff7fe86d7 in ?? ()
   from /tmp/.mount_GgvwCw/usr/plugins/xcbglintegrations/libqxcb-glx-integration.so
#20 0x00007ffff7fe89fd in ?? ()
   from /tmp/.mount_GgvwCw/usr/plugins/xcbglintegrations/libqxcb-glx-integration.so
#21 0x00007ffff7fe5100 in ?? ()
   from /tmp/.mount_GgvwCw/usr/plugins/xcbglintegrations/libqxcb-glx-integration.so
#22 0x00007fffde355411 in QXcbWindow::create() ()
   from /tmp/.mount_GgvwCw/usr/plugins/platforms/../../lib/libQt5XcbQpa.so.5
#23 0x00007fffde3413a1 in QXcbIntegration::createPlatformWindow(QWindow*) const ()
   from /tmp/.mount_GgvwCw/usr/plugins/platforms/../../lib/libQt5XcbQpa.so.5
#24 0x00007ffff5459c4a in QWindowPrivate::create(bool) ()
   from /tmp/.mount_GgvwCw/usr/bin/../lib/libQt5Gui.so.5
#25 0x00007ffff5a3a6cd in QWidgetPrivate::create_sys(unsigned long long, bool, bool) ()
   from /tmp/.mount_GgvwCw/usr/bin/../lib/libQt5Widgets.so.5
---Type <return> to continue, or q <return> to quit---
#26 0x00007ffff5a39e79 in QWidget::create(unsigned long long, bool, bool) ()
   from /tmp/.mount_GgvwCw/usr/bin/../lib/libQt5Widgets.so.5
#27 0x00007ffff5b6d05c in ?? () from /tmp/.mount_GgvwCw/usr/bin/../lib/libQt5Widgets.so.5
#28 0x00007ffff5b6d360 in ?? () from /tmp/.mount_GgvwCw/usr/bin/../lib/libQt5Widgets.so.5
#29 0x00007ffff5b3a6ca in QMainWindow::menuBar() const ()
   from /tmp/.mount_GgvwCw/usr/bin/../lib/libQt5Widgets.so.5
#30 0x00007ffff73e5b7e in KXmlGuiWindow::createGUI(QString const&) ()
   from /tmp/.mount_GgvwCw/usr/bin/../lib/libKF5XmlGui.so.5
#31 0x00007ffff73e6d5b in KXmlGuiWindow::setupGUI(QSize const&, QFlags<KXmlGuiWindow::StandardWindowOption>, QString const&) () from /tmp/.mount_GgvwCw/usr/bin/../lib/libKF5XmlGui.so.5
#32 0x00007ffff73e6e52 in KXmlGuiWindow::setupGUI(QFlags<KXmlGuiWindow::StandardWindowOption>, QString const&) () from /tmp/.mount_GgvwCw/usr/bin/../lib/libKF5XmlGui.so.5
#33 0x000000000044bb9c in MainWindow::MainWindow(QWidget*) ()
#34 0x00000000004432e1 in main ()
(gdb)

Broken Build Process

I'm trying to build ChigraphGui on windows with msvc 2017, it builds but i cant start it because of incompatibility KF5 and Qt version, because KF5IconThemes.dll doesn't contains entry point for "??4QIconEngine@@QEAAAEAV0@AEBV0@@z". I have Qt 5.12 installed and add it to PATH.
Also i've got a lots of problems while i trying to build it, like invalid arguments for compiler "/Wno-error=parentheses".
Is there any chance to get commit with fixes, or just builded binaries, cause i'm realy frustrated

Linux compilation

Hi hello! Maybe I'm missing something but the current source code doesn't copile: It throw:

/home/user/Gits/chigraph-gui/src/mainwindow.cpp:265:41: error: ‘textTriggered’ is not a member of ‘KSelectAction’
  265 |                         &KSelectAction::textTriggered, this,
      |                                         ^~~~~~~~~~~~~
/home/user/Gits/chigraph-gui/src/mainwindow.cpp: In member function ‘virtual void MainWindow::closeEvent(QCloseEvent*)’:
/home/user/Gits/chigraph-gui/src/mainwindow.cpp:391:40: error: ‘questionTwoActionsCancel’ is not a member of ‘KMessageBox’
  391 |                 auto bc = KMessageBox::questionTwoActionsCancel(
      |                                        ^~~~~~~~~~~~~~~~~~~~~~~~
/home/user/Gits/chigraph-gui/src/mainwindow.cpp:398:35: error: ‘PrimaryAction’ is not a member of ‘KMessageBox’
  398 |                 case KMessageBox::PrimaryAction:
      |                                   ^~~~~~~~~~~~~
/home/user/Gits/chigraph-gui/src/mainwindow.cpp:402:35: error: ‘SecondaryAction’ is not a member of ‘KMessageBox’
  402 |                 case KMessageBox::SecondaryAction:
      |                                   ^~~~~~~~~~~~~~~
make[2]: *** [src/CMakeFiles/chigraphgui.dir/build.make:115: src/CMakeFiles/chigraphgui.dir/mainwindow.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:935: src/CMakeFiles/chigraphgui.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

That error I could fix it but there are another one on thememanager.cpp (I disable the theme manager on my build).

Once installed the user interface works, but it is extremely buggy, throwing segmentation faults on simple actions.

I have some questions:

  • It is always this buggy? (I know it is on active development and I'm not expecting a full working application, but this point is unusable)
  • Clearly the linux build doesn't even compile, the given kf5 version doesn't have the method KSelectAction::textTriggered -> I'm missing something here?

On any case, I can make a PR fixing that compile error.

Thanks for this amazing project!

Closing tabs in debug mode

Hi,
Seems closing tabs causes runtime assertion of an invalid iterator here :

assert((funcIter != mOpenFunctions.end() || strIter != mOpenStructs.end()) &&

The item is erased from std::map so the iterator will be invalid but you are trying to compare the iterator with the end of map, it is better to put the assertion before erasing the items.

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.