WARNING - Probleme beim Programmieren unter Linux

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
bin_neu_hier
Beiträge: 105
Registriert: 06.03.2019 21:52

WARNING - Probleme beim Programmieren unter Linux

Beitrag von bin_neu_hier »

Hallo allerseits,

brauche Euren beistand beim Programmieren unter Linux. Erstes Prob war, dass die Installationsroutine (aktuelles Kubuntu 64) nicht funzen wollte, checkinstall verlangt Komponenten, die das aktuelle Kubuntu scheinbar nicht hat.

Programmieren klappt scheinbar trotzdem (soweit ich das nach nur wenigen Schritten im Neuland beurteilen kann), allerdings nicht ohne - ... - nennen wir es mal "Erscheinungen".

Mein erster Test mit

Code: Alles auswählen

Enumeration
  #parentwin
  #parentstatusbar
  #appfont
  
EndEnumeration


;- Variablen
Global wwevent.i, progend.i, but1.i, txt1.i, appfontid.i, windowcol.i


Define hFont.i

;- Canvasbutton

Structure buttondata
  xpos.i
  ypos.i
  xpixel.i
  ypixel.i
  fgcol.i
  fgcolhover.i
  bgcol.i
  bgcolhover.i
  text.s
EndStructure

Global Dim cgbuttons.buttondata(10)
Global cgb0, cgb1, cgb2, cgb3, cgb4, cgb5, cgb6, cgb7, cgb8, cgb9


Procedure.i LoadPrivateFont(strFontFile.s, strFontFace.s, *pFontStart, *pFontEnd, iPointSize.i, iFlags.i = 0)
  Protected hFont.i
  Protected hFile.i
  strFontFile = GetTemporaryDirectory() + strFontFile
  If FileSize(strFontFile) = -1
    hFile = CreateFile(#PB_Any, strFontFile)
    If hFile
      WriteData(hFile, *pFontStart, *pFontEnd - *pFontStart)
      CloseFile(hFile)
    EndIf
  EndIf
  RegisterFontFile(strFontFile)
  hFont = LoadFont(#PB_Any, strFontFace, iPointSize, iFlags)
  If Not IsFont(hFont)
    hFont = GetGadgetFont(#PB_Default) 
  EndIf
  ProcedureReturn hFont
EndProcedure



Procedure drawcgbutton(gadgetnum.i,cgb.i)
  
  If StartDrawing(CanvasOutput(gadgetnum))
    DrawingMode(#PB_2DDrawing_Transparent)
    ;RoundBox(0, 0, GadgetWidth(gadgetnum), GadgetHeight(gadgetnum), 3,3, cgbuttons.buttondata(cgb)\bgcol)
    Box(0, 0, GadgetWidth(gadgetnum), GadgetHeight(gadgetnum), cgbuttons.buttondata(cgb)\bgcol)
    DrawingFont(appfontid)
    Breite = TextWidth(cgbuttons.buttondata(cgb)\text) : x = ((GadgetWidth(gadgetnum) - Breite) / 2)
    Hoehe = TextHeight(cgbuttons.buttondata(cgb)\text) : y = ((GadgetHeight(gadgetnum) - Hoehe) / 2) -1
    DrawText(x, y, cgbuttons.buttondata(cgb)\text , cgbuttons.buttondata(cgb)\fgcol)
    StopDrawing()
    ProcedureReturn 1
  EndIf
  
  
EndProcedure


Procedure drawcgbuttonhover(gadgetnum.i,cgb.i)
  If StartDrawing(CanvasOutput(gadgetnum))
    DrawingMode(#PB_2DDrawing_Transparent)
    ;RoundBox(0, 0, GadgetWidth(gadgetnum), GadgetHeight(gadgetnum), 3,3, cgbuttons.buttondata(cgb)\bgcolhover)
    Box(0, 0, GadgetWidth(gadgetnum), GadgetHeight(gadgetnum), cgbuttons.buttondata(cgb)\bgcolhover)
    DrawingFont(appfontid)
    Breite = TextWidth(cgbuttons.buttondata(cgb)\text) : x = ((GadgetWidth(gadgetnum) - Breite) / 2)
    Hoehe = TextHeight(cgbuttons.buttondata(cgb)\text) : y = ((GadgetHeight(gadgetnum) - Hoehe) / 2) -1
    DrawText(x, y, cgbuttons.buttondata(cgb)\text , cgbuttons.buttondata(cgb)\fgcolhover)
    StopDrawing()
    ProcedureReturn 1
  EndIf
  
EndProcedure


Procedure createcgbutton(cgb.i)
  gadgetnum.i = CanvasGadget(#PB_Any, cgbuttons.buttondata(cgb)\xpos, cgbuttons.buttondata(cgb)\ypos, cgbuttons.buttondata(cgb)\xpixel, cgbuttons.buttondata(cgb)\ypixel)
  
  If gadgetnum
    
    If StartDrawing(CanvasOutput(gadgetnum))
      DrawingMode(#PB_2DDrawing_Transparent)
      Box(0, 0, GadgetWidth(gadgetnum), GadgetHeight(gadgetnum), windowcol)
      StopDrawing()
      If drawcgbutton(gadgetnum, cgb) = 1
        ProcedureReturn gadgetnum
      EndIf
    Else
      ProcedureReturn 0
    EndIf
  Else
    ProcedureReturn 0
  EndIf
  
EndProcedure

OpenWindow(#parentwin, 0, 0, 600, 600, "colbutton", #PB_Window_SystemMenu)

windowcol = RGB(255,255,255)
SetWindowColor(#parentwin,windowcol)





appfontid = FontID(LoadPrivateFont("YanoneKaffeesatz-Regular.ttf", "Yanone Kaffeesatz", ?start_myfont, ?end_myfont, 18))
SetGadgetFont(#PB_Default, appfontid)


cgbuttons.buttondata(0)\xpos = 10
cgbuttons.buttondata(0)\ypos = 10
cgbuttons.buttondata(0)\xpixel = 200
cgbuttons.buttondata(0)\ypixel = 30
cgbuttons.buttondata(0)\fgcol = RGB(255,255,255)
cgbuttons.buttondata(0)\fgcolhover = RGB(0,0,255)
cgbuttons.buttondata(0)\bgcol = RGB(255,0,0)
cgbuttons.buttondata(0)\bgcolhover = RGB(255,255,0)
cgbuttons.buttondata(0)\text = "Guggenheimer Ypsilon"



cgbuttons.buttondata(1)\xpos = 10
cgbuttons.buttondata(1)\ypos = 50
cgbuttons.buttondata(1)\xpixel = 200
cgbuttons.buttondata(1)\ypixel = 30
cgbuttons.buttondata(1)\fgcol = RGB(255,255,255)
cgbuttons.buttondata(1)\fgcolhover = RGB(0,0,0)
cgbuttons.buttondata(1)\bgcol = RGB(255,0,0)
cgbuttons.buttondata(1)\bgcolhover = RGB(255,0,255)
cgbuttons.buttondata(1)\text = "Lago Maggiore"


cgb0 = createcgbutton(0)


cgb1 = createcgbutton(1)







Repeat
  wwevent= WaitWindowEvent()
  
  Select wwevent
    Case #PB_Event_CloseWindow
      DeleteFile(GetTemporaryDirectory() + "YanoneKaffeesatz-Regular.ttf")
      progend= #True
      
    Case #PB_Event_Gadget
      
      Select EventGadget()
          
          
        Case cgb0
          x_mouse = GetGadgetAttribute(cgb0, #PB_Canvas_MouseX)
          y_mouse = GetGadgetAttribute(cgb0, #PB_Canvas_MouseY)
          Select EventType()
            Case #PB_EventType_LeftClick
              If x_mouse <= GadgetWidth(cgb0) And y_mouse <= GadgetHeight(cgb0)
                Debug "cgb0 links klick"
                
                
                
              EndIf
            Case #PB_EventType_RightClick
              If x_mouse <= GadgetWidth(cgb0) And y_mouse <= GadgetHeight(cgb0)
                Debug "cgb0 rechts klick"
                
                
              EndIf
            Case #PB_EventType_MouseEnter
              drawcgbuttonhover(cgb0,0)
              Debug "cgb0 maus drin"
              
            Case #PB_EventType_MouseLeave
              drawcgbutton(cgb0,0)
              Debug "cgb0 maus raus"
              
          EndSelect
          
        Case cgb1
          x_mouse = GetGadgetAttribute(cgb1, #PB_Canvas_MouseX)
          y_mouse = GetGadgetAttribute(cgb1, #PB_Canvas_MouseY)
          Select EventType()
            Case #PB_EventType_LeftClick
              If x_mouse <= GadgetWidth(cgb1) And y_mouse <= GadgetHeight(cgb1)
                Debug "cgb1 links klick"
                
                
                
              EndIf
            Case #PB_EventType_RightClick
              If x_mouse <= GadgetWidth(cgb1) And y_mouse <= GadgetHeight(cgb1)
                Debug "cgb1 rechts klick"
                
                
                
              EndIf
            Case #PB_EventType_MouseEnter
              drawcgbuttonhover(cgb1,1)
              Debug "cgb1 maus drin"
              
            Case #PB_EventType_MouseLeave
              drawcgbutton(cgb1,1)
              Debug "cgb1 maus raus"
              
          EndSelect
          
      EndSelect
      
  EndSelect
  
Until progend
End

DataSection
  start_myfont:
  IncludeBinary "/home/chef/purebasic/examples/sources/yk/YanoneKaffeesatz-Regular.ttf"
  end_myfont:
EndDataSection

funktioniert teilweise - beispielsweise nicht das SetWindowColor. Die Programmierumgebung folgende "Kommentare" ab:

[09:45:42] Warte auf den Start des Executable...
[09:45:42] Executable-Typ: Linux - x64 (64bit, Unicode)
[09:45:42] Executable gestartet.
[09:45:42] [WARNING] colbutton.pb (Zeile: 1)
[09:45:42] [WARNING] GLib-GIO (DEBUG): _g_io_module_get_default: Found default implementation local (GLocalVfs) for ‘gio-vfs’
[09:46:24] Die Programmausführung ist abgeschlossen.
(in der vorletzten Zeile werden nach dem â noch jeweils 2 "sonderbare quadratische Schriftzeichen" gezeigt, die hier nicht wiedergegeben werden)

Was hat es mit den beiden "Warnings" auf sich?
Wie bekommt man das SetWindowColor in den Griff?
Bin mit 21 erstmals mit Computern in Kontakt gekommen und konnte mich daher in meiner Jugend ganz auf den Alkohol konzentrieren. Bin nun seit fast 40 Jahren programmiertechnisch konstant auf Anfänger-Level, konnte jedoch beim Thema Alkohol eine gewisse Virtuosität erreichen.
Irgendwas muss man ja gut können.
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: WARNING - Probleme beim Programmieren unter Linux

Beitrag von ccode_new »

Hallöchen!

Du stößt hier auf ein altbekanntes Problem mit GTK3 unter Linux.

Verwende GTK2 oder QT als Subsystem, oder nutze diese Lösung:

https://www.purebasic.fr/english/viewto ... 15&t=71992
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
bin_neu_hier
Beiträge: 105
Registriert: 06.03.2019 21:52

Re: WARNING - Probleme beim Programmieren unter Linux

Beitrag von bin_neu_hier »

Hallo ccode_new!

Aha. Und wie mach ich das, wenn ich GTK2 oder QT verwenden wollte?
Bin mit 21 erstmals mit Computern in Kontakt gekommen und konnte mich daher in meiner Jugend ganz auf den Alkohol konzentrieren. Bin nun seit fast 40 Jahren programmiertechnisch konstant auf Anfänger-Level, konnte jedoch beim Thema Alkohol eine gewisse Virtuosität erreichen.
Irgendwas muss man ja gut können.
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: WARNING - Probleme beim Programmieren unter Linux

Beitrag von mk-soft »

Bei Compiler-Option im Library Subsystem "gkt2" oder "qt" eintragen

Für "qt" müssen noch developer Pakets installiert werden.

Link: Simple Install Of PureBasic
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
bin_neu_hier
Beiträge: 105
Registriert: 06.03.2019 21:52

Re: WARNING - Probleme beim Programmieren unter Linux

Beitrag von bin_neu_hier »

Hallo!

Vielen Dank für die Hilfe! Mit "gtk2" funktioniert SetWindowColor, mit "qt" nicht. Werde also mit "gtk2" weitermachen.

Habe zwar immer noch

[11:19:30] Warte auf den Start des Executable...
[11:19:30] Executable-Typ: Linux - x64 (64bit, Unicode)
[11:19:30] Executable gestartet.
[11:19:30] [WARNING] colbutton.pb (Zeile: 1)
[11:19:30] [WARNING] Gtk (WARNING): Unable to locate theme engine in module_path: "adwaita",
[11:19:35] Die Programmausführung ist abgeschlossen.

diese Warnings, hoffe aber, dass ich das ignorieren kann. Falls jemand der Ansicht sei, das dürfe nicht ignoriert werden, dann bitte ich um Hilfestellung.
Bin mit 21 erstmals mit Computern in Kontakt gekommen und konnte mich daher in meiner Jugend ganz auf den Alkohol konzentrieren. Bin nun seit fast 40 Jahren programmiertechnisch konstant auf Anfänger-Level, konnte jedoch beim Thema Alkohol eine gewisse Virtuosität erreichen.
Irgendwas muss man ja gut können.
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: WARNING - Probleme beim Programmieren unter Linux

Beitrag von ccode_new »

Diese Warnung kannst du ignorieren.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Antworten