複雑なツールバー 
Addons.xcu ファイルでツールバーを利用する際にボタンの代わりに他のテキストフィールドやコンボボックスといったコントロールを配置することができます。OOo Basic だけではこれらのコントロールの操作ができません。別の言語を利用する必要があります。
コントロールの種類 
ツールバーでは次のコントロールを作成、利用できます。
コントロール | オプション | 説明 |
Button | | ボタン |
Combobox | * | コンボボックス |
Dropdownbox | * | リストボックス |
DropdownButton | * | ドロップダウンボタン |
Editfield | * | テキストフィールド |
ImageButton | | 画像ボタン |
Spinfield | * | スピンフィールド |
ToggleButton | | トグルボタン |
ToggleDropdownButton | | 切り替えドロップボタン |
*: Width 指定可
ControlType に上記の種類を指定します。幅の指定が可能なものには Width を指定します。
コントロール操作用コマンド 
操作用コマンドの一覧です。コマンドは OOo のソースコード framework/source/uielement 以下のファイルなどからから抜き出したものです。
コントロール | コマンド | 引数 | 説明 |
Button | | | なし |
ToggleButton | | | なし |
Combobox | SetText | Text = string | テキストを設定する |
SetList | List = []string | リストを設定する |
AddEntry | Text = string | 項目を追加する |
InsertEntry | Text = string, Pos = long | 項目を挿入する |
RemoveEntryPos | Pos = long | 項目を削除する |
RemoveEntryText | Text = string | 項目を削除する |
SetDropDownLines | Lines = long | ドロップダウン行数を設定する |
SetBackgroundColor | Color = Long | 背景色を設定する |
SetTextColor | Color = Long | 文字色を設定する |
Dropdownbox | SetList | List = []string | リストを設定する |
AddEntry | Text = string | 項目を追加する |
InsertEntry | Text = string, Pos = long | 項目を挿入する |
RemoveEntryPos | Pos = long | 項目を削除する |
RemoveEntryText | Text = string | 項目を削除する |
SetDropDownLines | Lines = long | ドロップダウン行数を設定する |
DropdownButton | SetList | List = []string | リストを設定する |
CheckItemPos | Pos = long | アイテムにチェックを入れる |
AddEntry | Text = string | 項目を追加する |
InsertEntry | Text = string, Pos = long | 項目を挿入する |
RemoveEntryPos | Pos = long | 項目を削除する |
RemoveEntryText | Text = string | 項目を削除する |
Editfield | SetText | Text = string | 文字列を設定する |
ImageButton | SetImage | URL = string | 画像を変更する |
Spinfield | SetStep | Step = long | ステップ値を変更する |
SetValue | Value = long | 値を設定する |
SetValues | Value = long, Step = long, LowerLimit = long, UpperLimit = long, OutputFormat = string | 設定値を変更する |
SetLowerLimit | LowerLimit = long | 下限値を変更する |
SetUpperLimit | UpperLimit = long | 上限値を変更する |
SetOutputFormat | OutputFormat = string | 表示フォーマットを変更する |
ToggleDropdownButton | SetList | List = []string | リストを設定する |
CheckItemPos | Pos = long | アイテムにチェックを入れる |
AddEntry | Text = string | 項目を追加する |
InsertEntry | Text = string, Pos = long | 項目を挿入する |
RemoveEntryPos | Pos = long | 項目を削除する |
RemoveEntryText | Text = string | 項目を削除する |
コントロールのイベント 
コントロールで発生するイベント名と引数の一覧です。イベント名と引数のセットは com.sun.star.beans.NamedValue のシークエンスです。
これらは OOo のソースコード framework/source/uielement 以下のファイルなどからから抜き出したものです。
コントロール | イベント | 引数 | 説明 |
Button | | | なし |
ToggleButton | | | なし |
Combobox | ListChanged | List = []string | リストの変更 |
TextChanged | Text = string | テキストの変更 |
FocusSet | | フォーカスイン |
FocusLost | | フォーカスアウト |
DropdownBox | ListChanged | List = []string | リストの変更 |
FocusSet | | フォーカスイン |
FocusLost | | フォーカスアウト |
DropdownButton | ListChanged | List = []string | リストの変更 |
Pos | ItemChecked = long | 選択アイテムの変更 |
Editfield | TextChanged | Text = string | テキストの変更 |
FocusSet | | フォーカスイン |
FocusLost | | フォーカスアウト |
ImageButton | ImageChanged | URL = string | 画像の変更 |
Spinfield | TextChanged | Text = string | テキストの変更 |
FocusSet | | フォーカスイン |
FocusLost | | フォーカスアウト |
ToggleDropdownButton | ListChanged | List = []string | リストの変更 |
Pos | ItemChecked = long | 選択アイテムの変更 |
コントロール実行時引数 
コントロールが実行されたとき dispatch メソッドが呼ばれます。そのときの引数の値の種類一覧です。引数は com.sun.star.beans.PropertyValue のシークエンスです。
これらは OOo のソースコード framework/source/uielement 以下のファイルなどからから抜き出したものです。
コントロール | 引数 | 説明 |
Button | KeyModifire = long | ボタン動作時 |
ToggleButton | KeyModifire = long | ボタン動作時 |
Combobox | Text = string, KeyModifire = long | コンボボックス動作時 |
DropdownBox | Text = string, KeyModifire = long | ドロップダウンボックス項目選択時 |
Editfield | Text = string, KeyModifire = long | テキストフィールド動作時 |
ImageButton | KeyModifire = long | ボタン動作時 |
Spinfield | Value = long/double, KeyModifire = long | スピン値変更時 |
ToggleDropdownButton | Text = string, KeyModifire = long | ボタン動作時 |
コマンドによるコントロールの操作 
com.sun.star.frame.XDispatch インターフェースの addStatusListener が呼ばれたときに渡される com.sun.star.frame.XStatusListener インターフェースの statusChanged メソッドの引数に操作コマンドなどを含めた com.sun.star.frame.FeatureStateEvent を渡すことでコントロールの状態を操作します。
ToggleButton 
ToggleButton はコマンドで操作される項目はありません。その代わりに、FeatureStateEvent の State 要素にボタンの状態 (True 押した状態、False 押していない状態) を指定して toggle させます。
ToggleButton の状態はコードから操作しない限り変更されません (試しに Addons.xcu ファイルのみで ToggleButton を作成しても toggle されない)。
ToggleButton の状態を設定する時には State に ControlCommand を使いません。State にブール値を指定します。
0
1
2
3
4
5
6
7
8
| | def createSimpleEvent(self,aURL,state,Enabled=True):
""" create Event without command """
aEvent = FeatureStateEvent()
aEvent.FeatureURL = aURL
aEvent.IsEnabled = Enabled
aEvent.Requery = False
aEvent.Source = self
aEvent.State = state
return aEvent
|
このボタンが押されたときに状態を切り替えるには、(ボタンが押されて) dispatch メソッドが呼ばれる度に逆の状態に変更する必要があります。
ToggleDropdownButton 
ToggleDropdownButton の状態変更方法は ToggleButton と同じです。
ボタンのラベルを変更する 
FeatureStateEvent の Status に文字列を指定します。
Dropdown ボタンのリストを設定する 
python では css.beans.NamedValue の Value フィールドに []string を設定しようと tuple('item1', 'item2') などのようにすると []any となってしまうので以下のようにします。
0
1
2
| | import uno
value = uno.Any('[]string', ('hoge', 'hoge2'))
v = NamedValue('List', value)
|