Need sounding board for GUI library

Rikki Cattermole alphaglosined at gmail.com
Sun Dec 15 19:50:00 PST 2013


On Sunday, 15 December 2013 at 11:41:55 UTC, Boyd wrote:
> Hey everyone,
>
> I'm looking for help with a GUI library I'm working on. Right 
> now I have a pretty good basis, but it's mostly catering to my 
> own whims. I'm looking for someone to help me figure out which 
> of my design choices are a good idea, and which need some 
> revising. This is currently the biggest obstacle that prevents 
> me from making it public.
>
> The other obstacle I could use some help with, is deployment. I 
> don't have a lot of experience with open source projects, but I 
> want to get this one out there and I want to do it right.
>
> If you're willing to help out, let me know.
>
> Cheers,
> Boyd.
>
>
> PS. Here is a description of the project.
>
> The goal of this library, like any GUI library, is to make 
> GUI's a lot easier to build. Here are some of the 
> characteristics of the library:
>
> - It's non-native. If I'm going to support native components it 
> will be far into the future, because in my experience, native 
> components tend to be much too limiting.
>
> - It's platform independent. That said, I currently only 
> support win32, but it's written in a platform independent way 
> and should easily be portable to other platforms. Once the 
> first version is out of the way, this will be a top priority.
>
> - Its main goal is to make custom widgets easy to create. Even 
> without supplying any widgets this library should be useful. 
> That said I do plan to eventually add many widgets to it, but 
> the first version will only have a few.
>
> - Multi-touch support. This is built into the very core of the 
> library. Every widget you create can use it.
>
> - Grid layout techniques. The library contains ways to layout 
> your components, so that you won't need to calculate positions 
> or sizes in the majority of cases.
>
> Here is some sample code, to show you what it looks like.
>
> public class TestApplication: TUiApplication
> {
>     /// Initialize the application
>     public override void Initialize()
>     {
>         auto title = new TTextGraphic(
>             "An uninteresting application",
>             TFont("Verdana", 30),
>             TColor.Rgb(1,1,1),
>             TColor.Rgb(0,0,0),
>             TAnchor.Center
>         );
>
>         auto image = new TImageGraphic(
>             LocalFileStore.GetFile(`C:\Images\GrandPiano.png`)
>         );
>
>         auto exitButton = new TButtonWidget("Quit");
>         exitButton.PressEvent.Bind(&this.Quit);
>
>         auto main = new TVerticalLayout(
>             [
>                 title,
>                 image,
>                 exitButton
>             ],
>             [
>                 new TGridLayoutRow(TSizeUnit.Auto),
>                 new TGridLayoutRow(TSizeUnit.Remainder(1)),
>                 new TGridLayoutRow(TSizeUnit.Auto)
>             ]
>         );
>
>         Ui.ShowWidgetFullScreen(
>             Ui.GetScreens()[0],
>             main
>         );
>     }
>
>     /// Clean up the application
>     public override void Finalize(){ }
>
>     /// Whether or not the application will quit.
>     /// Use this, for example, to ask the user whether to save 
> changes
>     public override bool AllowQuit() { return true; }
> }
>
> int main(string[] argv)
> {
>     Run(new TestApplication());
> }

You may be interested in my GUI toolkit for some ideas[1].
There is also DQuick being worked on.

[1] https://github.com/rikkimax/DOOGLE


More information about the Digitalmars-d mailing list