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