# -*- coding: utf-8 -*-
"""
マウスでお絵かき（黒のみ，簡易版）
"""

import tkinter as tk


# Canvasクラスを改造
class MyCanvas(tk.Canvas):
    # 元の引数はほぼ捨てになるが，気にしない
    def __init__(self, master):
        # 最低限の引数でインスタンスを生成
        super().__init__(master, width=400, height=300, bg="white")
        # ペンの設定をインスタンスに持たせる
        self.pen_fill    = "black"
        self.pen_outline = "black"
        self.pen_width   = "3.0"
        self.pen_type    = "line"
        self.item_id     = None
        self.points      = []

    # マウスの左ボタンを押した際
    def b1_press(self, event:tk.Event):
        # 線を描くモードの時は，直前の座標を現在の座標に設定するのみ
        if self.pen_type == "line":
            self.points = [event.x, event.y]

    # マウスの左ボタンでドラッグした際
    def b1_drag(self, event:tk.Event):
        # 線を描くモードの時は，直前の座標から現在の座標まで直線を引く
        if self.pen_type == "line":
            """ 指示１ここから """
            # このコメントブロックの下に，
            # 直前の座標から現在の座標まで直線を引き，その図形IDを変数 item_id に格納する
            # 命令文を書きなさい．

            self.item_id = self.create_line(self.points + [event.x, event.y])
            """ 指示１ここまで """
            # 図形IDがあれば後から編集可能
            self.itemconfig(self.item_id, fill=self.pen_fill, width=self.pen_width)
            # 座標を更新
            self.points = [event.x, event.y]

    # マウスの右ボタンでドラッグした際
    def b3_drag(self, event:tk.Event):
        r = 5
        # カーソル周辺（±r）の図形を削除
        item = self.find_overlapping(event.x-r, event.y-r, event.x+r, event.y+r)
        self.delete(item)


def main():
    base = tk.Tk()
    base.title("$u_id")

    # 改造版Canvasを生成・配置
    canvas = MyCanvas(base)
    canvas.pack()

    """ 指示２ここから """
    # このコメントブロックの下に，
    # canvasに対するイベントハンドラを適切に設定する
    # 命令文を書きなさい．

    canvas.bind("<Button-1>",  canvas.b1_press)
    canvas.bind("<B1-Motion>", canvas.b1_drag)
    """ 指示２ここまで """
    canvas.bind("<B3-Motion>", canvas.b3_drag)

    base.mainloop()  # GUIを待機


if __name__ == "__main__":
    main()
