Stroika Library 3.0d16
 
Loading...
Searching...
No Matches
Windows_FileRegistration.h
1/*
2 * Copyright(c) Sophist Solutions, Inc. 1990-2025. All rights reserved
3 */
4#ifndef _Stroika_Frameworks_Led_Platform_Windows_FileRegistration_h_
5#define _Stroika_Frameworks_Led_Platform_Windows_FileRegistration_h_ 1
6
7#include "Stroika/Frameworks/StroikaPreComp.h"
8
9#include "Stroika/Frameworks/Led/Support.h"
10
11/*
12@MODULE: Led_Win32_FileRegistration
13@DESCRIPTION:
14 <p>Functionality not directly related to Led - per-se, but often helpful in building Led-based applications.
15 This code helps you to update the windows registration to say what file types you support.</p>
16 */
17
18namespace Stroika::Frameworks::Led::Platform {
19
20#if qStroika_Foundation_Common_Platform_Windows
21 class Win32FileAssociationRegistrationHelper {
22 public:
23 Win32FileAssociationRegistrationHelper (const SDKString& fileSuffix);
24
25 nonvirtual SDKString GetAssociatedProgID () const;
26 nonvirtual SDKString GetAssociatedDefaultIcon () const;
27 nonvirtual SDKString GetAssociatedEditCommand () const;
28 nonvirtual SDKString GetAssociatedOpenCommand () const;
29
30 public:
31 nonvirtual void SetAssociatedProgIDAndOpenCommand (const SDKString& progID, const SDKString& progIDPrettyName, const SDKString& defaultIcon,
32 const SDKString& editCommandLine, const SDKString& openCommandLine);
33
34 private:
35 struct KeyHolder {
36 HKEY fKey;
37 KeyHolder (HKEY hk);
38 enum CreateIfNotThereFlag {
39 eCreateIfNotThere
40 };
41 KeyHolder (HKEY baseKey, LPCTSTR lpSubKey);
42 KeyHolder (HKEY baseKey, LPCTSTR lpSubKey, CreateIfNotThereFlag createIfNotThereFlag);
43 ~KeyHolder ();
44 operator HKEY ();
45 };
46
47 private:
48 SDKString fFileSuffix;
49 };
50#endif
51
52#if qStroika_Foundation_Common_Platform_Windows
53 class Win32UIFileAssociationInfo {
54 public:
55 Win32UIFileAssociationInfo (const SDKString& fileSuffix, const SDKString& fileProgID, const SDKString& fileProgIDPrettyName,
56 const SDKString& defaultIcon, const SDKString& shellEditNOpenCommandLine);
57 Win32UIFileAssociationInfo (const SDKString& fileSuffix, const SDKString& fileProgID, const SDKString& fileProgIDPrettyName,
58 const SDKString& defaultIcon, const SDKString& shellEditCommandLine, const SDKString& shellOpenCommandLine);
59
60 public:
61 SDKString fFileSuffix;
62 SDKString fFileProgID;
63 SDKString fFileProgIDPrettyName;
64 SDKString fDefaultIcon;
65 SDKString fShellEditCommandLine;
66 SDKString fShellOpenCommandLine;
67
68 public:
69 static SDKString kNoChange;
70 };
71#endif
72
73#if qStroika_Foundation_Common_Platform_Windows
74 class Win32UIFileAssociationRegistrationHelper {
75 public:
76 Win32UIFileAssociationRegistrationHelper (HINSTANCE hInstance);
77 Win32UIFileAssociationRegistrationHelper (HINSTANCE hInstance, const vector<Win32UIFileAssociationInfo>& infoRecs);
78
79 public:
80 nonvirtual void Add (const Win32UIFileAssociationInfo& infoRec);
81
82 public:
83 nonvirtual void DoIt () noexcept;
84
85 public:
86 nonvirtual bool RegisteredToSomeoneElse () const;
87 nonvirtual void ApplyChangesSilently ();
88 virtual bool CheckUserSaysOKToUpdate () const;
89 virtual void ExpandVariables (SDKString* valWithVars) const;
90
91 private:
92 HINSTANCE fHINSTANCE;
93 vector<Win32UIFileAssociationInfo> fInfoRecs;
94 };
95#endif
96
97 /*
98 ********************************************************************************
99 ***************************** Implementation Details ***************************
100 ********************************************************************************
101 */
102
103}
104
105#endif /*_Stroika_Frameworks_Led_Platform_Windows_FileRegistration_h_*/
basic_string< SDKChar > SDKString
Definition SDKString.h:38