8 system('rbuic -o zipdialogui.rb zipdialogui.ui')
9 require 'zipdialogui.rb'
14 a = Qt::Application.new(ARGV)
16 class ZipDialog < ZipDialogUI
21 connect(child('add_button'), SIGNAL('clicked()'),
22 self, SLOT('add_files()'))
23 connect(child('extract_button'), SIGNAL('clicked()'),
24 self, SLOT('extract_files()'))
28 Zip::ZipFile.open(@zip_filename, &proc)
32 Zip::ZipFile.foreach(@zip_filename, &proc)
36 lv = child("entry_list_view")
40 lv.insert_item(Qt::ListViewItem.new(lv, e.name, e.size.to_s))
46 @zip_filename = zipfile
51 l = Qt::FileDialog.getOpenFileNames(nil, nil, self)
56 zf.add(File.basename(path), path)
65 lv_item = entry_list_view.first_child
67 if entry_list_view.is_selected(lv_item)
68 selected_items << lv_item.text(0)
70 unselected_items << lv_item.text(0)
72 lv_item = lv_item.next_sibling
74 puts "selected_items.size = #{selected_items.size}"
75 puts "unselected_items.size = #{unselected_items.size}"
76 items = selected_items.size > 0 ? selected_items : unselected_items
77 puts "items.size = #{items.size}"
79 d = Qt::FileDialog.get_existing_directory(nil, self)
81 puts "No directory chosen"
83 zipfile { |zf| items.each { |e| zf.extract(e, File.join(d, e)) } }
88 slots 'add_files()', 'extract_files()'
92 puts "usage: #{$0} zipname"