909 wx.CallAfter(self.ParentWindow.DeleteValue, self.Parent, |
909 wx.CallAfter(self.ParentWindow.DeleteValue, self.Parent, |
910 self.ContextualButtonsItem) |
910 self.ContextualButtonsItem) |
911 self.DismissContextualButtons() |
911 self.DismissContextualButtons() |
912 |
912 |
913 def RefreshButtonsState(self, refresh_positions=False): |
913 def RefreshButtonsState(self, refresh_positions=False): |
914 width, height = self.GetSize() |
914 if self: |
915 min_width, min_height = self.Parent.GetCanvasMinSize() |
915 width, height = self.GetSize() |
916 for button, size in zip(self.Buttons, |
916 min_width, min_height = self.Parent.GetCanvasMinSize() |
917 [min_height, SIZE_MIDDLE, SIZE_MAXI]): |
917 for button, size in zip(self.Buttons, |
918 if size == height and button.IsEnabled(): |
918 [min_height, SIZE_MIDDLE, SIZE_MAXI]): |
919 button.Disable() |
919 if size == height and button.IsEnabled(): |
920 refresh_positions = True |
920 button.Disable() |
921 elif not button.IsEnabled(): |
921 refresh_positions = True |
922 button.Enable() |
922 elif not button.IsEnabled(): |
923 refresh_positions = True |
923 button.Enable() |
924 if refresh_positions: |
924 refresh_positions = True |
925 offset = 0 |
925 if refresh_positions: |
926 buttons = self.Buttons[:] |
926 offset = 0 |
927 buttons.reverse() |
927 buttons = self.Buttons[:] |
928 for button in buttons: |
928 buttons.reverse() |
929 if button.IsShown() and button.IsEnabled(): |
929 for button in buttons: |
930 w, h = button.GetSize() |
930 if button.IsShown() and button.IsEnabled(): |
931 button.SetPosition(width - 5 - w - offset, 5) |
931 w, h = button.GetSize() |
932 offset += w + 2 |
932 button.SetPosition(width - 5 - w - offset, 5) |
933 self.ParentWindow.ForceRefresh() |
933 offset += w + 2 |
|
934 self.ParentWindow.ForceRefresh() |
934 |
935 |
935 def OnResizeWindow(self, event): |
936 def OnResizeWindow(self, event): |
936 wx.CallAfter(self.RefreshButtonsState, True) |
937 wx.CallAfter(self.RefreshButtonsState, True) |
937 event.Skip() |
938 event.Skip() |
938 |
939 |
1015 |
1016 |
1016 def OnCanvasButtonPressed(self, event): |
1017 def OnCanvasButtonPressed(self, event): |
1017 width, height = self.Canvas.GetSize() |
1018 width, height = self.Canvas.GetSize() |
1018 x, y = event.x, height - event.y |
1019 x, y = event.x, height - event.y |
1019 if not self.Canvas.IsOverButton(x, y): |
1020 if not self.Canvas.IsOverButton(x, y): |
1020 if event.inaxes == self.Axes and not self.Is3DCanvas(): |
1021 if event.inaxes == self.Axes: |
1021 self.MouseStartPos = wx.Point(x, y) |
|
1022 item_idx = None |
1022 item_idx = None |
1023 for i, t in ([pair for pair in enumerate(self.AxesLabels)] + |
1023 for i, t in ([pair for pair in enumerate(self.AxesLabels)] + |
1024 [pair for pair in enumerate(self.Labels)]): |
1024 [pair for pair in enumerate(self.Labels)]): |
1025 (x0, y0), (x1, y1) = t.get_window_extent().get_points() |
1025 (x0, y0), (x1, y1) = t.get_window_extent().get_points() |
1026 rect = wx.Rect(x0, height - y1, x1 - x0, y1 - y0) |
1026 rect = wx.Rect(x0, height - y1, x1 - x0, y1 - y0) |
1031 self.Canvas.ShowButtons(False) |
1031 self.Canvas.ShowButtons(False) |
1032 self.Canvas.DismissContextualButtons() |
1032 self.Canvas.DismissContextualButtons() |
1033 xw, yw = self.GetPosition() |
1033 xw, yw = self.GetPosition() |
1034 self.ParentWindow.StartDragNDrop(self, |
1034 self.ParentWindow.StartDragNDrop(self, |
1035 self.Items[item_idx], x + xw, y + yw, x + xw, y + yw) |
1035 self.Items[item_idx], x + xw, y + yw, x + xw, y + yw) |
1036 elif event.button == 1 and event.inaxes == self.Axes: |
1036 elif not self.Is3DCanvas(): |
1037 self.StartCursorTick = self.CursorTick |
1037 self.MouseStartPos = wx.Point(x, y) |
1038 self.HandleCursorMove(event) |
1038 if event.button == 1 and event.inaxes == self.Axes: |
1039 elif event.button == 2 and self.GraphType == GRAPH_PARALLEL: |
1039 self.StartCursorTick = self.CursorTick |
1040 width, height = self.Canvas.GetSize() |
1040 self.HandleCursorMove(event) |
1041 start_tick, end_tick = self.ParentWindow.GetRange() |
1041 elif event.button == 2 and self.GraphType == GRAPH_PARALLEL: |
1042 self.StartCursorTick = start_tick |
1042 width, height = self.Canvas.GetSize() |
|
1043 start_tick, end_tick = self.ParentWindow.GetRange() |
|
1044 self.StartCursorTick = start_tick |
1043 |
1045 |
1044 elif event.button == 1 and event.y <= 5: |
1046 elif event.button == 1 and event.y <= 5: |
1045 self.MouseStartPos = wx.Point(x, y) |
1047 self.MouseStartPos = wx.Point(x, y) |
1046 self.CanvasStartSize = self.Canvas.GetSize() |
1048 self.CanvasStartSize = self.Canvas.GetSize() |
1047 |
1049 |
1095 self.SetCanvasSize(width, |
1097 self.SetCanvasSize(width, |
1096 self.CanvasStartSize.height + height - event.y - self.MouseStartPos.y) |
1098 self.CanvasStartSize.height + height - event.y - self.MouseStartPos.y) |
1097 |
1099 |
1098 elif event.button in [None, "up", "down"]: |
1100 elif event.button in [None, "up", "down"]: |
1099 if self.GraphType == GRAPH_PARALLEL: |
1101 if self.GraphType == GRAPH_PARALLEL: |
1100 orientation = [wx.RIGHT] * len(self.AxesLabels) + [wx.LEFT] * len(self.Labels) |
1102 orientation = [wx.RIGHT] * len(self.AxesLabels) + [wx.LEFT] * len(self.Labels) |
1101 elif len(self.AxesLabels) > 0: |
1103 elif len(self.AxesLabels) > 0: |
1102 orientation = [wx.RIGHT, wx.TOP, wx.LEFT, wx.BOTTOM] |
1104 orientation = [wx.RIGHT, wx.TOP, wx.LEFT, wx.BOTTOM] |
|
1105 else: |
|
1106 orientation = [wx.LEFT] * len(self.Labels) |
1103 item_idx = None |
1107 item_idx = None |
1104 item_style = None |
1108 item_style = None |
1105 for (i, t), style in zip([pair for pair in enumerate(self.AxesLabels)] + |
1109 for (i, t), style in zip([pair for pair in enumerate(self.AxesLabels)] + |
1106 [pair for pair in enumerate(self.Labels)], |
1110 [pair for pair in enumerate(self.Labels)], |
1107 orientation): |
1111 orientation): |