2017-02-21 20:32:40 +01:00
|
|
|
|
|
|
|
|
#
|
2018-01-01 21:08:06 +01:00
|
|
|
# Copyright (C) 2006-2018 Matthias Koefferlein
|
2017-02-21 20:32:40 +01:00
|
|
|
#
|
|
|
|
|
# This program is free software; you can redistribute it and/or modify
|
|
|
|
|
# it under the terms of the GNU General Public License as published by
|
|
|
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
|
|
|
# (at your option) any later version.
|
|
|
|
|
#
|
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
|
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
# GNU General Public License for more details.
|
|
|
|
|
#
|
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
|
|
|
# along with this program; if not, write to the Free Software
|
|
|
|
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
# A helper script to extract the signals from the Qt declarations
|
|
|
|
|
# It can be used to write the .events configuration file which will
|
|
|
|
|
# declare the signals of objects.
|
|
|
|
|
|
|
|
|
|
# run with
|
|
|
|
|
# klayout -r mkqtdecl_extract_signals.rb -z >mkqtdecl.events
|
|
|
|
|
|
|
|
|
|
classes = {}
|
|
|
|
|
RBA::Class::each_class do |cls|
|
|
|
|
|
classes[cls.name] = true
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
RBA::Class::each_class do |cls|
|
|
|
|
|
|
|
|
|
|
if cls.name =~ /^Q/ && (cls.name =~ /_Native$/ || !classes[cls.name + "_Native"])
|
|
|
|
|
|
|
|
|
|
b = cls.base
|
|
|
|
|
while b && b.name != "QObject_Native"
|
|
|
|
|
b = b.base
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if b
|
|
|
|
|
|
|
|
|
|
mo = eval("RBA::#{cls.name}.staticMetaObject")
|
|
|
|
|
|
|
|
|
|
c = cls.name.sub(/_Native/, "")
|
|
|
|
|
|
|
|
|
|
valid_sig = {}
|
|
|
|
|
(0..(mo.methodCount-1)).each do |i|
|
|
|
|
|
mm = mo.method(i)
|
|
|
|
|
if mm.methodType == RBA::QMetaMethod::Signal
|
|
|
|
|
n = mm.methodSignature.sub(/\(.*/, "")
|
|
|
|
|
s = mm.parameterTypes.join(", ")
|
|
|
|
|
valid_sig[n] ||= []
|
|
|
|
|
found = false
|
|
|
|
|
valid_sig[n] = valid_sig[n].select do |vs|
|
|
|
|
|
ret = true
|
|
|
|
|
if s.index(vs) == 0
|
|
|
|
|
ret = false
|
|
|
|
|
elsif vs.index(s) == 0
|
|
|
|
|
found = true
|
|
|
|
|
end
|
|
|
|
|
ret
|
|
|
|
|
end
|
|
|
|
|
if !found
|
|
|
|
|
valid_sig[n].push(s)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
valid_sig.each do |n,ss|
|
|
|
|
|
ss.each do |s|
|
|
|
|
|
match = "::#{n}\\s*\\("
|
|
|
|
|
renamed = nil
|
|
|
|
|
aliased = nil
|
|
|
|
|
if c == "QTabWidget"
|
|
|
|
|
if n == "currentChanged" && s =~ /QWidget/
|
|
|
|
|
match += ".*QWidget"
|
|
|
|
|
renamed = "currentChanged_qw"
|
|
|
|
|
elsif n == "currentChanged" && s =~ /int/
|
|
|
|
|
match += ".*int"
|
|
|
|
|
end
|
|
|
|
|
elsif c == "QSignalMapper"
|
|
|
|
|
if n == "mapped" && s =~ /QWidget/
|
|
|
|
|
renamed = "mapped_qw"
|
|
|
|
|
match += ".*QWidget"
|
|
|
|
|
elsif n == "mapped" && s =~ /int/
|
|
|
|
|
match += ".*int"
|
|
|
|
|
elsif n == "mapped" && s =~ /QString/
|
|
|
|
|
renamed = "mapped_qs"
|
|
|
|
|
match += ".*QString"
|
|
|
|
|
elsif n == "mapped" && s =~ /QObject/
|
|
|
|
|
renamed = "mapped_qo"
|
|
|
|
|
match += ".*QObject"
|
|
|
|
|
end
|
|
|
|
|
elsif c == "QComboBox" || c == "QFontComboBox"
|
|
|
|
|
if n == "activated" && s =~ /QString/
|
|
|
|
|
renamed = "activated_qs"
|
|
|
|
|
match += ".*QString"
|
|
|
|
|
elsif n == "activated" && s =~ /int/
|
|
|
|
|
match += ".*int"
|
|
|
|
|
elsif n == "currentIndexChanged" && s =~ /QString/
|
|
|
|
|
renamed = "currentIndexChanged_qs"
|
|
|
|
|
match += ".*QString"
|
|
|
|
|
elsif n == "currentIndexChanged" && s =~ /int/
|
|
|
|
|
match += ".*int"
|
|
|
|
|
elsif n == "highlighted" && s =~ /QString/
|
|
|
|
|
renamed = "highlighted_qs"
|
|
|
|
|
match += ".*QString"
|
|
|
|
|
elsif n == "highlighted" && s =~ /int/
|
|
|
|
|
match += ".*int"
|
|
|
|
|
end
|
|
|
|
|
elsif c == "QCompleter"
|
|
|
|
|
if n == "activated" && s =~ /QString/
|
|
|
|
|
renamed = "activated_qs"
|
|
|
|
|
match += ".*QString"
|
|
|
|
|
elsif n == "activated" && s =~ /QModelIndex/
|
|
|
|
|
match += ".*QModelIndex"
|
|
|
|
|
elsif n == "highlighted" && s =~ /QString/
|
|
|
|
|
renamed = "highlighted_qs"
|
|
|
|
|
match += ".*QString"
|
|
|
|
|
elsif n == "highlighted" && s =~ /QModelIndex/
|
|
|
|
|
match += ".*QModelIndex"
|
|
|
|
|
end
|
|
|
|
|
elsif c == "QTextBrowser"
|
|
|
|
|
if n == "highlighted" && s =~ /QString/
|
|
|
|
|
renamed = "highlighted_qs"
|
|
|
|
|
match += ".*QString"
|
|
|
|
|
elsif n == "highlighted" && s =~ /QUrl/
|
|
|
|
|
match += ".*QUrl"
|
|
|
|
|
end
|
|
|
|
|
elsif c == "QDoubleSpinBox"
|
|
|
|
|
if n == "valueChanged" && s =~ /QString/
|
|
|
|
|
renamed = "valueChanged_qs"
|
|
|
|
|
match += ".*QString"
|
|
|
|
|
elsif n == "valueChanged" && s =~ /double/
|
|
|
|
|
match += ".*double"
|
|
|
|
|
end
|
|
|
|
|
elsif c == "QSpinBox"
|
|
|
|
|
if n == "valueChanged" && s =~ /QString/
|
|
|
|
|
renamed = "valueChanged_qs"
|
|
|
|
|
match += ".*QString"
|
|
|
|
|
elsif n == "valueChanged" && s =~ /int/
|
|
|
|
|
match += ".*int"
|
|
|
|
|
end
|
|
|
|
|
elsif c == "QButtonGroup"
|
|
|
|
|
if n == "buttonClicked" && s =~ /QAbstractButton/
|
|
|
|
|
renamed = "buttonClicked_qab"
|
|
|
|
|
match += ".*QAbstractButton"
|
|
|
|
|
elsif n == "buttonClicked" && s =~ /int/
|
|
|
|
|
match += ".*int"
|
|
|
|
|
elsif n == "buttonPressed" && s =~ /QAbstractButton/
|
|
|
|
|
renamed = "buttonPressed_qab"
|
|
|
|
|
match += ".*QAbstractButton"
|
|
|
|
|
elsif n == "buttonPressed" && s =~ /int/
|
|
|
|
|
match += ".*int"
|
|
|
|
|
elsif n == "buttonReleased" && s =~ /QAbstractButton/
|
|
|
|
|
renamed = "buttonReleased_qab"
|
|
|
|
|
match += ".*QAbstractButton"
|
|
|
|
|
elsif n == "buttonReleased" && s =~ /int/
|
|
|
|
|
match += ".*int"
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
puts "event(\"#{c}\", /#{match}/, \"#{s}\")"
|
|
|
|
|
if renamed
|
|
|
|
|
puts "rename(\"#{c}\", /#{match}/, \"#{renamed}\")"
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|