Skip to content

Commit

Permalink
ShellExt: Option for separate instance (VCL)
Browse files Browse the repository at this point in the history
  • Loading branch information
cjee21 committed Jan 12, 2025
1 parent da3a911 commit 6c9db6c
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 14 deletions.
31 changes: 31 additions & 0 deletions Source/GUI/VCL/GUI_Preferences.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,18 @@ void __fastcall TPreferencesF::Language_EditClick(TObject *Sender)
void __fastcall TPreferencesF::OKClick(TObject *Sender)
{
Prefs->Config.Save();
if (CB_InscrireShell_SeparateInstance->Visible) {
TRegistry* Reg = new TRegistry(KEY_WRITE);
try {
if (Reg->OpenKey(__T("Software\\MediaArea\\MediaInfo"), true)) {
if (CB_InscrireShell_SeparateInstance->Checked)
Reg->WriteInteger("ShellExtension_SeparateInstance", 1);
else
Reg->DeleteValue("ShellExtension_SeparateInstance");
}
} catch (...) {}
delete Reg;
}
}

//---------------------------------------------------------------------------
Expand Down Expand Up @@ -691,6 +703,25 @@ void __fastcall TPreferencesF::GUI_Configure()
Tree->FullExpand();
Page->ActivePage=Setup;

//Enable separate instance option if modern shell extension is installed
TRegistry* Reg = new TRegistry;
try {
Reg->RootKey = HKEY_CLASSES_ROOT;
if (Reg->OpenKeyReadOnly(__T("PackagedCom\\ClassIndex\\{20669675-B281-4C4F-94FB-CB6FD3995545}"))) {
CB_InscrireShell_SeparateInstance->Visible=true;
Reg->RootKey = HKEY_CURRENT_USER;
if (Reg->OpenKeyReadOnly(__T("Software\\MediaArea\\MediaInfo"))) {
if (Reg->ValueExists("ShellExtension_SeparateInstance"))
CB_InscrireShell_SeparateInstance->Checked=Reg->ReadInteger("ShellExtension_SeparateInstance");
}
}
} catch (...) {}
delete Reg;

//Move InfoTip option up to prevent blank space if there is a space
if (!CB_InscrireShell_SeparateInstance->Visible)
CB_InfoTip->Top=CB_InscrireShell_Folder->Top+CB_InscrireShell_Folder->Height*0.9;

//Translation
//Title
Caption=Prefs->Translate(__T("Preferences")).c_str();
Expand Down
39 changes: 25 additions & 14 deletions Source/GUI/VCL/GUI_Preferences.dfm
Original file line number Diff line number Diff line change
Expand Up @@ -38,19 +38,20 @@ object PreferencesF: TPreferencesF
TabOrder = 1
OnChange = TreeChange
Items.NodeData = {
0302000000280000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF000000
00010000000105530065007400750070002E0000000000000000000000FFFFFF
FFFFFFFFFFFFFFFFFF0000000000000000010841006400760061006E00630065
006400300000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF0000000005
000000010943007500730074006F006D0069007A006500280000000000000000
000000FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000010553006800650065
007400340000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF0000000000
000000010B540072006500650020002600200054006500780074003400000000
00000000000000FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000010B430075
00730074006F006D0020007400650078007400280000000000000000000000FF
FFFFFFFFFFFFFFFFFFFFFF00000000000000000105470072006100700068002E
0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000001
084C0061006E0067007500610067006500}
070200000009540054007200650065004E006F00640065002900000000000000
00000000FFFFFFFFFFFFFFFFFFFFFFFF00000000000100000001055300650074
007500700000002F0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF00
0000000000000000010841006400760061006E00630065006400000031000000
0000000000000000FFFFFFFFFFFFFFFFFFFFFFFF000000000005000000010943
007500730074006F006D0069007A0065000000290000000000000000000000FF
FFFFFFFFFFFFFFFFFFFFFF000000000000000000010553006800650065007400
0000350000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000
000000010B540072006500650020002600200054006500780074000000350000
000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000010B
43007500730074006F006D002000740065007800740000002900000000000000
00000000FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000001054700720061
007000680000002F0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF00
000000000000000001084C0061006E0067007500610067006500}
end
object Cancel: TButton
Left = 593
Expand Down Expand Up @@ -145,7 +146,7 @@ object PreferencesF: TPreferencesF
end
object CB_InfoTip: TCheckBox
Left = 2
Top = 104
Top = 120
Width = 655
Height = 18
Caption =
Expand Down Expand Up @@ -176,6 +177,16 @@ object PreferencesF: TPreferencesF
TabOrder = 4
OnClick = CB_InscrireShell_FolderClick
end
object CB_InscrireShell_SeparateInstance: TCheckBox
Left = 18
Top = 104
Width = 639
Height = 17
Caption = 'Open each item in a separate instance'
TabOrder = 8
Visible = False
OnClick = CB_InscrireShell_FolderClick
end
end
object Setup_Advanced: TTabSheet
Caption = 'Advanced'
Expand Down
1 change: 1 addition & 0 deletions Source/GUI/VCL/GUI_Preferences.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ class TPreferencesF : public TForm
TCheckBox *CB_InscrireShell;
TCheckBox *CB_InscrireShell_Folder;
TCheckBox *Advanced_LegacyStreamDisplay;
TCheckBox *CB_InscrireShell_SeparateInstance;
void __fastcall General_Language_SelChange(TObject *Sender);
void __fastcall General_Output_SelChange(TObject *Sender);
void __fastcall Custom_EditClick(TObject *Sender);
Expand Down

0 comments on commit 6c9db6c

Please sign in to comment.