From ca3c1dd7883346a56e3792bee9df7e61efe1fb1d Mon Sep 17 00:00:00 2001 From: Paolo Capriotti Date: Sat, 20 Mar 2010 02:33:00 +0000 Subject: [PATCH] Initial port of the action system to qtonly. --- lib/mainwindow.rb | 2 +- lib/toolkits/compat/qtkde.rb | 62 +++++++++++++++++++++++++++++++++++++++++--- lib/toolkits/kde.rb | 8 ++++++ lib/toolkits/qt.rb | 8 ------ 4 files changed, 67 insertions(+), 13 deletions(-) diff --git a/lib/mainwindow.rb b/lib/mainwindow.rb index 9258a32..02eec23 100644 --- a/lib/mainwindow.rb +++ b/lib/mainwindow.rb @@ -67,7 +67,7 @@ private @actions = { } std_action(:open_new) { create_game } std_action(:open) { load_game } - std_action :quit, :slot => :close + std_action(:quit) { close } std_action(:save) { save_game } std_action(:saveAs) { save_game_as } diff --git a/lib/toolkits/compat/qtkde.rb b/lib/toolkits/compat/qtkde.rb index 6401f28..115c39f 100644 --- a/lib/toolkits/compat/qtkde.rb +++ b/lib/toolkits/compat/qtkde.rb @@ -2,31 +2,85 @@ KDE = Qt Qt::XmlGuiWindow = Qt::MainWindow class Qt::MainWindow + attr_reader :tmp_menu + + def initialize(parent) + super(parent) + @tmp_menu = Qt::Menu.new("Temp") + menu_bar.add_menu(@tmp_menu) + end + def action_collection self end end +class Qt::Dialog + def caption=(val) + self.window_title = val + end +end Qt::XMLGUIClient = Qt::Object +class KDE::ComboBox + def self.create_signal_map(obj) + super(obj).tap do |m| + m[:current_index_changed] = [['currentIndexChanged(int)', 1]] + end + end +end + +class KDE::TabWidget + def self.create_signal_map(obj) + super(obj).tap do |m| + m[:current_changed] = [['currentChanged(int)', 1]] + end + end +end + module ActionHandler - def add_action(*args) + def add_action(name, a) + # fixme + action_parent.tmp_menu.add_action(a) end - def std_action(*args) + def std_action(name, &blk) + action_factory = Qt::STD_ACTIONS[name] + if action_factory + a = action_factory[action_parent] + add_action(name, a) + a.on(:triggered, &blk) + a + end end - def regular_action(*args) + def regular_action(name, opts = { }, &blk) + a = Qt::Action.new(opts[:text], action_parent) + add_action(name, a) + a.on(:triggered, &blk) + a + end + + def action_parent + self end end module Qt + STD_ACTIONS = { + :open_new => lambda {|w| Qt::Action.new(KDE::i18n("&New..."), w) }, + :open => lambda {|w| Qt::Action.new(KDE::i18n("&Open..."), w) }, + :quit => lambda {|w| Qt::Action.new(KDE::i18n("&Quit"), w) }, + :save => lambda {|w| Qt::Action.new(KDE::i18n("&Save"), w) }, + :save_as => lambda {|w| Qt::Action.new(KDE::i18n("S&ave as.."), w) } + } + def self.gui(name) "" end - def self.with_xml_gui(*args) + def self.with_xml_gui(*args, &blk) end def self.ki18n(str) diff --git a/lib/toolkits/kde.rb b/lib/toolkits/kde.rb index 6440068..f8b579e 100644 --- a/lib/toolkits/kde.rb +++ b/lib/toolkits/kde.rb @@ -23,6 +23,14 @@ class KDE::ComboBox end end +class KDE::ComboBox + def self.create_signal_map(obj) + super(obj).tap do |m| + m[:current_index_changed] = [['currentIndexChanged(int)', 1]] + end + end +end + class KDE::TabWidget def self.create_signal_map(obj) super(obj).tap do |m| diff --git a/lib/toolkits/qt.rb b/lib/toolkits/qt.rb index 37c3eec..3962717 100644 --- a/lib/toolkits/qt.rb +++ b/lib/toolkits/qt.rb @@ -167,14 +167,6 @@ class Qt::Pixmap end end -class KDE::ComboBox - def self.create_signal_map(obj) - super(obj).tap do |m| - m[:current_index_changed] = [['currentIndexChanged(int)', 1]] - end - end -end - class Qt::MetaObject def create_signal_map map = {} -- 2.11.4.GIT