TextGadget mit GTK formatieren

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
vonTurnundTaxis
Beiträge: 2130
Registriert: 06.10.2004 20:38
Wohnort: Bayreuth
Kontaktdaten:

TextGadget mit GTK formatieren

Beitrag von vonTurnundTaxis »

Nach stundenlanger Recherche hier endlich ein funktionierendes Beispiel, wie man ein GTK-Textview-Widget formatieren kann:

Code: Alles auswählen

;Philipp Schmieder (WishMaster/vonTurnundTaxis)
;http://www.noname-development.de
;03.01.2007

;Released under the terms of the LGPL (http://www.gnu.org/licenses/lgpl.html)
;PureBasic 4.0 Beta 2 (Linux)

Define StartIter.GtkTextIter
Define EndIter.GtkTextIter
Define PBStartIter.GtkTextIter
Define PBEndIter.GtkTextIter

Enumeration
    #Pango_Style_Normal
    #Pango_Style_Oblique
EndEnumeration

#Pango_Weight_Normal = 400
#Pango_Weight_Bold = 800

If OpenWindow(1, 1, 1, 800, 530, "") 
    If CreateGadgetList(WindowID(1)) 
        
        
        EditorGadget(1, 0, 0, 800, 500)
        SetGadgetText(1, "PureBasic" + Chr(10) + "PureBasic, ontwikkeld door Frédéric Laboureur (Fantaisie Software, Frankrijk)," + Chr(10) + "is een commerciële compiler voor Windows, Linux, AmigaOS en Mac OS. De programma's zijn klein en" + Chr(10) + "snel, de syntax een mix tussen BASIC en C. Naast de vele krachtig geoptimaliseerde bibliotheken" + Chr(10) + "(GUI-gadgets, beeld, geluid, netwerk, database, compressie, cryptografie, ....) kan men rechtstreeks" + Chr(10) + "WinAPI aanspreken en Assembler-code gebruiken (Inline-Assembler). Bovendien is het mogelijk om" + Chr(10) + "een bibliotheek te schrijven. Verder biedt PureBasic sinds versie 3.5 een rudimentaire 3D-engine" + Chr(10) + "(OGRE 3D), waarmee het mogelijk is snel en eenvoudig kleine 3-D toepassingen te programmeren." + Chr(10) + Chr(10) + "Een essentieel voordeel vergeleken met andere programmeertalen is het bijzondere feit dat de taal" + Chr(10) + "doorlopend ontwikkeld wordt, steeds krachtiger wordt en dat nieuwe instructies de taal verder" + Chr(10) + "optimaliseren. De aanschaf van PureBasic houdt automatisch in dat alle toekomstige updates gratis" + Chr(10) + "zijn in de vorm van downloads. Verdere kosten bij het verkopen van door u ontwikkelde programma's" + Chr(10) + "zijn er niet, geschreven programma's kunnen licentie-vrij verhandeld worden zonder rekening te" + Chr(10) + "hoeven houden met beperkingen van de kant van de fabrikant.")
        
        Buffer = gtk_text_view_get_buffer_(GadgetID(1)) 



        ButtonGadget(2, 0, 500, 200, 30, "Reset Styles")
        ButtonGadget(3, 200, 500, 200, 30, "Bold")
        ButtonGadget(4, 400, 500, 200, 30, "Oblique")
        ComboBoxGadget(5, 600, 500, 200, 30)
        AddGadgetItem(5, 0, "very small")
        AddGadgetItem(5, 0, "small")
        AddGadgetItem(5, 0, "big")
        AddGadgetItem(5, 0, "huge")

        gtk_text_buffer_create_tag_(Buffer, "bold", "weight", #Pango_Weight_Bold)
        gtk_text_buffer_create_tag_(Buffer, "oblique", "style", #Pango_Style_Oblique)
        
        gtk_text_buffer_create_tag_(Buffer, "very small", "size", 4000)
        gtk_text_buffer_create_tag_(Buffer, "small", "size", 9000)
        gtk_text_buffer_create_tag_(Buffer, "big", "size", 15000)
        gtk_text_buffer_create_tag_(Buffer, "huge", "size", 30000)

        gtk_text_buffer_get_iter_at_offset_(Buffer, @PBStartIter, 0)
        gtk_text_buffer_get_iter_at_offset_(Buffer, @PBEndIter, 9)
        
        
        gtk_text_buffer_apply_tag_by_name_(Buffer, "bold", @PBStartIter, @PBEndIter) 
        gtk_text_buffer_apply_tag_by_name_(Buffer, "big", @PBStartIter, @PBEndIter) 

        
        Repeat
            Event = WaitWindowEvent() 
            If Event = #PB_Event_Gadget
                Select EventGadget()
                    Case 2
                        gtk_text_buffer_get_selection_bounds_(Buffer, @StartIter, @EndIter)
                        gtk_text_buffer_remove_all_tags_(Buffer, @StartIter, @EndIter) 
                    Case 3
                        gtk_text_buffer_get_selection_bounds_(Buffer, @StartIter, @EndIter)
                        gtk_text_buffer_apply_tag_by_name_(Buffer, "bold", @StartIter, @EndIter)
                    Case 4
                        gtk_text_buffer_get_selection_bounds_(Buffer, @StartIter, @EndIter)
                        gtk_text_buffer_apply_tag_by_name_(Buffer, "oblique", @StartIter, @EndIter) 
                    Case 5
                        gtk_text_buffer_get_selection_bounds_(Buffer, @StartIter, @EndIter)
                        gtk_text_buffer_remove_tag_by_name_(Buffer, "small", @StartIter, @EndIter)
                        gtk_text_buffer_remove_tag_by_name_(Buffer, "very small", @StartIter, @EndIter)
                        gtk_text_buffer_remove_tag_by_name_(Buffer, "big", @StartIter, @EndIter)
                        gtk_text_buffer_remove_tag_by_name_(Buffer, "huge", @StartIter, @EndIter)
                        gtk_text_buffer_apply_tag_by_name_(Buffer, GetGadgetText(5), @StartIter, @EndIter) 
                EndSelect
            EndIf
        Until Event = #PB_Event_CloseWindow
    EndIf
EndIf
//Nachtrag:
PB-Version hinzugefügt :wink:
Zuletzt geändert von vonTurnundTaxis am 03.01.2007 14:09, insgesamt 1-mal geändert.
Nicht durch Zorn, sondern durch Lachen tötet man
ClipGrab | Pastor - jetzt mit kurzen URLs!
Benutzeravatar
vonTurnundTaxis
Beiträge: 2130
Registriert: 06.10.2004 20:38
Wohnort: Bayreuth
Kontaktdaten:

Beitrag von vonTurnundTaxis »

Vielleicht verwendest du das falsche Betriebssystem? :lol:
Nicht durch Zorn, sondern durch Lachen tötet man
ClipGrab | Pastor - jetzt mit kurzen URLs!
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Sirhc.ITI hat geschrieben: Structure not found: GtkTextIter :?

Code: Alles auswählen

Structure GtkTextIter
  dummy1.l
  dummy2.l
  dummy4.l
  dummy5.l
  dummy6.l
  dummy7.l
  dummy8.l
  dummy9.l
  dummy10.l
  dummy11.l
  dummy12.l
  dummy13.l
  dummy14.l
EndStructure
Daran solls nicht hapern :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Funzt hier auch, ganz nett :). Dafür hab ich mir nun extra PureBasic wieder
installiert :P.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@vTuT
im Kopf deines Listings fehlt ein deutlicher Hinweis auf die PB-Version. ;)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten