Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'd like to make a graphical user interface for my script, instead of running it from the console. I'm aware there's a wealth of UI libraries for Ruby, but I'm quite familiar with HTML and CSS and I'd like to use them for building an interface. So the question is:

Is it possible to use a HTML rendering library to make such an UI? From what I understand, it's relatively easy to put in a HTML rendered view of something, but is it possible to communicate back with the script? Like when I push that big red button, it actually tells the script to act on it? Obviously it's possible if the script run on the server side, but I'd like to run it as a desktop application.

share|improve this question
add comment

1 Answer

Qt has a Webkit module. You should be able to create a a UI using those to do what you want.

Here is an example of a dynamic page using QtRuby

require 'Qt4'
require 'qtwebkit'

class A < Qt::WebView
  slots 'mySlot(QUrl)'
  def initialize()
super()
connect(self, SIGNAL('linkClicked(QUrl)'), self, SLOT('mySlot(QUrl)'))
  end
  def mySlot(url)
if (url.path == 'quit')
  puts "quit"
  exit()
elsif (url.path == 'cont')
  setHtml <<EOP
<html>
 <head>
  <title>test</title>
 </head>
 <body>
  <div>
This is a test. That works</br>
<h2><a id='click' href="quit" onclick="quit()">Quit</a></h2>
  </div>
 </body>
</html>
EOP
 end
  end
end

Qt::Application.new(ARGV) do
   A.new() do |view|
view.page.setLinkDelegationPolicy(Qt::WebPage::DelegateAllLinks)
view.setHtml <<EOP
<html>
 <head>
  <title>test</title>
 </head>
 <body>
  <div>
This is a test.</br>
<a id='click' href="quit" onclick="quit()">quit</a>
<a id='click' href="cont" onclick="quit()">Click on me!</a>
  </div>
 </body>
</html>
EOP
view.show
  end
  exec
end

The only down side is that you will, in most cases, have to read the Qt C++ documentation and convert it into Ruby. At least that is my experiance.

http://doc.qt.nokia.com/4.7-snapshot/qtwebkit.html

http://zetcode.com/gui/rubyqt/

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.