Initial project scaffold for Setec Partition Wizard

C++17/Qt6 application for disk recovery, repair, flashing, formatting,
and USB security key creation on Windows. Includes CMake build system,
tabbed UI shell with 6 main tabs, core type system with Result<T>
monadic error handling, admin elevation, and dark Catppuccin theme.
This commit is contained in:
DigiJ
2026-03-11 19:11:25 -07:00
commit 179bb85c4f
42 changed files with 2399 additions and 0 deletions

29
resources/setec.manifest Normal file
View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="amd64"
name="Setec.PartitionWizard"
type="win32"
/>
<description>Setec Partition Wizard</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 10 and 11 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
</application>
</compatibility>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/pm</dpiAware>
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>
</windowsSettings>
</application>
</assembly>

37
resources/setec.rc Normal file
View File

@@ -0,0 +1,37 @@
#include <winver.h>
// Application icon
IDI_APPICON ICON "icons\\app.ico"
// UAC manifest
1 RT_MANIFEST "setec.manifest"
// Version info
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEFLAGS 0x0L
FILEOS VOS_NT_WINDOWS32
FILETYPE VFT_APP
FILESUBTYPE VFT2_UNKNOWN
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904B0"
BEGIN
VALUE "CompanyName", "Setec"
VALUE "FileDescription", "Setec Partition Wizard"
VALUE "FileVersion", "1.0.0.0"
VALUE "InternalName", "SetecPartitionWizard"
VALUE "OriginalFilename", "SetecPartitionWizard.exe"
VALUE "ProductName", "Setec Partition Wizard"
VALUE "ProductVersion", "1.0.0.0"
VALUE "LegalCopyright", "Copyright (C) 2026 Setec"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0409, 1200
END
END

View File

@@ -0,0 +1,165 @@
/* Setec Partition Wizard - Default Stylesheet */
QMainWindow {
background-color: #1e1e2e;
color: #cdd6f4;
}
QTabWidget::pane {
border: 1px solid #45475a;
background-color: #1e1e2e;
}
QTabBar::tab {
background-color: #313244;
color: #bac2de;
padding: 8px 20px;
margin-right: 2px;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
min-width: 120px;
}
QTabBar::tab:selected {
background-color: #45475a;
color: #cdd6f4;
border-bottom: 2px solid #89b4fa;
}
QTabBar::tab:hover:!selected {
background-color: #3b3d52;
}
QTreeView, QTableView, QListView {
background-color: #181825;
color: #cdd6f4;
border: 1px solid #45475a;
selection-background-color: #45475a;
selection-color: #cdd6f4;
alternate-background-color: #1e1e2e;
}
QTreeView::item:hover, QTableView::item:hover {
background-color: #313244;
}
QHeaderView::section {
background-color: #313244;
color: #bac2de;
padding: 4px 8px;
border: 1px solid #45475a;
}
QPushButton {
background-color: #45475a;
color: #cdd6f4;
border: 1px solid #585b70;
border-radius: 4px;
padding: 6px 16px;
min-width: 80px;
}
QPushButton:hover {
background-color: #585b70;
}
QPushButton:pressed {
background-color: #313244;
}
QPushButton#applyButton {
background-color: #a6e3a1;
color: #1e1e2e;
font-weight: bold;
}
QPushButton#applyButton:hover {
background-color: #94e2d5;
}
QPushButton#cancelButton {
background-color: #f38ba8;
color: #1e1e2e;
}
QProgressBar {
background-color: #313244;
border: 1px solid #45475a;
border-radius: 4px;
text-align: center;
color: #cdd6f4;
}
QProgressBar::chunk {
background-color: #89b4fa;
border-radius: 3px;
}
QMenuBar {
background-color: #181825;
color: #cdd6f4;
}
QMenuBar::item:selected {
background-color: #45475a;
}
QMenu {
background-color: #1e1e2e;
color: #cdd6f4;
border: 1px solid #45475a;
}
QMenu::item:selected {
background-color: #45475a;
}
QToolBar {
background-color: #181825;
border-bottom: 1px solid #45475a;
spacing: 4px;
padding: 2px;
}
QStatusBar {
background-color: #181825;
color: #a6adc8;
border-top: 1px solid #45475a;
}
QSplitter::handle {
background-color: #45475a;
}
QGroupBox {
border: 1px solid #45475a;
border-radius: 4px;
margin-top: 8px;
padding-top: 8px;
color: #cdd6f4;
}
QGroupBox::title {
subcontrol-origin: margin;
left: 10px;
padding: 0 4px;
}
QLineEdit, QSpinBox, QComboBox {
background-color: #313244;
color: #cdd6f4;
border: 1px solid #45475a;
border-radius: 4px;
padding: 4px 8px;
}
QLineEdit:focus, QSpinBox:focus, QComboBox:focus {
border-color: #89b4fa;
}
QToolTip {
background-color: #313244;
color: #cdd6f4;
border: 1px solid #45475a;
padding: 4px;
}