Autor Thema: GEM Library  (Gelesen 23260 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

gstoll

  • Gast
GEM Library
« am: Di 02.11.2010, 20:48:29 »
Ich habe mal einen eigenen Faden aufgemacht:

Hallo,

also ich muss sagen: Windom2 ist richtig gut... also durch NetSurf verwende ich das halt recht viel... und das ist echt cool.

Bläht Dein Programm natürlich auch ziemlich auf, u.a. auch deshalb weil die 2er Version nicht mehr mit PureC kompiliert werden kann ( kann es jedenfalls nur noch Theoretisch..., es gibt kein geupdatetes Projekt File...) .

Vom Speed bin ich überrascht gewesen, ich hätte gedacht Windom zieht mehr... aber die Applikationen laufen auf einem Falcon immer noch Flott, :) ... ok, beim Starten ist es nicht ganz so schnell, aber trotzdem echt kein zu großer Overhead für all die Bonuse die man mit Windom bekommt...

Also ich kanns nur empfehlen... Ich kenne keine Lib die Besser ist.

Wobei ich bisher auch nur mit einer anderen Programmiert habe: PowerGEM . Zum EInsteigen sicherlich die bessere Wahl... weil man dann auch mehr von GEM lernt...

Aber wenn man die Grundlagen erarbeitet hat, ist man echt Glücklich das Windom einem soviel Arbeit abnimmt - ausserdem ist es mit WinDom leichter Sauberen & Aufgeräumten Programmcode zu erstellen...

Ansonsten ist die SYSGEM lib auch ziemlich umfangreich- ist mit na ausführlichen Deutschen Doku, aber mir hat die Lib nicht so zugesagt wie WinDOM.... aber adafür gehts halt auch mit PureC!

http://home.ewr-online.de/~gstoll/sysgem.htm

Es ist für mich schwierig eine Empfehlung zugeben, da es sehr auf den Verwendungszweck ankommt.

Ich denke für einen einfachen Dialog ist WinDom übertrieben und wie Ole richtig schreibt vielleicht zu weit weg, wenn man noch etwas von GEM mitbekommen will.

Die PowerGEM [1] kenn ich jetzt nicht so. Würde da als Ersatz vielleicht ehr zur CF-Lib raten.

Von der Lib aus dem Buch "Vom Anfänger zum GEM-Profi" (ist z.B. in Phoenix) würde ich abraten, wenn man das Buch nicht hat.

Wichtig ist erstmal anzufangen und auch dem Mut aufbringen zur Not die Lib zu ersetzen. Habe ich auch schon gemacht als im merkte, daß die genutzte nicht alle konnte. Ist zwar arbeit lohnt aber.

Wichtig ist keine zunehmen von der die Quellen nicht vorhanden ist!

Gerhard

[1] Gibt es dazu den Quelltext?

Offline tuxie

  • Benutzer
  • Beiträge: 6.836
  • Falcon! Milan! Schuetzt die Raubvoegel!
Re: GEM Library
« Antwort #1 am: Di 02.11.2010, 21:37:53 »
Ich finde das Thema echt sehr interessant, da ich mich mit dem Thema noch nie beschäftigt habe. Wäre ich für ein kleines Learning bei doing tut. Doch wo fange ich an, die Windom gefällt mir ganz gut nur ist mein English nicht ganz so gut das ich alles verstehe was in der docu steht. Naja mal druchwurschteln und wenn ich nicht weiter komme frag ich euch  ;D ;D
Tschau Ingo

Offline m0n0

  • Benutzer
  • Beiträge: 984
Re: GEM Library
« Antwort #2 am: Mi 03.11.2010, 20:40:27 »
Hallo, in dem WinDom download ist bei einer Version ein Ordner mit Examples... in einem anderem Download sind Demos + Examples.

Diese Programme lassen sich auch ganz gut nutzen um eine kleine Applikation zu sehen, wie die So mit WINDOM aufgebaut wird...

Stichwort CF Lib-... CF Lib ist ein Toolkit, WinDom dagegen, ähm, wie nennt man das denn ... auf jeden Fall ist windom eine Kapselung.

Das ist ein großer Unterschied, wenn man CFLIB nutzt, dann schreibt man schon noch relative "normale" GEM Programme, aber die CFLIB bietet viele Funktionen die einem Helfen und die man immer wieder bei der GEM Programmierung benötigt.
Wenn man die CFLIB nutzt, bleiben einem viele Freiheiten... aber es abstrahiert GEM nicht, d.h. man muss sich immer noch um vieles selber kümmern ( wodurch dann auch die Freiheit entsteht in jeglichen Prozess einzugreiffen, was bei WinDom z.b. nicht so ohne weiteres möglich ist).

Die PowerGEM lib ist schon alt ... aber für den Anfang auch eine nette erleichterung! :) In diesem Link ist die Lib ( inkl. Demo, Sourcen, beispielen, und natürlich der nutzung innerhalb meines Programms... ) enthalten: http://nic-nac-project.org/~monokrom/monochrom.net/atari/dl/dwnldr10.zip

 
Gruß




 

Offline tuxie

  • Benutzer
  • Beiträge: 6.836
  • Falcon! Milan! Schuetzt die Raubvoegel!
Re: GEM Library
« Antwort #3 am: Mi 03.11.2010, 20:51:02 »

Stichwort CF Lib-... CF Lib ist ein Toolkit, WinDom dagegen, ähm, wie nennt man das denn ... auf jeden Fall ist windom eine Kapselung.

 

Framework?
Tschau Ingo

Offline tuxie

  • Benutzer
  • Beiträge: 6.836
  • Falcon! Milan! Schuetzt die Raubvoegel!
Re: GEM Library
« Antwort #4 am: Do 04.11.2010, 01:22:14 »
Also würdest du das Windom Framework (so nenne ich es jetzt einmal) empfehlen! Sicher ist es einiges aufwendiger aber wenn man es einmal lernt dann richtig oder?

Ich möchte eine kleine Anwendung schreiben in der in ini files gelesen werden, die Paramete r angepasst werden können und wieder gespeichert. Dann einige Shell Befehle (bash bzw. sh) ausgeführt werden. Ich hoffe das ansprechen von Shell befehlen ist nicht so kompliziert.
Tschau Ingo

Arne

  • Gast
Re: GEM Library
« Antwort #5 am: Do 04.11.2010, 07:02:32 »
Im Dezember habe ich Urlaub, vielleicht schaue ich dann mal rein. Wobei es für mich erst interessant wird, wenn es mit PureC baut. Mit GCC hab ich mich zu lange auf der Arbeit rumärgern "dürfen"  :-X

Offline tuxie

  • Benutzer
  • Beiträge: 6.836
  • Falcon! Milan! Schuetzt die Raubvoegel!
Re: GEM Library
« Antwort #6 am: Do 04.11.2010, 07:49:46 »
Klar läuft das auch mit pure-c oder ahdc schau mal hier
http://windom.sourceforge.net/
Tschau Ingo

Arne

  • Gast
Re: GEM Library
« Antwort #7 am: Do 04.11.2010, 08:45:53 »
Klar läuft das auch mit pure-c oder ahdc schau mal hier
http://windom.sourceforge.net/
Ich habe die Aussage
"Ansonsten ist die SYSGEM lib auch ziemlich umfangreich- ist mit na ausführlichen Deutschen Doku, aber mir hat die Lib nicht so zugesagt wie WinDOM.... aber adafür gehts halt auch mit PureC! "
hier http://forum.atari-home.de/index.php?topic=6395.msg51715#msg51715 so verstanden, dass Windom2 nicht unter Pure-C baut, SYSGEM hingegen schon. Oder ist das umgedreht zu verstehen?

Gruß, Arne

gstoll

  • Gast
Re: GEM Library
« Antwort #8 am: Do 04.11.2010, 17:31:25 »
Klar läuft das auch mit pure-c oder ahdc schau mal hier
http://windom.sourceforge.net/
Mmh, im Archiv von WinDom 2.0.1 kann ich keine Lib für PureC finden.

SysGem läuft auf jeden Fall mit PureC, aber nicht mit GCC.

Gerhard

Offline m0n0

  • Benutzer
  • Beiträge: 984
Re: GEM Library
« Antwort #9 am: Do 04.11.2010, 17:54:49 »
Irgendwann wurden die Projekt Files von Windom für PureC nicht mehr aktualisiert... wenn das getan wird, könnte es sein das es wieder geht... aber evt. sind dann auch Syntax dinger im Source Code die unter PureC nicht funktionieren. Also für PureC gibt es im Moment keine WinDom Lib.

Gruß

Offline m0n0

  • Benutzer
  • Beiträge: 984
Re: GEM Library
« Antwort #10 am: Fr 05.11.2010, 23:16:03 »
Hallo,

ich habe mal ein Grundgerüst eines Programmes das mit Powergem läuft ausführlichst kommentiert, vielleicht ist das ja Sinnvoll ;)  8)

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <tos.h>
#include <aes.h>
#include <vdi.h>
#include <types.h>
#include <powergem.h>
#include <scancodes.h>


/* Macro das einen Piepston ausgibt, nützlich beim Testen: */
#define BEEP() Cconout('\007')

/* Deklaration von Globalen Variablen folgt ---> */

/* Powergem Handle (innerhalb Powergemlib deklariert)    */
/* innerhalb dieses Moduls (main.c) bekannt machen, erst */
/* dadurch wird zugriff auf diese Variable ermöglicht,   */
/* Ansonsten wäre die Variable unbekannt. */
extern struct A_CNTRL app_cntrl;

/* VDI Handle, wird für Zeichenfunktionen benötigt: */
int h_vdi;

/* Powergem Fenster: */
struct WINDOW * pgwin;

/* Desktop Größe wird hierin gespeichert: */
GRECT deskarea;

/* <--- Ende der Globalen Variablen */


/* Funktion für Menu Punkt "Exit" */
void on_exit_click(void)
{
exit_powergem();
}


/* Funktion für Menüpunkt im Accessory Menü ("About") */
void on_about_click( void )
{
char * alrt;

/* Adresse des Strings laden: */
rsrc_gaddr( 5, ALRT_ABOUT,(void*)&alrt );

/* und in Message Box anzeigen: */
    form_alert(0, (char*)alrt);
}

/* Funktion für das "WM_DRAW" Ereignis               */
/* Das Ereignis tritt auf wenn Fenster geöffnet wird */
/* oder ein verdeckter Bereich sichtbar wird         */
void on_draw ( struct WINDOW * win  )
{
int pxy[4];
GRECT workarea;
GRECT slider;

if( win == NULL)
return;

/* Slider Positionen auslesen (Powergem Funktionen) */
slider.g_y = get_y_slider( win );
slider.g_x = get_x_slider( win );

/* Fenster Arbeitsbereich auslesen (Powergem Funktion)*/
get_workarea(win, &workarea);

/* AES Koordinaten in VDI Koordinaten umwandeln */
pxy[0] = workarea.g_x;
pxy[1] = workarea.g_y;
pxy[2] = workarea.g_x + workarea.g_w-1;
pxy[3] = workarea.g_y + workarea.g_h;

/* Grafikausgaben auf den Arbeitsbereich des Fensters beschränken: */
vs_clip ( app_cntrl.vdi_handle, 1,(int*)&pxy );

/* Hier fehlt noch der aufruf zu wind_update(ANFANG)        */
/* Hier fehlt noch eine while Schleife die alle Sichtbaren  */
/* Bereiche abfragt ( wind_get(WF_FIRST/WF_NEXT),           */
/* Hier fehlt noch der code der diesen Fensterbereich neu zeichnet */
/* Hier fehlt noch der aufruf zu wind_update(ENDE)*/

/* Grafikbeschränkung aufheben: */
vs_clip ( app_cntrl.vdi_handle, 0, (int*)&pxy );
}


/* Diese Funktion erstellt das Hauptfenster, bzw. öffnet es falls schon erstellt */
void show_file_window( void )
{
GRECT winpos = {0,0, 400, 200};
winpos.g_y = deskarea.g_y;
winpos.g_w = deskarea.g_w;
winpos.g_h = deskarea.g_h;

/* Wenn Fenster noch nicht erstellt wurde: neu erzeugen */
if(pgwin == NULL)
{
/* Powergem Aufruf: */
pgwin = create_window(&deskarea, &winpos, 200, 200,
NAME|INFO|CLOSER|MOVER|SIZER|FULLER|UPARROW|
DNARROW|RTARROW|LFARROW|VSLIDE|HSLIDE,
DATA_WINDOW,
on_draw, 0,0,0);
}

if( pgwin )
{
/* Powergem Funktion */
/* Slider neu konfigurieren, anzahl der Spalten und Zeilen innerhalb des             */
/* Fensters neu setzen, ebenso die Weite und Höhe der Zeilen/Spalten (app_cntrl.gl_) */
init_slider( pgwin,
10 /* Anzahl Spalten */,
20 /* Anzahl Zeilen */,
app_cntrl.gl_wchar+1,
app_cntrl.gl_hchar+1
);
/* Powergem, Fenster auf dem Bildschrim anzeigen: */
open_window( pgwin, "File", "Info");
}
}


/* Funktion für Menüpunkt "Datei Öffnen" */
/* Dateiauswahl anzeigen & Datei laden   */
void on_load_click( void )
{

int result;
char * path;
char * file;
char * pf,*tmp;

/* Speicher für Pfade anfordern: */
path = malloc(255);
file = malloc(255);
pf = malloc(255+255);

memset( path, 0, 255);
memset( file, 0, 255);

/* Dateiauswahl Dialog anzeigen: */
fsel_input( path, file, &result );
if( result > 0) {
/* Benutzer hat OK ausgewählt, Datei laden... */
strcpy(pf, path);
tmp =  strchr ( pf, (int)'*' );
if(tmp != NULL)
*tmp=0;
strcat(pf, file);
/* jetzt irgendwas sinnvolles mit dem Pfad in pf machen - z.b. Datei einlesen */
show_file( );
}                     
free( pf );         
free(file);
free(path);
}

/* Funktion für Timer-Ereignis */
void on_timer(void)
{
/* Hier z.b. den Cursor animieren */
/* Oder etwas wichtiges machen ;) */
}


void appexit(void)
{
/* Hier kann z.B. Speicher Freigegeben werden der */
/* mit malloc angefordert wurde und noch nicht mit free() */
/* Freigegeben wurde */
return;
}

int main()
{
/* Demo.rsc laden und sagen welche Resourcen Strang das Menü enthält: */
/* Diese Powergem Funktion meldet die Applikation auch beim AES an    */
/* Und initialisiert interne Datenstrukturen */
init_powergem("DEMO.RSC", MENU_MAIN);

/* VDI Handle merken */
h_vdi = app_cntrl.vdi_handle;

/* Größe des Desktops auslesen (Auflösung - Menüleiste) */
/* Fenster handle 0 == Desktop */
wind_get(0, WF_WORKXYWH, &deskarea.g_x, &deskarea.g_y,
&deskarea.g_w, &deskarea.g_h);

/* Hier werden Die Menü-Einträge und Tastenkombinationen mit Funktionen */
    /* verbunden: */
/*           Rsc Tree,  Element, Keycode, Funktion                      */
menu_action( M_PROGRAM, M_ABOUT, CNTRL_A, on_about_click);
menu_action( M_FILE, M_LOAD, CNTRL_L, on_load_click);
menu_action( M_FILE, M_QUIT, CNTRL_Q, on_exit_click);

/* Hier wird Powergem mitgeteilt auf welche Ereignisse es achten soll */
/* und noch irgendwas anderes ;) */
watch_events(MU_MESAG|MU_BUTTON|MU_KEYBD, 2,1,1);

/* Ausserdem soll auch eine Funktion in 100ms Abständen regelmäßig aufgerufen werden: */
watch_timer(100, 0, on_timer);

/* Eine Funktione registrieren die beim Beenden ausgeführt wird - die Funktion */
/* atexit ist bestandteil der C-Library */
atexit(appexit);

/* Normalen Cursor einschalten: */
graf_mouse( ARROW, NULL );

/* Jetzt kann Powergem loslegen! ( bis exit_powergem Aufgerufen wird, siehe on_exit_click )*/
/* Es werden alle Ereignisse ausgewärtet und wenn Wir dafür einen Callback registriert haben */
/* wird diese Funktion ausgeführt! */
/* Diese Funktion ist eine endlosschleife und kann nur durch exit_powergem() beendet werden */
multi();

/* Wenn wir hier angelangt sind, dann wurde exit_powergem() ausgeführt... */
return(0);

/* hier kommen wir nie an, aber appexit() wird nach obigem return(0) aufgerufen */
}


Arne

  • Gast
Re: GEM Library
« Antwort #11 am: Sa 06.11.2010, 04:37:24 »
Hallo,

ich habe mal ein Grundgerüst eines Programmes das mit Powergem läuft ausführlichst kommentiert, vielleicht ist das ja Sinnvoll ;)  8)
Nicht, wenn man sich mühevoll selbst durchbeißen will  ;D
Hast Du einen Downloadlink zu PowerGEM?

Gruß, Arne

Offline m0n0

  • Benutzer
  • Beiträge: 984
Re: GEM Library
« Antwort #12 am: Sa 06.11.2010, 11:53:48 »
Hier:

http://nic-nac-project.org/~monokrom/monochrom.net/atari/dl/POWERGEM.zip

Im Ordner Original ist das Original Paket enthalten, inkl. Demos und Beispielen...

Offline m0n0

  • Benutzer
  • Beiträge: 984
Re: GEM Library
« Antwort #13 am: Di 09.11.2010, 19:54:54 »
Hallo,

diese gibts auch noch, ist bestimmt umfangreicher als PowerGEM und etwas moderner, aber ich meine immer noch kompakt:

(eGEM - PureC, GNU C,.... ):
ftp://ftp.datavase.info/st_essential/DEVEL/eGem_210.zip


Offline m0n0

  • Benutzer
  • Beiträge: 984
Re: GEM Library
« Antwort #14 am: Mo 29.11.2010, 22:24:10 »
Hallo,

ich muss mich korrigieren, im Windom paket: "windom-2.0.0-rc2" ist eine purec windom.lib enthalten.

Ich habe diese bisher noch nicht getestet und die aktuellste windom version ist windom-2.0.1 - aber ich denke das sollte keinen sehr großen Unterschied machen! Nur kann man dieses 2.0.0 Paket glaube ich nicht auf der Offiziellen Seite downloaden. Aber ich habe es auf jeden Fall . ;D

Bei Gelegenheit werde ich es mal testen ob es wirklich eine lib für purec ist   8) - und wenn interesse besteht, eine kleine Formular Anwendung mit Windom und PureC als Tutorial vorstellen.

Gruß,
mono