Ruby-GetTextの三つのカッコ

_("Message")はメッセージを翻訳する。
n_("Car", "Cars", 2)は複数形判別つきの翻訳。
N_("Message")は何もしない。poを作るときにメッセージIDを拾わせるときに使う。

参考:Ruby-GetText-Package API Reference – YotaLab Storage

Categories: Whatnot |Tagged , , | Leave a comment

zshで大文字小文字を区別せず補完

.zshrcにこう書く。

zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
Categories: Uncategorized |Tagged , | Leave a comment

Blogit.vimからの投稿テスト

blogit.vimを入れてみたので投稿テステス。
追記追記。

Categories: Whatnot |Tagged | Leave a comment

vimにちょっと慣れてきた頃に覚えた操作

h,j,k,l,i,a,y,o,uあたりを考えずに使えるようになってきました。というわけで最近覚えてベンリィなキー操作。

cw カーソルの下の単語末尾までを置き換える(削除してインサートモードへ)。wは移動なのでcf{(次の中括弧までを置き換え)とかc3j(三行削除して置き換え)とかも可能。
== インデントを調整。ヴィジュアルモードで複数行選択してから=でもOK。ファイル全体ならggvG=
J 今の行と次の行を連結。
Categories: HowTo's, Tips and Tricks |Tagged | Leave a comment

FlexアプリケーションのMXML内要素を外部から参照する

Flex 4で、メインのMXML内の要素を他のクラスから参照する方法です。


「Flexアプリケーション」を作り始めると、まるでMXMLの中にコードを書くのがデフォかのようになりますが、<fx:Script>の中にコードが増えていくのはあまり気持ちよくないですね。そこで別のクラスにエントリポイントを作ることになります。これはApplicationCompleteイベントにハンドラをつけるだけです。

MyFlexApp.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:s="library://ns.adobe.com/flex/spark"
    xmlns:mx="library://ns.adobe.com/flex/mx"
    applicationComplete="MyEntryPointClass.main()">
    <!--UI要素とかの定義...-->
</s:WindowedApplication>

さて、MyEntryPointClassからこのMXMLを参照する方法です。

このMyFlexApp.mxmlは

  • 実行時にはMyFlexAppクラスのインスタンスとして存在する。
  • クラス名はアプリごとに違う。MXMLのファイル名をクラス名として持つらしい。
  • Applicationのサブクラス。
  • mx.core.FlexGlobals.topLevelApplicationを使えばどこからでも参照できる
  • ただしtopLevelApplicationはObject型なので、MyFlexApp型へキャストしないと使えない。

というわけで、でき上がったコードはこんな感じ。

MyFlexApp.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:s="library://ns.adobe.com/flex/spark"
    xmlns:mx="library://ns.adobe.com/flex/mx"
    applicationComplete="MyEntryPointClass.main();">
    <s:Button label="Button" id="theButton" />
</s:WindowedApplication>

MyEntryPointClass.as

package{
  import flash.events.MouseEvent;
  import mx.core.FlexGlobals;
  import spark.components.Application;
  public class MyEntryPointClass{
    public static function main():void{
      var app:MyFlexApp = mx.core.FlexGlobals.topLevelApplication as MyFlexApp;
      app.theButton.addEventListener(MouseEvent.CLICK, theHandler);
    }
    private static function theHandler(e:MouseEvent):void{
      // yada yada yada...
    }
  }
}

やったね!

参考:mx.core.FlexGlobals – Adobe® Flex® 4 リファレンスガイド (Flex 4)

Categories: HowTo's, Tips and Tricks |Tagged , , | Leave a comment