#!/usr/bin/env ruby require 'gtk' require 'lglade' require 'gnome' require 'gdk_pixbuf' require 'gdk_imlib' class Apt def initialize @glade = GladeXML::new("apt.glade") {|handler| method (handler)} @entry = @glade.getWidget("entries") @window = @glade.getWidget("sourceslisteditor") @statusb = @glade.getWidget("statusbar") @filename = "/etc/apt/sources.list" @window.set_default_size(750, 500) end def readFile () begin sl = File::open(@filename, "r") @info = sl.gets(nil).split("\n") sl.close # not clean because possibility of an error in gets rescue raise "There is no /etc/apt/sources.list."; end end def insertEntry () font = Gdk::Font.font_load("-adobe-courier-medium-r-normal--*-120-*-*-*-*-*-*") length = @entry.get_length () ctext = Gdk::Color::new (0x0000, 0xFFFF, 0x0000) text = Gdk::Color::new (0x0000, 0x0000, 0xFFFF) return if not @info or @info.empty? @info.each do |line| if line =~ /^\#/ color = ctext else color = text end @entry.insert (font, color, nil, line + "\n") end end def writeFile () if @entry.changed () #puts @entry.changed ().get_point () # debug begin sl = File::open ("sources.list", "w+") line = @entry.get_chars (0, -1) sl.write (line) @statusb.push (1, "File has been saved") #sl.close rescue SystemCallError $stderr.print raise ensure sl.close () unless sl.nil? end end end private def quit () @statusb.pop (1) Gtk::main_quit () end def showAbout () about = Gnome::About::new (("sources.list"), ("0.1"), ("(C) 2002 Christian Meyer"), [ "Christian Meyer (chrisime@gnome.org)" ], ("For more information about ruby-gnome, visit \"http://ruby-gnome.sourceforge.net\".")) about.show () end end test = Apt::new () begin test::readFile () rescue print "$!\n"; end test::insertEntry () #test::writeFile ("sources.list") Gtk::main ()