; Module/File: Editor_ScrollToMark.pb ; Function: Set Mark and scrolls to position - Linux gtk2/gtk3 ; Author: Omi ; Date: Mar. 30, 2015 ; Version: 0.1 ; Target Compiler: PureBasic 5.22/5.31/5.40 ; Target OS: Linux: (X/K/L)ubuntu, Mint, 32/64, Ascii/Uni ;-------------------------------------------------------------- EnableExplicit ImportC "" gtk_text_buffer_create_mark(*buffer.GtkTextBuffer, mark_name.p-utf8, *where.GtkTextIter, left_gravity) gtk_text_buffer_get_mark(*buffer, mark_name.p-utf8) EndImport ; Object constants #MainWin= 0 #Edt1 = 0 #Bt1 = 1 #Bt2 = 2 #WinX= 300 #WinY= 200 #WinW= 300 #WinH= 200 Global.i gEvent, gQuit Global.s EditString1= "PureBasic... " + #LF$ + #LF$ + "ist eine 'Hochsprachen' Programmiersprache, die auf den bekannten 'BASIC'-Regeln basiert. " + "Sie ist größtenteils kompatibel mit jedem anderen 'BASIC'-Compiler, egal ob für das Amiga- oder PC-Format. " + "Das Erlernen von PureBasic ist sehr leicht! PureBasic ist für Anfänger genauso wie für Experten geschaffen worden. " + "Die Übersetzungsgeschwindigkeit ist wirklich schnell. Diese Software wurde für das Windows- Operating-System entwickelt. " + #LF$ + "Wir haben eine Menge Anstrengungen in ihre Realisierung gesetzt, um eine schnelle, zuverlässige und systemfreundliche Sprache zu produzieren. " + #LF$ + "Die Syntax ist einfach, aber mit den fortgeschrittenen Funktionen von PureBasic wie z.B. Zeigern, Strukturen, Prozeduren und dynamisch verknüpften Listen sind die Möglichkeiten unbegrenzt. " + "Für den erfahrenen Programmierer gibt es keine Probleme, Zugang zu irgendwelchen legalen OS-Strukturen oder API-Objekten zu bekommen." + #LF$ + "PureBasic ist eine portable Sprache, welche zur Zeit auf den AmigaOS, Linux, MacOS X und Windows Computersystemen arbeitet. " + #LF$ + "Dies bedeutet, dass derselbe Programmcode für jedes System nativ kompiliert werden kann und trotzdem die volle Power des jeweiligen Systems ausnutzt. " + "Es gibt keine Flaschenhälse wie einen virtuellen Prozessor oder einen Code-Übersetzer; der generierte Code produziert ein optimiertes Executable." Procedure Editor_SetMarkAtCurpos(Gadget, Marker.s) Protected *buffer= gtk_text_view_get_buffer_(GadgetID(Gadget)) Protected Mark = gtk_text_buffer_get_insert_(*buffer) Protected Iter.GtkTextIter gtk_text_buffer_get_iter_at_mark_(*buffer, @Iter, Mark) gtk_text_buffer_create_mark(*buffer, Marker, @Iter, #False) EndProcedure Procedure Editor_GotoMark(Gadget, Marker.s) Protected *buffer= gtk_text_view_get_buffer_(GadgetID(Gadget)) Protected Mark Protected Iter.GtkTextIter Mark= gtk_text_buffer_get_mark(*buffer, Marker) If Mark gtk_text_buffer_get_iter_at_mark_(*buffer, @Iter, Mark) gtk_text_view_scroll_mark_onscreen_(GadgetID(Gadget), Mark) gtk_text_buffer_place_cursor_(*buffer, Iter) EndIf EndProcedure If OpenWindow(#MainWin, #WinX, #WinY, #WinW, #WinH, "EditorGadget-set & scroll 2 marker", #PB_Window_SystemMenu) ButtonGadget(#Bt1, 5, 5, 190, 26, "Set marker @ cursorpos") ButtonGadget(#Bt2, 200, 5, 95, 26, "Go to marker") EditorGadget(#Edt1, 5, 35, #WinW-10, #WinH-39, #PB_Editor_WordWrap) AddGadgetItem(#Edt1, -1, EditString1) gtk_text_view_set_wrap_mode_(GadgetID(#Edt1), #GTK_WRAP_WORD) gtk_button_set_focus_on_click_(GadgetID(#Bt1), #False) gtk_button_set_focus_on_click_(GadgetID(#Bt2), #False) Repeat gEvent= WaitWindowEvent() Select gEvent Case #PB_Event_CloseWindow gQuit= #True Case #PB_Event_Gadget Select EventGadget() Case #Bt1 Editor_SetMarkAtCurpos(#Edt1, "mark1") Case #Bt2 Editor_GotoMark(#Edt1, "mark1") EndSelect EndSelect Until gQuit EndIf ; IDE Options = PureBasic 5.40 LTS Beta 9 (Linux - x86) ; CursorPosition = 87 ; Folding = - ; EnableUnicode ; EnableXP