Seite 9 von 16

Verfasst: 10.09.2006 12:26
von nicolaus
ts-soft hat geschrieben:..... Unicode wäre sowieso wichtiger als Threadsafe.
Bisher aber alles nicht so einfach umzusetzen. Jede Lib einzeln per Hand zu
kompilieren werde ich nicht machen, fehlt mir die Zeit.
......
Ok da könnte man sich jertzt streiten was wichtiger ist, denn english können wohl sicher mehr leute wie Unicode ala russisch oder so.
Ich denke das Threadsicherheit eher impimentiert werden sollte als Unicode da sicher nur wenige ihr Programm nach russisch oder Japanisch oder so übersetzten wollen.

Schade wegen dem Threadsicheren zeugs und PBOSL denn ich kann so mein Prog nicht Threadsicher kompilieren und habe dadurch hier auf meinem neuen PC auch richtig Probs Da der AMD X2 5000+ den ich jetzt habe einfach nicht mit meinem Progamm zusammen arbeiten will.
Das schmiert auf solchen Prozessoren immer ab, auf "normalen" Einkern Prozessoren gehts aber ohne probs.

Naja dann hoffe ich einfach mal das es doch noch recht bald was neues in der hinsicht geben wird.

Gruß,
Nico

Verfasst: 10.09.2006 19:32
von ts-soft
Warum nutzt Du nicht einfach den Source? Ansonsten selber mit TailBite die
LIb, welche Du bnötigts compilieren, für Threadsafe sind ja keine Änderungen
notwendig.

Verfasst: 02.10.2006 01:47
von ts-soft
Update (nur windows-binary, der rest folgt später)

Added:
ScreenGadgets by Dostej (completely rewritten for PB4)

Extra:
Threadsafe Librarys:
PBOSL_ExPrinter
PBOSL_MSXML3
PBOSL_NTService
PBOSL_Process
PBOSL_RFile
PBOSL_SQLite3

Benutze Subsytem "UserLibThreadSafe"

sowie ein paar andere kleinere Korrekturen

Gruß
Thomas

Verfasst: 02.10.2006 01:48
von ts-soft
Beispiel für ScreenGadgets:

Code: Alles auswählen

Enumeration
  #Button_0
  #String_0
  #Text_0
  #ScrollBar_0
  #ScrollBar_1
  #CheckBox_0
  #CheckBox_1
  #ListIcon_0
  #ListIcon_1
  #ListIcon_2
  #ListIcon_3
  #Radio_0
  #Radio_1
  #Radio_2
  #TrackBar_0
  #TrackBar_1
  #Frame3D_0
  #Frame3D_1
  #Frame3D_2
  #Frame3D_3 
  #ImageButton_0
  #Image_0
EndEnumeration


Procedure.f FpS2() 
  Static Start_Zeit, Frames, SendFrames.f 
  Zeit_akt = ElapsedMilliseconds()
  Frames + 1 
  ZeitU = Zeit_akt - Start_Zeit 
  If ZeitU 
    SendFrames = Frames / ZeitU 
  EndIf  
  If Zeit_akt >= Start_Zeit + 10000 
    Start_Zeit = Zeit_akt 
    Frames = 0 
  EndIf 
  ProcedureReturn SendFrames * 1000 
EndProcedure

If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse()= 0
  MessageRequester("Fehler", "init") 
  End 
EndIf

If OpenWindow(1, 0, 0, 1024, 768, "", #PB_Window_BorderLess)
  If OpenWindowedScreen(WindowID(1), 0,0, 1024, 768, 0, 0, 0)
    ; create a mouse
    If CreateSprite(0, 8, 8) 
      If StartDrawing(SpriteOutput(0)) 
        Circle(4, 4, 4, RGB(255, 255, 255)) 
        StopDrawing()
      EndIf 
    EndIf
    
    ;{ build Screengadgets
    ; set the standard appearance for the gadgets to build
    CreateSprite(2, 1024, 768)
    StartDrawing(SpriteOutput(2))
    Box(0, 0, 1024, 768, $0080FF)
    DrawingMode(4)
    For x = 0 To 200
      Circle(Random(900) + 50, Random(668) + 50, Random(40) + 10, RGB(Random(255), Random(255), Random(255)))
    Next
    StopDrawing()
    
    CreateImage(11, 100, 60)
    StartDrawing(ImageOutput(11))
    Box(0, 0, 100, 60, $00FFFF)
    DrawingMode(4)
    For x = 0 To 200
      Circle(Random(90) + 5, Random(50) + 5, Random(4) + 1, RGB(Random(255), Random(255), Random(255)))
    Next
    StopDrawing()
    
    
    If 0 ; show the gadgets with an image background; play with this to see the framerate drop if the image is too large
      #Imagesize = 50
      CreateImage(1, #Imagesize, #Imagesize)
      StartDrawing(ImageOutput(1))
      Box(0, 0, #Imagesize, #Imagesize, $0080FF)
      DrawingMode(4)
      For x = 0 To #Imagesize>>1
        Circle(Random(#Imagesize-10) + 10, Random(#Imagesize-10) + 10, Random(#Imagesize-10) + 10, RGB(Random(255), Random(255), Random(255)))
      Next
      StopDrawing()
      SG_SetBackground(2)
      SG_SetBackgroundImage(ImageID(1))
      SG_SetColor($00FFFF) 
    Else ; show the gadgets transparent
      SG_SetBackground(0)
      SG_SetColor($00FFFF)
    EndIf
    testfont = LoadFont(5, "Albany", 20)
    s.s
    ; 
    ; berechne die Objekte
    s = #CRLF$ + "teststring1" + ": " +  #CRLF$
    s = s + "teststring2" + ": " +  #CRLF$ + #CRLF$
    s = s + "teststring3" + ": " + #CRLF$ + #CRLF$
    s = s + "teststring4" + ": " + " %" + #CRLF$
    s = s + "teststring5" + #CRLF$
    s = s + "teststring6" + #CRLF$
    s = s + "teststring7" + #CRLF$
    
    ;
    SG_EditorGadget(#String_0, 40, 180, 230, 90)
    SG_SetGadgetText(#String_0, s)
    SG_SetGadgetBackground(#String_0, 0)
    SG_SetGadgetColor(#String_0, $FFFFFF)
    SG_AddGadgetItem(#String_0, -1, "Test 1. item")
    SG_SetGadgetItemFont(#String_0, 2, 5)
    SG_SetGadgetItemColor(#String_0, 2, $0000FF, $FF0000)
    
    SG_StringGadget(#Text_0, 40, 40, 240, 40, "Textgadget eingabetext", #PB_Text_Border | #PB_Text_Center)
    
    SG_CheckBoxGadget(#CheckBox_0, 40, 340, 240, 20, "CB 0")
    
    SG_ScrollBarGadget(#ScrollBar_0, 400, 10, 220, 20, 0, 100, 10)
    SG_ScrollBarGadget(#ScrollBar_1, 750, 80, 20, 220, 0, 100, 10, #PB_ScrollBar_Vertical)
    SG_OptionGadget(#Radio_0, 40, 410, 280, 20, "RD 0")
    SG_OptionGadget(#Radio_1, 40, 430, 280, 20, "RD 1")
    SG_CheckBoxGadget(#CheckBox_1, 40, 360, 240, 20, "CB 1")
    SG_OptionGadget(#Radio_2, 340, 450, 280, 20, "RD 2")
    SG_OptionGadget(40, 340, 470, 280, 20, "RD 2")
    
    
    SG_ListIconGadget(#ListIcon_0, 430, 80, 250, 315, "Column0", 100, #PB_ListIcon_AlwaysShowSelection | #PB_ListIcon_GridLines) ; 
    SG_AddGadgetColumn(#ListIcon_0, 1, "Column1", 100)
    For x = 1 To 80 
      SG_AddGadgetItem(#ListIcon_0, -1, "test " + Str(x) + Chr(10) + "teil 2 / " + Str(x))
    Next
    
    SG_SetGadgetItemState(#ListIcon_0, 11, 1)
    
    SG_SetGadgetItemColor(#ListIcon_0, 0, $FF0000, -1)
    SG_SetGadgetItemColor(#ListIcon_0, 1, $00FF00, -1)
    
    CreateImage(201, 16, 16)
    StartDrawing(ImageOutput(201))
    Box(0, 0, 16, 16, $FF00FF)
    StopDrawing()
    SG_AddGadgetItem(#ListIcon_0, 5, "test 5neu", ImageID(201))
    
    CreateImage(200, 16, 16)
    StartDrawing(ImageOutput(200))
    Box(0, 0, 16, 16, $0000FF)
    StopDrawing()
    SG_AddGadgetItem(#ListIcon_0, 8, "test 8 neu", ImageID(200))
    
    
    SG_SetGadgetBackground(#ListIcon_0, 0)
    SG_SetGadgetColor(#ListIcon_0, $00FFFF)
    
    SG_ListIconGadget(#ListIcon_1, 900, 80, 100, 100, "Column0", 100, #PB_ListIcon_GridLines)
    SG_ListIconGadget(#ListIcon_3, 100, 80, 100, 95, "Column0", 100, #PB_ListIcon_GridLines)
    For x = 1 To 50 ; max number of entries for a Listicongadget
      SG_AddGadgetItem(#ListIcon_3, -1, "test " + Str(x))
    Next
    
    SG_ListIconGadget(#ListIcon_2, 700, 380, 100, 90, "Column0", 100, #PB_ListIcon_GridLines)
    
    SG_TrackBarGadget(#TrackBar_0, 40, 550, 250, 30, 0, 100, #PB_TrackBar_Ticks)
    
    
    SG_TrackBarGadget(#TrackBar_1, 800, 50, 250, 30, 0, 4, #PB_TrackBar_Vertical | #PB_TrackBar_Ticks)
    SG_ButtonGadget(#Button_0, 650, 660, 120, 40, "OK")
    SG_SetGadgetColor(#Button_0, $FFFFFF)
    SG_SetGadgetBackground(#Button_0, 0)
    
    SG_SetColor($FFFFFF)
    SG_Frame3DGadget(#Frame3D_0, 300, 510, 80, 20, "TEst 1")
    SG_Frame3DGadget(#Frame3D_1, 400, 510, 80, 20, "TEst 2", #PB_Frame3D_Double)
    SG_Frame3DGadget(#Frame3D_2, 500, 510, 80, 20, "TEst 3", #PB_Frame3D_Single)
    SG_Frame3DGadget(#Frame3D_3, 600, 510, 80, 20, "TEst 4", #PB_Frame3D_Flat)
    
    SG_ImageGadget(#Image_0, 300, 550, 100, 60, ImageID(11), 0)
    SG_ButtonImageGadget(#ImageButton_0, 450, 550, 100, 60, ImageID(11), 0)
    ;} 
    
    SG_SetGadgetState(#TrackBar_1, 4)
    
    ;{ Eventloop
    Repeat ; Start of the event loop
      ClearScreen(0)
      ; DisplaySprite(2, 0, 0) ; play with this for a background to see the "transparence" of the gadgets
      ; 
      StartDrawing(ScreenOutput())
      
      DrawText(20, 20,StrF(FpS2()))
      StopDrawing()
      
      SG_DrawAllGadgets()
      ExamineMouse () 
      DisplayTransparentSprite(0, MouseX(), MouseY())
      
      FlipBuffers()
      
      ;{ standard loop
      Event = SG_ScreenGadgetEvent() ; This line checks if an event happened
      
      GadgetID = SG_EventScreenGadgetID() ; Is it a gadget event?
      
      EventType = SG_EventType() ; The event type
      
      If Event = #PB_Event_Gadget
        
        If GadgetID = #Button_0
          If EventType = #SG_EventType_LeftRelease
            SG_FreeAllGadgets()
            Event = #PB_Event_CloseWindow
          EndIf
          
        ElseIf GadgetID = #String_0
          If EventType = #SG_EventType_LeftClick
            SG_SetGadgetText(#String_0, "Zeile1" + #CRLF$ + "Zeile2" + #CRLF$ + "Zeile3" + #CRLF$ + "Zeile4")
          EndIf
          
        ElseIf GadgetID = #Text_0
          If EventType = #SG_EventType_LeftClick
            SG_SetGadgetText(#Text_0, "New text")
          ElseIf EventType = #SG_EventType_RightClick
            SG_SetGadgetText(#Text_0, "On the right")
          ElseIf EventType = #SG_EventType_Wheel
            SG_SetGadgetText(#Text_0, Str(SG_MouseWheel_GL))
          EndIf
          
        ElseIf GadgetID = #CheckBox_0
          
        ElseIf GadgetID = #CheckBox_1
          
        ElseIf GadgetID = #ImageButton_0
          If EventType = #SG_EventType_LeftRelease
            SG_ClearGadgetItemList(#ListIcon_0)
            For x = 1 To 400 ; max number of entries for a Listicongadget
              SG_AddGadgetItem(#ListIcon_0, -1, "test " + Str(x) + Chr(10) + "teil 2 / " + Str(x))
            Next
            
            SG_ShowListItem(#ListIcon_0, 25)
            SG_SetGadgetState(#TrackBar_0, 50)
          EndIf
          SG_SetGadgetState(#ScrollBar_1, 50)
          
        ElseIf GadgetID = #Radio_0
          
        ElseIf GadgetID = #Radio_1
          
        ElseIf GadgetID = #TrackBar_0
          SG_SetGadgetText(#String_0, "TrackBar 0: " + Str(SG_GetGadgetState(#TrackBar_0)))
          
        ElseIf GadgetID = #TrackBar_1
          SG_SetGadgetText(#String_0, "TrackBar 2: " + Str(SG_GetGadgetState(#TrackBar_1)))
          
        ElseIf GadgetID = #ListIcon_0
          If EventType = #SG_EventType_LeftRelease
            ; debug " "
            ; debug "element: " + Str(SG_GetGadgetState(#ListIcon_0))
            ; debug "inhalt: " + SG_GetGadgetItemText(#ListIcon_0, SG_GetGadgetState(#ListIcon_0))
            ; debug "inhalt: " + SG_GetGadgetItemText2(#ListIcon_0, SG_GetGadgetState(#ListIcon_0), 1)
          EndIf
          
        ElseIf GadgetID = #ListIcon_1
          If EventType = #SG_EventType_LeftRelease
            SG_ClearGadgetItemList(#ListIcon_0)
            For x = 1 To 70 
              SG_AddGadgetItem(#ListIcon_0, -1, "test " + Str(x) + Chr(10) + "teil 2 / " + Str(x))
            Next
          EndIf
          
        ElseIf GadgetID = #ScrollBar_0
          SG_SetGadgetText(#String_0, "Scrollbar 1: " + Str(SG_GetGadgetState(#ScrollBar_0)) + #CRLF$ + "Scrollbar 2: " + Str(SG_GetGadgetState(#ScrollBar_1)))
          
        ElseIf GadgetID = #ScrollBar_1
          SG_SetGadgetText(#String_0, "Scrollbar 1: " + Str(SG_GetGadgetState(#ScrollBar_0)) + #CRLF$ + "Scrollbar 2: " + Str(SG_GetGadgetState(#ScrollBar_1)))
          
        EndIf
        
      EndIf
      ;}
      Delay(1)
      
      ExamineMouse()
      
    Until Event = #PB_Event_CloseWindow Or MouseButton(2) ; End of the event loop
    
    ;}
  EndIf
EndIf
;}


End

Verfasst: 02.10.2006 03:04
von ts-soft
SubSystem UserLibThreadSafe

hinzugefügt:
PBOSL_ScreenGadgets

SubSystem UserLibUnicode

hinzugefügt:
PBOSL_RFile
PBOSL_ScreenGadgets

Verfasst: 02.10.2006 08:23
von dige
@TS-Soft: Gute Arbeit! :allright:

Verfasst: 02.10.2006 08:33
von ts-soft
dige hat geschrieben:@TS-Soft: Gute Arbeit! :allright:
Danke :D

Leider klappt das mit den SubSystem auch nicht immer, vor allem bei
Unicode, aber ein grosser Teil sollte erstmal funktionieren.

ScreenGadgets konnte ich für alle SubSysteme kompilieren, aber auch nur,
weil die Lib keinerlei API verwendet.

Gruß
Thomas

Verfasst: 03.10.2006 12:13
von Creature
ich hab den fred nicht gelesen.
darum ne frage, eigentlich ne blöde frage. ich stell sie aber trotzdem.
ist die lib-sammlung vollständig an PB 4.0 angepasst?

Verfasst: 03.10.2006 16:19
von ts-soft
Creature hat geschrieben:ich hab den fred nicht gelesen.
darum ne frage, eigentlich ne blöde frage. ich stell sie aber trotzdem.
ist die lib-sammlung vollständig an PB 4.0 angepasst?
Alle im ersten Thread aufgeführten Libs für Windows sind an PB4 angepaßt.
Libs für PB3.94 werden nicht mehr Supported.

Viele Libs, die mit TailBite erstellt wurden unterstützen zur Zeit kein Unicode,
bzw. Threadsafe.

Teilweise geht es jetzt per SubSystem. Einige Libs sind auch so
Unicode-tauglich.

Gruß
Thomas

Verfasst: 03.10.2006 18:24
von Creature
dank dir :)