10 Name Message

▼ |  | Mr Lib: Extra GUI Libraries

1 | Aligned Pasteboard
2 | Bitmap Label
3 | Cache-image Snip
4 | Close Icon
5 | GIF and Animated GIF Writing
6 | Graphs
7 | Hierarchical List Control
8 | Include Bitmap
9 | Interactive Value Port
10 | Name Message
11 | Path Dialog
12 | Plot
13 | Switchable Button
14 | Image Core
15 | Matrix Snip
16 | Te X Table
17 | Terminal Window
18 | Acknowledgments
| Index

On this page:

name-message%
new
on-choose-directory
on-event
on-paint
set-hidden?
set-message
set-short-title
fill-popup
get-background-color
set-allow-shrinking
calc-button-min-sizes
draw-button-label
pad-xywh

top ← prev up next →

### 10`` Name Message

(require mrlib/name-message)

class name-message% : class?
superclass: canvas%

A name-message% control displays a filename that the user can click to show the filename’s path and select one of the enclosing directories. Override the on-choose-directory method to handle the user’s selection.

> > constructor (new name-message% ...superclass-args...)
> > → (is-a?/c name-message%)

> Passes all arguments to super-init.

> > method (send a-name-message on-choose-directory dir) → void?
> > dir : path-string?

> Called when one of the popup menu items is chosen. The argument is a represents the selected directory.

> > method (send a-name-message on-event event) → void?
> > event : (is-a?/c mouse-event%)

> Overrides on-event in canvas<%>.
> Handles the click by popping up a menu or message.

> > method (send a-name-message on-paint) → void?

> Overrides on-paint in canvas%.
> Draws the control’s current message.

> > method (send a-name-message set-hidden? hidden?) → void?
> > hidden? : any/c

> Calling this method with #f causes the name message to become invisible and to stop responding to mouse movements.

> Calling it with a true value restores its visibility and makes it respond to mouse movements again.

> > > method
> > > (send a-name-message set-message |  | file-name? |  |  |  |
> > > |  | msg) |  | → |  | void?
> > file-name? : any/c
> > msg : (if filename? path-string? string?)

> Sets the label for the control.

> If file-name? is #t, msg is treated like a pathname, and a click on the name-message control creates a popup menu to open a get-file dialog.

> If file-name? is #f, msg is treated as a label string. Clicking on the name-message control pops up a dialog saying that there is no file name until the file is saved.

> > method (send a-name-message set-short-title short-title?) → void?
> > short-title? : boolean?

> Sets the short-title? flag. The flag defaults to #f.

> If the flag is #t, then the label for the control is simply the string "/". Otherwise, the label is determined by the set-message.

> > method (send a-name-message fill-popup menu reset) → any
> > menu : (is-a?/c popup-menu%)
> > reset : (-> void?)

> This method is called when the user clicks in the name message. Override it to fill in the menu items for the popup menu menu.

> > method (send a-name-message get-background-color)
> > → (or/c #f (is-a/c color%) string?)

> The result of this method is used for the background color when redrawing the name message. If it is #f, the OS’s default panel background is used.

> > method (send a-name-message set-allow-shrinking width) → void?
> > width : (or/c #f number?)

> When this method receives a number, the name-message will then shrink (the number indicates the minimum width the name message will have).

> If it receives false, the name message will not shrink and its minimum width will be the size required to display its current label.

> By default, the name-message does not allow shrinking.

> > procedure
> > (calc-button-min-sizes dc str [font]) |  | → |  |
> > real? |  | real?
> dc : (is-a?/c dc<%>)
> str : string?
> font : (or/c #f (is-a?/c font%)) = #f

Calculates the minimum width and height of a button label (when drawn with draw-button-label). Returns two values: the width and height. The dc argument is used for sizing.

> > procedure
> > (draw-button-label |  | dc |  |  |  |
> > |  | str |  |  |  |
> > |  | dx |  |  |  |
> > |  | dy |  |  |  |
> > |  | width |  |  |  |
> > |  | height |  |  |  |
> > |  | mouse-over? |  |  |  |
> > |  | grabbed? |  |  |  |
> > |  | font |  |  |  |
> > |  | background) |  | → |  | void?
> dc : (is-a?/c dc<%>)
> str : string?
> dx : real?
> dy : real?
> width : real?
> height : real?
> mouse-over? : boolean?
> grabbed? : boolean?
> font : (is-a?/c font%)
> background : (or/c (is-a?/c color%) string? #f)

Draws a button label like the one for the (define ...) and filename buttons in the top-left corner of the DrRacket frame. Use this function to draw similar buttons.

The basic idea is to create a canvas object whose on-paint method is overridden to call this function. The dc argument should be canvas’s drawing context, and str should be the string to display on the button. The width and height arguments should be the width and height of the button, and the dx and dy arguments specify an offset into dc for the button. The mouse-over? argument should be true when the mouse is over the button, and the grabbed? argument should be true when the button has been pressed. The font and background arguments supply the font to use in drawing (possibly normal-control-font) and the background color to paint (if any).

See calc-button-min-sizes for help calculating the min sizes of the button.

> > procedure
> > (pad-xywh tx ty tw th) |  | → |  |
> > number? |  | number? |  | (>=/c 0) |  | (>=/c 0)
> tx : number?
> ty : number?
> tw : (>=/c 0)
> th : (>=/c 0)

Returns spacing information describing how draw-button-label draws. The inputs are the x and y coordinates where the text should appear and the width and height of the text, and the results are the x and y coordinates where the shape should be drawn and the width and height of the overall shape.
top ← prev up next →