IIIMF GUI - OpenFoundry

Download Report

Transcript IIIMF GUI - OpenFoundry

IIIMF GUI
Open Source Software Foundry
[email protected]
[email protected]
Outline
• Components for IM UI
• GUI Library: wxWindows
Extensibility
• For the IM service providers, it is essential for
an IM framework to provide features to
differentiate their products from others. Some
examples are:
– Look and Feel
– Functionality
– Cooperation with special applications
• The GUI object downloading mechanism enables
"look and feel" customization through the remote
Language Engine.
• Cooperation with special applications depend on
the platform IMSPI capability.
Object Downloading
• IIIMF supports object downloading where either
binary or text data objects to perform operations
at IIIM client side can be down-loaded from
IIIM server.
• A binary data object types supported in IIIMP
V2.0 is an input method GUI object which
performs preedit, lookup, status, or auxiliary
function, or a light weight engine object which
should work as front-end input method on IIIM
client side and collaborate well with the
associated IIIM server.
• A text data object supported in IIIMP V2.0 is
character conversion rule file, which is written in
pre-defined format syntax, called CCDEF. It
describes the rules of key-action binding and text
composition which should be performed on the
client side.
Components for IM UI
•
•
•
•
Pre-edit region (文字暫區塊)
Status region (狀態區塊)
Lookup choice region (候選區塊)
Auxiliary region (輔助區塊)
Example
wxWidgets (1)
• A free C++ library for cross-platform
development, with bindings for Python, Perl
and C#.
• Since 1992
• Features
– Supported platform: Windows, GTK+, Plain X11,
Motif, MacOS
– can write C++, Python, Perl and C# code directly.
– supports importing and exporting XML resources.
wxWidgets (2)
• Projects
– wxUniversal: to provide basic classes such
as wxWindow, wxFrame and wxDC.
– wxMGL: graphic solution for industry
– wxMicroWindows
• Testimony
– Highest-profile user is Mitch Kapor and his
Open Source Applications Foundation.
– Borland C++ Builder X adapts wxWingets.
Problem (1)
• Weak native resource supports
– wxWidgets is a cross-platform toolkit, and has
been optimized to make writing dialogs by hand as
easy as possible, but this approach has limitations
as soon as dialogs reach a certain complexity.
• Weak language co-development supports
– Some users might want to make use of the RAD
features of the Python bindings during
development, but create a native binary using C++
at the end. This would entail rewriting (or at least
reediting considerably) all dialog related code.
Problem (2)
• Widget items size differ
– Typically, a Motif widget has rather large
borders, whereas a Windows control tries
to use as little space as possible.
Additionally, the user is often able to
change the font size or choose a different
"skin" or "theme" for all dialogs, resulting
in different proportions etc. The size of
widgets can vary if dialogs get translated
into other languages, as a word usually has
a different length in different languages.
wxDesigner
• A commercial dialog editor and RAD tool
for the free wxWidgets GUI library.
• Features
– Make use sizers to query the controls about
the individual size requirements at run-time,
changes in font sizes etc won't do any harm,
the dialog will grow or shrink accordingly.
– Work for GTK 2.3.x