Exemplo n.º 1
0
    def test_plot_viewport(self):
        vwp = viewport.PointSpectrumViewport(self.panel)
        self.add_control(vwp, wx.EXPAND, proportion=1)

        for horz, vert in PLOTS:
            vwp.canvas.set_1d_data(horz, vert)
            vwp.Refresh()
            test.gui_loop(0.5)
Exemplo n.º 2
0
    def test_threaded_plot(self):

        vwp = viewport.PointSpectrumViewport(self.panel)
        vwp.canvas.SetBackgroundColour("#333")
        vwp.canvas.SetForegroundColour("#A0CC27")
        self.add_control(vwp, wx.EXPAND, proportion=1)

        vwp.canvas.set_plot_mode(canvas.PLOT_MODE_BAR)
        vwp.canvas.set_plot_mode(canvas.PLOT_MODE_LINE)
        # vwp.canvas.set_plot_mode(canvas.PLOT_MODE_POINT)

        data_size = 100
        xs = range(data_size)
        ys = self._generate_sine_list(data_size)

        is_done = threading.Event()

        def rotate(q, v):
            # v.bottom_legend.unit = 'm'
            scale = 1.001

            timeout = time.time() + 8
            while time.time() < timeout:
                v.canvas.set_1d_data(xs, ys, unit_x='m', unit_y='g')
                q[-1] *= scale
                q.rotate(1)

                v.bottom_legend.range = (min(xs), max(xs))
                v.bottom_legend.SetToolTip(u"Time (s)")

                v.left_legend.range = (min(ys), max(ys))
                v.left_legend.SetToolTip(u"Count per second")

                time.sleep(0.01)

            is_done.set()

        t = threading.Thread(target=rotate, args=(ys, vwp))
        # Setting Daemon to True, will cause the thread to exit when the parent does
        t.setDaemon(True)
        t.start()

        for i in range(10):  # Fail after 10s not yet finished
            test.gui_loop(1)
            if is_done.is_set():
                return

        self.assertTrue(is_done.is_set())
Exemplo n.º 3
0
    def test_threaded_plot(self):
        test.goto_manual()

        vwp = viewport.PointSpectrumViewport(self.panel)
        vwp.canvas.SetBackgroundColour("#333")
        vwp.canvas.SetForegroundColour("#A0CC27")
        self.add_control(vwp, wx.EXPAND, proportion=1)

        vwp.canvas.set_plot_mode(canvas.PLOT_MODE_BAR)
        vwp.canvas.set_plot_mode(canvas.PLOT_MODE_LINE)
        # vwp.canvas.set_plot_mode(canvas.PLOT_MODE_POINT)

        data_size = 100
        xs = range(data_size)
        ys = self._generate_sine_list(data_size)

        def rotate(q, v):
            # v.bottom_legend.unit = 'm'

            scale = 1.001

            timeout = time.time() + 600

            while True:

                v.canvas.set_1d_data(xs, ys, unit_x='m', unit_y='g')
                q[-1] *= scale
                q.rotate(1)

                if time.time() > timeout:
                    break

                v.bottom_legend.range = (min(xs), max(xs))
                v.bottom_legend.SetToolTipString(u"Time (s)")

                v.left_legend.range = (min(ys), max(ys))
                v.left_legend.SetToolTipString(u"Count per second")

                # threading._sleep(0.000001)
            self.frame.Destroy()

        t = threading.Thread(target=rotate, args=(ys, vwp))
        # Setting Daemon to True, will cause the thread to exit when the parent does
        t.setDaemon(True)
        t.start()

        test.gui_loop()
Exemplo n.º 4
0
    def test_plot_viewport(self):

#         vwp = viewport.PlotViewport(self.panel)
        vwp = viewport.PointSpectrumViewport(self.panel)
        vwp.canvas.SetBackgroundColour("#333")
        self.add_control(vwp, wx.EXPAND, proportion=1)
        vwp.canvas.SetForegroundColour("#27C4CC")

        for mode in MODES:
            vwp.canvas.set_plot_mode(mode)

            """
            # Note: With the new version of the plotting canvas, which can
            # be navigated, all ranges will be accepted, and no ValueError is raised
            for plot in BAD_RANGED_PLOTS:
                with self.assertRaises(ValueError):
                    logging.debug("Testing range X = %s, range Y = %s", plot[0], plot[1])
                    vwp.canvas.set_1d_data(plot[2],
                                           plot[3],
                                           range_x=plot[0],
                                           range_y=plot[1])
                    vwp.canvas.draw()
                    test.gui_loop(0.3)
            """

            vwp.Refresh()

            for plot in BAD_PLOTS:
                with self.assertRaises(ValueError):
                    vwp.canvas.set_1d_data(plot[0], plot[1])
                    vwp.canvas.draw()
                    test.gui_loop(0.1)

            vwp.Refresh()

            for plot in INCORRECT_PLOTS:
                vwp.canvas.set_1d_data(plot[0], plot[1])
                vwp.bottom_legend.range = (min(plot[0]), max(plot[0]))
                vwp.left_legend.range = (min(plot[1]), max(plot[1]))
                test.gui_loop(0.1)

            vwp.Refresh()

            for plot in PLOTS:
                vwp.canvas.set_1d_data(plot[0], plot[1])
                vwp.bottom_legend.range = (min(plot[0]), max(plot[0]))
                vwp.left_legend.range = (min(plot[1]), max(plot[1]))
                test.gui_loop(0.1)

            vwp.Refresh()

            for plot in RANGED_PLOTS[:-1]:
                vwp.canvas.set_1d_data(plot[2],
                                       plot[3],
                                       range_x=plot[0],
                                       range_y=plot[1])
                vwp.bottom_legend.range = (min(plot[0]), max(plot[0]))
                vwp.left_legend.range = (min(plot[1]), max(plot[1]))
                test.gui_loop(0.1)

            # Test setting ranges
            for plot in RANGED_PLOTS[:-1]:
                range_x = plot[0]
                range_y = plot[1]
                # data width and height
                w = abs(range_x[1] - range_x[0])
                h = abs(range_y[1] - range_y[0])

                vwp.canvas.set_1d_data(plot[2],
                                       plot[3],
                                       range_x=range_x,
                                       range_y=range_y)
                vwp.bottom_legend.range = (min(plot[0]), max(plot[0]))
                vwp.left_legend.range = (min(plot[1]), max(plot[1]))

                # Test setting bad ranges
                test_xrange = (range_x[1], range_x[0])
                with self.assertRaises(ValueError):
                    vwp.hrange.value = test_xrange

                test_yrange = (range_y[1], range_y[0])
                with self.assertRaises(ValueError):
                    vwp.vrange.value = test_yrange

                # Test setting ranges that fall within the data ranges
                test_xrange = (range_x[0] + w * 0.2, range_x[1] - w * 0.2)
                vwp.hrange.value = test_xrange
                self.assertEqual(vwp.hrange.value, test_xrange)

                test_yrange = (range_y[0] + h * 0.2, range_y[1] - h * 0.2)
                vwp.vrange.value = test_yrange
                self.assertEqual(vwp.vrange.value, test_yrange)

                test.gui_loop(0.1)

            vwp.Refresh()