2012-04-07 20:02:10 +08:00
|
|
|
<TeXmacs|1.0.7.15>
|
|
|
|
|
|
|
|
<style|tmdoc>
|
|
|
|
|
|
|
|
<\body>
|
|
|
|
<tmdoc-title|Containers, glue, refresh and cia.>
|
|
|
|
|
Features and fixes (Qt):
Support for widgets: texmacs-output, texmacs-input, resize, popup (for help
balloons), buttons in dialogs, tweaks here and there.
Fixes to layouts and sizing, scroll widgets are dummy for most widgets.
Support for side tools as another (floatable) QToolBar. Would a QDockWidget
be better?
Consistent (albeit partial) support for TeXmacs' widget styles.
Support for some more widgets as menu items (i.e. as QActions for QToolBar).
Fix placement of context menus.
New management of ownership of QWidgets.
Cleanup and maintenance (Qt):
Comments. Many, many comments.
Removed unnecessary files.
Grouped common method definitions.
Shifting around of code for consistency.
Documentation regarding widgets and extension of the UI.
XCode: update project for XCode4, new xcconfig for MOC objects fixes linker
warnings.
To do (Qt):
Fine-tune the presentation of QWidgets: remove unnecessary spacing, provide
default alignment policies, add better support for widgets in QToolBars
(see as_qaction()).
Finish the popup widget (timeout, etc.)
Why are texmacs widgets so often wrapped into vertical widgets? This messes
with scrollable_widget.
Understand why QPainter is not properly initialized for output widgets, then
remove the hack in Texmacs/Window/tm_button.cpp.
2012-05-29 06:17:09 +08:00
|
|
|
<section|Attribute widgets>
|
2012-04-07 20:02:10 +08:00
|
|
|
|
Features and fixes (Qt):
Support for widgets: texmacs-output, texmacs-input, resize, popup (for help
balloons), buttons in dialogs, tweaks here and there.
Fixes to layouts and sizing, scroll widgets are dummy for most widgets.
Support for side tools as another (floatable) QToolBar. Would a QDockWidget
be better?
Consistent (albeit partial) support for TeXmacs' widget styles.
Support for some more widgets as menu items (i.e. as QActions for QToolBar).
Fix placement of context menus.
New management of ownership of QWidgets.
Cleanup and maintenance (Qt):
Comments. Many, many comments.
Removed unnecessary files.
Grouped common method definitions.
Shifting around of code for consistency.
Documentation regarding widgets and extension of the UI.
XCode: update project for XCode4, new xcconfig for MOC objects fixes linker
warnings.
To do (Qt):
Fine-tune the presentation of QWidgets: remove unnecessary spacing, provide
default alignment policies, add better support for widgets in QToolBars
(see as_qaction()).
Finish the popup widget (timeout, etc.)
Why are texmacs widgets so often wrapped into vertical widgets? This messes
with scrollable_widget.
Understand why QPainter is not properly initialized for output widgets, then
remove the hack in Texmacs/Window/tm_button.cpp.
2012-05-29 06:17:09 +08:00
|
|
|
Setting attributes of widgets is achieved by enclosing them in the
|
2012-07-29 18:06:13 +08:00
|
|
|
following special widgets.
|
2012-04-07 20:02:10 +08:00
|
|
|
|
2012-07-29 18:06:13 +08:00
|
|
|
<\explain>
|
|
|
|
<scm|(centered wid)><explain-synopsis|centers the widget <scm|wid>>
|
|
|
|
<|explain>
|
|
|
|
This does just that: it centers the widget <scm|wid> with respect to the
|
|
|
|
enclosing widget. Although we are calling this an attribute, the effect
|
|
|
|
is achieved by using a vertical list and a horizontal one together with
|
|
|
|
four <scm|glue> widgets. This means that in the following example, the
|
|
|
|
first widget is actually expanded to something like the second one.
|
2012-04-07 20:02:10 +08:00
|
|
|
|
2012-07-29 18:06:13 +08:00
|
|
|
<\session|scheme|default>
|
|
|
|
<\unfolded-io|Scheme] >
|
|
|
|
(tm-widget (wid1)
|
|
|
|
|
|
|
|
\ \ (centered (text "I'm centered.")))
|
|
|
|
<|unfolded-io>
|
|
|
|
((guile-user) (guile-user))
|
|
|
|
</unfolded-io>
|
|
|
|
|
|
|
|
<\folded-io|Scheme] >
|
|
|
|
(tm-widget (wid2)
|
|
|
|
|
|
|
|
\ \ (vlist
|
|
|
|
|
|
|
|
\ \ \ \ (glue #f #f 0 10)
|
|
|
|
|
|
|
|
\ \ \ \ (hlist
|
|
|
|
|
|
|
|
\ \ \ \ \ \ (glue #t #f 25 0)
|
|
|
|
|
|
|
|
\ \ \ \ \ \ (text "I'm centered.")
|
|
|
|
|
|
|
|
\ \ \ \ \ \ (glue #t #f 25 0))
|
|
|
|
|
|
|
|
\ \ \ \ (glue #f #f 0 10)))
|
|
|
|
<|folded-io>
|
|
|
|
((guile-user) (guile-user))
|
|
|
|
</folded-io>
|
|
|
|
|
|
|
|
<\input|Scheme] >
|
|
|
|
(show wid1)
|
|
|
|
</input>
|
|
|
|
|
|
|
|
<\input|Scheme] >
|
|
|
|
(show wid2)
|
|
|
|
</input>
|
|
|
|
</session>
|
|
|
|
</explain>
|
|
|
|
|
|
|
|
<\explain>
|
|
|
|
<scm|(resize (w1 w2 w3) (h1 h2 h3) wid)>
|
|
|
|
|
|
|
|
<scm|(resize w h wid)><explain-synopsis|resizes the widget <scm|wid>>
|
|
|
|
<|explain>
|
|
|
|
These two variants resize the argument. The first one specifies a minimum
|
|
|
|
size of <scm|w1 x h1>, a default size of <scm|w2 x h2> and a maximum size
|
|
|
|
of <scm|w3 x h3>. The widget <scm|wid> will be set to the default size
|
|
|
|
and will be allowed to resize but not beyond the bounds specified. The
|
|
|
|
second alternative sets a fixed width and height.
|
|
|
|
|
|
|
|
Sizes are specified as strings with a unit suffix, like in <scm|"150px">.
|
|
|
|
|
|
|
|
<\session|scheme|default>
|
|
|
|
<\unfolded-io|Scheme] >
|
|
|
|
(tm-widget (wid)
|
|
|
|
|
|
|
|
\ \ (resize "200px" "70px" (text "I'm stuck!")))
|
|
|
|
<|unfolded-io>
|
|
|
|
\;
|
|
|
|
</unfolded-io>
|
|
|
|
|
|
|
|
<\input|Scheme] >
|
|
|
|
(show wid)
|
|
|
|
</input>
|
|
|
|
</session>
|
|
|
|
</explain>
|
|
|
|
|
|
|
|
<\explain>
|
|
|
|
<scm|(padded wid)><explain-synopsis|surrounds the widget <scm|wid> by
|
|
|
|
padding>
|
|
|
|
<|explain>
|
|
|
|
This sets some fixed padding around <scm|wid>. As in the case of
|
|
|
|
<scm|centered>, the effect is achieved by means of several widgets into
|
|
|
|
which this macro expands. These are actually the same as in the example
|
|
|
|
there, but the <scm|glue> widgets are all fixed (i.e. have all their
|
|
|
|
expansion paramenters set to <scm|#f>).
|
|
|
|
</explain>
|
|
|
|
|
|
|
|
<section|Container or layout widgets>
|
2012-04-07 20:02:10 +08:00
|
|
|
|
Features and fixes (Qt):
Support for widgets: texmacs-output, texmacs-input, resize, popup (for help
balloons), buttons in dialogs, tweaks here and there.
Fixes to layouts and sizing, scroll widgets are dummy for most widgets.
Support for side tools as another (floatable) QToolBar. Would a QDockWidget
be better?
Consistent (albeit partial) support for TeXmacs' widget styles.
Support for some more widgets as menu items (i.e. as QActions for QToolBar).
Fix placement of context menus.
New management of ownership of QWidgets.
Cleanup and maintenance (Qt):
Comments. Many, many comments.
Removed unnecessary files.
Grouped common method definitions.
Shifting around of code for consistency.
Documentation regarding widgets and extension of the UI.
XCode: update project for XCode4, new xcconfig for MOC objects fixes linker
warnings.
To do (Qt):
Fine-tune the presentation of QWidgets: remove unnecessary spacing, provide
default alignment policies, add better support for widgets in QToolBars
(see as_qaction()).
Finish the popup widget (timeout, etc.)
Why are texmacs widgets so often wrapped into vertical widgets? This messes
with scrollable_widget.
Understand why QPainter is not properly initialized for output widgets, then
remove the hack in Texmacs/Window/tm_button.cpp.
2012-05-29 06:17:09 +08:00
|
|
|
You can arrange widgets horizontally or vertically, or in two column mode
|
|
|
|
as in forms. When running the QT version the latter will default to the OS
|
|
|
|
standard for arranging labels and their associated input widgets in
|
2012-07-29 18:06:13 +08:00
|
|
|
dialogs. Other possibilites are splitters and tabbed widgets. A very useful
|
|
|
|
macro is <scm|dynamic>, which allows you to embed one widget into another.
|
|
|
|
|
|
|
|
<\explain>
|
|
|
|
<scm|(aligned items-list)><explain-synopsis|arranges items in a two
|
|
|
|
column table>
|
|
|
|
<|explain>
|
|
|
|
\;
|
|
|
|
</explain>
|
2012-04-07 20:02:10 +08:00
|
|
|
|
2012-07-29 18:06:13 +08:00
|
|
|
<\explain>
|
|
|
|
<scm|(hlist widgets)><explain-synopsis|arranges items horizontally>
|
|
|
|
<|explain>
|
|
|
|
\;
|
|
|
|
</explain>
|
|
|
|
|
|
|
|
<\explain>
|
|
|
|
<scm|(vlist widgets)><explain-synopsis|arranges items vertically>
|
|
|
|
<|explain>
|
|
|
|
\;
|
|
|
|
</explain>
|
|
|
|
|
|
|
|
<\explain>
|
|
|
|
<scm|(hsplit (item ) (item ) ...)><explain-synopsis|arranges two items in
|
|
|
|
a variable size split panel>
|
|
|
|
<|explain>
|
|
|
|
\;
|
|
|
|
</explain>
|
|
|
|
|
|
|
|
<\explain>
|
|
|
|
<scm|(tabs (tab ) (tab ) ...)><explain-synopsis|a tabbed widget>
|
|
|
|
<|explain>
|
|
|
|
\;
|
|
|
|
</explain>
|
|
|
|
|
|
|
|
<\explain>
|
|
|
|
<scm|(dynamic (wid))><explain-synopsis|embeds a tm-widget into another
|
|
|
|
one>
|
|
|
|
<|explain>
|
|
|
|
<scm|wid> can be any widget defined using <scm|tm-define>.
|
|
|
|
</explain>
|
2012-04-07 20:02:10 +08:00
|
|
|
|
|
|
|
<section|Glue widgets>
|
|
|
|
|
2012-07-29 18:06:13 +08:00
|
|
|
Besides laying out widgets in containers, you will often want to specifiy
|
|
|
|
how they eat up space around them when the user resizes the window. By
|
|
|
|
default (most?) widgets take up as much space as they can (i.e. they always
|
|
|
|
expand) unless you used <scm|resize> with them. If you don't want this to
|
|
|
|
happen you can place invisible spacers around them which will (if you tell
|
|
|
|
them to) gobble up as much as they can, either vertically or horizontally
|
|
|
|
or in both directions.
|
|
|
|
|
|
|
|
<TeXmacs> provides one such basic building block:
|
|
|
|
|
|
|
|
<\explain>
|
|
|
|
<scm|(glue horiz vert width height)><explain-synopsis|possibly expanding
|
|
|
|
whitespace>
|
|
|
|
<|explain>
|
|
|
|
The first two parameters are of type <scm|bool> and specify whether the
|
|
|
|
<scm|glue> widget will try to expand horizontally or vertically when its
|
|
|
|
surroundings do. The last two parameters either fix the size for
|
|
|
|
non-expanding <scm|glue> or set a minimum one.
|
|
|
|
|
|
|
|
<\session|scheme|default>
|
|
|
|
<\unfolded-io|Scheme] >
|
|
|
|
(tm-widget (wid1)
|
|
|
|
|
|
|
|
\ \ (centered (text "I'm centered.")))
|
|
|
|
<|unfolded-io>
|
|
|
|
((guile-user) (guile-user))
|
|
|
|
</unfolded-io>
|
|
|
|
|
|
|
|
<\unfolded-io|Scheme] >
|
|
|
|
(tm-widget (wid2)
|
|
|
|
|
|
|
|
\ \ (vlist
|
|
|
|
|
|
|
|
\ \ \ \ ===
|
|
|
|
|
|
|
|
\ \ \ \ (hlist
|
|
|
|
|
|
|
|
\ \ \ \ \ \ (glue #t #f 25 0)
|
|
|
|
|
|
|
|
\ \ \ \ \ \ (text "I'm centered.")
|
|
|
|
|
|
|
|
\ \ \ \ \ \ (glue #t #f 25 0))
|
|
|
|
|
|
|
|
\ \ \ \ (glue #f #f 0 10)))
|
|
|
|
<|unfolded-io>
|
|
|
|
((guile-user) (guile-user) (guile-user) (guile-user))
|
|
|
|
</unfolded-io>
|
|
|
|
|
|
|
|
<\input|Scheme] >
|
|
|
|
(show wid1)
|
|
|
|
</input>
|
|
|
|
|
|
|
|
<\input|Scheme] >
|
|
|
|
(show wid2)
|
|
|
|
</input>
|
|
|
|
|
|
|
|
<\input|Scheme] >
|
|
|
|
\;
|
|
|
|
</input>
|
|
|
|
</session>
|
|
|
|
</explain>
|
|
|
|
|
|
|
|
In addition to the basic <scm|glue> widget, there are several convenience
|
|
|
|
macros.
|
2012-04-07 20:02:10 +08:00
|
|
|
|
2012-07-29 18:06:13 +08:00
|
|
|
<\explain>
|
|
|
|
<scm|===><explain-synopsis|vertical separator>
|
|
|
|
<|explain>
|
|
|
|
Expands to <scm|(glue #f #f 0 5)>.
|
|
|
|
</explain>
|
2012-04-07 20:02:10 +08:00
|
|
|
|
2012-07-29 18:06:13 +08:00
|
|
|
<\explain>
|
|
|
|
<scm|======><explain-synopsis|big vertical separator>
|
|
|
|
<|explain>
|
|
|
|
Expands to <scm|(glue #f #f 0 15)>.
|
|
|
|
</explain>
|
2012-04-07 20:02:10 +08:00
|
|
|
|
2012-07-29 18:06:13 +08:00
|
|
|
<\explain>
|
|
|
|
<scm|//><explain-synopsis|horizontal separator>
|
|
|
|
<|explain>
|
|
|
|
Expands to <scm|(glue #f #f 5 0)>.
|
|
|
|
</explain>
|
2012-04-07 20:02:10 +08:00
|
|
|
|
2012-07-29 18:06:13 +08:00
|
|
|
<\explain>
|
|
|
|
<scm|///><explain-synopsis|big horizontal separator>
|
|
|
|
<|explain>
|
|
|
|
Expands to <scm|(glue #f #f 15 0)>.
|
|
|
|
</explain>
|
2012-04-07 20:02:10 +08:00
|
|
|
|
2012-07-29 18:06:13 +08:00
|
|
|
<\explain>
|
|
|
|
<scm|\<gtr\>\<gtr\>><explain-synopsis|expanding horizontal separator>
|
|
|
|
<|explain>
|
|
|
|
Expands to <scm|(glue #t #f 5 0)>.
|
|
|
|
</explain>
|
2012-04-07 20:02:10 +08:00
|
|
|
|
2012-07-29 18:06:13 +08:00
|
|
|
<\explain>
|
|
|
|
<scm|\<gtr\>\<gtr\>\<gtr\>><explain-synopsis|big expanding horizontal
|
|
|
|
separator>
|
|
|
|
<|explain>
|
|
|
|
Expands to <scm|(glue #t #f 15 0)>.
|
|
|
|
</explain>
|
2012-04-07 20:02:10 +08:00
|
|
|
|
2012-07-29 18:06:13 +08:00
|
|
|
For the specific use in menus the following two macros are defined:
|
2012-04-07 20:02:10 +08:00
|
|
|
|
2012-07-29 18:06:13 +08:00
|
|
|
<\explain>
|
|
|
|
<scm|\|><explain-synopsis|horizontal separator>
|
|
|
|
<|explain>
|
|
|
|
(That's a vertical bar: <scm|\|>)
|
|
|
|
</explain>
|
2012-04-07 20:02:10 +08:00
|
|
|
|
2012-07-29 18:06:13 +08:00
|
|
|
<\explain>
|
|
|
|
<scm|---><explain-synopsis|vertical separator>
|
|
|
|
<|explain>
|
|
|
|
(That's <with|font-series|bold|three> dashes. If you see only two, that's
|
|
|
|
a bug which hasn't yet been fixed)
|
|
|
|
</explain>
|
2012-04-07 20:02:10 +08:00
|
|
|
|
|
|
|
<section|Refresh widgets>
|
|
|
|
|
|
|
|
Refresh widgets reevaluate their contents every time a command is
|
|
|
|
executed...
|
|
|
|
|
2012-07-29 18:06:13 +08:00
|
|
|
<section|Composite widgets>
|
2012-04-07 20:02:10 +08:00
|
|
|
|
|
|
|
\;
|
Features and fixes (Qt):
Support for widgets: texmacs-output, texmacs-input, resize, popup (for help
balloons), buttons in dialogs, tweaks here and there.
Fixes to layouts and sizing, scroll widgets are dummy for most widgets.
Support for side tools as another (floatable) QToolBar. Would a QDockWidget
be better?
Consistent (albeit partial) support for TeXmacs' widget styles.
Support for some more widgets as menu items (i.e. as QActions for QToolBar).
Fix placement of context menus.
New management of ownership of QWidgets.
Cleanup and maintenance (Qt):
Comments. Many, many comments.
Removed unnecessary files.
Grouped common method definitions.
Shifting around of code for consistency.
Documentation regarding widgets and extension of the UI.
XCode: update project for XCode4, new xcconfig for MOC objects fixes linker
warnings.
To do (Qt):
Fine-tune the presentation of QWidgets: remove unnecessary spacing, provide
default alignment policies, add better support for widgets in QToolBars
(see as_qaction()).
Finish the popup widget (timeout, etc.)
Why are texmacs widgets so often wrapped into vertical widgets? This messes
with scrollable_widget.
Understand why QPainter is not properly initialized for output widgets, then
remove the hack in Texmacs/Window/tm_button.cpp.
2012-05-29 06:17:09 +08:00
|
|
|
|
|
|
|
\;
|
2012-04-07 20:02:10 +08:00
|
|
|
</body>
|