"Fossies" - the Fresh Open Source Software Archive

Member "radialnet/bestwidgets/textview.py" (4 Mar 2008, 4502 Bytes) of package /linux/privat/old/radialnet-0.44.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Python source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 # vim: set fileencoding=utf-8 :
    2 
    3 # Copyright (C) 2008 Insecure.Com LLC.
    4 #
    5 # Author: João Paulo de Souza Medeiros <ignotus21@gmail.com>
    6 #
    7 # This program is free software; you can redistribute it and/or modify
    8 # it under the terms of the GNU General Public License as published by
    9 # the Free Software Foundation; either version 2 of the License, or
   10 # (at your option) any later version.
   11 #
   12 # This program is distributed in the hope that it will be useful,
   13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
   14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   15 # GNU General Public License for more details.
   16 #
   17 # You should have received a copy of the GNU General Public License
   18 # along with this program; if not, write to the Free Software
   19 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
   20 
   21 import gtk
   22 import bestwidgets as bw
   23 
   24 
   25 
   26 class BWTextView(bw.BWScrolledWindow):
   27     """
   28     """
   29     def __init__(self):
   30         """
   31         """
   32         bw.BWScrolledWindow.__init__(self)
   33 
   34         self.__auto_scroll = False
   35 
   36         self.__create_widgets()
   37 
   38 
   39     def __create_widgets(self):
   40         """
   41         """
   42         self.__textbuffer = gtk.TextBuffer()
   43         self.__textview = gtk.TextView(self.__textbuffer)
   44 
   45         self.add_with_viewport(self.__textview)
   46 
   47 
   48     def bw_set_auto_scroll(self, value):
   49         """
   50         """
   51         self.__auto_scroll = value
   52 
   53 
   54     def bw_set_editable(self, editable):
   55         """
   56         """
   57         self.__textview.set_editable(False)
   58 
   59 
   60     def bw_modify_font(self, font):
   61         """
   62         """
   63         self.__textview.modify_font(font)
   64 
   65 
   66     def bw_set_text(self, text):
   67         """
   68         """
   69         self.__textbuffer.set_text(text)
   70 
   71         if self.__auto_scroll:
   72             self.bw_set_scroll_down()
   73 
   74 
   75     def bw_get_text(self):
   76         """
   77         """
   78         return self.__textbuffer.get_text(self.__textbuffer.get_start_iter(),
   79                                           self.__textbuffer.get_end_iter())
   80 
   81 
   82     def bw_set_scroll_down(self):
   83         """
   84         """
   85         self.get_vadjustment().set_value(self.get_vadjustment().upper)
   86 
   87 
   88     def bw_get_textbuffer(self):
   89         """
   90         """
   91         return self.__textbuffer
   92 
   93 
   94 
   95 class BWTextEditor(bw.BWScrolledWindow):
   96     """
   97     """
   98     def __init__(self):
   99         """
  100         """
  101         bw.BWScrolledWindow.__init__(self)
  102         self.connect('expose_event', self.__expose)
  103 
  104         self.__auto_scroll = False
  105 
  106         self.__create_widgets()
  107 
  108 
  109     def __create_widgets(self):
  110         """
  111         """
  112         self.__hbox = bw.BWHBox(spacing=6)
  113 
  114         self.__textbuffer = gtk.TextBuffer()
  115         self.__textview = gtk.TextView(self.__textbuffer)
  116 
  117         self.__linebuffer = gtk.TextBuffer()
  118         self.__lineview = gtk.TextView(self.__linebuffer)
  119         self.__lineview.set_justification(gtk.JUSTIFY_RIGHT)
  120         self.__lineview.set_editable(False)
  121         self.__lineview.set_sensitive(False)
  122 
  123         self.__hbox.bw_pack_start_noexpand_nofill(self.__lineview)
  124         self.__hbox.bw_pack_start_expand_fill(self.__textview)
  125 
  126         self.add_with_viewport(self.__hbox)
  127 
  128 
  129     def __expose(self, widget, event):
  130         """
  131         """
  132         # code to fix a gtk issue that don't show text correctly
  133         self.__hbox.check_resize()
  134 
  135 
  136     def bw_set_auto_scroll(self, value):
  137         """
  138         """
  139         self.__auto_scroll = value
  140 
  141 
  142     def bw_set_editable(self, editable):
  143         """
  144         """
  145         self.__textview.set_editable(False)
  146 
  147 
  148     def bw_modify_font(self, font):
  149         """
  150         """
  151         self.__textview.modify_font(font)
  152         self.__lineview.modify_font(font)
  153 
  154 
  155     def bw_set_text(self, text):
  156         """
  157         """
  158         if text != "":
  159 
  160             count = text.count('\n') + text.count('\r')
  161 
  162             lines = range(1, count + 2)
  163             lines = [str(i).strip() for i in lines]
  164 
  165             self.__textbuffer.set_text(text)
  166             self.__linebuffer.set_text('\n'.join(lines))
  167 
  168             if self.__auto_scroll:
  169                 self.bw_set_scroll_down()
  170 
  171         else:
  172 
  173             self.__textbuffer.set_text("")
  174             self.__linebuffer.set_text("")
  175 
  176 
  177     def bw_get_text(self):
  178         """
  179         """
  180         return self.__textbuffer.get_text(self.__textbuffer.get_start_iter(),
  181                                           self.__textbuffer.get_end_iter())
  182 
  183 
  184     def bw_set_scroll_down(self):
  185         """
  186         """
  187         self.get_vadjustment().set_value(self.get_vadjustment().upper)