The tk_messageBox widget opens a modal dialog and waits for user response.
See man page here: https://www.tcl-lang.org/man/tcl/TkCmd/messageBox.htm
See also: messageBox, ttk::messageBox.
This command is recommended over use of tk_dialog.
SYNOPSIS
tk_messageBox ?option value ...?
DESCRIPTION
This procedure creates and displays a message window with an application-specified message, an icon and a set of buttons. Each of the buttons in the message window is identified by a unique symbolic name (see the -type options). After the message window is popped up, tk_messageBox waits for the user to select one of the buttons. Then it returns the symbolic name of the selected button. The following option-value pairs are supported:
-default name
Name gives the symbolic name of the default button for this message window ('ok', 'cancel', and so on). See -type for a list of the symbolic names. If this option is not specified, the first button in the dialog will be made the default.
-icon iconImage
Specifies an icon to display. IconImage must be one of the following: error, info, question or warning. If this option is not specified, then the info icon will be displayed.
-message string
Specifies the message to display in this message box.
-detail string
New in 8.5. Specifies additional detail to the main message. Displayed in a smaller font where possible.
-parent window
Makes window the logical parent of the message box. The message box is displayed on top of its parent window.
-title titleString
Specifies a string to display as the title of the message box. The default value is an empty string.
-type predefinedType
Arranges for a predefined set of buttons to be displayed. The following values are possible for predefinedType:
EXAMPLE
set answer [tk_messageBox -message "Really quit?" -type yesno -icon question] switch -- $answer { yes exit no {tk_messageBox -message "I know you like this application!" -type ok} }
With recent versions, the Windows messageBox is "native", while the Unix one continues to rely on the implementation visible in ./library/msgbox.tcl. Before version 8.something, both Win* and Unix used msgbox.tcl [what about MacOS?]. Notice that this means that, if there's something about messageBox you don't like, you have the source code readily available for your enhancements.
[Detail example of how to do this needed right here.]
DKF: No. There has never been a non-native version of tk_messageBox on Windows and Macintosh, though tk_dialog is an approximation (and implemented purely in Tcl scripts) on all platforms.
Donald Arseneau mentions on comp.lang.tcl that this widget is not written to be re-entrant. The result of this means that if there are two instances of tk_messageBox opened at the same time, a button clicked in one of them is seen by all of them! This is a bug in the widget that has been submitted to the sf.net bug database, but doesn't appear to be resolved as of Fall 2003.
[Insert example of how to use option database with messageBox.]
On Unix, the default font for message boxes is Times 18, which is way too fat for longer text. Before creating a messageBox, just add the line
option add *Dialog.msg.font {Times 12}
to get a better readable font (won't hurt in Windows, where native message boxes are used anyway). (RS)
The wraplength also defaults to 3 inches but can be overriden the same way for long messages (BBH)
option add *Dialog.msg.wrapLength 6i
Martin Lemburg Because of the need to have a messagebox in the tclsh, I wrote a tclsh version ... tcl_messageBox. To download the stubs enabled version (tcl v8.1 and higher) use
ftp://ftp.dcade.de/pub/ml/tcl/packages/tcl_messageBox10.zip (package only) ftp://ftp.dcade.de/pub/ml/tcl/packages/tcl_messageBox10.all.zip (includes the source, project files, etc.)
The syntax is simular to the tk_messageBox:
tcl_messageBox ?option optionArg option optionArg ...?
options:
HaO: On windows, the tk_messageBox command sets the toplevel . to the top of the window stacking order. After the message box, the toplevel . gets the focus.
To "repair" this behavior on tcl8.4 one can protect the windows over . by
wm attributes -topmost 1
and save the focus over the routine.
# tk_messageBox for Windows which keeps focus and stacking order proc messageBox args { # > Save focus set Focus [focus] # > Get the toplevels above . and set topmost attribute set lWindows [wm stackorder .] set TopPos [lsearch $lWindows .] if {-1 != $TopPos && $TopPos != [llength $lWindows]} { incr TopPos set lWindows [lrange $lWindows $TopPos end] foreach Wi $lWindows { wm attributes $Wi -topmost 1 } } else { unset lWindows } # > invoke message box set Res [eval tk_messageBox $args] set Res [eval tk_messageBox $args] # > unset topmost attribute if {[info exists lWindows]} { foreach Wi $lWindows { wm attributes $Wi -topmost 0 } } # > Restore focus # Set focus to last widget if we had the focus before # otherwise set it to the topmost window if {[info exists lWindows]} { focus -force [lindex $lWindows end] } elseif {0 < [string length $Focus]} { focus -force $Focus } return $Res } # Test program for demonstration: foreach Wi {. .t1 .t2} { catch {toplevel $Wi} pack [button $Wi.b1 -text messageBox -command "messageBox -message So..."] pack [button $Wi.b2 -text tk_messageBox -command "tk_messageBox -message well..."] }
MG thinks a more correct solution is to use the -parent option to set which widget the message box belongs to. It only defaults to '.' if you don't tell it otherwise.
Willem Re: Harald's script, the 'if' statement under "Set focus to...": I think it is better to always first use lWindows if available, ie., turn around the two checks. I found this improved behaviour when there are more than 2 windows (otherwise an active window can end up beneath an inactive one).
HaO: Ok, corrected, thanks.
HaO 2016-11-17: I have an application without any shown window, only a Taskbar Icon (winicon extension). Thus, always another Application has the input focus.
When showing a tk_messageBox, it gets into front and the foreign application looses focus. When the message box is closed, the foreign application does not get the focus back. To acheve this, I use the code:
# > Save handle of foreground window if {$::tcl_platform(os) eq "Windows NT"} { package require twapi_ui catch { set foregroundWindow [twapi::get_foreground_window] } } # > Call message box set Res [tk_messageBox ...] # > Restore foreground window if {[info exists foregroundWindow]} { catch { twapi::set_foreground_window $ForegroundWindow } }
[Incorporate material from this comp.lang.tcl thread [L1 ].]
RS has grown into the habit of coding
set about "Short descriptive text for the app, at beginning of source file (also serves for some documentation)" ... button .a -text About -command [list tk_messageBox -message $about] ...
Timed-out message box: The native tk_messageBox on Windows can not be closed by script (say after a time-out of e.g. 3 seconds). If you want this (and don't mind oldish bitmap icons), try a tk_dialog this instead:
after 3000 {destroy .dialog1} tk_dialog .dialog1 "Dear user:" "Click ok!" info 0 OK
The same technique can be used to reconfigure the dialog's message widget:
after 1 {.d.msg config -font {Arial 12 italic}} tk_dialog .d Title "This is the main message" info 0 OK ;# RS
MF Pure Tcl message box. I am looking for a way to display a message box (Windows only) w/o using Tk or any other extensions. Thinking about calling wsh (Windows Shell) with echo or popup commands, but cannot find a way. Any ideas?
NEM Well, you can exec wsh. You'll have to check the wsh documentation to see what arguments it expects. It would seem easier to just package require Tk and then pop-up a dialog box, though (with the advantage that it also works on non-Microsoft platforms).
Beware The code here works fine for me on windows, saved as 'test.vbs'. Then you'd just have to exec it properly.
gorjuela - 2009-11-06 14:56:10
Is there a problem with tk_messageBox on Mac OS X (10.5) ? In Wish8.5, try the following:
tk_messageBox -type ok -icon error
a dialog with the standard Wish8.5 frog icon appears. Press ok to dismiss the dialog.
tk_messageBox -type ok -icon info
exactly the same dialog, with the same frog icon, appears. Press ok to dismiss the dialog.
tk_messageBox -type ok -icon question
now the dialog has a different icon-- the exclamation point within a yellow triangle (with a little frog icon superimposed), which is better associated with a warning. Press ok to dismiss the dialog, and finally...
tk_messageBox -type ok -icon warning
exactly the same dialog as the previous <question> dialog, with the same exclamation point.
In contrase, if one does this in Wish8.5 on Windows, one gets four distinct icons: red circle w/white X, an 'i', a '?', and a '!', respectively.
Or is there something else that has to be specified for OS X?
magicknees - 2012-07-11 20:38:29
<I am using the tk_messagebox as a Help->About dialog box. I wanted to only display one box no matter how many times they clicked on About. I also wanted user to be able to continue working while the box was displayed. Since I couldn't capture the name I put a little semaphore flag in:
set GTT_SIM::aboutflag "" proc GTT_SIM:help_about { } { if { $GTT_SIM::aboutflag == "busy" } { return } set GTT_SIM::aboutflag "busy" tk_messageBox -parent . -title "About GTT Simulation" -message { Automating Simulations on ABC Harness systems Making It Easier For You To Do Your Job Created by John, GTT Systems Engineering, 18951 } -type ok set GTT_SIM::aboutflag "" }
>
EE says: How can the user continue working while this is displayed? For me, the message box appears to be a modal dialog.
Note that you can make you own idempotent window fairly easily. Just use winfo exists. Your help_about function can do the following:
if {[winfo exists .help_about]} { wm deiconify .help_about; raise .help_about; focus .help_about; return }
right at the beginning, and if the About window already exists, it'll just raise and focus it instead of making a new one. This will work whether the "Ok" button destroys the window or merely wm withdraw's it. (Also note that if the "Ok" button uses wm withdraw instead of destroy to dismiss the window, you also have the option of using wm protocol to prevent the window from being destroyed by the window manager when the X is clicked.
wm protocol .help_about WM_DELETE_WINDOW {wm withdraw .help_about}
joseamirandavelez - 2013-02-26 15:18:53
How do I get a multi line message? I'm trying to use:
tk_messageBox -message concat "Mass:" $daMass "\nVolume:" $daVolume "\nArea:" $daArea "\nCGX=" $x "\nCGY=" $y "\nCGZ=" $z
but the new line escape does not work. It just ignores it...
'''APE - 2013-02-26 16:44:00 try the following :
tk_messageBox -message "Mass: $daMass \nVolume: $daVolume \nArea: $daArea \nCGX= $x \nCGY= $y \nCGZ= $z"
bll 2017-11-4
My personal opinion: I can't stand these yes/no/cancel message boxes. My strong belief is that the button text should state what will happen when I press the button. e.g. the button should say things like:
Ok, kidding aside, the button should state the actual action that will happen. I don't know what 'Yes' does or 'No' does, and what's the difference between 'Cancel' and 'No'. It is much clearer to the user when the button states the action:
etc. So I wrote my own basic dialog where a list of {button-text button-value} are passed in. This allows any number of buttons, the button text and values can be set to the appropriate values to match the usage. (And looking at my application, the only thing I use it for is "OK" as acknowledgement of fatal errors. A different sort of UI is used for the dialogs now instead of pop-up windows.)
The images below are possible replacements for the standard images. I use the .svg files to create a set of images in different resolutions so that the user's screen resolution can be matched (somewhat better anyways).
error.svg (in the public domain)
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="36" height="36" viewBox="0 0 36 36" id="svg2" version="1.1" inkscape:version="0.91 r" sodipodi:docname="error.svg"> <defs id="defs4"> <filter style="color-interpolation-filters:sRGB" inkscape:label="Drop Shadow" id="filter4526"> <feFlood flood-opacity="1" flood-color="rgb(60,21,17)" result="flood" id="feFlood4528" /> <feComposite in="flood" in2="SourceGraphic" operator="in" result="composite1" id="feComposite4530" /> <feGaussianBlur in="composite1" stdDeviation="4.4" result="blur" id="feGaussianBlur4532" /> <feOffset dx="3" dy="3" result="offset" id="feOffset4534" /> <feComposite in="SourceGraphic" in2="offset" operator="over" result="composite2" id="feComposite4536" /> </filter> <filter style="color-interpolation-filters:sRGB" inkscape:label="Drop Shadow" id="filter5605"> <feGaussianBlur in="SourceAlpha" stdDeviation="5.2" result="blur" id="feGaussianBlur5607" /> <feSpecularLighting in="blur" specularExponent="25" specularConstant="1" surfaceScale="10" lighting-color="#f6f5b7" result="specular" id="feSpecularLighting5609"> <feDistantLight elevation="59" azimuth="205" id="feDistantLight5611" /> </feSpecularLighting> <feComposite in="specular" in2="SourceGraphic" k3="1" k2="1" operator="arithmetic" result="composite1" id="feComposite5613" k1="0" k4="0" /> <feComposite in="composite1" in2="SourceAlpha" operator="in" result="fbSourceGraphic" id="feComposite5615" /> <feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix5737" /> <feGaussianBlur id="feGaussianBlur5739" in="fbSourceGraphicAlpha" stdDeviation="6.86842" result="blur" /> <feSpecularLighting id="feSpecularLighting5741" in="blur" specularExponent="25" specularConstant="0.60000002" surfaceScale="10" lighting-color="#eeed77" result="specular"> <feDistantLight id="feDistantLight5743" elevation="35" azimuth="206" /> </feSpecularLighting> <feComposite id="feComposite5745" in2="fbSourceGraphic" in="specular" k3="1" k2="1" operator="arithmetic" result="composite1" k1="0" k4="0" /> <feComposite id="feComposite5747" in2="fbSourceGraphicAlpha" in="composite1" operator="in" result="fbSourceGraphic" /> <feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix6990" /> <feFlood id="feFlood6992" flood-opacity="1" flood-color="rgb(60,21,17)" result="flood" in="fbSourceGraphic" /> <feComposite id="feComposite6994" in2="fbSourceGraphic" in="flood" operator="in" result="composite1" /> <feGaussianBlur id="feGaussianBlur6996" in="composite1" stdDeviation="4.4" result="blur" /> <feOffset id="feOffset6998" dx="3" dy="3" result="offset" /> <feComposite id="feComposite7000" in2="offset" in="fbSourceGraphic" operator="over" result="composite2" /> </filter> </defs> <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="1" inkscape:cx="-137.21197" inkscape:cy="2.2829629" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" units="px" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" /> <metadata id="metadata7"> <rdf:RDF> <cc:Work rdf:about=""> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> <dc:title></dc:title> </cc:Work> </rdf:RDF> </metadata> <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(-109.5,-907.86218)"> <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:5.19480515px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="127.52348" y="919.40771" id="text4146" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4148" x="127.52348" y="919.40771" /></text> <circle style="opacity:1;fill:#c31212;fill-opacity:1;stroke:#e42929;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter5605)" id="path4559" cx="127.5" cy="925.86218" r="115.5" transform="matrix(0.12987012,0,0,0.12987012,110.94156,805.62035)" /> <rect style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#e42929;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="rect5749" width="21.948051" height="4.6753244" x="116.52598" y="923.52454" /> </g> </svg>
question.svg (in the public domain). Note that you may need to install the suggested font or change it to something appropriate.
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="36" height="36" viewBox="0 0 36 36" id="svg2" version="1.1" inkscape:version="0.91 r" sodipodi:docname="question.svg"> <defs id="defs4"> <filter style="color-interpolation-filters:sRGB" inkscape:label="Drop Shadow" id="filter4526"> <feFlood flood-opacity="1" flood-color="rgb(60,21,17)" result="flood" id="feFlood4528" /> <feComposite in="flood" in2="SourceGraphic" operator="in" result="composite1" id="feComposite4530" /> <feGaussianBlur in="composite1" stdDeviation="4.4" result="blur" id="feGaussianBlur4532" /> <feOffset dx="3" dy="3" result="offset" id="feOffset4534" /> <feComposite in="SourceGraphic" in2="offset" operator="over" result="composite2" id="feComposite4536" /> </filter> <filter style="color-interpolation-filters:sRGB" inkscape:label="Drop Shadow" id="filter5605"> <feGaussianBlur in="SourceAlpha" stdDeviation="5.2" result="blur" id="feGaussianBlur5607" /> <feSpecularLighting in="blur" specularExponent="25" specularConstant="1" surfaceScale="10" lighting-color="#f6f5b7" result="specular" id="feSpecularLighting5609"> <feDistantLight elevation="59" azimuth="205" id="feDistantLight5611" /> </feSpecularLighting> <feComposite in="specular" in2="SourceGraphic" k3="1" k2="1" operator="arithmetic" result="composite1" id="feComposite5613" k1="0" k4="0" /> <feComposite in="composite1" in2="SourceAlpha" operator="in" result="fbSourceGraphic" id="feComposite5615" /> <feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix5737" /> <feGaussianBlur id="feGaussianBlur5739" in="fbSourceGraphicAlpha" stdDeviation="6.86842" result="blur" /> <feSpecularLighting id="feSpecularLighting5741" in="blur" specularExponent="25" specularConstant="0.60000002" surfaceScale="10" lighting-color="#eeed77" result="specular"> <feDistantLight id="feDistantLight5743" elevation="35" azimuth="206" /> </feSpecularLighting> <feComposite id="feComposite5745" in2="fbSourceGraphic" in="specular" k3="1" k2="1" operator="arithmetic" result="composite1" k1="0" k4="0" /> <feComposite id="feComposite5747" in2="fbSourceGraphicAlpha" in="composite1" operator="in" result="fbSourceGraphic" /> <feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0" id="feColorMatrix6990" /> <feFlood id="feFlood6992" flood-opacity="1" flood-color="rgb(60,21,17)" result="flood" in="fbSourceGraphic" /> <feComposite id="feComposite6994" in2="fbSourceGraphic" in="flood" operator="in" result="composite1" /> <feGaussianBlur id="feGaussianBlur6996" in="composite1" stdDeviation="4.4" result="blur" /> <feOffset id="feOffset6998" dx="3" dy="3" result="offset" /> <feComposite id="feComposite7000" in2="offset" in="fbSourceGraphic" operator="over" result="composite2" /> </filter> </defs> <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="1" inkscape:cx="18.000007" inkscape:cy="17.999986" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" units="px" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" /> <metadata id="metadata7"> <rdf:RDF> <cc:Work rdf:about=""> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> <dc:title></dc:title> </cc:Work> </rdf:RDF> </metadata> <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(-109.5,-907.86218)"> <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:5.19480515px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="127.52348" y="919.40771" id="text4146" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4148" x="127.52348" y="919.40771" /></text> <circle style="opacity:1;fill:#c5b20f;fill-opacity:1;stroke:#e42929;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter5605)" id="path4559" cx="127.5" cy="925.86218" r="115.5" transform="matrix(0.12987012,0,0,0.12987012,110.94156,805.62035)" /> <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:11.68831158px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="122.28364" y="934.48004" id="text4356" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4358" x="122.28364" y="934.48004" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:23.37662315px;font-family:'Tibetan Machine Uni';-inkscape-font-specification:'Tibetan Machine Uni'">?</tspan></text> </g> </svg>
warning.svg (in the public domain). Note that you may need to install the suggested font or change it to something more appropriate.
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="36" height="30.924795" viewBox="0 0 36 30.924795" id="svg2" version="1.1" inkscape:version="0.91 r" sodipodi:docname="warning.svg"> <defs id="defs4"> <filter style="color-interpolation-filters:sRGB" inkscape:label="Drop Shadow" id="filter4526"> <feFlood flood-opacity="1" flood-color="rgb(60,21,17)" result="flood" id="feFlood4528" /> <feComposite in="flood" in2="SourceGraphic" operator="in" result="composite1" id="feComposite4530" /> <feGaussianBlur in="composite1" stdDeviation="4.4" result="blur" id="feGaussianBlur4532" /> <feOffset dx="3" dy="3" result="offset" id="feOffset4534" /> <feComposite in="SourceGraphic" in2="offset" operator="over" result="composite2" id="feComposite4536" /> </filter> </defs> <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="1.5664062" inkscape:cx="19.966679" inkscape:cy="9.0895576" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" units="px" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" /> <metadata id="metadata7"> <rdf:RDF> <cc:Work rdf:about=""> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> <dc:title></dc:title> </cc:Work> </rdf:RDF> </metadata> <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(-108.03332,-902.52695)"> <path sodipodi:type="star" style="opacity:1;fill:#ecf547;fill-opacity:1;stroke:#e42929;stroke-width:10;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4526)" id="path4138" sodipodi:sides="3" sodipodi:cx="128.9576" sodipodi:cy="956.60156" sodipodi:r1="140.71124" sodipodi:r2="70.355621" sodipodi:arg1="0.52252258" sodipodi:arg2="1.5697201" inkscape:flatsided="false" inkscape:rounded="0" inkscape:randomized="0" d="m 250.89275,1026.826 -121.85944,0.1311 -121.859438,0.1312 60.816144,-105.59895 60.816144,-105.59895 61.0433,105.4678 z" inkscape:transform-center-x="-0.0093193478" inkscape:transform-center-y="-4.2844365" transform="matrix(0.12309263,0,0,0.1220214,110.15027,805.54793)" /> <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:5.02343178px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="122.5772" y="927.43341" id="text4142" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4144" x="122.5772" y="927.43341" style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:20.09372711px;font-family:KacstArt;-inkscape-font-specification:'KacstArt Medium'">!</tspan></text> <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:5.02343178px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="126.24023" y="912.73651" id="text4146" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4148" x="126.24023" y="912.73651" /></text> </g> </svg>
information.svg (in the public domain). Note that you may have to install the suggested font or change the font.
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="36" height="36" viewBox="0 0 36 36" id="svg2" version="1.1" inkscape:version="0.91 r" sodipodi:docname="information.svg"> <defs id="defs4"> <filter style="color-interpolation-filters:sRGB" inkscape:label="Drop Shadow" id="filter7643"> <feFlood flood-opacity="1" flood-color="rgb(18,17,60)" result="flood" id="feFlood7645" /> <feComposite in="flood" in2="SourceGraphic" operator="in" result="composite1" id="feComposite7647" /> <feGaussianBlur in="composite1" stdDeviation="4.4" result="blur" id="feGaussianBlur7649" /> <feOffset dx="3" dy="3" result="offset" id="feOffset7651" /> <feComposite in="SourceGraphic" in2="offset" operator="over" result="composite2" id="feComposite7653" /> </filter> </defs> <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="1.5664062" inkscape:cx="-91.028687" inkscape:cy="15.584769" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" units="px" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" /> <metadata id="metadata7"> <rdf:RDF> <cc:Work rdf:about=""> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> <dc:title></dc:title> </cc:Work> </rdf:RDF> </metadata> <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(-110.5,-903.94696)"> <circle style="opacity:1;fill:#9396a8;fill-opacity:1;stroke:#1d107e;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter7643)" id="path7004" cx="128.5" cy="921.94696" r="116.5" transform="matrix(0.12875536,0,0,0.12875536,111.95494,803.24135)" /> <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:15.24703217px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="122.52316" y="931.14093" id="text7637" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan7639" x="122.52316" y="931.14093" style="font-style:italic;font-variant:normal;font-weight:500;font-stretch:normal;font-family:'URW Chancery L';-inkscape-font-specification:'URW Chancery L Medium Italic'"><tspan style="font-size:30.49406433px" id="tspan7641">i </tspan></tspan></text> <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:5.15021467px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="128.39453" y="916.052" id="text4146" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4148" x="128.39453" y="916.052" /></text> <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:16.39839745px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="122.14819" y="930.60114" id="text7006" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan7008" x="122.14819" y="930.60114" style="font-style:italic;font-variant:normal;font-weight:500;font-stretch:normal;font-size:32.79679489px;font-family:'URW Chancery L';-inkscape-font-specification:'URW Chancery L Medium Italic'" /></text> </g> </svg>