Seite 2 von 2

Re: XML GUI

Verfasst: 13.11.2016 15:59
von Micha122
Das ist relativ einfach zu beantworten: Ein mit der Dialog-Lib erstellte GUI ist interpretiert, somit langsamer. Aufwendigere GUIs erstellt
man besser herkömmlich.
Ok, das ist natürlich ein Argument dagegen. Habe bis jetzt ja auch nur kleine Spielereien zum testen gemacht. Da fiel das mit der langsameren Ausführung nicht auf.
Außerdem sind nicht alle GUI-Elemente verfügbar.
Auf den ersten Blick fehlen:
MDIGadget
OpenGLGadget
ShortcutGadget

Hmm, auf OpenGL kann ich verzichten, aber Shortcut und MDI benutze ich schon hin und wieder. :cry:
PS: Ich nutze meist gar keinen visuellen Designer, weil die meist meine Anforderungen nicht erfüllen/erfüllen können.
Das stimmt schon, obwohl der aktuelle Form- Designer nicht schlecht ist. Relativ Bug- frei (gefühlt) scheint er unterdessen auch zu sein.

Re: XML GUI

Verfasst: 13.11.2016 16:52
von ts-soft
Micha122 hat geschrieben:Auf den ersten Blick fehlen:
MDIGadget
OpenGLGadget
ShortcutGadget
An die hab ich gar nicht gedacht :mrgreen:
MDIGadget ist aber uninteressant, für Crossplattform, hierfür werden heutzutage eher Tabs genommen.

Ich dachte eigentlich an so wichtige Dinge wie Menü, Toolbar und Statusleiste, die fast jedes größere Programm benötigt.

Re: XML GUI

Verfasst: 13.11.2016 17:26
von Micha122
Ich dachte eigentlich an so wichtige Dinge wie Menü, Toolbar und Statusleiste, die fast jedes größere Programm benötigt.
Dachte eigentlich könnte alles außerhalb der xml definiert werden.

Hab jetzt nur mal aus der Hilfe was zusammen kopiert......mein Ausflug zur Dialog- Lib scheint beendet. :bluescreen:

Nur mal Toolbar gemeinsam mit Dialog- GUI:

Code: Alles auswählen

#XmlEncoding = #PB_UTF8

  #Dialog = 0
  #Xml = 0
  
  XML$ = "<window id='#PB_Any' name='test' text='test' minwidth='auto' minheight='auto' flags='#PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_SizeGadget'>" +
         "  <panel>" +
         "    <tab text='First tab'>" +
         "      <vbox expand='item:2'>" +
         "        <hbox>" +
         "          <button text='button 1'/>" +
         "          <checkbox text='checkbox 1'/>" +
         "          <button text='button 2'/>" +
         "        </hbox>" +
         "        <editor text='content' height='150'/>" +
         "      </vbox>" +
         "    </tab>" +
         "    <tab text='Second tab'>" +
         "    </tab>" +
         "  </panel>" +
         "</window>"
  
  If CatchXML(#Xml, @XML$, StringByteLength(XML$), 0, #XmlEncoding) And XMLStatus(#Xml) = #PB_XML_Success
    
    If CreateDialog(#Dialog) And OpenXMLDialog(#Dialog, #Xml, "test")
      wn = DialogWindow(#Dialog)
      If CreateToolBar(0, WindowID(wn))
        ToolBarStandardButton(0, #PB_ToolBarIcon_New)
        ToolBarStandardButton(1, #PB_ToolBarIcon_Open)
        ToolBarStandardButton(2, #PB_ToolBarIcon_Save)
      EndIf
      Repeat
        Event = WaitWindowEvent()
      Until Event = #PB_Event_CloseWindow 
      
    Else  
      Debug "Dialog error: " + DialogError(#Dialog)
    EndIf
  Else
    Debug "XML error: " + XMLError(#Xml) + " (Line: " + XMLErrorLine(#Xml) + ")"
  EndIf
Klare Nullrunde :oops: :( :cry:

Re: XML GUI

Verfasst: 13.11.2016 18:10
von ts-soft
ts-soft hat geschrieben:Jetzt noch der traditionelle Unterschied zwischen einer GUI (Standard-Window) und einem Dialog:
Eine GUI beinhaltet das komplette Aussehen u.a. mit Toolbars, Statusleisten usw., während ein Dialog meist dem
Abfragen/Einstellen/Informieren dient. Kleinere Anwendungen können durchaus nur aus einem oder mehreren Dialogen bestehen,
das ist aber nicht der Regelfall. Besonders nützlich sind Dialoge auch in Hinblick auf Crossplattform.
D.H. man sollte beides bzw. jedes für seinen Zweck nutzen :)

Re: XML GUI

Verfasst: 13.11.2016 20:30
von Micha122
D.H. man sollte beides bzw. jedes für seinen Zweck nutzen :)
Du hast Recht :!:

Bislang habe ich Dialoge immer mit normalen PB- Fenstern realisiert.
Da normale PB- GUI die unter Windows erstellt wurde auf Linux nicht unbedingt schön aussieht, habe ich meist zwei GUI- Versionen gepflegt.
Natürlich viel Arbeitsaufwand, von den vielen "CompilerIf #PB_Compiler_OS = #........" im Code mal ganz abgesehen.

Eine mit der Dialog Lib erstellte GUI sieht auf Linux wirklich genau so gut aus wie unter Windows. :D

Werde künftig tatsächliche GUI und Dialoge trennen, erspart mir viel Arbeit. :allright:

Danke für deine Geduld und Hilfe!