www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Cross Platform GUI Development

reply "Jeroen Bollen" <jbinero gmail.com> writes:
Are there any tools to do this at all in Digitalmars D? All 
current libraries seem to be outdated, but GTKD. GTK on it's end 
is a pain to bundle which is enough to not consider it cross 
platform at all.
Mar 23 2014
next sibling parent "Gary Willoughby" <dev nomad.so> writes:
On Sunday, 23 March 2014 at 12:34:10 UTC, Jeroen Bollen wrote:
 Are there any tools to do this at all in Digitalmars D? All 
 current libraries seem to be outdated, but GTKD. GTK on it's 
 end is a pain to bundle which is enough to not consider it 
 cross platform at all.

See: http://forum.dlang.org/thread/twlshfdigsfkphyvrixz forum.dlang.org#post-zetmofrvhgdocnsmnxip:40forum.dlang.org
Mar 23 2014
prev sibling next sibling parent "Jeroen Bollen" <jbinero gmail.com> writes:
On Sunday, 23 March 2014 at 16:43:31 UTC, Gary Willoughby wrote:
 On Sunday, 23 March 2014 at 12:34:10 UTC, Jeroen Bollen wrote:
 Are there any tools to do this at all in Digitalmars D? All 
 current libraries seem to be outdated, but GTKD. GTK on it's 
 end is a pain to bundle which is enough to not consider it 
 cross platform at all.

See: http://forum.dlang.org/thread/twlshfdigsfkphyvrixz forum.dlang.org#post-zetmofrvhgdocnsmnxip:40forum.dlang.org

I noticed Derelict also has bindings, is there a difference? Also, what requirements are still required for every OS?
Mar 23 2014
prev sibling next sibling parent "Gary Willoughby" <dev nomad.so> writes:
On Sunday, 23 March 2014 at 17:27:03 UTC, Jeroen Bollen wrote:
 On Sunday, 23 March 2014 at 16:43:31 UTC, Gary Willoughby wrote:
 On Sunday, 23 March 2014 at 12:34:10 UTC, Jeroen Bollen wrote:
 Are there any tools to do this at all in Digitalmars D? All 
 current libraries seem to be outdated, but GTKD. GTK on it's 
 end is a pain to bundle which is enough to not consider it 
 cross platform at all.

See: http://forum.dlang.org/thread/twlshfdigsfkphyvrixz forum.dlang.org#post-zetmofrvhgdocnsmnxip:40forum.dlang.org

I noticed Derelict also has bindings, is there a difference? Also, what requirements are still required for every OS?

The only dependencies for my Tkd GUI framework is the Tcl/Tk libraries on all platforms. What i want to do though is compile Tcl/Tk myself and provide DLL's so that dependency is removed for Windows. Posix OSes usually come with Tcl/Tk already installed.
Mar 23 2014
prev sibling next sibling parent "Jeroen Bollen" <jbinero gmail.com> writes:
On Sunday, 23 March 2014 at 19:03:54 UTC, Gary Willoughby wrote:
 On Sunday, 23 March 2014 at 17:27:03 UTC, Jeroen Bollen wrote:
 On Sunday, 23 March 2014 at 16:43:31 UTC, Gary Willoughby 
 wrote:
 On Sunday, 23 March 2014 at 12:34:10 UTC, Jeroen Bollen wrote:
 Are there any tools to do this at all in Digitalmars D? All 
 current libraries seem to be outdated, but GTKD. GTK on it's 
 end is a pain to bundle which is enough to not consider it 
 cross platform at all.

See: http://forum.dlang.org/thread/twlshfdigsfkphyvrixz forum.dlang.org#post-zetmofrvhgdocnsmnxip:40forum.dlang.org

I noticed Derelict also has bindings, is there a difference? Also, what requirements are still required for every OS?

The only dependencies for my Tkd GUI framework is the Tcl/Tk libraries on all platforms. What i want to do though is compile Tcl/Tk myself and provide DLL's so that dependency is removed for Windows. Posix OSes usually come with Tcl/Tk already installed.

I think I'll be using that then, cheers. :D
Mar 23 2014
prev sibling next sibling parent reply Denis Shelomovskij <verylonglogin.reg gmail.com> writes:
23.03.2014 16:34, Jeroen Bollen пишет:
 Are there any tools to do this at all in Digitalmars D? All current
 libraries seem to be outdated, but GTKD. GTK on it's end is a pain to
 bundle which is enough to not consider it cross platform at all.

First, I don't understand what is the problem with GTK? Also there is DWT, but I already have spent some time on it and I'd like to suggest to not use it as its sources is a mess. As for cross-platform GUI app, I'd suggest to use own native GUI library for every platform as it looks like an easiest and the most convenient for the user of your program approach. The problem is it's too common to connect application login and GUI, so for my personal purposes I created MetaUI [1] which allow such intermediate layer and you only create native GUI elements, place it somewhere and connect with logic elements from MetaUI, see examples. As a native GUI I use GTK (mainly my own fast, correct and very usable bindings [2]) over MetaUI for now, but when I will have more time I will use DGui on Windows just to decrease program installation size. The only problem is a Mac OS X for which I don't know working GUI library (I don't target it for now, GTK may work but with PITA), but with MetaUI it shouldn't be a problem to use some C one as the only thing you need is a way to connect C widgets to D logic controls. [1] https://bitbucket.org/denis-sh/metaui [2] https://bitbucket.org/denis-sh/gtkd [3] https://bitbucket.org/dgui/dgui -- Денис В. Шеломовский Denis V. Shelomovskij
Mar 23 2014
next sibling parent Denis Shelomovskij <verylonglogin.reg gmail.com> writes:
24.03.2014 0:03, Jeroen Bollen пишет:
 On Sunday, 23 March 2014 at 19:56:47 UTC, Denis Shelomovskij wrote:
 23.03.2014 16:34, Jeroen Bollen пишет:
 Are there any tools to do this at all in Digitalmars D? All current
 libraries seem to be outdated, but GTKD. GTK on it's end is a pain to
 bundle which is enough to not consider it cross platform at all.

First, I don't understand what is the problem with GTK? ...

The main problem I have with GTK is that it's a mess to setup on Windows for the end user.

And you shouldn't ever do it. Just bundle GTK with your program and be happy. Here is what I use (~4 MiB): http://deoma-cmd.ru/files/other/GTK-3-redist.7z (if you are OK with third GTK version) These files just should be in your target installation directory. -- Денис В. Шеломовский Denis V. Shelomovskij
Mar 23 2014
prev sibling next sibling parent Denis Shelomovskij <verylonglogin.reg gmail.com> writes:
24.03.2014 13:04, Gary Willoughby пишет:
 On Sunday, 23 March 2014 at 20:04:00 UTC, Jeroen Bollen wrote:
 The main problem I have with GTK is that it's a mess to setup on
 Windows for the end user.

The only real problem is the actual installation of GTK onto the Windows user's machine as some people ask "why do i need to install this weird GTK thing for this app to work?". But... you can 'hide' the installation of GTK on Windows as part of the main application's installer because the Windows version of GTK has a silent install options. http://gtk-win.sourceforge.net/home/index.php/Main/EmbeddingGTK

Note different programs may require different GTK versions and GTK isn't backward compatible on Windows because of some bugs (e.g. 2.16 is the last one with working OpenGL using GtkGLExt from 2.x), so it's usually just copied in application's folder. -- Денис В. Шеломовский Denis V. Shelomovskij
Mar 24 2014
prev sibling parent Jacob Carlborg <doob me.com> writes:
On 24/03/14 13:42, "Ola Fosheim Grøstad" 
<ola.fosheim.grostad+dlang gmail.com>" wrote:

 Ableton Live does not look like Cocoa, but is the most popular sequencer
 on OS-X.

I was mostly referring to GTK+ not being acceptable. -- /Jacob Carlborg
Mar 24 2014
prev sibling next sibling parent "Jeroen Bollen" <jbinero gmail.com> writes:
On Sunday, 23 March 2014 at 19:56:47 UTC, Denis Shelomovskij 
wrote:
 23.03.2014 16:34, Jeroen Bollen пишет:
 Are there any tools to do this at all in Digitalmars D? All 
 current
 libraries seem to be outdated, but GTKD. GTK on it's end is a 
 pain to
 bundle which is enough to not consider it cross platform at 
 all.

First, I don't understand what is the problem with GTK? Also there is DWT, but I already have spent some time on it and I'd like to suggest to not use it as its sources is a mess. As for cross-platform GUI app, I'd suggest to use own native GUI library for every platform as it looks like an easiest and the most convenient for the user of your program approach. The problem is it's too common to connect application login and GUI, so for my personal purposes I created MetaUI [1] which allow such intermediate layer and you only create native GUI elements, place it somewhere and connect with logic elements from MetaUI, see examples. As a native GUI I use GTK (mainly my own fast, correct and very usable bindings [2]) over MetaUI for now, but when I will have more time I will use DGui on Windows just to decrease program installation size. The only problem is a Mac OS X for which I don't know working GUI library (I don't target it for now, GTK may work but with PITA), but with MetaUI it shouldn't be a problem to use some C one as the only thing you need is a way to connect C widgets to D logic controls. [1] https://bitbucket.org/denis-sh/metaui [2] https://bitbucket.org/denis-sh/gtkd [3] https://bitbucket.org/dgui/dgui

The main problem I have with GTK is that it's a mess to setup on Windows for the end user.
Mar 23 2014
prev sibling next sibling parent "Gary Willoughby" <dev nomad.so> writes:
On Sunday, 23 March 2014 at 20:04:00 UTC, Jeroen Bollen wrote:
 The main problem I have with GTK is that it's a mess to setup 
 on Windows for the end user.

The only real problem is the actual installation of GTK onto the Windows user's machine as some people ask "why do i need to install this weird GTK thing for this app to work?". But... you can 'hide' the installation of GTK on Windows as part of the main application's installer because the Windows version of GTK has a silent install options. http://gtk-win.sourceforge.net/home/index.php/Main/EmbeddingGTK
Mar 24 2014
prev sibling next sibling parent "Gary Willoughby" <dev nomad.so> writes:
On Sunday, 23 March 2014 at 20:23:01 UTC, Denis Shelomovskij 
wrote:
 Just bundle GTK with your program and be happy. Here is what I 
 use (~4 MiB):
 http://deoma-cmd.ru/files/other/GTK-3-redist.7z
 (if you are OK with third GTK version)

 These files just should be in your target installation 
 directory.

or do this ^ :)
Mar 24 2014
prev sibling next sibling parent "Jacob Carlborg" <doob me.com> writes:
On Sunday, 23 March 2014 at 19:56:47 UTC, Denis Shelomovskij 
wrote:

 First, I don't understand what is the problem with GTK?

I looks ugly on both Windows and Mac OS X. It's also an extra dependency.
 Also there is DWT, but I already have spent some time on it and 
 I'd like to suggest to not use it as its sources is a mess.

What's wrong with DWT?
 As for cross-platform GUI app, I'd suggest to use own native 
 GUI library for every platform as it looks like an easiest and 
 the most convenient for the user of your program approach.

I think it's good to have a cross-platform GUI for the basic stuff that's available on all platforms. Like buttons, windows and so on. Then use the native GUI when platform specific widgets are needed.
 The problem is it's too common to connect application login and 
 GUI, so for my personal purposes I created MetaUI [1] which 
 allow such intermediate layer and you only create native GUI 
 elements, place it somewhere and connect with logic elements 
 from MetaUI, see examples. As a native GUI I use GTK (mainly my 
 own fast, correct and very usable bindings [2]) over MetaUI for 
 now, but when I will have more time I will use DGui on Windows 
 just to decrease program installation size.

 The only problem is a Mac OS X for which I don't know working 
 GUI library (I don't target it for now, GTK may work but with 
 PITA)

On OS X, anything that's not native Cocoa is not acceptable. -- /Jacob Carlborg
Mar 24 2014
prev sibling next sibling parent "Jacob Carlborg" <doob me.com> writes:
On Sunday, 23 March 2014 at 12:34:10 UTC, Jeroen Bollen wrote:
 Are there any tools to do this at all in Digitalmars D? All 
 current libraries seem to be outdated, but GTKD. GTK on it's 
 end is a pain to bundle which is enough to not consider it 
 cross platform at all.

DWT [1] is a native cross-platform GUI for Windows and Linux (OS X is being worked on). It's a port of the Java library SWT [2]. It doesn't have any dependencies except for the system libraries. On Linux GTK+ is used. [1] https://github.com/d-widget-toolkit/dwt [2] http://www.eclipse.org/swt/ -- /Jacob Carlborg
Mar 24 2014
prev sibling next sibling parent "Ola Fosheim =?UTF-8?B?R3LDuHN0YWQi?= writes:
On Monday, 24 March 2014 at 12:06:25 UTC, Jacob Carlborg wrote:
 On OS X, anything that's not native Cocoa is not acceptable.

Ableton Live does not look like Cocoa, but is the most popular sequencer on OS-X.
Mar 24 2014
prev sibling parent "John Colvin" <john.loughran.colvin gmail.com> writes:
On Monday, 24 March 2014 at 12:42:46 UTC, Ola Fosheim Grøstad 
wrote:
 On Monday, 24 March 2014 at 12:06:25 UTC, Jacob Carlborg wrote:
 On OS X, anything that's not native Cocoa is not acceptable.

Ableton Live does not look like Cocoa, but is the most popular sequencer on OS-X.

Ableton is the sort of program that you make fullscreen and then work fully inside of. You don't interact with the OS GUIs much. Most applications use a bit more integration.
Mar 24 2014