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