[haiku-development] Re: documentation/help with layout system needed

  • From: Marcus Jacob <rossi@xxxxxxxxxxxxxxx>
  • To: "haiku-development@xxxxxxxxxxxxx" <haiku-development@xxxxxxxxxxxxx>
  • Date: Tue, 26 Aug 2008 10:29:50 +0200

Hi Stephan,

danke für die Tipps ;) werde das gleich nach der Arbeit mal testen ...

Wenn nur Pe unter Haiku vernünftig funktionieren würde, entwickle zu 100% unter Haiku, da meine HW BeOS nicht mehr unterstützt. Btw, was benutzt du um deine Resourcen zu erstellen und verwalten?

Und will mir ein Grafiktablett besorgen, ist Wacom Intuos eine gute Wahl, wird diese Serie vom Treiber unterstützt? Was kann der aktuelle Treiber bzw. was kann er nicht? Habe recht gute Kontakte zu Wacom, kann ggf. Die Specs besorgen, um die fehlenden Funktionen zu ergänzen. Für irgendwas muss es ja gut, in der Industrie zu arbeiten!

Btw, ist es für dich ein Problem, dass ich mit StreetPainter quasi an einem Konkurrenzprodukt arbeite? Wollen wir uns auf eine gemeinsame Add-on/Plugin Schnittstelle einigen? Und schauen, wie wir Haiku um Color Management erweitern können, was für professionelle Bildbearbeitung früher oder später benötigt wird.

Und hättest du vielleicht Lust mein Pixelicon in ein Haiku konformes Vectoricon umzuwandeln?

Vg,
Marcus

--
Marcus Jacob

eMail:m.jacob@xxxxxxx
iChat:m.jacob@xxxxxxx

Sent from my iPhone

On 26.08.2008, at 09:35, "Stephan Assmus" <superstippi@xxxxxx> wrote:

Hi Marcus,

ich frage, weil ich Montag/Dienstag in Berlin (IFA) bin und wenn du
zufýllig
in Berlin gelebt hýttest, dann hýtte man sich ja mal treffen kýnne n ;-)

Ah, ok. Nein schade... :-)

Hier nochmal der fragliche Code:

/*
* Copyright (c) 2008 StreetPainter Developers & Contributors. All rights
reserved.
* Distributed under the terms of the BSD License.
*/
#ifndef _NEW_DIALOG_H_
#define _NEW_DIALOG_H_

#include "Dialog.h"


class CNewDialog
   :    public    CDialog
{
   public:
CNewDialog(BRect frame, const char *title);
       virtual                    ~CNewDialog();

   private:
};


#endif // _NEW_DIALOG_H_


/*
* Copyright (c) 2008 StreetPainter Developers & Contributors. All rights
reserved.
* Distributed under the terms of the BSD License.
*
* Developers:
*                Marcus Jacob, rossi@xxxxxxxxxxxxxxxxx
*/

#include <interface/Box.h>
#include <interface/Button.h>
#include <interface/GridLayoutBuilder.h>
#include <interface/GroupLayout.h>
#include <interface/GroupLayoutBuilder.h>
#include <interface/Size.h>
#include <interface/StringView.h>
#include <interface/TextControl.h>

#include "NewDialog.h"


CNewDialog::CNewDialog(BRect frame, const char *title)
   :    CDialog(frame, title)
{
   BTextControl *nameEdit = new BTextControl(BRect(0, 0, 300, 20),
"nameEdit", "Name:", "untitled", 0);

   BBox *sizeBox = new BBox(BRect(25, 25, 225, 225), "sizeBox", 0,
B_FOLLOW_ALL_SIDES | B_WILL_DRAW | B_FRAME_EVENTS, B_FANCY_BORDER);
   sizeBox->SetLabel("Canvas Size");

   BTextControl *widthEdit = new BTextControl(BRect(0, 0, 1, 1),
"widthEdit", "Width:", "640", 0);
   BTextControl *heightEdit = new BTextControl(BRect(0, 0, 1, 1),
"heightEdit", "Height:", "480", 0);

   BStringView *widthLabel = new BStringView(BRect(0, 0, 1, 1),
"widthLabel", "pixel");
   BStringView *heightLabel = new BStringView(BRect(0, 0, 1, 1),
"heightLabel", "pixel");

BButton *cancelButton = new BButton(BRect(0, 0, 1, 1), "cancelButton",
"Cancel", 0);
BButton *okButton = new BButton(BRect(0, 0, 1, 1), "okButton", "OK", 0);

   SetLayout(new BGroupLayout(B_HORIZONTAL));

   sizeBox->SetLayout(new BGroupLayout(B_HORIZONTAL));
   sizeBox->AddChild(BGridLayoutBuilder(10, 10)
       .Add(widthEdit->CreateLabelLayoutItem(), 0, 0)
       .Add(widthEdit->CreateTextViewLayoutItem(), 1, 0)
       .Add(widthLabel, 2, 0)
       .Add(heightEdit->CreateLabelLayoutItem(), 0, 1)
       .Add(heightEdit->CreateTextViewLayoutItem(), 1, 1)
       .Add(heightLabel, 2, 1)
       .SetInsets(25, 25, 25, 25)
   );

   AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
       .Add(BGroupLayoutBuilder(B_HORIZONTAL, 10)
           .Add(nameEdit->CreateLabelLayoutItem())
           .Add(nameEdit->CreateTextViewLayoutItem())
       )
       .Add(sizeBox)
       .Add(BGroupLayoutBuilder(B_HORIZONTAL, 10)
           .AddGlue()
           .Add(cancelButton)
           .Add(okButton)
       )
       .SetInsets(5, 5, 5, 5)
   );
}

Das sieht eigentlich ganz gut aus. Ich schaue gleich nochmal, wie ich das gerade im MediaPlayer gemacht hatte (habe auch BBox im Layout verwendet). Versuch doch mal, überall die neuen "Layout-frien dly" Konstruktoren zu verwenden, also jene, wo man das Frame-BRect n icht angibt. Vor allem bei der BBox könnte das den entscheidenden Un terschied machen.

Wenn ich mir den MediaPlayer Code anschaue, würde ich Deinen mal so verändern:

   BGridLayout* sizeBoxLayout = new BGridLayout(10, 10);
   sizeBox->SetLayout(sizeBoxLayout);

   AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
       .Add(BGroupLayoutBuilder(B_HORIZONTAL, 10)
           .Add(nameEdit->CreateLabelLayoutItem())
           .Add(nameEdit->CreateTextViewLayoutItem())
       )
       .Add(BGridLayoutBuilder(sizeBoxLayout)
           .Add(widthEdit->CreateLabelLayoutItem(), 0, 0)
           .Add(widthEdit->CreateTextViewLayoutItem(), 1, 0)
           .Add(widthLabel, 2, 0)
           .Add(heightEdit->CreateLabelLayoutItem(), 0, 1)
           .Add(heightEdit->CreateTextViewLayoutItem(), 1, 1)
           .Add(heightLabel, 2, 1)
           .SetInsets(25, 25, 25, 25)
       )
       .Add(BGroupLayoutBuilder(B_HORIZONTAL, 10)
           .AddGlue()
           .Add(cancelButton)
           .Add(okButton)
       )
       .SetInsets(5, 5, 5, 5)
   );
}

Beste Grüße,
-Stephan





Other related posts: