UI fixes, ZTools-PartDesign merge, Silo enhancements, and BOM integration
Stylesheet fixes (KindredCreate theme): - Add tree branch expand/collapse SVG indicators (branch_closed.svg, branch_open.svg) visible on dark background - Add QSS rules for QTreeView::branch pseudo-states - Add min-height: 20px to QHeaderView::section to fix bottom clipping - Merge QDockWidget::title and QSint--ActionGroup QToolButton padding improvements from Stylesheets copy into canonical - Add SpreadsheetGui--SheetTableView QLineEdit cell editor styling - Sync all three QSS copies (resources/preferences, src/Gui/Stylesheets, src/Gui/PreferencePacks) to canonical version ZTools-PartDesign workbench integration: - Add _ZToolsPartDesignManipulator via WorkbenchManipulator API - Injects DatumCreator, DatumManager into Part Design Helper Features toolbar - Injects EnhancedPocket into Part Design Modeling Features toolbar - Injects RotatedLinearPattern into Part Design Transformation Features toolbar - Adds corresponding PartDesign menu entries after PartDesign_Boolean Silo enhancements: - Add Silo_ToggleMode command: toggle switch in File toolbar that swaps Ctrl+O/S/N between standard FreeCAD and Silo equivalents - Add SSL certificate file browser in Silo Settings dialog (SslCertPath preference, supports .pem/.crt/.cer) - Update _get_ssl_context() to load custom CA cert before system CAs - Expand SiloMenuManipulator: Silo_New, Silo_Open, Silo_Save, Silo_Commit, Silo_Pull, Silo_Push, Silo_BOM in File menu - Integrate upstream Silo_BOM command (tabbed BOM/Where-Used dialog) Submodule updates: - silo: Silo mode toggle, SSL cert browsing, BOM menu integration - ztools: PartDesign WorkbenchManipulator and Catppuccin theme sync Documentation: - Add docs/REPOSITORY_STATE.md: comprehensive repository state report with architecture overview, submodule status, potential issues, feature stubs, and Silo integration path forward
This commit is contained in:
@@ -247,8 +247,9 @@ QDockWidget {
|
||||
QDockWidget::title {
|
||||
background-color: #181825;
|
||||
color: #cdd6f4;
|
||||
padding: 6px;
|
||||
padding: 8px 6px;
|
||||
border-bottom: 1px solid #313244;
|
||||
min-height: 18px;
|
||||
}
|
||||
|
||||
QDockWidget::close-button,
|
||||
@@ -465,13 +466,35 @@ QSpinBox::down-button:pressed, QDoubleSpinBox::down-button:pressed {
|
||||
}
|
||||
|
||||
QSpinBox::up-arrow, QDoubleSpinBox::up-arrow {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
width: 0px;
|
||||
height: 0px;
|
||||
border-left: 4px solid transparent;
|
||||
border-right: 4px solid transparent;
|
||||
border-bottom: 6px solid #cdd6f4;
|
||||
}
|
||||
|
||||
QSpinBox::up-arrow:hover, QDoubleSpinBox::up-arrow:hover {
|
||||
border-bottom-color: #f5e0dc;
|
||||
}
|
||||
|
||||
QSpinBox::up-arrow:disabled, QDoubleSpinBox::up-arrow:disabled {
|
||||
border-bottom-color: #6c7086;
|
||||
}
|
||||
|
||||
QSpinBox::down-arrow, QDoubleSpinBox::down-arrow {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
width: 0px;
|
||||
height: 0px;
|
||||
border-left: 4px solid transparent;
|
||||
border-right: 4px solid transparent;
|
||||
border-top: 6px solid #cdd6f4;
|
||||
}
|
||||
|
||||
QSpinBox::down-arrow:hover, QDoubleSpinBox::down-arrow:hover {
|
||||
border-top-color: #f5e0dc;
|
||||
}
|
||||
|
||||
QSpinBox::down-arrow:disabled, QDoubleSpinBox::down-arrow:disabled {
|
||||
border-top-color: #6c7086;
|
||||
}
|
||||
|
||||
/* =============================================================================
|
||||
@@ -516,8 +539,15 @@ QComboBox::drop-down:hover {
|
||||
}
|
||||
|
||||
QComboBox::down-arrow {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
width: 0px;
|
||||
height: 0px;
|
||||
border-left: 5px solid transparent;
|
||||
border-right: 5px solid transparent;
|
||||
border-top: 6px solid #cdd6f4;
|
||||
}
|
||||
|
||||
QComboBox::down-arrow:disabled {
|
||||
border-top-color: #6c7086;
|
||||
}
|
||||
|
||||
QComboBox QAbstractItemView {
|
||||
@@ -757,6 +787,16 @@ QTreeView::branch:selected {
|
||||
background-color: #45475a;
|
||||
}
|
||||
|
||||
QTreeView::branch:has-children:!has-siblings:closed,
|
||||
QTreeView::branch:closed:has-children:has-siblings {
|
||||
image: url(qss:images_dark-light/branch_closed.svg);
|
||||
}
|
||||
|
||||
QTreeView::branch:open:has-children:!has-siblings,
|
||||
QTreeView::branch:open:has-children:has-siblings {
|
||||
image: url(qss:images_dark-light/branch_open.svg);
|
||||
}
|
||||
|
||||
/* =============================================================================
|
||||
List View
|
||||
============================================================================= */
|
||||
@@ -830,6 +870,7 @@ QHeaderView::section {
|
||||
border-right: 1px solid #45475a;
|
||||
border-bottom: 1px solid #45475a;
|
||||
padding: 6px 8px;
|
||||
min-height: 20px;
|
||||
}
|
||||
|
||||
QHeaderView::section:hover {
|
||||
@@ -842,13 +883,19 @@ QHeaderView::section:checked {
|
||||
}
|
||||
|
||||
QHeaderView::down-arrow {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
width: 0px;
|
||||
height: 0px;
|
||||
border-left: 5px solid transparent;
|
||||
border-right: 5px solid transparent;
|
||||
border-top: 6px solid #cdd6f4;
|
||||
}
|
||||
|
||||
QHeaderView::up-arrow {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
width: 0px;
|
||||
height: 0px;
|
||||
border-left: 5px solid transparent;
|
||||
border-right: 5px solid transparent;
|
||||
border-bottom: 6px solid #cdd6f4;
|
||||
}
|
||||
|
||||
/* =============================================================================
|
||||
@@ -1103,7 +1150,8 @@ QSint--ActionGroup QToolButton {
|
||||
color: #cdd6f4;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
padding: 6px;
|
||||
padding: 8px 6px;
|
||||
min-height: 18px;
|
||||
}
|
||||
|
||||
QSint--ActionGroup QToolButton:hover {
|
||||
@@ -1151,6 +1199,16 @@ SpreadsheetGui--SheetTableView QHeaderView::section {
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
/* Spreadsheet cell editor - reduce padding for better text visibility */
|
||||
SpreadsheetGui--SheetTableView QLineEdit {
|
||||
background-color: #313244;
|
||||
color: #cdd6f4;
|
||||
border: 1px solid #cba6f7;
|
||||
border-radius: 0px;
|
||||
padding: 1px 2px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
/* Python Console */
|
||||
Gui--PythonConsole {
|
||||
background-color: #11111b;
|
||||
|
||||
@@ -466,13 +466,35 @@ QSpinBox::down-button:pressed, QDoubleSpinBox::down-button:pressed {
|
||||
}
|
||||
|
||||
QSpinBox::up-arrow, QDoubleSpinBox::up-arrow {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
width: 0px;
|
||||
height: 0px;
|
||||
border-left: 4px solid transparent;
|
||||
border-right: 4px solid transparent;
|
||||
border-bottom: 6px solid #cdd6f4;
|
||||
}
|
||||
|
||||
QSpinBox::up-arrow:hover, QDoubleSpinBox::up-arrow:hover {
|
||||
border-bottom-color: #f5e0dc;
|
||||
}
|
||||
|
||||
QSpinBox::up-arrow:disabled, QDoubleSpinBox::up-arrow:disabled {
|
||||
border-bottom-color: #6c7086;
|
||||
}
|
||||
|
||||
QSpinBox::down-arrow, QDoubleSpinBox::down-arrow {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
width: 0px;
|
||||
height: 0px;
|
||||
border-left: 4px solid transparent;
|
||||
border-right: 4px solid transparent;
|
||||
border-top: 6px solid #cdd6f4;
|
||||
}
|
||||
|
||||
QSpinBox::down-arrow:hover, QDoubleSpinBox::down-arrow:hover {
|
||||
border-top-color: #f5e0dc;
|
||||
}
|
||||
|
||||
QSpinBox::down-arrow:disabled, QDoubleSpinBox::down-arrow:disabled {
|
||||
border-top-color: #6c7086;
|
||||
}
|
||||
|
||||
/* =============================================================================
|
||||
@@ -517,8 +539,15 @@ QComboBox::drop-down:hover {
|
||||
}
|
||||
|
||||
QComboBox::down-arrow {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
width: 0px;
|
||||
height: 0px;
|
||||
border-left: 5px solid transparent;
|
||||
border-right: 5px solid transparent;
|
||||
border-top: 6px solid #cdd6f4;
|
||||
}
|
||||
|
||||
QComboBox::down-arrow:disabled {
|
||||
border-top-color: #6c7086;
|
||||
}
|
||||
|
||||
QComboBox QAbstractItemView {
|
||||
@@ -758,6 +787,16 @@ QTreeView::branch:selected {
|
||||
background-color: #45475a;
|
||||
}
|
||||
|
||||
QTreeView::branch:has-children:!has-siblings:closed,
|
||||
QTreeView::branch:closed:has-children:has-siblings {
|
||||
image: url(qss:images_dark-light/branch_closed.svg);
|
||||
}
|
||||
|
||||
QTreeView::branch:open:has-children:!has-siblings,
|
||||
QTreeView::branch:open:has-children:has-siblings {
|
||||
image: url(qss:images_dark-light/branch_open.svg);
|
||||
}
|
||||
|
||||
/* =============================================================================
|
||||
List View
|
||||
============================================================================= */
|
||||
@@ -831,6 +870,7 @@ QHeaderView::section {
|
||||
border-right: 1px solid #45475a;
|
||||
border-bottom: 1px solid #45475a;
|
||||
padding: 6px 8px;
|
||||
min-height: 20px;
|
||||
}
|
||||
|
||||
QHeaderView::section:hover {
|
||||
@@ -843,13 +883,19 @@ QHeaderView::section:checked {
|
||||
}
|
||||
|
||||
QHeaderView::down-arrow {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
width: 0px;
|
||||
height: 0px;
|
||||
border-left: 5px solid transparent;
|
||||
border-right: 5px solid transparent;
|
||||
border-top: 6px solid #cdd6f4;
|
||||
}
|
||||
|
||||
QHeaderView::up-arrow {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
width: 0px;
|
||||
height: 0px;
|
||||
border-left: 5px solid transparent;
|
||||
border-right: 5px solid transparent;
|
||||
border-bottom: 6px solid #cdd6f4;
|
||||
}
|
||||
|
||||
/* =============================================================================
|
||||
|
||||
4
src/Gui/Stylesheets/images_dark-light/branch_closed.svg
Normal file
4
src/Gui/Stylesheets/images_dark-light/branch_closed.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 10 10">
|
||||
<path d="M 3,1 7,5 3,9" fill="none" stroke="#cdd6f4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 251 B |
4
src/Gui/Stylesheets/images_dark-light/branch_open.svg
Normal file
4
src/Gui/Stylesheets/images_dark-light/branch_open.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 10 10">
|
||||
<path d="M 1,3 5,7 9,3" fill="none" stroke="#cdd6f4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 251 B |
@@ -66,15 +66,24 @@ def _check_silo_first_start():
|
||||
|
||||
|
||||
def _setup_silo_menu():
|
||||
"""Inject Silo commands into the File menu across all workbenches."""
|
||||
"""Inject Silo commands into the File menu and toolbar across all workbenches."""
|
||||
try:
|
||||
|
||||
class SiloMenuManipulator:
|
||||
def modifyMenuBar(self):
|
||||
return [
|
||||
{"insert": "Silo_New", "menuItem": "Std_New", "after": ""},
|
||||
{"insert": "Silo_Open", "menuItem": "Std_Open", "after": ""},
|
||||
{"insert": "Silo_Save", "menuItem": "Std_Save", "after": ""},
|
||||
{"insert": "Silo_Commit", "menuItem": "Std_Save", "after": ""},
|
||||
{"insert": "Silo_Commit", "menuItem": "Silo_Save", "after": ""},
|
||||
{"insert": "Silo_Pull", "menuItem": "Silo_Commit", "after": ""},
|
||||
{"insert": "Silo_Push", "menuItem": "Silo_Pull", "after": ""},
|
||||
{"insert": "Silo_BOM", "menuItem": "Silo_Push", "after": ""},
|
||||
]
|
||||
|
||||
def modifyToolBars(self):
|
||||
return [
|
||||
{"append": "Silo_ToggleMode", "toolBar": "File"},
|
||||
]
|
||||
|
||||
FreeCADGui.addWorkbenchManipulator(SiloMenuManipulator())
|
||||
|
||||
Reference in New Issue
Block a user