NVL Autoscrolling Code
Posted: Mon Apr 02, 2012 5:48 pm
I found these instances of autoscrolling code, I was wondering how easily they could be implemented for games that did not wish to employ pagination:
Source: http://www.python-forum.org/pythonforum ... =4&t=14734
Perhaps of use as well:
http://www.python-forum.org/pythonforum ... =4&t=13254
Edit: Or perhaps, now that I consider it: Is it possible to simply order nvl_erase to take effect on the top line whenever a turn-page indicator would be shown?
Code: Select all
def append_txt(self, message_str):
curr_time = datetime.now()
msg_txt = str(curr_time.strftime("%H:%M:%S - ")) + message_str
piter = msg_area.append([msg_txt])
x = msg_scrolled_window.get_vscrollbar().get_value()
v_adj = msg_scrolled_window.get_vadjustment()
v_adj.set_value(x + 50)
msg_scrolled_window.set_vadjustment(v_adj)Code: Select all
def update_log(self, data):# message, style = 'normal'):
message, style = data
sob, eob = self.textbuffer.get_bounds()
present_time = ' [%02d:%02d:%02d] ' % (time.localtime()[3], time.localtime()[4], time.localtime()[5])
self.textview.scroll_mark_onscreen(self.textbuffer.get_insert())
self.textbuffer.insert_with_tags_by_name(eob, ''.join([present_time, message, '\n']), style)Code: Select all
#!/usr/bin/env python
# base.py
import pygtk
pygtk.require('2.0')
import gtk
from datetime import datetime
msg_area = gtk.ListStore(str)
msg_scrolled_window = gtk.ScrolledWindow()
class message_area:
#*******************************************************************************************************************
## Create message area as a list store inside a scrolled window.
# @param self The object pointer
# @return path_scrolled_window Scrolled window containing liststore
#*******************************************************************************************************************
def create_msg_widget(self):
msg_tree = gtk.TreeView(msg_area)
msg_tree.set_headers_visible(False)
tvcolumn = gtk.TreeViewColumn()
msg_tree.append_column(tvcolumn)
cell = gtk.CellRendererText()
tvcolumn.pack_start(cell, True)
tvcolumn.add_attribute(cell, 'text', 0)
msg_tree.set_search_column(0)
msg_tree.set_reorderable(True)
msg_tree.set_cursor(0)
msg_scrolled_window.set_border_width(5)
msg_scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)
msg_scrolled_window.show()
msg_scrolled_window.add_with_viewport(msg_tree)
return (msg_scrolled_window)
#*******************************************************************************************************************
## Insert string in message area (list store).
# @param self The object pointer
# @param message_str Message string
#*******************************************************************************************************************
def append_txt(self, message_str):
curr_time = datetime.now()
msg_txt = str(curr_time.strftime("%H:%M:%S - ")) + message_str
piter = msg_area.append([msg_txt])
x = msg_scrolled_window.get_vscrollbar().get_value()
v_adj = msg_scrolled_window.get_vadjustment()
v_adj.set_value(x + 50)
msg_scrolled_window.set_vadjustment(v_adj)
class base:
def chg_adj(self, widget):
print "\nin chg_adj" + str(widget.get_value())
def add_text_cb(self, widget):
y = message_area()
y.append_txt("text")
# close the window and quit
def delete_event(self, widget, event, data=None):
gtk.main_quit()
return False
def __init__(self):
# Create a new window
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_title("Base")
self.window.set_size_request(200, 200)
self.window.connect("delete_event", self.delete_event)
# Create frame for message area
msg_frame = gtk.VBox(True)
button = gtk.Button("Add")
button.connect("clicked", self.add_text_cb)
x = message_area()
msg_area = x.create_msg_widget()
msg_frame.add(msg_area)
msg_frame.add(button)
self.window.add(msg_frame)
self.window.show_all()
def main():
gtk.main()
if __name__ == "__main__":
base()
main() Perhaps of use as well:
Code: Select all
text.see(END)Edit: Or perhaps, now that I consider it: Is it possible to simply order nvl_erase to take effect on the top line whenever a turn-page indicator would be shown?