Module: RubyScriptProvider

Defined in:
lib/rubyscriptprovider.rb,
lib/rubyscriptprovider.rb,
lib/rubyscriptprovider.rb,
lib/rubyscriptprovider.rb

Overview

When you want to execute a macro written in Ruby, it should be placed under user_profile/Scripts/ruby directory.

Defined Under Namespace

Modules: PackageManager, RubyScripts Classes: BaseNode, CommandEnvironment, DirBrowseNode, DummyInteractionHandler, DummyProgressHandler, FileBrowseNode, PackageBrowseNode, RubyScript, ScriptBrowseNode, ScriptContext, ScriptProviderImpl, Storage, URL

Constant Summary collapse

LANGUAGE =
"Ruby"
NAME =
"#{LANGUAGE}ScriptProvider"
RB_EXTENSION =
".rb"
DOC_PROTOCOL =
"vnd.sun.star.tdoc:"
Property =
Runo.uno_require 'com.sun.star.beans.Property'
Command =
Runo.uno_require 'com.sun.star.ucb.Command'
ScriptFrameworkErrorException =
Runo.uno_require(
"com.sun.star.script.provider.ScriptFrameworkErrorException")
RuntimeException =
Runo.uno_require(
"com.sun.star.uno.RuntimeException")
BrowseNodeTypes =
Runo.uno_require(
"com.sun.star.script.browse.BrowseNodeTypes")

Class Method Summary collapse

Class Method Details

.get_context(ctx, doc) ⇒ Object

get_context(ctx, doc) -> obj Get document context.



510
511
512
513
514
# File 'lib/rubyscriptprovider.rb', line 510

def self.get_context(ctx, doc)
  return ctx.getServiceManager.createInstanceWithContext(
          "com.sun.star.frame.TransientDocumentsDocumentContentFactory", ctx).
          createDocumentContent(doc).getIdentifier.getContentIdentifier
end

.get_document_model(ctx, uri) ⇒ Object

get_document_model(ctx, uri) -> obj Get document model from internal uri.



487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
# File 'lib/rubyscriptprovider.rb', line 487

def self.get_document_model(ctx, uri)
  doc = nil
  smgr = ctx.getServiceManager
  ucb = smgr.createInstanceWithArgumentsAndContext(
      "com.sun.star.ucb.UniversalContentBroker", ["Local", "Office"], ctx)
  identifier = ucb.createContentIdentifier(uri)
  content = ucb.queryContent(identifier)
  property = Property.new("DocumentModel", -1, Uno.get_type("void"), 1)
  command = Command.new(
      "getPropertyValues", -1, 
      Runo::Any.new("[]com.sun.star.beans.Property", [property]))
  env = CommandEnvironment.new
  begin
    result_set = content.execute(command, 0, env)
    doc = result_set.getObject(1, nil)
  rescue => e
    p e.to_s + "\n" + e.backtrace.join("\n") + "\n"
  end
  return doc
end