chiark / gitweb /
Added popup window for OSX
authorFerdi van der Werf <efcm@vdwerf.eu>
Thu, 12 Apr 2012 21:13:56 +0000 (23:13 +0200)
committerFerdi van der Werf <efcm@vdwerf.eu>
Thu, 12 Apr 2012 21:13:56 +0000 (23:13 +0200)
Cura/gui/preview3d.py

index fa7d5d12399d85b291d8988c4cd16a60a30fff6f..eb8b819e6e51a909247f7219b1c8fb9978ce7870 100644 (file)
@@ -34,6 +34,14 @@ class previewPanel(wx.Panel):
                self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_3DDKSHADOW))\r
                self.SetMinSize((440,320))\r
                \r
+               # Create popup window\r
+               self.popup = wx.PopupWindow(self, flags=wx.BORDER_SIMPLE)\r
+               self.popup.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_INFOBK))\r
+               self.popup.text = wx.StaticText(self.popup, -1, '')\r
+               self.popup.sizer = wx.BoxSizer()\r
+               self.popup.sizer.Add(self.popup.text, flag=wx.EXPAND|wx.ALL, border=1)\r
+               self.popup.SetSizer(self.popup.sizer)\r
+               \r
                self.glCanvas = PreviewGLCanvas(self)\r
                self.init = 0\r
                self.triangleMesh = None\r
@@ -71,6 +79,8 @@ class previewPanel(wx.Panel):
                self.flipX.SetBezelWidth(1)\r
                self.flipX.SetUseFocusIndicator(False)\r
                self.flipX.SetToolTip(wx.ToolTip('Flip X'))\r
+               self.flipX.Bind(wx.EVT_ENTER_WINDOW, self.OnPopupDisplay)\r
+               self.flipX.Bind(wx.EVT_LEAVE_WINDOW, self.OnPopupHide)\r
                self.flipX.SetValue(profile.getProfileSetting('flip_x') == 'True')\r
                self.toolbar2.AddControl(self.flipX)\r
                self.Bind(wx.EVT_BUTTON, self.OnFlipXClick, self.flipX)\r
@@ -78,6 +88,8 @@ class previewPanel(wx.Panel):
                self.flipY.SetBezelWidth(1)\r
                self.flipY.SetUseFocusIndicator(False)\r
                self.flipY.SetToolTip(wx.ToolTip('Flip Y'))\r
+               self.flipY.Bind(wx.EVT_ENTER_WINDOW, self.OnPopupDisplay)\r
+               self.flipY.Bind(wx.EVT_LEAVE_WINDOW, self.OnPopupHide)\r
                self.flipY.SetValue(profile.getProfileSetting('flip_y') == 'True')\r
                self.toolbar2.AddControl(self.flipY)\r
                self.Bind(wx.EVT_BUTTON, self.OnFlipYClick, self.flipY)\r
@@ -85,6 +97,8 @@ class previewPanel(wx.Panel):
                self.flipZ.SetBezelWidth(1)\r
                self.flipZ.SetUseFocusIndicator(False)\r
                self.flipZ.SetToolTip(wx.ToolTip('Flip Z'))\r
+               self.flipZ.Bind(wx.EVT_ENTER_WINDOW, self.OnPopupDisplay)\r
+               self.flipZ.Bind(wx.EVT_LEAVE_WINDOW, self.OnPopupHide)\r
                self.flipZ.SetValue(profile.getProfileSetting('flip_z') == 'True')\r
                self.toolbar2.AddControl(self.flipZ)\r
                self.Bind(wx.EVT_BUTTON, self.OnFlipZClick, self.flipZ)\r
@@ -95,6 +109,8 @@ class previewPanel(wx.Panel):
                self.swapXZ.SetBezelWidth(1)\r
                self.swapXZ.SetUseFocusIndicator(False)\r
                self.swapXZ.SetToolTip(wx.ToolTip('Swap XZ'))\r
+               self.swapXZ.Bind(wx.EVT_ENTER_WINDOW, self.OnPopupDisplay)\r
+               self.swapXZ.Bind(wx.EVT_LEAVE_WINDOW, self.OnPopupHide)\r
                self.swapXZ.SetValue(profile.getProfileSetting('swap_xz') == 'True')\r
                self.toolbar2.AddControl(self.swapXZ)\r
                self.Bind(wx.EVT_BUTTON, self.OnSwapXZClick, self.swapXZ)\r
@@ -103,6 +119,8 @@ class previewPanel(wx.Panel):
                self.swapYZ.SetBezelWidth(1)\r
                self.swapYZ.SetUseFocusIndicator(False)\r
                self.swapYZ.SetToolTip(wx.ToolTip('Swap YZ'))\r
+               self.swapYZ.Bind(wx.EVT_ENTER_WINDOW, self.OnPopupDisplay)\r
+               self.swapYZ.Bind(wx.EVT_LEAVE_WINDOW, self.OnPopupHide)\r
                self.swapYZ.SetValue(profile.getProfileSetting('swap_yz') == 'True')\r
                self.toolbar2.AddControl(self.swapYZ)\r
                self.Bind(wx.EVT_BUTTON, self.OnSwapYZClick, self.swapYZ)\r
@@ -145,6 +163,25 @@ class previewPanel(wx.Panel):
                sizer.Add(self.toolbar2, 0, flag=wx.EXPAND|wx.BOTTOM|wx.LEFT|wx.RIGHT, border=1)\r
                self.SetSizer(sizer)\r
        \r
+       def OnPopupDisplay(self, e):\r
+               self.UpdatePopup(e.GetEventObject())\r
+               self.popup.Show(True)\r
+       \r
+       def OnPopupHide(self, e):\r
+               self.popup.Show(False)\r
+       \r
+       def UpdatePopup(self, control):\r
+               self.popup.text.SetLabel(control.GetToolTip().GetTip())\r
+               self.popup.text.Wrap(350)\r
+               self.popup.Fit();\r
+               if os.name == 'darwin':\r
+                       x, y = self.ClientToScreenXY(0, 0)\r
+                       sx, sy = self.GetClientSizeTuple()\r
+               else:\r
+                       x, y = control.ClientToScreenXY(0, 0)\r
+                       sx, sy = control.GetSizeTuple()\r
+               self.popup.SetPosition((x, y+sy))\r
+       \r
        def OnFlipXClick(self, e):\r
                profile.putProfileSetting('flip_x', str(self.flipX.GetValue()))\r
                self.updateModelTransform()\r