Giter Site home page Giter Site logo

GList about gtk.jl HOT 18 CLOSED

juliagraphics avatar juliagraphics commented on July 20, 2024
GList

from gtk.jl.

Comments (18)

vtjnash avatar vtjnash commented on July 20, 2024

What's the use case? Current GSList exists only as an implementation detail (and works compatibly with GList due to common layout)

from gtk.jl.

tknopp avatar tknopp commented on July 20, 2024

https://developer.gnome.org/gtksourceview/stable/GtkSourceCompletionContext.html
needs a GList* proposals But what means common layout? The prevpointer is missing.

from gtk.jl.

vtjnash avatar vtjnash commented on July 20, 2024

If you don't need to read prev, it doesn't matter

from gtk.jl.

tknopp avatar tknopp commented on July 20, 2024

Thats true. But if gtk_source_completion_context_add_proposals does read prev it makes bang...

from gtk.jl.

vtjnash avatar vtjnash commented on July 20, 2024

Yep. But since gslist is currently an implementation detail, it does not correctly create lists from Julia->C only C->Julia.

from gtk.jl.

vtjnash avatar vtjnash commented on July 20, 2024

If I rewrite GList using the new mutable interface, this can be done in a convenient way. I'll try after the weekend when I have more computer access

from gtk.jl.

tknopp avatar tknopp commented on July 20, 2024

Sounds great!

I am still exploring the API of GtkSourceView and hopefully I get code completion working which seems to require #56. Here is a screenshot of a test program using GtkSourceView in Julia:

sourceviewer

from gtk.jl.

tknopp avatar tknopp commented on July 20, 2024

GtkRadioToolButton takes a GSList pointer as argument

from gtk.jl.

vtjnash avatar vtjnash commented on July 20, 2024

technically yes, but in actual usage, it doesn't seem to be very logical. see existing GtkRadioButton Julia wrapper

from gtk.jl.

vtjnash avatar vtjnash commented on July 20, 2024

Forgot to mention: having an IDE written entirely in Julia (+ fairly standard libraries) is AWESOME.

from gtk.jl.

tknopp avatar tknopp commented on July 20, 2024

:-) Still exploring if this is actually feasible. The natural thing to tackle this would be to use a mature language/toolkit (e.g. C++/Qt). But this simply would be a lot less fun than doing it in Julia ;-)

from gtk.jl.

timholy avatar timholy commented on July 20, 2024

I figured this was your master plan :-) πŸ’―

Doing it all in Julia may make it easier to interact with the debugger, when that lands.

And if you want to tackle it in Qt, how will that be different from Julia Studio?

from gtk.jl.

tknopp avatar tknopp commented on July 20, 2024

@timholy Right. Julia Studio took the complete other approach. Take something working and strip down to make it a Julia IDE. This is great for getting the first 80%. But when it gets to the details this can get quite complicated.

On the other hand the Julia/Gtk.jl also has many pitfalls:

  • Non-blocking UI (No threading in Julia)
  • Getting Jameson to land precompiled packages ;-)
  • Getting Gtk compiled on all platforms including third-party libraries will be more complicated.

However, I am still not entirely sure how much energy I can put into it and in what form to release it.

from gtk.jl.

timholy avatar timholy commented on July 20, 2024

2 and 3 will clearly come with time. The first is a deeper problem. But, could you simply run the GUI in a second process (addprocs)?

@vtjnash, precompiled packages are not necessarily your burden alone to carry! I like the idea of trying to get a GSoC student to tackle it, unless you don't like that idea (you would surely have to answer some questions...).

from gtk.jl.

tknopp avatar tknopp commented on July 20, 2024

Doing it in another process makes GUI programming a lot more complicated. Using@async kind of works but there are things that can block the schedular (e.g. Pkg.calls).

Maybe we should have an examples/ folder in Gtk.jl where I can put a typical example of something one would typically solve with threads. Then we can discuss this hands on. And in the end we need documentation in the form of examples for such common things anyway.

from gtk.jl.

vtjnash avatar vtjnash commented on July 20, 2024

Doing it with threads is painful since you have to wrap most things in gdk_threads_enter()/gdk_threads_leave(), or just use a single thread to access the GUI, as which point it probably might as well be in a separate process (e.g. addprocs)

I've got some support for precompiled packages in my recent pull request :). Of course, if we can get someone to tackle the issues blocking the ability to do more caching such as JuliaLang/julia#265 and JuliaLang/julia#1268, all the better.

from gtk.jl.

tknopp avatar tknopp commented on July 20, 2024

I am not totally sure how important threads are. In my IDE project (https://github.com/tknopp/Julietta.jl) it seems to be not a big issue as I let the terminal run in a different process. And in general the @async method seems to work better than I thought.

Package precompilation is absolutely awesome. This is one of the last showstoppers in Julia currently. [ +Debugger +AnAwsomeIDE :-) ]

from gtk.jl.

timholy avatar timholy commented on July 20, 2024

Exciting stuff, @vtjnash! And I agree with your sense that these are among the very few remaining big-ticket items, @tknopp.

from gtk.jl.

Related Issues (20)

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.