Class: TerminalWin
Overview
Instance Method Summary collapse
- #checkErrorInMsg(msg) ⇒ Object
- #cleanup(obj) ⇒ Object
- #createWidget ⇒ Object
-
#initialize(parent) ⇒ TerminalWin
constructor
A new instance of TerminalWin.
- #processfinished(exitCode, exitStatus) ⇒ Object
- #processReadyRead ⇒ Object
- #processSetup ⇒ Object
- #processStart(cmd, args, successMsg = 'Successed', failMsg = 'Failed', &block) ⇒ Object
- #write(text) ⇒ Object
Constructor Details
#initialize(parent) ⇒ TerminalWin
Returns a new instance of TerminalWin.
464 465 466 467 468 469 470 471 |
# File 'lib/gemviews.rb', line 464 def initialize(parent) super('Output', parent) self.objectName = 'Terminal' createWidget processSetup connect(self, SIGNAL('destroyed(QObject*)'), self, SLOT('cleanup(QObject*)')) end |
Instance Method Details
#checkErrorInMsg(msg) ⇒ Object
530 531 532 533 534 535 |
# File 'lib/gemviews.rb', line 530 def checkErrorInMsg(msg) @canceled = 0 if msg =~ /Exiting [\w\s]+ exit_code (\d)/i @error = $1.to_i end end |
#cleanup(obj) ⇒ Object
547 548 549 550 |
# File 'lib/gemviews.rb', line 547 def cleanup(obj) puts "killing all process." @process.kill end |
#createWidget ⇒ Object
473 474 475 476 477 478 479 480 481 482 483 484 |
# File 'lib/gemviews.rb', line 473 def createWidget @textEdit = Qt::TextEdit.new @textEdit.readOnly = true @clearBtn = KDE::PushButton.new(KDE::Icon.new('edit-clear'), i18n('Clear')) connect(@clearBtn, SIGNAL(:clicked), @textEdit, SLOT(:clear)) lw = VBoxLayoutWidget.new do |l| l.addWidget(@textEdit) l.addWidgets(nil, @clearBtn) end setWidget(lw) end |
#processfinished(exitCode, exitStatus) ⇒ Object
519 520 521 522 523 524 525 526 527 528 |
# File 'lib/gemviews.rb', line 519 def processfinished(exitCode, exitStatus) write( @process.readAll.data ) # puts "exitCode:#{exitCode}, @error:#{@error}, @canceled:#{@canceled}" ret = exitCode | @error | @canceled msg = ret == 0 ? @successMsg : @failMsg passiveMessage(msg) if @finishProc @finishProc.call(ret) end end |
#processReadyRead ⇒ Object
537 538 539 540 541 542 543 544 545 |
# File 'lib/gemviews.rb', line 537 def processReadyRead lines = @process.readAll.data lines.gsub!(/~?ScimInputContextPlugin.*?\n/, '') unless lines.empty? print lines write( lines ) checkErrorInMsg(lines) end end |
#processSetup ⇒ Object
486 487 488 489 490 491 492 493 494 495 |
# File 'lib/gemviews.rb', line 486 def processSetup @process = Qt::Process.new(self) @process.setProcessChannelMode(Qt::Process::MergedChannels) connect(@process, SIGNAL('finished(int,QProcess::ExitStatus)'), self, SLOT('processfinished(int,QProcess::ExitStatus)')) connect(@process, SIGNAL(:readyReadStandardOutput), self, SLOT(:processReadyRead)) connect(@process, SIGNAL(:readyReadStandardError), self, SLOT(:processReadyRead)) end |
#processStart(cmd, args, successMsg = 'Successed', failMsg = 'Failed', &block) ⇒ Object
501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 |
# File 'lib/gemviews.rb', line 501 def processStart(cmd, args, successMsg='Successed', failMsg='Failed', &block) unless @process.state == Qt::Process::NotRunning msg = "process is already running." write(msg) KDE::MessageBox::information(self, msg) return end msg = "execute : " + cmd.inspect + " " + args.join(' ').inspect + "\n" print msg write(msg) @successMsg = successMsg @failMsg = failMsg @error = 0 @canceled = 1 @process.start(cmd, args) @finishProc = block end |
#write(text) ⇒ Object
497 498 499 |
# File 'lib/gemviews.rb', line 497 def write(text) @textEdit.append(text) end |