MUI_AslRequest() - wie ging das noch gleich?

Ihr habt ein Problem mit C++ oder anderen Sprachen ? Dann seit Ihr in diesem Forum genau richtig! Hier können alle Fragen gestellt werden, die mit Programmierung (MorphOS, Linux, BeOS, BSD,...) zu tun haben.

Moderatoren: analogkid, roschmyr

ShawnBaxe
Stammgast
Stammgast
Beiträge: 23
Registriert: 02 Dez 2008, 00:20

MUI_AslRequest() - wie ging das noch gleich?

Beitragvon ShawnBaxe » 07 Dez 2008, 23:41

Moin moin :D

hab mal wieder angefangen mich n bissl in die Programmierung von Amiga/MorphOS Anwendungen reinzuarbeiten. Hab allerdings einiges vergessen. Ich bräuchte einen ASL-Filerequester...hab nur leider total vergessen, wie genau ich MUI_AslRequest() benutze (structs, Attribute usw.) :oops: Kann mir da evtl. jemand mit 1 oder 2 Beispielen aushelfen? Hab in den MUI Demos nichts gefunden. Danke schonmal im voraus :)

Benutzeravatar
igracki
Articia-Verehrer
Articia-Verehrer
Beiträge: 164
Registriert: 16 Sep 2003, 13:02
Wohnort: Berlin
Kontaktdaten:

Beitragvon igracki » 08 Dez 2008, 00:36

Man muß erst mit MUI_AllocAslRequestTags() die Struktur bereitstellen:

Code: Alles auswählen

if (!(data->req = MUI_AllocAslRequestTags(ASL_FileRequest,
    ASLFR_RejectIcons,       TRUE,
    // sowie weitere ASLFR_xxx tags
    TAG_DONE)))
{
    Warning("Failed to allocate requester structure!");
}

Dann benutzt man den Requester z.B. so:

Code: Alles auswählen

if (MUI_AslRequestTags(data->req,
    ASLFR_Window, xget(_win(obj), MUIA_Window_Window), // damit der Requester relativ zu dem MUI Fenster geöffnet wird
    ASLFR_DoPatterns, TRUE,
    ASLFR_DoSaveMode, FALSE,
    ASLFR_DoMultiSelect, FALSE,
    ASLFR_TitleText, "Wähle eine Datei aus"
    ASLFR_InitialFile, "",
    ASLFR_InitialPattern, "#?.txt",
    ASLFR_RejectPattern, "",
    TAG_DONE) && (!StrEmpty(data->req->fr_File)))
{
    if (StrEmpty(data->req->fr_Drawer)) {
       strcpy(filename, "PROGDIR:");
    }
    else {
       strcpy(filename, data->req->fr_Drawer);
    }
    AddPart(filename, data->req->fr_File, sizeof(filename));
}


Und nun wieder freigeben:

Code: Alles auswählen

if (data->req) { MUI_FreeAslRequest(data->req); data->req = NULL; }
Bye, Thomas!

ShawnBaxe
Stammgast
Stammgast
Beiträge: 23
Registriert: 02 Dez 2008, 00:20

Beitragvon ShawnBaxe » 08 Dez 2008, 01:23

Aaaaahhh...tausend dank :) Wenn man erstmal raus is, muss man echt vieles wieder neu lernen lol.
Jetzt gibts nur noch ein einziges kleines Problem...wenn ich ASLFR_DoMultiSelect verwende...wie komme ich an die Liste der ausgewählten Dateinamen ran?

Eine einzelne Datei zu holen ist kein Problem, aber mehrere?

Bei mir steht z.b. im Moment:

Code: Alles auswählen

DoMethod(m_list, MUIM_List_Insert, m_freq->fr_File, MUIV_List_Insert_Bottom);


Leider wird bei der Auswahl mit dieser Variante kein Dateiname in meine Liste eingefügt, sondern nur massenhaft binäres Zeugs (was nebenbei das Programm komplett lahmlegt). Ohne Multiselect und mit folgendem Code bekam ich den gewählten Dateinamen in die Liste eingefügt:

Code: Alles auswählen

DoMethod(m_list, MUIM_List_InsertSingle, m_freq->fr_File, MUIV_List_Insert_Bottom);


Kann es sein, dass ich auf dem obigen Weg nie an das Dateinamens-Array rankomme?

Benutzeravatar
insane
Administrator
Administrator
Beiträge: 603
Registriert: 04 Mai 2004, 20:32
Wohnort: Kiel

Beitragvon insane » 08 Dez 2008, 09:35

Hi ShawnBaxe und willkommen im Pegasosforum !

Bei den Programmierfragen kann ichzwar nicht helfen, aber schön das Du wieder aktiv bist ;-)

Gruß Insane

Thore
Blue Morpho
Blue Morpho
Beiträge: 2631
Registriert: 30 Jul 2006, 18:09
Wohnort: Reutlingen
Kontaktdaten:

Beitragvon Thore » 08 Dez 2008, 10:41

Ich hab auch schon 3 Jahre nichts mehr mit ASL programmiert aufgrund meines momentanen Zeitmangel, aber vielleicht bringt Dich dieses Demo weiter:
http://cd.textfiles.com/amigaformat/afo ... est/test.c
oder dieses
http://cd.textfiles.com/amigaformat/afo ... ahi/main.c
http://www.disk-doktor.de

Benutzeravatar
Otti
Seniormember
Seniormember
Beiträge: 982
Registriert: 02 Apr 2004, 16:27
Wohnort: Lübeck
Kontaktdaten:

Beitragvon Otti » 08 Dez 2008, 12:47

Hallo Shawn,

schoen das du wieder dabei bist, ich hoffe die Motivation haelt :)
Bis die Tage,

Otti


http://pegasos.lena-johannson.de/

ShawnBaxe
Stammgast
Stammgast
Beiträge: 23
Registriert: 02 Dez 2008, 00:20

Beitragvon ShawnBaxe » 08 Dez 2008, 20:25

@Insane
Danke :D Mein Peg hat viel zu lange in der Ecke gestanden ;) Bin ja froh, dass sich MorphOS (mit dem g++ update) auch in C++ programmieren lässt...C is ja gar nit meins hehe.

@Thore
Danke - die Beispiele haben mich ein ganzes Stück weitergebracht. Ich fürchte fast, dass ich Euch in nächster Zeit immer wieder Fragen zu (eigentlich) trivialen OS-/Library-Funktionen etc. stellen muss lol.

@Otti
Danke :) Arbeite grad an nem MP3 Tag Editor, um wieder reinzukommen...ich sage Dir...wenn man erstmal ne Weile unter Win programmiert hat, gewöhnt man sich ne Menge Schrott an lol. Aber solange das Programm nit fertig is, werd ich weiterarbeiten - so schnell werdet Ihr mich diesmal nit los lol.

Benutzeravatar
ThePlayer
Administrator
Administrator
Beiträge: 1261
Registriert: 07 Sep 2003, 00:45
Wohnort: Hamburg
Kontaktdaten:

Beitragvon ThePlayer » 10 Dez 2008, 23:55

Hi ShawnBaxe cool ein MP3-Tag editor, wäre es möglich in diesen auch eine normalize und einfache schneide Funktion zu integrieren?
PowerBook 17" @ 1,67Ghz, 1,5GB RAM, Radeon 9600 FullHD

ShawnBaxe
Stammgast
Stammgast
Beiträge: 23
Registriert: 02 Dez 2008, 00:20

Beitragvon ShawnBaxe » 11 Dez 2008, 00:23

Hmmm...gute Frage. Erstmal bin ich ja noch mit der GUI am kämpfen - NList will noch nit so wie ich es gern hätte ;) Und dann muss ich noch ein gravierendes Linker Problem lösen..hab für die id3tag.library keine Linker-Lib...
Prinzipiell würde ich mir aber Normalize etc. evtl. schon ansehen, wenn der Rest soweit funktioniert. Aber das kann halt noch laaaange dauern. Hab ja ewig nit mehr unter AOS/MOS programmiert.

Benutzeravatar
geit
Seniormember
Seniormember
Beiträge: 856
Registriert: 30 Mär 2006, 12:17
Wohnort: 48477 Hörstel
Kontaktdaten:

Beitragvon geit » 11 Dez 2008, 15:01

ShawnBaxe hat geschrieben:Hmmm...gute Frage. Erstmal bin ich ja noch mit der GUI am kämpfen - NList will noch nit so wie ich es gern hätte ;) Und dann muss ich noch ein gravierendes Linker Problem lösen..hab für die id3tag.library keine Linker-Lib....


Also entweder linker-lib oder .library. Beides macht keinen Sinn.

Ich nehme mal an Dir fehlen nur die Compiler inlines fuer MorphOS. Die kannst du selbst aus den FD/CLIB files erstellen die im Library Archiv sind. Im SDK sind AFAIR Tools dafuer.

Geit

ShawnBaxe
Stammgast
Stammgast
Beiträge: 23
Registriert: 02 Dez 2008, 00:20

Beitragvon ShawnBaxe » 11 Dez 2008, 17:35

Habe probiert mit fd2pragma die entsprechenden Files zu generieren. Irgendwas mache ich verkehrt :/ Bekomme permanent die Fehlermeldung "not a valdi register 'a0'" vom Compiler...bin echt total eingerostet...

Thore
Blue Morpho
Blue Morpho
Beiträge: 2631
Registriert: 30 Jul 2006, 18:09
Wohnort: Reutlingen
Kontaktdaten:

Beitragvon Thore » 11 Dez 2008, 17:50

Compilierst Du für 68k oder für PPC? Das fd File das Du verwendest ist für 68k.
Für PPC brauchst Du dann auch die entsprechenden fd Files für PPC, da sind auch die Register anders...
http://www.disk-doktor.de

ShawnBaxe
Stammgast
Stammgast
Beiträge: 23
Registriert: 02 Dez 2008, 00:20

Beitragvon ShawnBaxe » 11 Dez 2008, 17:58

Dann hab ich jetzt ein kleines Problem...die Library gibt's nur als 68k...ich werd wohl den Auto kontaktieren müssen wegen ner PPC-Version.

Thore
Blue Morpho
Blue Morpho
Beiträge: 2631
Registriert: 30 Jul 2006, 18:09
Wohnort: Reutlingen
Kontaktdaten:

Beitragvon Thore » 11 Dez 2008, 22:09

Ich weiß nicht ob die 68k Emu das so macht, aber ich hab es so gelesen:
0(r2) entspricht d0
4(r2) entspricht d1
...
32(r2) entspricht a0
34(r2) entspricht a1
... 56(r2) entspricht a6

Kann das jemand bestätigen oder widerlegen?
http://www.disk-doktor.de

ShawnBaxe
Stammgast
Stammgast
Beiträge: 23
Registriert: 02 Dez 2008, 00:20

Beitragvon ShawnBaxe » 14 Dez 2008, 17:08

Aaaahhh...Leute..ich bin echt blind lol. Hab mal bei MDC nachgesehen...da stehen genaue Richtlinien für die Portierung usw. - unter Anderem auch die Registerbelegung. Dann werd ich mal weitermachen hehe :D

P.S.: folgende Info stammt von der MDC Website:

1.2.2.8 Emulation interface

The 68k emulation uses the following global register layout for integer:

<emulinclude/emulregs.h>

register struct EmulHandle *MyEmulHandle __asm("r2");
register ULONG* REG_PC __asm("r13");
register UWORD REG_SR __asm("r14");
register void (**OPCODETABLE)(void) __asm("r15");

register ULONG REG_D0 __asm("r16");
register ULONG REG_D1 __asm("r17");
register ULONG REG_D2 __asm("r18");
register ULONG REG_D3 __asm("r19");
register ULONG REG_D4 __asm("r20");
register ULONG REG_D5 __asm("r21");
register ULONG REG_D6 __asm("r22");
register ULONG REG_D7 __asm("r23");
register ULONG REG_A0 __asm("r24");
register ULONG REG_A1 __asm("r25");
register ULONG REG_A2 __asm("r26");
register ULONG REG_A3 __asm("r27");
register ULONG REG_A4 __asm("r28");
register ULONG REG_A5 __asm("r29");
register ULONG REG_A6 __asm("r30");
register ULONG REG_A7 __asm("r31");



Zurück zu „Code-Küche“



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast