Skip to content

Instantly share code, notes, and snippets.

@knzm
Last active January 1, 2016 00:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save knzm/8065986 to your computer and use it in GitHub Desktop.
Save knzm/8065986 to your computer and use it in GitHub Desktop.

LibreOffice hacking memo

2013.12.21 関東LibreOfficeハッカソン(#1) #LibOKanto

http://connpass.com/event/3866/

基本情報

Mac でのビルド方法

環境: Mac OS X 10.8.5 Mountain Lion

$ git checkout libreoffice-4-2
$ ./autogen.sh --with-lang="ja"
$ make

(事前に autoconf, automake のインストールが必要)

クリーンビルドには 3 時間以上かかる

Mac Ports や Homebrew をインストールしていてビルドに失敗する場合は autogen.sh に以下のオプションを付けるとうまくいくかも

--enable-bogus-pkg-config
--disable-python
--without-java
--disable-ccache 

開発用にビルドする場合は以下のオプションを指定すると良いらしい(未確認)

--enable-dbgutil

実行方法

$ open ./instdir/LibreOfficeDev.app

以下のようにして起動すると、 printf や NSLog で出力した文字列がターミナルに表示される

$ ./instdir/LibreOfficeDev.app/Contents/MacOS/soffice --calc

README.Code の抄訳

重要な部分の quick overview:

sal/      - これはシンプルな System Abstraction Layer を提供します
tools/    - これは基本的な内部型「長方形」「カラー」などを提供します
vcl/      - これはウィジェットツールキットライブラリと1つのレンダリング抽象です
svx/      - グラフィックス関係のヘルパーコードです。 'draw' / 'impress' の多くを含んでいます
sfx2/     - コアフレームワーク: ドキュメントモデル / load/save / アクションへのシグナルなど
framework - コアフレームワークまわりの UNO ラッパー。 VCL ウィジェットと */uiconfig/ ファイルの XML 記述を使用して、ツールバー、メニュー、ステータスバーおよびドキュメントまわりのクロムを構築することに責任を負います

アプリケーション:

desktop/  - これはアプリケーション用の「メイン」がある場所です。初期化 / ブートストラップ、名前はデスクトップを描画していた古代のスターオフィスにさかのぼります
sw/       - writer
sc/       - calc
sd/       - draw / impress

グラフィックの観点から有用なライブラリが他にいくつかあります:

basebmp/      - ビットマップをレンダリング可能にする VCL と互換性を持つレンダリング API 。 LibreOffice オンライン、 Android 、 iOS などで使われます
basegfx/      - キャンバスの中で使用されるグラフィックス用のアルゴリズムおよびデータ型
canvas/       - 様々なバックエンドを持つ新しい (UNO) キャンバスのレンダリングモデル
cppcanvas/    - UNO キャンバスを使用するための C++ ヘルパークラス
drawinglayer/ - 図形を描画するドキュメントをレンダリングおよび管理し、より簡単にレンダリングすることができるプリミティブに分割するためのコード

翻訳について

https://translations.documentfoundation.org/ ここから登録する

pootle の使い方

  • LibreOffice-4.2 UI > 日本語 > 翻訳を続行 から開始
  • tips
    • LibreOffice-4.1 UI で検索しながらやるとよい
    • ウィンドウの幅を広げると下部に「前の文字列」「次の文字列」が出てくる
    • Ctrl + Down でスキップできる

翻訳の注意

  • アクセラレータキー
    • 本文を翻訳して、末尾に (_P) のようにしてアクセラレータキーを付ける
    • 最後が記号だったらアクセラレータキーはその前に
      • ほげほげ(_P)...
      • ほげほげ(_Q):
    • アクセラレータキーのプレフィックスが 4.1 から 4.2 で変わって大量の未翻訳が発生している
      • 4.1 の ~X が 4.2 では _X に
  • 「!」「?」は全角で統一する
  • 原文が -er/-or だったら長音にする
    • プリンター (伸ばす)
    • プロパティ (伸ばさない)

本日の活動

やりたいこと

  • Calc の不具合について調べる (on Mac)
    • 慣性スクロール中に Cmd キーを押すとズームになる
    • 拡張子 tsv を Calc で開けない
    • CSV ファイルを上書き保存するとタブ区切りになる
    • カーソルの位置がずれる(フォントの問題?)
    • 編集すると文字の大きさが変わる
  • 翻訳

成果1: 翻訳

  • 採用した提案 164
  • 留保中の提案 90
  • 査読済みの提案 0
  • 翻訳の採用数 164

https://translations.documentfoundation.org/accounts/knzm/

成果2: Calc の不具合調査

  1. LibreOffice 4.1 Mac 版では再現するが 4.2 で直っていた
    • 拡張子 tsv を Calc で開けない
    • CSV ファイルを上書き保存するとタブ区切りになる
  2. LibreOffice 4.2 でも再現する
    • 慣性スクロール中に Cmd キーを押すとズームになる
  3. 慣性スクロール中に Cmd キーを押すとズームになる問題について
    • 何が問題か
      • 2本指でスクロールすると、指を離してもしばらくスクロールが続く (慣性スクロール)
      • この状態で Cmd キーを押すと、その瞬間にズームが始まる
      • Cmd + スクロールによるズーム機能が意図せず働いている
    • vcl/aqua/source/window/salframeview.mm の scrollWheel() あたりが関係
    • イベントの phase 属性でタッチ中かどうかが取れる
      • ただしこの方法ではおそらくトラックパッドで慣性スクロール中と通常のマウスでスクロールした場合が区別できない
    • もらったアドバイス
      • Mac 標準の動作と比較する必要がありそう
      • Cmd キーが押されたらスクロールを止めてしまえばいいのでは
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment