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());
}

Reply via email to