Browse Source

Reenable Per Object Settings tool in simple mode if the current printer has multiextrusion

and tweak Per Object Settings panel size

CURA-333
fieldOfView 8 years ago
parent
commit
08411e943c

+ 12 - 2
plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml

@@ -24,10 +24,20 @@ Item {
         anchors.top: parent.top;
         anchors.left: parent.left;
 
-        spacing: UM.Theme.getSize("default_margin").height;
+        spacing: UM.Theme.getSize("default_margin").height
 
         Row
         {
+            spacing: UM.Theme.getSize("default_margin").width
+            Label
+            {
+                text: catalog.i18nc("@label", "Print object with")
+                anchors.verticalCenter: extruderSelector.verticalCenter
+
+                color: UM.Theme.getColor("setting_control_text")
+                font: UM.Theme.getFont("default")
+                visible: extruderSelector.visible
+            }
             ComboBox
             {
                 id: extruderSelector
@@ -40,7 +50,7 @@ Item {
                 }
                 visible: extruders_model.rowCount() > 1
                 textRole: "name"
-                width: items.width
+                width: UM.Theme.getSize("setting_control").width
                 height: UM.Theme.getSize("section").height
                 MouseArea
                 {

+ 19 - 3
plugins/PerObjectSettingsTool/PerObjectSettingsTool.py

@@ -16,10 +16,17 @@ class PerObjectSettingsTool(Tool):
 
         self.setExposedProperties("SelectedObjectId", "ContainerID", "SelectedActiveExtruder")
 
-        Preferences.getInstance().preferenceChanged.connect(self._onPreferenceChanged)
+        self._advanced_mode = False
+        self._multi_extrusion = False
+
         Selection.selectionChanged.connect(self.propertyChanged)
+
+        Preferences.getInstance().preferenceChanged.connect(self._onPreferenceChanged)
         self._onPreferenceChanged("cura/active_mode")
 
+        Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged)
+        self._onGlobalContainerChanged()
+
     def event(self, event):
         return False
 
@@ -55,5 +62,14 @@ class PerObjectSettingsTool(Tool):
 
     def _onPreferenceChanged(self, preference):
         if preference == "cura/active_mode":
-            enabled = Preferences.getInstance().getValue(preference)==1
-            Application.getInstance().getController().toolEnabledChanged.emit(self._plugin_id, enabled)
+            self._advanced_mode = Preferences.getInstance().getValue(preference) == 1
+            self._updateEnabled()
+
+    def _onGlobalContainerChanged(self):
+        global_container_stack = Application.getInstance().getGlobalContainerStack()
+        if global_container_stack:
+            self._multi_extrusion = global_container_stack.getProperty("machine_extruder_count", "value") > 1
+            self._updateEnabled()
+
+    def _updateEnabled(self):
+        Application.getInstance().getController().toolEnabledChanged.emit(self._plugin_id, self._advanced_mode or self._multi_extrusion)