#!/usr/bin/env ruby # -*- Ruby -*- # # SL Zaurus用 コミケットカタROMブラウザ(サンプルコード状態) # # 材料: # - Ruby と Ruby/Qte # http://takahr.dhis.portside.net/cgi-bin/rwiki.cgi?cmd=view;name=Ruby%2FQte # - SQLite # http://sourceforge.net/projects/pysqlite/ # - データーベースファイル # c:\Program Files\コミケット\カタログブラウザ\CCATALOG.DB # - サークルカット画像 # CDROMのPDATAディレクトリ # # 状態: # まともに機能実装されていません。あと、遅すぎてだめぽ。 # require 'qte' require 'qpe' include Qte; include Qpe; # 設定 CCATALOG='/mnt/cf/ccatalog.db' PDATA='/mnt/cf/pdata/' SQLITE='/usr/bin/sqlite' SJISCODEC=QTextCodec .codecForName("SJIS") def t(str) SJISCODEC .toUnicode(str) end def query(sql, &block) open("| #{SQLITE} #{CCATALOG} '#{sql}'", "r") do |f| f .each do |line| line .chomp! # エスケープ見てないので内容によっては項目ずれます。 ary = line .split('|', -1) ary .collect! {|v| t(v)} block .call(*ary) end end end class PageView < QVBox def initialize(parent = nil, name = '') super(parent, name) @pages = [] Dir .glob(PDATA + "*.png") .sort .each do |file| @pages .push(file) end @scrollview = QScrollView.new(self) @page = QWidget .new(@scrollview .viewport) @scrollview .addChild(@page); @scrollbar = QScrollBar .new(0, @pages.size, 1, 10, 0, Horizontal, self) @scrollbar .setTracking(false) connect(@scrollbar, QSIGNAL('valueChanged(int)'), 'valueChanged') @scrollbar .setValue(0) end def valueChanged(value) # QPEのQPixmapは拡大縮小不可=□○_ # あとRubyからだとQDirectPainter使えないので似非ぺたのを持ってくるのも_。 @pixmap = QPixmap .new(@pages[value]) @page .setBackgroundPixmap(@pixmap) @page .setFixedSize(@pixmap.size()) end end class CheckListView < QListView def initialize(parent = nil, name = '') super(parent, name) # 横長すぎ。 addColumn(t('参加日')) addColumn(t('スペース')) addColumn(t('サークル名')) addColumn(t('読みがな')) addColumn(t('執筆者')) addColumn(t('発行誌')) addColumn(t('URL')) addColumn(t('Mail')) addColumn(t('補足')) addColumn(t('メモ')) # クエリー遅い...... query(<