Package icaro-bloques :: Module visor'
[hide private]
[frames] | no frames]

Source Code for Module icaro-bloques.visor'

  1  #!/usr/bin/python 
  2  # -*- coding: utf-8 -*- 
  3   
  4  # This program is free software: you can redistribute it and/or modify 
  5  # it under the terms of the GNU General Public License as published by 
  6  # the Free Software Foundation, either version 3 of the License, or 
  7  # (at your option) any later version. 
  8  # 
  9  # This program is distributed in the hope that it will be useful, 
 10  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
 11  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 12  # GNU General Public License for more details. 
 13  import os, os.path 
 14  import sys 
 15  import pygtk 
 16  import carga 
 17  pygtk.require ('2.0') 
 18   
 19  import gtk 
 20  if gtk.pygtk_version < (2,10,0): 
 21      print "PyGtk 2.10 or later required for this example" 
 22      raise SystemExit 
 23   
 24  import gtksourceview2 
 25  import pango 
26 -class visor_codigo():
27 - def __init__(self,ventana):
28 # create buffer 29 lm = gtksourceview2.LanguageManager() 30 buffer = gtksourceview2.Buffer() 31 buffer.set_data('languages-manager', lm) 32 view = gtksourceview2.View(buffer) 33 self.ventana=ventana 34 self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) 35 self.window.set_border_width(0) 36 self.window.set_title('codigo fuente generado por el sistema') 37 #windows.append(window) # this list contains all view windows 38 self.window.set_default_size(500, 500) 39 self.window.show() 40 41 vbox = gtk.VBox(0, True) 42 self.window.add(vbox) 43 tool1=gtk.Toolbar() 44 tool1.show() 45 46 iconw = gtk.Image() 47 iconw.set_from_stock(gtk.STOCK_EXECUTE,15) 48 tool_button = tool1.append_item( 49 "re compilar", 50 "compila la version modificada en el editor.", 51 "Private", 52 iconw, 53 self.compilar) 54 55 iconw = gtk.Image() 56 iconw.set_from_stock(gtk.STOCK_NEW,15) 57 tool_button = tool1.append_item( 58 "Salir", 59 self.ventana.tooltip["salir"], 60 "Private", 61 iconw, 62 self.close) 63 64 vbox.pack_start(tool1, fill=False, expand=False) 65 sw = gtk.ScrolledWindow() 66 sw.set_shadow_type(gtk.SHADOW_IN) 67 sw.add(view) 68 vbox.pack_start(sw, fill=True, expand=True) 69 #~ 70 #~ toolbar = gtk.HBox(spacing=0) 71 #~ vbox.pack_start(toolbar,False,False) 72 #~ button = gtk.Button('salir') 73 #~ button.connect('clicked',self.close) 74 #~ toolbar.pack_start(button,False,False,0) 75 76 77 vbox.show_all() 78 # main loop 79 self.buf=self.open_file(buffer,sys.path[0]+ "/source/user.c")
80 - def open_file(self,buffer, filename):
81 # get the new language for the file mimetype 82 manager = buffer.get_data('languages-manager') 83 84 if os.path.isabs(filename): 85 path = filename 86 else: 87 path = os.path.abspath(filename) 88 89 language = manager.guess_language(filename) 90 if language: 91 buffer.set_highlight_syntax(True) 92 buffer.set_language(language) 93 else: 94 print 'No language found for file "%s"' % filename 95 buffer.set_highlight_syntax(False) 96 97 #remove_all_marks(buffer) 98 self.load_file(buffer, path) # TODO: check return 99 return buffer
100
101 - def load_file(self,buffer, path):
102 buffer.begin_not_undoable_action() 103 try: 104 txt = open(path).read() 105 except: 106 return False 107 buffer.set_text(txt) 108 buffer.set_data('filename', path) 109 buffer.end_not_undoable_action() 110 buffer.set_modified(False) 111 buffer.place_cursor(buffer.get_start_iter()) 112 113 return True
114 - def close(self,arg):
115 #~ gtk.main_quit() 116 self.window.hide()
117
118 - def compilar(self,arg):
119 print arg 120 cadena=sys.path[0]+ "/source/user.c" 121 cadena2=self.buf.props.text 122 a= self.ventana.mensajes(1,"Las modificaciones echas en el editor no se mantendran, y seran eliminadas cuando se compile de vuelta desde icaro-bloques. ¿Desea continuar?") 123 if a==True: 124 file=open(cadena,"w") 125 file.writelines(cadena2) 126 file.close() 127 i=carga.compilar_pic("/source/",self.ventana.config[0]) 128 if i==0: 129 self.ventana.mensajes(3,"la compilacion fue exitosa") 130 else: 131 self.ventana.mensajes(0,"hubo un error de compilacion")
132