GLBasic forum

Other languages => GLBasic - de => Topic started by: trucidare on 2008-Mar-01

Title: Hab mal wieder was für euch...
Post by: trucidare on 2008-Mar-01
hier schaut selbst.

(http://img220.imageshack.us/img220/4684/shotiz9.th.jpg) (http://img220.imageshack.us/my.php?image=shotiz9.jpg)

und nummer 2:

(http://img442.imageshack.us/img442/4691/screenietm8.th.jpg) (http://img442.imageshack.us/my.php?image=screenietm8.jpg)

diesmal mit 3 buttons und positionierung. Aufruf des widgets durch die erstellung.

und das letzte mal für heute:

(http://img522.imageshack.us/img522/1663/toolbarbx5.th.jpg) (http://img522.imageshack.us/my.php?image=toolbarbx5.jpg)

Diesmal die Toolbar und ein paar andere nette funktionen wie den Unterschied zwischen window und dialog.

und nomma:

(http://img233.imageshack.us/img233/9623/shot2dz8.th.jpg) (http://img233.imageshack.us/my.php?image=shot2dz8.jpg)

zusehen ist ein Fenster. Mit click auf Text -> Statusbar wird der Text (Test) in die Statusbar geschrieben.
Durch ändern des CallBacks kann man per Quit das ganze program schließen.

und ein letztes mal heute:

(http://img118.imageshack.us/img118/2157/shot3om8.th.jpg) (http://img118.imageshack.us/my.php?image=shot3om8.jpg)

MenuBar mit einträgen. jedoch noch keien untermenus.

Guten Morgen aus dem schneienden Norden:

(http://img297.imageshack.us/img297/4328/shot4tl2.th.jpg) (http://img297.imageshack.us/my.php?image=shot4tl2.jpg)

Diesmal mit Subemenus

Und Nomma ;)

(http://img259.imageshack.us/img259/3108/shot5ij9.th.jpg) (http://img259.imageshack.us/my.php?image=shot5ij9.jpg)

Diesmal TextBoxen und Events (bei klick auf Login wird der dialog daneben angezeigt mit dem namen der in der textbox eingegeben wurde)

Derzeit unterstürzt wird:

- CreateButton
- CreateLabel
- CreateToolbar
- CreateTable
- TableAttach
- CreateWindow
- CreateHandlebox
- CreateStatusbar
- CreateMenu
- MenuAddLabel
- CreateMenuBar
- ToolbarAdddItem
- AddContainer
- ShowWidget
- BoxPack
- Items zur Statusbar hinzufügen
- Widget mit Event an Callback übergeben (Teilerfolg)
- Box erstellen und verwenden

und ich hoffe heute noch ein paar steuerelemente und vielleicht sogar die events hinbekomme.

EDIT// Teilerfolg bei den Events :) erstmals ganze anwendungen möglich ;)

Mfg
Title: Hab mal wieder was für euch...
Post by: D2O on 2008-Mar-02
GTK ?
Das ist ne GUI (Opensource? ) ?

Nicht schlecht :)
Title: Hab mal wieder was für euch...
Post by: Schranz0r on 2008-Mar-02
So wie ich das seh überschreibst du wieder die GLB-Main oder?
Mach doch nen eigenen Thread, ist doch dann um einiges hübscher ;)
Title: Hab mal wieder was für euch...
Post by: trucidare on 2008-Mar-02
muss dich enttäuschen schranzor ;) main ist vollkommen intakt :P
Title: Hab mal wieder was für euch...
Post by: Schranz0r on 2008-Mar-02
Ja haste nen eigenen Thread gemacht?
Title: Hab mal wieder was für euch...
Post by: sechsrad on 2008-Mar-02
setzt mal den code rein , dann weiss man worüber wir sprechen wollen. sehe noch keinen zusammenhang  von windows und diesem gtk.
kenne den hintergrund deiner sub-aufrufe nicht.

was wolltest du jetzt wissen/machen?

kanst du denn jetzt in allen 3fenstern eine unabhängig gestartete glbasic routine(3d) ablaufen lassen?

mein gp2x läuft zb mit sdl.

mfg
Title: Hab mal wieder was für euch...
Post by: trucidare on 2008-Mar-02
Sechsrad ich bin dafür bekannt code nicht vor einer alpha freizugeben. Außerdem ist sinn dieser Gui nicht gui und opengl fenster zu vermischen sondern ein eigenständiges modul.

gtk ist eine crossplatform gui.
Title: Hab mal wieder was für euch...
Post by: Schranz0r on 2008-Mar-02
Richtöööööösch
Title: Hab mal wieder was für euch...
Post by: trucidare on 2008-Mar-02
Update im ersten POST
Title: Hab mal wieder was für euch...
Post by: Schranz0r on 2008-Mar-02
Nice, wenn die sich noch ansprechen lassen und funzen ist es subba
Title: Hab mal wieder was für euch...
Post by: Kitty Hello on 2008-Mar-03
Total klasse!
Title: Hab mal wieder was für euch...
Post by: trucidare on 2008-Mar-03
Gernot ich brauch mal deine Hilfe.

Bei der funktion g_connect_signals oder so ähnlich muss ich eine void funktion übergeben. (Callback funktion) wie übergeb ich denn diese funktion über eine glb funktion an die c++ funktion? wäre das wichtigste denn anders kann ich keine events wie "clicked" weitergeben.
Title: Hab mal wieder was für euch...
Post by: Kitty Hello on 2008-Mar-03
poste mal den Prototypen/Hilfe dazu.

Prinzip:

Code (glbasic) Select
CALLBACK glb_foo: para
ENDFUNCTION

INLINE
extern "C" void c_foo(int para)
{
   glb_foo(para);
}

int mymain()
{
   NimmMeineFunktion( c_foo );
}
ENDINLINE
Title: Hab mal wieder was für euch...
Post by: trucidare on 2008-Mar-03
also die funktion wird so aufgerufem:

Code (glbasic) Select
g_signal_connect (G_OBJECT (button), "clicked",G_CALLBACK (hello), NULL);die funktion hello sieht so aus:

Code (glbasic) Select
static void hello( GtkWidget *widget,gpointer   data )
{
    g_print ("Hello World\n");
}
wobei die 2 parameter allein gefüllt werden.

vielleicht hast du ja rat.
Title: Hab mal wieder was für euch...
Post by: Schranz0r on 2008-Mar-03
Geiler Hund du ;)
Title: Hab mal wieder was für euch...
Post by: Kitty Hello on 2008-Mar-03
Code (glbasic) Select
CALLBACK glb_hello: para
ENDFUNCTION

INLINE
extern "C" static void c_hello(int para)
{
   glb_hello(para);
}

FUNCTION ConnecteMeinenButton:
INLINE
   g_signal_connect (G_OBJECT (button), "clicked",G_CALLBACK (c_hello), NULL);
ENDINLINE
ENDFUNCTION
Jetzt kannst Du aber nicht für jeden Button eine "glb_hello" machen, klar oder?
Also: Machst Du eine FUNCTION GTK_OnButton: iButton, und verknüpfst alle button-messages mit einer c_button funktion. In der suchst Du dann heraus, welcher Button gedrückt wurde (mach ein Feld mit GtkWidget* pointern, und vergleiche die, dann gib den Index an die glb-Funktion weiter. Weisst wie ich mein?
Title: Hab mal wieder was für euch...
Post by: trucidare on 2008-Mar-03
Ich weiß was du meinst aber wie lös ich das mit dem GtkWidget feld?
und so wie ich das aus dem code sehe wird beim signal "clicked" die funktion hello aufgerufen. WIe soll ich das denn machen, dass wenn ich button1 drück dann z.b. label1 ein anderen text und auf click von button2 das programm beendet wird, wenn ich nur 1ne callback funktion hab?
Title: Hab mal wieder was für euch...
Post by: trucidare on 2008-Mar-04
muss mal e in doppelpost investieren...
sonst bin ich am ende noch ganz unten
Title: Hab mal wieder was für euch...
Post by: Kitty Hello on 2008-Mar-04
GtkWidget* ist kein Feld!!! Das ist ein Zeiger auf ein mit "new" erstelltes Widget.
Title: Hab mal wieder was für euch...
Post by: trucidare on 2008-Mar-04
Bezig sich auf das aus deinem Post:
(mach ein Feld mit GtkWidget* pointern)

Ich weiß nich wie ich da weiter machen soll. nun hab ich bald alle widgets aber noch keine events :(
Title: Hab mal wieder was für euch...
Post by: Schranz0r on 2008-Mar-04
Hmm lol :D
Title: Hab mal wieder was für euch...
Post by: Kitty Hello on 2008-Mar-04
Ja... Mach ein Feld
INLINE
DGArray gPointers;

//neues Widget machen:
...
DIMPUSH (gPointers, neuesWidget);

// im callback:
for(int i=0; i{
   if(gPointers(i) == callback_ueberreichter_pointer) return i;
}
return -1; // fehler
Title: Hab mal wieder was für euch...
Post by: Schranz0r on 2008-Mar-04
Das soll funzen?

Eine Forschleife im Callback...

Obs auch so bei der Newton gehen würde?
Title: Hab mal wieder was für euch...
Post by: trucidare on 2008-Mar-04
Hmm ich kanns immernoch nicht in Verbindung bringen :(

ich mein das folgendermaßen:

Code (glbasic) Select
static void callback_func( GtkWidget *widget,
                    GdkEvent  *event,
                    gpointer   callback_data );
Das ist die Callback Funktion.

Code (glbasic) Select
g_signal_connect (G_OBJECT (button), "button_press_event",
                  G_CALLBACK (callback_func), NULL);
Das ist der Aufruf von Gtk. So ruft das Widget "button" beim klicken die callback funktion callback_func auf und übergibt den Kram "GtkWidget *widget, GdkEvent  *event, gpointer callback_data" an die callback_func.

Nun kann ich nicht für jeden button ein neues callback machen wie gernot schon sagt. Also schreib ich meine widgets (gleich beim erstellen) in ein Feld.

Nun meine frage... Wie gehts weiter?
Title: Hab mal wieder was für euch...
Post by: Kitty Hello on 2008-Mar-04
ah - ha!!!
pass auf, der conenct übergibt an die Funktion, die Du angibst ja NULL als callback_data, stimmts?
Jetzt rufst Du für jeden Kopf immer die gleiche Callback-funktion auf, _aaaaber_ gibst stall NULL den index/id/whatever des Knopfes an -> damit Du später dem Nutzer sagen kannst "Knopf 5 gedrückt".

@Schranzor - so mach ich das in Newton auch. Ich bekomme einen Zeiger auf einen Body bei den Kollisionen, dann such ich mir den passenden Index dazu und gebe den an GLBasic zurück.

Code (glbasic) Select
int xNewtonBodyIndexFromPointer(const void* body)
{
int m = BOUNDS(gNewtonBodyPointers, 0);
for(int i=0; ireturn -1;
}
Title: Hab mal wieder was für euch...
Post by: Schranz0r on 2008-Mar-04
ahhh ok :D

Hast du im Pinguinspiel nicht gemacht;)
Title: Hab mal wieder was für euch...
Post by: trucidare on 2008-Mar-04
ich habs jetzt erstmal so gelöst:

Code (glbasic) Select
CALLBACK FUNCTION EVENTS: widget,command$
DEBUG widget
DEBUG command$
SELECT widget
CASE button1
GuiStatusBarPush(status,"Test")
CASE Button
GuiStatusBarPush(status,"Moop")
CASE window
GuiEnd()
END
CASE datei_sub
GuiEnd()
END
ENDSELECT
ENDFUNCTION
da ichnich weiß wie es sich später als dll verhält muss ich mir noch was anderes ausdenken. Übrigens von feld event bekomm ich nur ne 1 oder ne 0 und von data nur bei dem schließen button vom fenster einen wert, der aber jedesmal anders ist.
Title: Hab mal wieder was für euch...
Post by: Kitty Hello on 2008-Mar-04
kannst es mir ja mal schicken, dann schau ich mal drüber - so ists schwer zu sagen.
Title: Hab mal wieder was für euch...
Post by: trucidare on 2008-Mar-04
Jipp mach ich dir mal fertig. Vielleicht hast du ja noch ein verbesserungsvorschlag und vor allem ein vorschlag zur vereinfachung hab schon viele befehle 1:1 übernommen weiß nicht wie ich die in den anderen unterbringen soll um den kram noch einfacher zu machen.

UPDATE erster Post
Title: Hab mal wieder was für euch...
Post by: Schranz0r on 2008-Mar-05
Wie gewünscht, vom Trucidare, ein Screenshot von seiner GUI in Vista:


!!KLICK IMAGE FOR FULLSIZE!!
(http://www.styleattax.de/GUI.png) (http://www.styleattax.de/GUI.png)
Title: Hab mal wieder was für euch...
Post by: D2O on 2008-Mar-06
Schlicht weg geil :)

So kann man auch für das Auge einen ansprechenden Editor schreiben :)

Nun aber noch ne kleine Frage dazu, das Hauptprogramm bleib ja GLB, so kann man die GUI auch nur nutzen wenn OpenGL Treiber drauf sind, oder?
Title: Hab mal wieder was für euch...
Post by: trucidare on 2008-Mar-06
Es ist derzeit nicht möglich das GLB und das Gui fenster zu nutzen. Ich versuch da ne lösung zu finden.

Ja brauchst du da trotzdem ein GLB fenster erzeugt wird, das versteckt wird.
Title: Hab mal wieder was für euch...
Post by: WPShadow on 2008-Mar-06
Ich denke, daß das das geringste Problem sein sollte, oder?
Title: Hab mal wieder was für euch...
Post by: trucidare on 2008-Mar-06
jop aber problem gerade unter windows ist es das runtime dll´s benötigt werden. Ich konnte bisher nicht statisch linken *schnief* unter linux und mac os allerdings würde es ohne shared libs gehen. Aber erstmal fertig machen für windows dann für den rest
Title: Hab mal wieder was für euch...
Post by: trucidare on 2008-Mar-06
Neuer Tag, neues Problem ;)

ne spaß kein Problem aber gibt nun nich mehr soviele updates ich spiel nebenbei also nich wundern wenn ein tag mal nix kommt
Title: Hab mal wieder was für euch...
Post by: Kitty Hello on 2008-Mar-06
*heul*
Title: Hab mal wieder was für euch...
Post by: trucidare on 2008-Mar-06
-.- Welche Ironie doch dahinter steckt ;)
Ich mach dir heute abend ein packet fertig mit dem gtk kram schicks dir und wir quatschen denn morgen drüber

und wenn alles glatt geht schick ich dir am montag ein richtiges packet.
Title: Hab mal wieder was für euch...
Post by: Kitty Hello on 2008-Mar-06
Klingt gut.
Title: Hab mal wieder was für euch...
Post by: Schranz0r on 2008-Mar-06
Sounds good :)
Ich wills auch haben ;)
Title: Hab mal wieder was für euch...
Post by: trucidare on 2008-Mar-06
Ja schranzi wenn fertig und ich den source sicher in meinem safe verstaut habe ;)

Gernot weißt du ob man den kram unter windows statisch linken kann? ich hab keine lust auf runtime kram mit mehr als einer dll.
Title: Hab mal wieder was für euch...
Post by: Schranz0r on 2008-Mar-06
sack du :D
Title: Hab mal wieder was für euch...
Post by: Kitty Hello on 2008-Mar-06
da musst Du alles mit dem gcc compilieren. Viel Spaß!
Title: Hab mal wieder was für euch...
Post by: trucidare on 2008-Mar-06
Das ist das kleinere übel. Der gcc selbst war schlimmer... aber ich versteh die meisten kompilier scripte nicht wo was hin muss.
Title: Hab mal wieder was für euch...
Post by: trucidare on 2008-Mar-08
Wohooo DURCHBRUCH :)
Gui als DLL MIT EVENTS :) :) :)
Title: Hab mal wieder was für euch...
Post by: Schranz0r on 2008-Mar-08
Wohooooo


GIB HER!
Title: Hab mal wieder was für euch...
Post by: sechsrad on 2008-Mar-08
gui und glbasic zusammen , das ist es was ich brauche.



mfg
Title: Hab mal wieder was für euch...
Post by: Schranz0r on 2008-Mar-08
Das ist eher GUI ohne GLB aber in GLB geschrieben!
Title: Hab mal wieder was für euch...
Post by: trucidare on 2008-Mar-17
So nach langerzeit mal wieder ein Update

ImageButtons
TextArea
ProgressBar
ImageFeld

sind nun verfügbar. Screenshot folgt.