AMIGA-RESISTANCE

Die Projektseite für alles rund um den Amiga
Aktuelle Zeit: 22 Sep 2019, 03:50

Alle Zeiten sind UTC


 

 

 



Ein neues Thema erstellen  Auf das Thema antworten  [ 18 Beiträge ]  Gehe zu Seite 1 2 »
Autor Nachricht
 Betreff des Beitrags: Problem mit #SIMPLEBUTTON
BeitragVerfasst: 18 Feb 2008, 22:39 
Offline
User
Benutzeravatar

Registriert: 01 Feb 2008, 12:07
Beiträge: 20
Hallo,

ich bastele mir gerade eine einfache Toolbar. Das Problem ist, dass die Buttons nur am untersten Rand auf den OnMouseUp-Event reagieren. Hier der Code, vielleicht mag es ja mal einer ausprobieren und/oder hat eine Idee dazu:
@VERSION 3, 0
@DISPLAY {
    Title = "HollyBar",
    X = #LEFT,
    Y = #TOP,
    Width = 32,
    Height = 32,
    Borderless = True,
    Sizeable = False,
    NoModeSwitch = True
}

Const #PREFSFILE = "HollyBar.prefs"

btnwidth  = 32
btnheight = 32
buttons   = {}

Function p_ReadPrefs()
    If Not Exists( #PREFSFILE )
        Error( "No preferences file found." )
    Else
        OpenFile( 1, #PREFSFILE, #MODE_READ )
        
        While Not Eof( 1 )
            line$ = ReadLine( 1 )

            If LeftStr( line$, 1 ) <> ';' And StrLen( line$ ) > 1
                TrimStr( line$, " ", True )
                TrimStr( line$, " ", False )
                InsertItem( buttons, line$ )
            EndIf
        Wend

        CloseFile( 1 )
    EndIf
EndFunction

Function p_MakeButtons()
    For index=1 To ListItems(buttons)
        posx = ( index - 1 ) * btnwidth
        posy = 0

        LoadBrush( index, buttons[index-1] .. ".info" )
        ScaleBrush( index, btnwidth, btnheight, True )
        DisplayBrush( index, posx, posy )

        MakeButton( index,
                    #SIMPLEBUTTON,
                    posx, posy,
                    btnwidth, btnheight,
                    evtmatch )
    Next
EndFunction

Function p_RunApp( msg )
    Run( buttons[msg.ID-1] )
EndFunction

evtmatch = { OnMouseUp = p_RunApp }

p_ReadPrefs()
ChangeDisplaySize( ListItems( buttons ) * btnwidth, btnheight+1, True )
p_MakeButtons()

While( quit = False )
    WaitEvent
Wend

End 
Dazu braucht es noch eine Datei "Hollybar.prefs, in der die zu startenden Programme (die .info-Files haben müssen) zeilenweise aufgeführt sind:
; HollyBar preferences
Cubic:Microgolded
Prog:Buero/MUIbase/Muibase 


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 19 Feb 2008, 00:18 
Offline
User
Benutzeravatar

Registriert: 01 Feb 2008, 12:07
Beiträge: 20
Es scheint an Zeile 8 zu liegen (Borderless = True). Auskommentieren und gut ist.
Ich wurschtele das hier auf einem Pegasos zurecht. Kann das mal jemand mit OS3 oder OS4 testen?


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 19 Feb 2008, 07:40 
Offline
Holly-Wooder
Benutzeravatar

Registriert: 01 Feb 2008, 10:47
Beiträge: 355
Postleitzahl: 1109
Land: Deutschland
Wohnort: Dresden
Hey, super, klingt interessant. Schön auch, dass Du den Fehler (?) gefunden hast. Ist aber schon komisch, oder? Ich schau mir das heute Abend zu Hause nochmal an. Da teste ich das ganze dann auch unter OS3.9. Freu mich schon drauf!

EDIT: Ich finde auch Deinen Quelltext schön strukturiert und gut lesbar. *Daumenhoch* Ich fordere mehr solcher Quelltexte! 8)

MdG

_________________
[ img ]
CD32 + SX1; AmiKit (WinUAE) + OS3.9


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 19 Feb 2008, 09:08 
Offline
User
Benutzeravatar

Registriert: 01 Feb 2008, 12:07
Beiträge: 20
Der Fehler tritt auch auf, wenn ich das Skript mit 'hollywood -borderless hollybar.hws' aufrufe. Scheint ein Bug zu sein. Liest Andreas hier mit oder gibt es einen Bugtracker? Wenn wir wissen, ob es nur unter MorphOS oder generell auftritt, wäre es einen Bugreport wert.

Was die Lesbarkeit angeht: Anfänger sollten unbedingt den passenden Abschnitt im Hollywood-Guide beherzigen: 4.6 Styleguide suggestions. Man tut sich (und vielleicht auch anderen) wirklich einen großen Gefallen damit.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 19 Feb 2008, 09:13 
Offline
Holly-Wooder
Benutzeravatar

Registriert: 01 Feb 2008, 10:47
Beiträge: 355
Postleitzahl: 1109
Land: Deutschland
Wohnort: Dresden
psd hat geschrieben:
Der Fehler tritt auch auf, wenn ich das Skript mit 'hollywood -borderless hollybar.hws' aufrufe. Scheint ein Bug zu sein. Liest Andreas hier mit oder gibt es einen Bugtracker? Wenn wir wissen, ob es nur unter MorphOS oder generell auftritt, wäre es einen Bugreport wert.
Ich denke er hat nicht viel Zeit hier regelmäßig zu lesen. Und einen Bugtracker gibt es (meines Wissens nach) auch nicht. Das beste wäre es, das Problem entweder direkt an Andreas zu schicken oder an die Mailingliste. Da können es gleich andere testen und Andreas bekommt es auch mit.
Ein Bugtracker wäre aber vielleicht echt nicht schlecht, da man ihn ja auch für feature requests benutzen kann und so schön alles sammeln kann. Hm, müsste man mal bei ihm anfragen.
psd hat geschrieben:
Was die Lesbarkeit angeht: Anfänger sollten unbedingt den passenden Abschnitt im Hollywood-Guide beherzigen: 4.6 Styleguide suggestions. Man tut sich (und vielleicht auch anderen) wirklich einen großen Gefallen damit.
Dem kann ich nur 100%ig beipflichten!

_________________
[ img ]
CD32 + SX1; AmiKit (WinUAE) + OS3.9


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 19 Feb 2008, 22:51 
Offline
Holly-Wooder
Benutzeravatar

Registriert: 01 Feb 2008, 10:47
Beiträge: 355
Postleitzahl: 1109
Land: Deutschland
Wohnort: Dresden
Hey psd,

habe gerade versucht, Dein Programm unter OS3 zu compilieren, aber ich bekomme für folgende Zeile
If LeftStr( line$, 1 ) <And> 1 
folgende Fehlermeldung:
Zitat:
Zahlen können nicht mit Strings verglichen werden!
... Aktuelle Zeile: 28 - In Funktion: p_readprefs
Bin im Moment zu müde, um genau rauszufinden, was Du da machst. :-/ Aber vielleicht hilft Dir die Meldung? Habe auch schon verschiedenste Sachen mit der HollyBar.prefs probiert, die aktuelle Version, die ja auf alle Fälle gehen müsste, sieht so aus:
; HollyBar preferences
;Amikit:Programme/Cubic IDE
;Amikit:Programme/Designer
;Amikit:Programme/guideml
Amikit:Programme/Hollywood/GUI
Hatte erst auch die auskommentierten Pfad drin, aber da kam selbe Fehlermeldung. Ich dachte, es liegt vielleicht daran, dass es nur Ordner sind und keine Dateien, weswegen ich mal nur das HW-GUI-Prog eingefügt habe - aber wie Du siehst hat es nicht geholfen. :-(

Gute Nacht!

_________________
[ img ]
CD32 + SX1; AmiKit (WinUAE) + OS3.9


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 20 Feb 2008, 18:29 
Offline
User
Benutzeravatar

Registriert: 01 Feb 2008, 12:07
Beiträge: 20
Danke für's Testen. Die in der Fehlermeldung angemeckerte Zeile wird von der Forensoftware nicht korrekt angezeigt.

Hier ein kurzes Skript, mit dem man den Fehler reproduzieren kann:
@VERSION 3, 0
@DISPLAY {
    Width = 200,
    Height = 100,
}

buttons   = {
    "left",
    "right"
}

Function p_Output( msg )
    DebugPrint( buttons[msg.ID-1] )
EndFunction

evtmatch = { OnMouseUp = p_Output, OnRightMouseUp = p_Output }

Box( 0, 0, 100, 100, #RED )
Box( 100, 0, 100, 100, #BLUE )

MakeButton( 1, #SIMPLEBUTTON, 0, 0, 100, 100, evtmatch )
MakeButton( 2, #SIMPLEBUTTON, 100, 0, 100, 100, evtmatch )

While( quit = False )
    WaitEvent
Wend

End 
Das Skript erzeugt ein Fenster mit zwei Buttons. Beim Links- oder Rechtsklick auf den linken Button wird "left" ausgegeben. Beim Klicken auf den anderen Button "right".

Das klappt auch wunderbar, solange das Fenster nicht borderless ist. Starte das Skript mal mit "hollywood -borderless script.hws" und achte darauf, was passiert, wenn Du die Buttons oben bzw. unten anklickst.

Ich verstehe es jedenfalls nicht.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 20 Feb 2008, 18:38 
Offline
User
Benutzeravatar

Registriert: 01 Feb 2008, 12:07
Beiträge: 20
Ach ja, in der prefs müssen Pfade zu den Programmen stehen, das Programm-Verzeichnis reicht nicht.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 20 Feb 2008, 20:51 
Offline
Alter Hase

Registriert: 29 Jan 2008, 19:24
Beiträge: 81
copy and paste Test liefert nur die button ohne Aktion


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 20 Feb 2008, 21:54 
Offline
User
Benutzeravatar

Registriert: 01 Feb 2008, 12:07
Beiträge: 20
Du siehst die Ausgaben, wenn du das Skript aus einer Shell startest.

Je nachdem, wie man es aufruft, arbeitet es richtig, oder nicht.
So ist alles OK:
hollywood script.hws
Und so eben nicht:
hollywood -borderless script.hws


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 20 Feb 2008, 21:58 
Offline
Holly-Wooder
Benutzeravatar

Registriert: 01 Feb 2008, 10:47
Beiträge: 355
Postleitzahl: 1109
Land: Deutschland
Wohnort: Dresden
Ok, danke für das neue Beispielprog. Bei mir tritt das selbe Problem auf.

@malsehen: Wenn Du auf einen Button klickst, sollte in der shell, in der Du das Skript gestartet hast, entweder "left" oder "right" erscheinen!

@psd: Ich denke, ich weiß, was passiert: Wenn Du in den oberen Bereich die rechte Maustaste gedrückt hältst, kannst Du das Fenster verschieben! In den anderen Bereichen (in denen die Buttons richtig reagieren), passiert das nicht. D.h. in meinen Augen, die titlebar, die durch borderless verschwindet, wird quasi transparent und nach unten, in das Hollywood-Programm-Fenster reingeschoben und legt sich über alles, was darunter ist. Deswegen kann man das Fenster verschieben, aber direkt darunter nichts anklicken.
Ich habe mal die Buttons in der Höhe halbiert und nach unten geschoben, da klappt das wunderbar. Also:
NPrint("Hier ist oben")

Box( 0, 50, 100, 50, #RED )
Box( 100, 50, 100, 50, #BLUE )

MakeButton( 1, #SIMPLEBUTTON, 0, 50, 100, 50, evtmatch )
MakeButton( 2, #SIMPLEBUTTON, 100, 50, 100, 50, evtmatch )

Ich denke schon, dass das eine Art Bug ist. Bist Du in der Mailingliste angemeldet, um das den Bug zu melden? Sonst mache ich es gern.

MdG

_________________
[ img ]
CD32 + SX1; AmiKit (WinUAE) + OS3.9


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 20 Feb 2008, 22:10 
Offline
User
Benutzeravatar

Registriert: 01 Feb 2008, 12:07
Beiträge: 20
Ja, das könnte ein Erklärung sein.
Auf der Mailingliste bin ich seit heute, gute Gelegenheit für eine Testmail. ;)
Schreibt man da deutsch oder englisch?


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 20 Feb 2008, 22:22 
Offline
Schreiberling
Benutzeravatar

Registriert: 17 Okt 2007, 21:48
Beiträge: 1084
Postleitzahl: 4132
Land: Schweiz
Wohnort: Muttenz CH
Clyde hat geschrieben:

... folgende Fehlermeldung:
Zitat:
Zahlen können nicht mit Strings verglichen werden!
... Aktuelle Zeile: 28 - In Funktion: p_readprefs

Wenn Du beim Strichpunkt (;) anstelle
von Hochkommas Anführungs- und
Schlusszeichen nimmst, klappts.

Statt:
If LeftStr( line$, 1 ) <> ';' And StrLen( line$ ) > 1

Das hier:
If LeftStr( line$, 1 ) <> ";" And StrLen( line$ ) > 1

Griessli
Tipsi


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 20 Feb 2008, 22:36 
Offline
Holly-Wooder
Benutzeravatar

Registriert: 01 Feb 2008, 10:47
Beiträge: 355
Postleitzahl: 1109
Land: Deutschland
Wohnort: Dresden
@psd: Man schreibt da auf Englisch.
Ich weiß nicht, ob es auch ohne geht (glaube nicht), aber wenn Du eine Yahoo-ID hast bzw. Dir kostenlos erstellst, dann hast Du umfangreiche Möglichkeiten wie z.B. das Durchlesen aller bisherigen Mails der Liste, Umfragen, Projektdatenbank uvm. unter http://tech.groups.yahoo.com/group/airsoft_hollywood/
Ich habe mir auch nur deswegen einen Yahoo-Account angelegt. :-)

@Tipsi: Vielen Dank für die Hilfe! Hat funktioniert. Allerdings bekomme ich jetzt eine andere Fehlermeldung:
Zitat:
Kann Datei AmiKit:Programme/Hollywood/GUI.info nicht öffnen!
... (aktuelle Zeile: 44 - In Funktion: LoadBrush)
Habe nur noch diesen eine Pfad in der Prefs stehen. Denn Pfad gibt es wirklich, habe ich 100 Mal überprüft. Und die GUI von Hollywood ist ja ein richtiges Programm ...!?

_________________
[ img ]
CD32 + SX1; AmiKit (WinUAE) + OS3.9


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 20 Feb 2008, 23:02 
Offline
User
Benutzeravatar

Registriert: 01 Feb 2008, 12:07
Beiträge: 20
OK, die Mail ist raus.

In Zeile 44 wird einfach das Icon des Programms in einen Brush geladen. Es muß daher in einem Hollywood-tauglichen Format vorliegen. Da Du klassisch unterwegs bist, könnte das vielleicht ein Grund sein (ich bin nicht gerade der Amiga-Experte)?


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 18 Beiträge ]  Gehe zu Seite 1 2 »

Alle Zeiten sind UTC


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Gehe zu: 

cron