|
|
1.1 root 1: /*
2: Copyright (c) 2008 TrueCrypt Foundation. All rights reserved.
3:
4: Governed by the TrueCrypt License 2.4 the full text of which is contained
5: in the file License.txt included in TrueCrypt binary and source code
6: distribution packages.
7: */
8:
9: #ifndef TC_HEADER_Main_GraphicUserInterface
10: #define TC_HEADER_Main_GraphicUserInterface
11:
12: #include "System.h"
13: #include <utility>
14: #include "Main.h"
15: #include "UserInterface.h"
16:
17: namespace TrueCrypt
18: {
19: class GraphicUserInterface : public UserInterface
20: {
21: public:
22: GraphicUserInterface ();
23: virtual ~GraphicUserInterface ();
24:
25: virtual void AppendToListCtrl (wxListCtrl *listCtrl, const vector <wstring> &itemFields, int imageIndex = -1, void *itemDataPtr = nullptr) const;
26: virtual wxMenuItem *AppendToMenu (wxMenu &menu, const wxString &label, wxEvtHandler *handler = nullptr, wxObjectEventFunction handlerFunction = nullptr, int itemId = wxID_ANY) const;
27: virtual bool AskYesNo (const wxString &message, bool defaultYes = false, bool warning = false) const;
28: virtual void AutoDismountVolumes (VolumeInfoList mountedVolumes, bool alwaysForce = true);
29: virtual void BeginBusyState () const { wxBeginBusyCursor(); }
30: virtual void BeginInteractiveBusyState (wxWindow *window);
31: virtual void ChangePassword (shared_ptr <VolumePath> volumePath = shared_ptr <VolumePath>(), shared_ptr <VolumePassword> password = shared_ptr <VolumePassword>(), shared_ptr <KeyfileList> keyfiles = shared_ptr <KeyfileList>(), shared_ptr <VolumePassword> newPassword = shared_ptr <VolumePassword>(), shared_ptr <KeyfileList> newKeyfiles = shared_ptr <KeyfileList>()) const;
32: virtual void ClearListCtrlSelection (wxListCtrl *listCtrl) const;
33: virtual void DoShowError (const wxString &message) const;
34: virtual void DoShowInfo (const wxString &message) const;
35: virtual void DoShowString (const wxString &str) const;
36: virtual void DoShowWarning (const wxString &message) const;
37: virtual void EndBusyState () const { wxEndBusyCursor(); }
38: virtual void EndInteractiveBusyState (wxWindow *window) const;
39: virtual wxTopLevelWindow *GetActiveWindow () const;
40: virtual shared_ptr <GetStringFunctor> GetAdminPasswordRequestHandler ();
41: virtual int GetCharHeight (wxWindow *window) const;
42: virtual int GetCharWidth (wxWindow *window) const;
43: virtual int GetDefaultBorderSize () const { return 5; }
44: virtual wxFont GetDefaultBoldFont (wxWindow *window) const;
45: virtual wxString GetHomepageLinkURL (const wxString &linkId, const wxString &extraVars = wxEmptyString) const;
46: virtual wxFrame *GetMainFrame () const { return mMainFrame; }
47: virtual int GetScrollbarWidth (wxWindow *window, bool noScrollBar = false) const;
48: virtual list <long> GetListCtrlSelectedItems (wxListCtrl *listCtrl) const;
49: virtual wxString GetListCtrlSubItemText (wxListCtrl *listCtrl, long itemIndex, int columnIndex) const;
50: virtual void InsertToListCtrl (wxListCtrl *listCtrl, long itemIndex, const vector <wstring> &itemFields, int imageIndex = -1, void *itemDataPtr = nullptr) const;
51: virtual bool IsInBackgroundMode () const { return BackgroundMode; }
52: virtual bool IsTheOnlyTopLevelWindow (const wxWindow *window) const;
53: virtual VolumeInfoList MountAllDeviceHostedVolumes (MountOptions &options) const;
54: virtual shared_ptr <VolumeInfo> MountVolume (MountOptions &options) const;
55: virtual void MoveListCtrlItem (wxListCtrl *listCtrl, long itemIndex, long newItemIndex) const;
56: virtual void OnAutoDismountAllEvent ();
57: virtual bool OnInit ();
58: virtual void OnLogOff ();
59: virtual void OpenDocument (wxWindow *parent, const wxFileName &document);
60: virtual void OpenHomepageLink (wxWindow *parent, const wxString &linkId, const wxString &extraVars = wxEmptyString);
61: virtual void OpenOnlineHelp (wxWindow *parent);
62: virtual void OpenUserGuide (wxWindow *parent);
63: virtual DevicePath SelectDevice (wxWindow *parent) const;
64: virtual DirectoryPath SelectDirectory (wxWindow *parent, const wxString &message = wxEmptyString, bool existingOnly = true) const;
65: virtual FilePathList SelectFiles (wxWindow *parent, const wxString &caption, bool saveMode = false, bool allowMultiple = false, const list < pair <wstring, wstring> > &fileExtensions = (list < pair <wstring, wstring> > ()), const DirectoryPath &directory = DirectoryPath()) const;
66: virtual FilePath SelectVolumeFile (wxWindow *parent, bool saveMode = false, const DirectoryPath &directory = DirectoryPath()) const;
67: virtual void SetBackgroundMode (bool state);
68: virtual void SetListCtrlColumnWidths (wxListCtrl *listCtrl, list <int> columnWidthPermilles, bool hasVerticalScrollbar = true) const;
69: virtual void SetListCtrlHeight (wxListCtrl *listCtrl, size_t rowCount) const;
70: virtual void SetListCtrlWidth (wxListCtrl *listCtrl, size_t charCount, bool hasVerticalScrollbar = true) const;
71: virtual void ShowErrorTopMost (char *langStringId) const { ShowErrorTopMost (LangString[langStringId]); }
72: virtual void ShowErrorTopMost (const wxString &message) const;
73: virtual void ShowInfoTopMost (char *langStringId) const { ShowInfoTopMost (LangString[langStringId]); }
74: virtual void ShowInfoTopMost (const wxString &message) const;
75: virtual void ShowWarningTopMost (char *langStringId) const { ShowWarningTopMost (LangString[langStringId]); }
76: virtual void ShowWarningTopMost (const wxString &message) const;
77: virtual bool UpdateListCtrlItem (wxListCtrl *listCtrl, long itemIndex, const vector <wstring> &itemFields) const;
78: virtual void Yield () const;
79:
80: template <class T>
81: T *GetSelectedData (wxControlWithItems *control) const
82: {
83: int sel = control->GetSelection();
84: if (sel == wxNOT_FOUND)
85: return nullptr;
86:
87: return reinterpret_cast <T *> (control->GetClientData (sel));
88: }
89:
90: protected:
91: virtual void OnEndSession (wxCloseEvent& event) { OnLogOff(); }
92: #ifdef wxHAS_POWER_EVENTS
93: virtual void OnPowerSuspending (wxPowerEvent& event);
94: #endif
95: static void OnSignal (int signal);
96: virtual void OnVolumesAutoDismounted ();
97: virtual int ShowMessage (const wxString &message, long style, bool topMost = false) const;
98:
99: bool BackgroundMode;
100: #ifdef TC_WINDOWS
101: auto_ptr <wxDDEServer> DDEServer;
102: #endif
103: wxFrame *mMainFrame;
104: auto_ptr <wxSingleInstanceChecker> SingleInstanceChecker;
105:
106: private:
107: GraphicUserInterface (const GraphicUserInterface &);
108: GraphicUserInterface &operator= (const GraphicUserInterface &);
109: };
110:
111: class FreezeScope
112: {
113: public:
114: FreezeScope (wxWindow *window) : Window (window)
115: {
116: Window->Freeze();
117: }
118:
119: ~FreezeScope ()
120: {
121: Window->Thaw();
122: }
123:
124: wxWindow *Window;
125: };
126:
127: DECLARE_EVENT_TYPE (TC_EVENT_THREAD_EXITING, -1);
128:
129: extern GraphicUserInterface *Gui;
130: }
131:
132: #endif // TC_HEADER_Main_GraphicUserInterface
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.