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