Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: installer/src/installer-lib/interaction.h

Issue 5675960980471808: Updated installer with custom action (Closed)
Patch Set: Created March 8, 2014, 5:06 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 /** 1 /**
2 * \file interaction.h User interaction classes. Message boxes and translations. 2 * \file interaction.h User interaction classes. Message boxes and translations.
3 */ 3 */
4 4
5 #ifndef INTERACTION_H 5 #ifndef INTERACTION_H
6 #define INTERACTION_H 6 #define INTERACTION_H
7 7
8 #include <string>
9
10 #include "session.h"
11
12 #include <Windows.h>
13 #include <Msi.h>
14 #include <MsiQuery.h>
15
16 /**
17 * A modal dialog box as displayable from within a custom action.
18 *
19 * The only fully user interface element that the Windows Installer supports for use within custom actions is a small set of modal dialog boxes.
20 * The Windows Installer provides the call MsiProcessMessage, overloaded by a se t of message type constants.
21 * This class represents those messages with user-provided messages; these ultim ately call MessageBox.
22 *
23 * \sa
24 * * MSDN [MsiProcessMessage function](http://msdn.microsoft.com/en-us/librar y/windows/desktop/aa370354%28v=vs.85%29.aspx)
25 * * MSDN [Sending Messages to Windows Installer Using MsiProcessMessage](htt p://msdn.microsoft.com/en-us/library/windows/desktop/aa371614%28v=vs.85%29.aspx)
26 */
27 class Installer_Message_Box
28 : public Message
29 {
30 public:
31 typedef enum
32 {
33 default_box = 0,
34 error_box = INSTALLMESSAGE::INSTALLMESSAGE_ERROR,
35 warning_box = INSTALLMESSAGE::INSTALLMESSAGE_WARNING,
36 user_box = INSTALLMESSAGE::INSTALLMESSAGE_USER
37 }
38 box_type ;
39
40 typedef enum
41 {
42 default_buttonset = 0,
43 ok = MB_OK,
44 ok_cancel = MB_OKCANCEL,
45 abort_retry_ignore = MB_ABORTRETRYIGNORE,
46 yes_no_cancel = MB_YESNOCANCEL,
47 yes_no = MB_YESNO,
48 retry_cancel = MB_RETRYCANCEL
49 }
50 buttonset_type ;
51
52 typedef enum
53 {
54 default_default_button = 0, ///< use the default button
55 default_button_one = MB_DEFBUTTON1,
56 default_button_two = MB_DEFBUTTON2,
57 default_button_three = MB_DEFBUTTON3
58 }
59 default_button_type ;
60
61 typedef enum
62 {
63 default_icon = 0, ///< use the default icon associated with the box_type
64 warning_icon = MB_ICONWARNING, ///< exclamation point
65 information_icon = MB_ICONINFORMATION, ///< lowercase letter "i" in a circl e
66 error_icon = MB_ICONERROR ///< stop sign
67 }
68 icon_type ;
69
70 /**
71 * Ordinary constructor, wide string
72 */
73 Installer_Message_Box(
74 std::wstring message,
75 box_type box = box_type::user_box,
76 buttonset_type buttonset = buttonset_type::default_buttonset,
77 default_button_type default_button = default_button_type::default_default_bu tton,
78 icon_type icon = icon_type::default_icon
79 ) ;
80
81 /**
82 * Ordinary constructor, regular string
83 */
84 Installer_Message_Box(
85 std::string message,
86 box_type box = box_type::user_box,
87 buttonset_type buttonset = buttonset_type::default_buttonset,
88 default_button_type default_button = default_button_type::default_default_bu tton,
89 icon_type icon = icon_type::default_icon
90 ) ;
91 } ;
92
93 /**
94 * Error for any non-handled return value from Session.write_message().
95 */
96 struct unexpected_return_value_from_message_box
97 : std::logic_error
98 {
99 unexpected_return_value_from_message_box()
100 : std::logic_error( "Unexpected return value from message box." )
101 {}
102 } ;
103
8 #endif 104 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld