示例#1
0
    def motion_notify_event_cb(self, widget: Gtk.DrawingArea, event, data=None):

        # print('motion_notify_event_cb', time.time())
        if event.state == Gdk.ModifierType.BUTTON1_MASK:
            print("你按下鼠标左键")
            print(self.ctx)
            self.stroke_shapes(self.ctx, 0, 0)
            widget.queue_draw()
示例#2
0
 def on_draw_example_placeholder_draw(self, widget: Gtk.DrawingArea, ctx: cairo.Context):
     sprite, x, y, w, h = self._sprite_provider.get_actor_placeholder(
         9999, 0, lambda: GLib.idle_add(lambda: self.builder.get_object('draw_example_placeholder').queue_draw())  # type: ignore
     )
     ctx.set_source_surface(sprite)
     ctx.get_source().set_filter(cairo.Filter.NEAREST)
     ctx.paint()
     if widget.get_size_request() != (w, h):
         widget.set_size_request(w, h)
示例#3
0
 def on_draw_sprite_draw(self, widget: Gtk.DrawingArea, ctx: cairo.Context):
     scale = 2
     sprite, x, y, w, h = self._sprite_provider.get_for_item(self.item_p, lambda: GLib.idle_add(widget.queue_draw))
     ctx.scale(scale, scale)
     ctx.set_source_surface(sprite)
     ctx.get_source().set_filter(cairo.Filter.NEAREST)
     ctx.paint()
     ctx.scale(1 / scale, 1 / scale)
     if widget.get_size_request() != (w, h):
         widget.set_size_request(w * scale, h * scale)
     return True
示例#4
0
 def on_draw_sprite_draw(self, widget: Gtk.DrawingArea, ctx: cairo.Context):
     if self.entry.entid > 0:
         sprite, x, y, w, h = self._sprite_provider.get_monster(self.entry.md_index, 0,
                                                                lambda: GLib.idle_add(widget.queue_draw))
     else:
         sprite, x, y, w, h = self._sprite_provider.get_error()
     ctx.set_source_surface(sprite)
     ctx.get_source().set_filter(cairo.Filter.NEAREST)
     ctx.paint()
     if widget.get_size_request() != (w, h):
         widget.set_size_request(w, h)
     return True
示例#5
0
 def on_draw_portrait_draw(self, widget: Gtk.DrawingArea, ctx: cairo.Context):
     scale = 2
     portrait = self._portrait_provider.get(self.entry.md_index - 1, 0,
                                            lambda: GLib.idle_add(widget.queue_draw), True)
     ctx.scale(scale, scale)
     ctx.set_source_surface(portrait)
     ctx.get_source().set_filter(cairo.Filter.NEAREST)
     ctx.paint()
     ctx.scale(1 / scale, 1 / scale)
     if widget.get_size_request() != (IMG_DIM * scale, IMG_DIM * scale):
         widget.set_size_request(IMG_DIM * scale, IMG_DIM * scale)
     return True
示例#6
0
 def on_draw_sprite_draw(self, widget: Gtk.DrawingArea, ctx: cairo.Context):
     if not self._drawing_is_active:
         return True
     scale = 4
     sprite, x, y, w, h = self._get_sprite_anim()
     ctx.scale(scale, scale)
     ctx.set_source_surface(sprite)
     ctx.get_source().set_filter(cairo.Filter.NEAREST)
     ctx.paint()
     ww, wh = widget.get_size_request()
     if ww < w or wh < h:
         widget.set_size_request(w * scale, h * scale)
     ctx.scale(1 / scale, 1 / scale)
     return True
示例#7
0
def on_layout_rv_btn_img_draw(
    image: Gtk.DrawingArea,
    context: cairo.Context,
    *args,
):
    """
    @brief      Updates the image size along with the change of button size.

    @details    Whenever the corresponding layout button is resized this
    function is called to allow us resize and redraw the buttion's image.

    @param      image    Gtk.DrawingArea

    @param      context  Cairo drawing context associated with the button

    @param      args     place holder list

    @return     None
    """
    size, _ = image.get_allocated_size()
    width: int = size.width
    height: int = size.height
    # print(f"w={width}, h={height}")
    scaled_pixbuf = LAYOUT_PIXBUFS[LAYOUT_RV_BTN].scale_simple(
        width,
        height,
        GdkPixbuf.InterpType.BILINEAR,
    )
    Gdk.cairo_set_source_pixbuf(context, scaled_pixbuf, 0, 0)
    context.paint()
示例#8
0
 def on_draw(self, index: int, widget: Gtk.DrawingArea, ctx: cairo.Context):
     w16 = self._surfaces[index]
     ctx.set_source_rgb(0, 0, 0)
     ctx.rectangle(0, 0, *widget.get_size_request())
     ctx.fill()
     ctx.set_source_surface(w16)
     ctx.get_source().set_filter(cairo.Filter.NEAREST)
     ctx.paint()
示例#9
0
    def motion_notify_event_cb(self,
                               widget: Gtk.DrawingArea,
                               event,
                               data=None):

        # print('motion_notify_event_cb', time.time())
        if event.state == Gdk.ModifierType.BUTTON1_MASK:
            # print("你按下鼠标左键")
            if self.start is False:
                self.start = True
                self.start_x = event.x
                self.start_y = event.y
                return
            self.x = event.x
            self.y = event.y
            widget.queue_draw()
            self.cur_action = 0
            # self.move(args[1].x_root, args[1].y_root)
            # print('x', args[1].x)
            return False
示例#10
0
 def on_draw(self, subindex: int, widget: Gtk.DrawingArea,
             ctx: cairo.Context):
     scale = 2
     portrait = self._portrait_provider.get(
         self.item_id, subindex, lambda: GLib.idle_add(widget.queue_draw),
         False)
     ctx.set_source_rgb(1, 1, 1)
     ctx.rectangle(0, 0, *widget.get_size_request())
     ctx.fill()
     ctx.scale(scale, scale)
     ctx.set_source_surface(portrait)
     ctx.get_source().set_filter(cairo.Filter.NEAREST)
     ctx.paint()
     ctx.scale(1 / scale, 1 / scale)
     return True