December 15, 2013
On Sunday, 15 December 2013 at 15:35:19 UTC, MrSmith wrote:
>> I Have not yet uploaded it, though I would like to. Where would be a good place to put it?
> Look for github. They also have pretty convenient client for Windows.
Thanks, I've already created an account. I'm currently building the directory structure.

> Do widgets internally hold their position and size or they are recalculated every time gui is rendered?
The container of the widget is responsible for positioning and sizing the children. This container generally remembers where the widgets are, but not necessarily.

Also, the widgets cache their own last known size, which is needed for some events.

> When widget will relayout its children.
Layout will be redetermined if the container widget decides this.

> How are you drawing text?
I currently use ExtTextOutW if that's what you mean.

> What type of string do use for text rendering (string, wstring, dstring etc)?
regular string.

> Do you plannig to do declarative markup like QML or XUL?
Yes, I'm working on a format that defines themes and I'm trying to figure out how to best implement multilingual information.

> Do you have any working text editing components?
Yes, a simple one. I'm also working on one that allows markup, but it'll take some time

> Have you looked at QTQuick/DQuick? https://github.com/D-Quick/DQuick
>
>> Also Widgets don't have any positional information in them, or style information. This is one of main issues I have with the existing GUI libraries.
> Does it mean that you have one theme for the whole application. Do you have any size restrictions in your widget styles or it is pure appearence information? If later it is fine.

It's a bit more complicated than that. The standard widgets I'm working on will not allow you to specify any style information directly, you can't even set the text of a button. You will be able to specify the functional aspects of the widget and the name. This name is later used by the theme system to determine the style of the widget.

This done to get a better separation of functionality and presentation.

If you do want information from the application into the style, you will have to send the information as a parameter to the style which determines what to do with it.
December 15, 2013
Ok, cool. Now waiting to check it on github.
December 15, 2013
Btw, have you worked with MVVM pattern?
December 15, 2013
On Sunday, 15 December 2013 at 16:47:00 UTC, MrSmith wrote:
> Ok, cool. Now waiting to check it on github.
This may take a while.


On Sunday, 15 December 2013 at 16:51:10 UTC, MrSmith wrote:
> Btw, have you worked with MVVM pattern?
From what I can tell it's barely any different from MVC, but no I haven't.

December 15, 2013
On Sunday, 15 December 2013 at 17:08:21 UTC, Boyd wrote:
>> On Sunday, 15 December 2013 at 16:51:10 UTC, MrSmith wrote:
>> Btw, have you worked with MVVM pattern?
> From what I can tell it's barely any different from MVC, but no I haven't.

Yes, you are right. Will you integrate something like this into your gui or it would be possible to add on top of it? Mostly i am looking for data-bindings.
December 15, 2013
On Sunday, 15 December 2013 at 17:11:05 UTC, MrSmith wrote:
> On Sunday, 15 December 2013 at 17:08:21 UTC, Boyd wrote:
>>> On Sunday, 15 December 2013 at 16:51:10 UTC, MrSmith wrote:
>>> Btw, have you worked with MVVM pattern?
>> From what I can tell it's barely any different from MVC, but no I haven't.
>
> Yes, you are right. Will you integrate something like this into your gui or it would be possible to add on top of it? Mostly i am looking for data-bindings.

With data-bindings, I assume you mean for fields, such as textfields, checkboxes, lists, etc..

I don't have this yet, but it is on the todo list. There is nothing that stands in your way of creating something on top of it (except for me actually getting the library ready for use:P).
December 15, 2013
On 12/15/2013 6:19 AM, Boyd wrote:
> On Sunday, 15 December 2013 at 12:59:27 UTC, MrSmith wrote:
>> Have you uploaded your code somewhere so anyone can take a look at it?
> I Have not yet uploaded it, though I would like to. Where would be a good place
> to put it?

github. No question about it.

December 16, 2013
On 12/15/2013 10:12 AM, Boyd wrote:
> On Sunday, 15 December 2013 at 14:38:12 UTC, Marco Leise wrote:
>> Am Sun, 15 Dec 2013 12:41:54 +0100
>>
>> A Delphi VCL user!
>
> A long time ago, yes:) Some of it stuck.


If you can make it anything close to Delphi VCL or Lazarus components, it would be awesome!! :)
December 16, 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
December 16, 2013
Something that is often forgotten when writing your own GUI
toolkit is the tight integration of the native toolkits with
the typical available hardware (e.g. touchscreen, mouse with 1
button), the desktop environment (remembering open windows
after reboot, allowing only one instance and opening
multiple documents in the same instance), accessibility
support and last not least an IME for languages with large
symbolic alphabets that cannot be represented on a keyboard
normally, like Chinese, Japanese, Korean.

By no means do I want to demotivate you :)