Conoscete il programma CovertLit
http://www.convertlit.com/ ? Serve per trasformare i file .lit (gli ebook di Microsoft Reader) in file html... ebbene ho deciso di scrivere una piccola gui per questo programma... questo è lo script
#!/usr/bin/python
import pygtk
pygtk.require('2.0')
import gtk
import gobject
import os
class ConvertLitChooser(gtk.Dialog):
def __init__(self):
gtk.Dialog.__init__(self)
self.set_default_size(320,-1)
self.filter = gtk.FileFilter()
self.filter.add_pattern("*.lit")
self.sf_hbox = gtk.HBox(False,0)
self.vbox.pack_start(self.sf_hbox, False, True, 4)
self.sf_label = gtk.Label("Source file ")
self.sf_hbox.pack_start(self.sf_label, False, True, 5)
self.sf_button = gtk.FileChooserButton("Source file")
self.sf_button.set_filter(self.filter)
self.sf_hbox.pack_start(self.sf_button, True, True, 5)
self.df_hbox = gtk.HBox(False,0)
self.vbox.pack_start(self.df_hbox, False, True, 4)
self.df_label = gtk.Label("Destination Folder ")
self.df_hbox.pack_start(self.df_label, False, True, 5)
self.df_button = gtk.FileChooserButton("Destination Folder")
self.df_button.set_action(gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
self.df_hbox.pack_start(self.df_button, True, True, 5)
self.add_buttons(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
gtk.STOCK_OK, gtk.RESPONSE_OK)
self.vbox.show_all()
def get(self):
return [self.sf_button.get_filename(),
self.df_button.get_filename()]
class ConvertLitGui:
def destroy(self, widget): gtk.main_quit()
def delete_event(self, widget, data): return False
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.connect("destroy", self.destroy)
self.window.connect("delete_event", self.delete_event)
self.vbox = gtk.VBox(False,2)
self.window.add(self.vbox)
self.scrollwin = gtk.ScrolledWindow()
self.scrollwin.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.vbox.pack_start(self.scrollwin,True,True,2)
self.model = gtk.ListStore(str,str,str)
self.treeview = gtk.TreeView(model = self.model)
self.scrollwin.add(self.treeview)
self.sf_cell = gtk.CellRendererText()
self.df_cell = gtk.CellRendererText()
self.status_cell = gtk.CellRendererText()
self.sf_column = gtk.TreeViewColumn("Source File")
self.sf_column.pack_start(self.sf_cell,True)
self.sf_column.add_attribute(self.sf_cell, 'text', 0)
self.df_column = gtk.TreeViewColumn("Destination Folder")
self.df_column.pack_start(self.df_cell,True)
self.df_column.add_attribute(self.df_cell, 'text', 1)
self.status_column = gtk.TreeViewColumn("Current Status")
self.status_column.pack_start(self.status_cell,True)
self.status_column.add_attribute(self.status_cell, 'text', 2)
self.treeview.append_column(self.sf_column)
self.treeview.append_column(self.df_column)
self.treeview.append_column(self.status_column)
self.hbox = gtk.HBox(False,2)
self.vbox.pack_start(self.hbox,False,False,2)
self.add_button = gtk.Button(stock = gtk.STOCK_ADD)
self.add_button.connect("clicked", self.add_callback)
self.remove_button = gtk.Button(stock = gtk.STOCK_REMOVE)
self.remove_button.connect("clicked", self.remove_callback)
self.clear_button = gtk.Button(stock = gtk.STOCK_CLEAR)
self.clear_button.connect("clicked", self.clear_callback)
self.apply_button = gtk.Button(stock = gtk.STOCK_APPLY)
self.apply_button.connect("clicked", self.apply_callback)
self.quit_button = gtk.Button(stock = gtk.STOCK_QUIT)
self.quit_button.connect("clicked", self.destroy)
self.hbox.pack_start(self.add_button, False, False, 2)
self.hbox.pack_start(self.remove_button, False, False, 2)
self.hbox.pack_start(self.clear_button, False, False, 2)
self.hbox.pack_end(self.quit_button, False, False, 2)
self.hbox.pack_end(self.apply_button, False, False, 2)
self.window.show_all()
def add_callback(self, widget):
dialog = ConvertLitChooser()
id = dialog.run()
if id == gtk.RESPONSE_OK:
filenames = dialog.get()
if filenames[0] != None:
if filenames[1] != None:
self.model.append(filenames + ["Ready"])
dialog.destroy()
def remove_callback(self, widget):
iter = self.treeview.get_selection().get_selected()[1]
if iter != None: self.model.remove(iter)
def clear_callback(self, widget): self.model.clear()
def __apply(self, model, path, iter, user_data):
sf, df, status = model.get(iter,0,1,2)
if status in ("Ready","Failed"):
cmd = os .system('./clit "%s" "%s"' % (sf,df))
if cmd == 0:
model.set_value(iter,2,"Completed")
else:
model.set_value(iter,2,"Failed")
def apply_callback(self,widget):
self.model.foreach(self.__apply,None)
def main(self): gtk.main()
c = ConvertLitGui()
c.main()
assicuratevi che l'eseguibile
clit sia nella stessa cartella dello script... comunque ho allegato una versione compilata per linux x86... i commenti sono sempre graditi, ciauz.