Aktuelle Zeit: 22.01.2021 05:54

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: WARNING - Probleme beim Programmieren unter Linux
BeitragVerfasst: 31.10.2020 11:12 
Offline

Registriert: 06.03.2019 21:52
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:
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?

_________________
Der beste Fisch ist der Schnitzel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: WARNING - Probleme beim Programmieren unter Linux
BeitragVerfasst: 31.10.2020 12:09 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
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/viewtopic.php?f=15&t=71992

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.7 / Android 7.0 ;)

Manchmal muß das Rad neu erfunden werden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: WARNING - Probleme beim Programmieren unter Linux
BeitragVerfasst: 31.10.2020 16:32 
Offline

Registriert: 06.03.2019 21:52
Hallo ccode_new!

Aha. Und wie mach ich das, wenn ich GTK2 oder QT verwenden wollte?

_________________
Der beste Fisch ist der Schnitzel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: WARNING - Probleme beim Programmieren unter Linux
BeitragVerfasst: 31.10.2020 16:46 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
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 / OPC-Helper DLL
PB v3.30 / v5.7x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: WARNING - Probleme beim Programmieren unter Linux
BeitragVerfasst: 01.11.2020 12:21 
Offline

Registriert: 06.03.2019 21:52
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.

_________________
Der beste Fisch ist der Schnitzel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: WARNING - Probleme beim Programmieren unter Linux
BeitragVerfasst: 01.11.2020 12:29 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Diese Warnung kannst du ignorieren.

_________________
Betriebssysteme: MX Linux 19 / Windows 10 / Mac OS 10.15.7 / Android 7.0 ;)

Manchmal muß das Rad neu erfunden werden.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye