From a43189e31d518cf9aabc55b9c7b2a92fe56246eb Mon Sep 17 00:00:00 2001 From: Minh Pham Date: Wed, 15 Mar 2023 19:25:22 -0400 Subject: [PATCH 01/12] save functionality --- .idea/GUI.iml | 2 +- .idea/misc.xml | 4 ++-- File opening/file_opening.py | 22 ++++++++++++++-------- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/.idea/GUI.iml b/.idea/GUI.iml index d0876a7..8388dbc 100644 --- a/.idea/GUI.iml +++ b/.idea/GUI.iml @@ -2,7 +2,7 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index daaac24..d56657a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,4 @@ - - + + \ No newline at end of file diff --git a/File opening/file_opening.py b/File opening/file_opening.py index 5e5bf15..3e69185 100644 --- a/File opening/file_opening.py +++ b/File opening/file_opening.py @@ -6,29 +6,35 @@ class FileOpening(tk.Frame): def __init__(self, master=None): super().__init__(master) - self.button = tk.Button(self, text="Choose file to upload", command=self.browse_file) + self.select_button = tk.Button(self, text="Choose file to upload", command=self.browse_file) + self.save_button = tk.Button(self, text="Save Image", command=self.save_image) self.label_image = tk.Label(self) self.master = master self.pack() self.create_widget() def create_widget(self): - self.button.pack(side="top") + self.select_button.pack(side="top") + self.save_button.pack(side="top") self.label_image.pack(side="top") def browse_file(self): filetypes = (("JPEG files", "*.jpg"), ("PNG files", "*.png"), ("All files", "*.*")) filepath = filedialog.askopenfilename(title="Select an image file", filetypes=filetypes) if filepath: - image = Image.open(filepath) - photo = ImageTk.PhotoImage(image) - self.label_image.configure(image=photo) - self.label_image.image = photo + self.image = Image.open(filepath) + self.photo = ImageTk.PhotoImage(self.image) + self.label_image.configure(image=self.photo) + self.label_image.image = self.photo + + def save_image(self): + if hasattr(self, 'label_image'): + save_path = filedialog.asksaveasfilename(defaultextension='.jpg') + if save_path: + self.image.save(save_path) root = tk.Tk() root.geometry("{0}x{1}+0+0".format(root.winfo_screenwidth(), root.winfo_screenheight())) win = FileOpening(master=root) win.mainloop() - - From d1ded83770d455b1772b6aa23d2aaa8c22a7b081 Mon Sep 17 00:00:00 2001 From: Adhyan Negi Date: Wed, 22 Mar 2023 18:37:11 -0400 Subject: [PATCH 02/12] Combined file opening and brush and eraser tool, but still hav to work on one minute function of the eraser tool --- combined.py | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 combined.py diff --git a/combined.py b/combined.py new file mode 100644 index 0000000..b6aa71f --- /dev/null +++ b/combined.py @@ -0,0 +1,122 @@ +import tkinter as tk +from tkinter import filedialog +from PIL import Image, ImageTk + + +class FileOpening_and_Paint(): + def __init__(self, root = None): + self.root = root + #title of GUI window + self.root.title("BRUSH AND ERASE TOOL") + #size of GUI window + self.root.geometry("800x600") + #initial size of brush + self.brush_size = 10 + #initial color of brush + self.brush_color = "black" + #initial size of eraser tool + self.eraser_size = 10 + self.image = 0 + + self.create_widgets() + self.setup_bindings() + + def create_widgets(self): + #creates a canvas widget with white background + self.canvas = tk.Canvas(self.root, bg="white") + #packs canvas widget into main window + self.canvas.pack(fill=tk.BOTH, expand=True) + + self.button = tk.Button(self.root, text="Choose file to upload", command=self.browse_file) + self.button.pack(side="top") + #creates button widget + self.brush_button = tk.Button(self.root, text="Brush", command=self.set_brush_tool) + #packs button widget into main window + self.brush_button.pack(side="top") + #creates eraser button + self.eraser_button = tk.Button(self.root, text="Eraser", command=self.set_eraser_tool) + #packs eraser button into main window + self.eraser_button.pack(side="top") + #creates a Label widget with appropriate text and packs it into main window + brush_size_label = tk.Label(self.root, text="Brush Size:") + #label appears on the left side + brush_size_label.pack(side="top") + #creates horizontal scale widget with values ranging from 1 to 50 + self.brush_size_scale = tk.Scale(self.root, from_=1, to=50, orient=tk.HORIZONTAL, command=self.set_brush_size) + #sets brush size to whatever the value in the scale is + self.brush_size_scale.set(self.brush_size) + self.brush_size_scale.pack(side="top") + + + def browse_file(self): + filetypes = (("JPEG files", "*.jpg"), ("PNG files", "*.png"), ("All files", "*.*")) + filepath = filedialog.askopenfilename(title="Select an image file", filetypes=filetypes) + if filepath: + global image + image = Image.open(filepath) + image = image.convert("RGBA") + self.image = ImageTk.PhotoImage(image) + self.canvas.create_image(0, 0, anchor="nw", image=self.image) + + #sets up the event bindings for the canvas widget to enable drawing on the canvas with the brush tool + def setup_bindings(self): + #binds the left mouse button motion event to the draw_brush method when the mouse is moved while the left mouse button is held down + self.canvas.bind("", self.draw_brush) + #binds the left mouse button release event to the reset method when the left mouse button is released + self.canvas.bind("", self.reset) + + #sets the current tool to the brush tool + def set_brush_tool(self): + #sets the instance variable current_tool to the string "brush", indicating that the brush tool is currently selected + self.current_tool = "brush" + #changes the cursor for the canvas widget to a pencil icon + self.canvas.config(cursor="pencil") + + #sets the current tool to the eraser tool + def set_eraser_tool(self): + #sets the instance variable current_tool to the string "eraser", indicating that the eraser tool is currently selected + self.current_tool = "eraser" + #changes the cursor for the canvas widget to a tcross icon + self.canvas.config(cursor="tcross") + + #updates brush size with whatever the value in the scale is + def set_brush_size(self, size): + self.brush_size = int(size) + + #implements the drawing functionality for the brush and eraser tools, depending on the current tool selected by the user + def draw_brush(self, event): + #checks if the current tool selected is the brush tool + if self.current_tool == "brush": + #gets the x and y coordinates of the mouse pointer from the event object + x, y = event.x, event.y + #calculates the top-left corner of the oval to be drawn based on the current mouse position and the size of the brush + x1, y1 = (x - self.brush_size), (y - self.brush_size) + #calculates the bottom-right corner of the oval to be drawn based on the current mouse position and the size of the brush + x2, y2 = (x + self.brush_size), (y + self.brush_size) + #creates an oval shape on the canvas with the calculated coordinates, fill color and outline color specified + self.canvas.create_oval(x1, y1, x2, y2, fill=self.brush_color, outline=self.brush_color) + #checks if the current tool selected is the eraser tool + elif self.current_tool == "eraser": + #gets the x and y coordinates of the mouse pointer from the event object + x, y = event.x, event.y + #calculates the top-left corner of the rectangle to be drawn based on the current mouse position and the size of the eraser + x1, y1 = (x - self.eraser_size), (y - self.eraser_size) + #calculates the bottom-right corner of the rectangle to be drawn based on the current mouse position and the size of the eraser + x2, y2 = (x + self.eraser_size), (y + self.eraser_size) + #creates a white rectangle shape on the canvas with the calculated coordinates, hence erasing anything drawn + self.canvas.create_rectangle(x1, y1, x2, y2, fill="white", outline="white") + self.canvas.create_image(0, 0, anchor="nw", image=self.image) + + #called when the user releases the left mouse button after drawing on the canvas + def reset(self, event): + #ensures that there is a new brush stroke from the current mouse position + self.previous_point = None + + +#represents the main window frame of a Tkinter GUI application +root = tk.Tk() +#defines the behavior of the GUI application +paint = FileOpening_and_Paint(root) +# waits for user input and responds to it by calling the appropriate event handler functions +root.mainloop() + From a0ed5a8a7df3fe6bb2c6efb3cfd965dbd11001be Mon Sep 17 00:00:00 2001 From: Adhyan Negi Date: Wed, 22 Mar 2023 18:49:06 -0400 Subject: [PATCH 03/12] update --- .DS_Store | Bin 6148 -> 6148 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.DS_Store b/.DS_Store index c47e27a25c8dbfcc47a553cf7063cff1188e095c..fbdf2515c214884dc0bf17b0de9df6f57a0fb1fc 100644 GIT binary patch delta 61 zcmZoMXfc@J&&atkU^g=(=i~xbsm*FEOPQp38G;#-8HyP48FGNoks*&Eg&_*a%V)^l OyoXJZaWgx|Uw#1Rv=4Ov delta 36 scmZoMXfc@J&&aVcU^g=($K(Q5sm*FEOPMx*WfNkY*r2tUo#QV*0Mii*i2wiq From b6bfa0fcdec38eb1b442693eab7c600feca157fc Mon Sep 17 00:00:00 2001 From: Acer Date: Wed, 22 Mar 2023 21:49:47 -0400 Subject: [PATCH 04/12] update --- Window/window_select.py | 52 ++++++++++++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 11 deletions(-) diff --git a/Window/window_select.py b/Window/window_select.py index 84d2d19..dfa5487 100644 --- a/Window/window_select.py +++ b/Window/window_select.py @@ -1,4 +1,6 @@ import tkinter as tk +from tkinter import filedialog +from PIL import Image, ImageTk class App: def __init__(self, master): @@ -28,23 +30,51 @@ def __init__(self, master): tool_bar.grid(row=1, column=0, padx=5, pady=5) # create point select - # self.point_select = tk.Button(tool_bar, text='Point Select', command=self.draw_dot) - # self.point_select.grid(row=0, column=1) - # self.canvas.bind('', self.draw_dot) + self.point_select = tk.Button(tool_bar, text='Point Select', command=self.draw_dot) + self.point_select.grid(row=0, column=1) + self.canvas.bind('', self.draw_dot) + + # file opening + self.file_opening = tk.Button(tool_bar, text="Opening File", command=self.browse_file) + self.file_opening.grid(row=0, column=2) + self.canvas.bind('', self.browse_file) + # + # # save file + self.save = tk.Button(tool_bar, text="Save File", command=self.save_image) + self.save.grid(row=1, column=1) + self.canvas.bind('', self.save_image) + + # file saving + def save_image(self): + save_path = filedialog.asksaveasfilename(defaultextension='.jpg') + if save_path: + self.image.save(save_path) + # file opening + def browse_file(self): + filetypes = (("JPEG files", "*.jpg"), ("PNG files", "*.png"), ("All files", "*.*")) + filepath = filedialog.askopenfilename(title="Select an image file", filetypes=filetypes) + if filepath: + self.image = Image.open(filepath) + photo = ImageTk.PhotoImage(self.image) + w = 650 + h = 400 + self.canvas.image = photo + self.canvas.config(width = w, height = h) + self.canvas.create_image((0,0), image = photo, anchor = tk.NW) def quit(self): self.master.quit() - # def draw_dot(self, event): - # self.x1 = event.x - # self.y1 = event.y - # self.x2 = event.x - # self.y2 = event.y - # # Draw an oval in the given co-ordinates - # self.canvas.create_oval(self.x1, self.y1, self.x2, self.y2, fill="black", width=2) + def draw_dot(self, event): + self.x1 = event.x + self.y1 = event.y + self.x2 = event.x + self.y2 = event.y + # Draw an oval in the given co-ordinates + self.canvas.create_oval(self.x1, self.y1, self.x2, self.y2, fill="black", width=2) if __name__ == '__main__': root = tk.Tk() root.config(bg="SpringGreen4") app = App(root) - root.mainloop() + root.mainloop() \ No newline at end of file From adef86ff90e2788d6d45ace7d313898164db6e80 Mon Sep 17 00:00:00 2001 From: Adhyan Negi Date: Wed, 12 Apr 2023 15:32:53 -0400 Subject: [PATCH 05/12] updated brush_erase --- .DS_Store | Bin 6148 -> 8196 bytes updated_brush_erase/test.py | 134 ++++++++++++++++++++++++++++++++++++ 2 files changed, 134 insertions(+) create mode 100644 updated_brush_erase/test.py diff --git a/.DS_Store b/.DS_Store index fbdf2515c214884dc0bf17b0de9df6f57a0fb1fc..1c43c066ee1ee65531a8a2dbc663481f4b0cbd87 100644 GIT binary patch delta 543 zcmZoMXmOBWU|?W$DortDU;r^WfEYvza8E20o2aMAD6}zPH}hr%jz7$c**Q2SHn1=X zO)g-S+N{QMfNAm_*5i{;vuOzmGn6tEFr+XfGL$f+0_ph40xWm2ii)Y^q#Fh&=jRpx zEr9`S+Qla8vGT~wy6pRH-sdBZK$X}P#So*Yic~L|*KVws5oY){G$P6};L4q4dyMjV&vmnQJ=E?jbo|FA~I5>bt TfdZ3Zay-v;>_IWeeJBn95A1t7 delta 117 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{Mvv5r;6q~50$jG@dU^g=(=i~xGsmcF@k8ge} z@RM=!31R-tx5b1Q7qfG42r>he1AzcHkZ=X*+*tUXc{0C@C&(NICWx6JYZx}i^UPre E0Eku=qyPW_ diff --git a/updated_brush_erase/test.py b/updated_brush_erase/test.py new file mode 100644 index 0000000..905e284 --- /dev/null +++ b/updated_brush_erase/test.py @@ -0,0 +1,134 @@ +import tkinter as tk +from tkinter import filedialog +from PIL import Image, ImageTk + + +class FileOpening_and_Paint(): + def __init__(self, root = None): + self.root = root + #title of GUI window + self.root.title("BRUSH AND ERASE TOOL") + #size of GUI window + self.root.geometry("800x600") + #initial size of brush + self.brush_size = 10 + #initial color of brush + self.brush_color = "black" + #initial size of eraser tool + self.eraser_size = 10 + self.image = 0 + self.event_list = [] + + self.create_widgets() + self.setup_bindings() + + def create_widgets(self): + #creates a canvas widget with white background + self.canvas = tk.Canvas(self.root, bg="white") + #packs canvas widget into main window + self.canvas.pack(fill=tk.BOTH, expand=True) + + self.button = tk.Button(self.root, text="Choose file to upload", command=self.browse_file) + self.button.pack(side="top") + #creates button widget + self.brush_button = tk.Button(self.root, text="Brush", command=self.set_brush_tool) + #packs button widget into main window + self.brush_button.pack(side="top") + #creates eraser button + self.eraser_button = tk.Button(self.root, text="Eraser", command=self.set_eraser_tool) + #packs eraser button into main window + self.eraser_button.pack(side="top") + #creates a Label widget with appropriate text and packs it into main window + self.erase_all_button = tk.Button(self.root, text="Erase All", command=self.set_erase_all) + self.erase_all_button.pack(side="top") + brush_size_label = tk.Label(self.root, text="Brush Size:") + #label appears on the left side + brush_size_label.pack(side="top") + #creates horizontal scale widget with values ranging from 1 to 50 + self.brush_size_scale = tk.Scale(self.root, from_=1, to=50, orient=tk.HORIZONTAL, command=self.set_brush_size) + #sets brush size to whatever the value in the scale is + self.brush_size_scale.set(self.brush_size) + self.brush_size_scale.pack(side="top") + + + def browse_file(self): + filetypes = (("JPEG files", "*.jpg"), ("PNG files", "*.png"), ("All files", "*.*")) + filepath = filedialog.askopenfilename(title="Select an image file", filetypes=filetypes) + if filepath: + image = Image.open(filepath) + image = image.convert("RGBA") + self.image = ImageTk.PhotoImage(image) + self.canvas.create_image(0, 0, anchor="nw", image=self.image) + + #sets up the event bindings for the canvas widget to enable drawing on the canvas with the brush tool + def setup_bindings(self): + #binds the left mouse button motion event to the draw_brush method when the mouse is moved while the left mouse button is held down + self.canvas.bind("", self.draw_brush) + #binds the left mouse button release event to the reset method when the left mouse button is released + self.canvas.bind("", self.reset) + + #sets the current tool to the brush tool + def set_brush_tool(self): + #sets the instance variable current_tool to the string "brush", indicating that the brush tool is currently selected + self.current_tool = "brush" + #changes the cursor for the canvas widget to a pencil icon + self.canvas.config(cursor="pencil") + + #sets the current tool to the eraser tool + def set_eraser_tool(self): + #sets the instance variable current_tool to the string "eraser", indicating that the eraser tool is currently selected + self.current_tool = "eraser" + if self.event_list: + self.remove_latest_event() + + def set_erase_all(self): + if self.image != 0: + self.canvas.create_image(0, 0, anchor="nw", image=self.image) + else: + self.canvas.delete("all") + self.event_list = [] + self.current_tool = "brush" + + #updates brush size with whatever the value in the scale is + def set_brush_size(self, size): + self.brush_size = int(size) + + def remove_latest_event(self): + self.event_list.pop() + self.canvas.delete("all") + if self.image != 0: + self.canvas.create_image(0, 0, anchor="nw", image=self.image) + for i in self.event_list: + self.canvas.create_oval(i[0], i[1], i[2], i[3], fill=i[4], outline=i[4]) + + #implements the drawing functionality for the brush and eraser tools, depending on the current tool selected by the user + def draw_brush(self, event): + #checks if the current tool selected is the brush tool + if self.current_tool == "brush": + #gets the x and y coordinates of the mouse pointer from the event object + x, y = event.x, event.y + #calculates the top-left corner of the oval to be drawn based on the current mouse position and the size of the brush + x1, y1 = (x - self.brush_size), (y - self.brush_size) + #calculates the bottom-right corner of the oval to be drawn based on the current mouse position and the size of the brush + x2, y2 = (x + self.brush_size), (y + self.brush_size) + #creates an oval shape on the canvas with the calculated coordinates, fill color and outline color specified + self.canvas.create_oval(x1, y1, x2, y2, fill=self.brush_color, outline=self.brush_color) + self.event_list.append((x1, y1, x2, y2, self.brush_color)) + #checks if the current tool selected is the eraser tool + elif self.current_tool == "eraser": + #if self.event_list != []: + # self.remove_latest_event() + self.set_eraser_tool() + + #called when the user releases the left mouse button after drawing on the canvas + def reset(self, event): + #ensures that there is a new brush stroke from the current mouse position + self.previous_point = None + + +#represents the main window frame of a Tkinter GUI application +root = tk.Tk() +#defines the behavior of the GUI application +paint = FileOpening_and_Paint(root) +# waits for user input and responds to it by calling the appropriate event handler functions +root.mainloop() \ No newline at end of file From 90cd5c437a00be4703a79d31d76d1d4f690d92f1 Mon Sep 17 00:00:00 2001 From: Adhyan Negi Date: Wed, 12 Apr 2023 15:44:18 -0400 Subject: [PATCH 06/12] added comments for better understanding --- updated_brush_erase/.DS_Store | Bin 0 -> 6148 bytes updated_brush_erase/test.py | 26 ++++++++++++++++---------- 2 files changed, 16 insertions(+), 10 deletions(-) create mode 100644 updated_brush_erase/.DS_Store diff --git a/updated_brush_erase/.DS_Store b/updated_brush_erase/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Wed, 19 Apr 2023 13:28:26 -0400 Subject: [PATCH 07/12] Brush tool smoother and working with eraser tool --- updated_brush_erase/test.py | 40 ++++++++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/updated_brush_erase/test.py b/updated_brush_erase/test.py index c5a0b47..72b5b02 100644 --- a/updated_brush_erase/test.py +++ b/updated_brush_erase/test.py @@ -20,6 +20,8 @@ def __init__(self, root = None): self.image = 0 #initialize a list which stores all events self.event_list = [] + self.last_x = None + self.last_y = None #settung up canvas and bindings self.create_widgets() self.setup_bindings() @@ -64,6 +66,7 @@ def browse_file(self): self.image = ImageTk.PhotoImage(image) #opens image into the canvas self.canvas.create_image(0, 0, anchor="nw", image=self.image) + self.event_list = [] #sets up the event bindings for the canvas widget to enable drawing on the canvas with the brush tool def setup_bindings(self): @@ -102,7 +105,14 @@ def set_brush_size(self, size): def remove_latest_event(self): #undoes last brush stroke - self.event_list.pop() + if (len(self.event_list) > 5): + self.event_list.pop() + self.event_list.pop() + self.event_list.pop() + self.event_list.pop() + self.event_list.pop() + else: + self.event_list.pop() self.canvas.delete("all") if self.image != 0: self.canvas.create_image(0, 0, anchor="nw", image=self.image) @@ -113,15 +123,30 @@ def remove_latest_event(self): def draw_brush(self, event): #checks if the current tool selected is the brush tool if self.current_tool == "brush": - #gets the x and y coordinates of the mouse pointer from the event object + #gets the x and y coordinates of the mouse pointer from the event object x, y = event.x, event.y - #calculates the top-left corner of the oval to be drawn based on the current mouse position and the size of the brush x1, y1 = (x - self.brush_size), (y - self.brush_size) #calculates the bottom-right corner of the oval to be drawn based on the current mouse position and the size of the brush x2, y2 = (x + self.brush_size), (y + self.brush_size) - #creates an oval shape on the canvas with the calculated coordinates, fill color and outline color specified - self.canvas.create_oval(x1, y1, x2, y2, fill=self.brush_color, outline=self.brush_color) - self.event_list.append((x1, y1, x2, y2, self.brush_color)) + #calculates the distance between the previous position and the current position + if (self.last_x != None) and (self.last_y != None): + distance = ((x - self.last_x) ** 2 + (y - self.last_y) ** 2) ** 0.5 + #calculates the step size and direction between the previous position and the current position + step_x = (x - self.last_x) / distance if distance > 0 else 0 + step_y = (y - self.last_y) / distance if distance > 0 else 0 + #draw a sequence of small ovals between the previous position and the current position + for i in range(int(distance)): + oval_x = int(self.last_x + i * step_x) + oval_y = int(self.last_y + i * step_y) + oval_x1, oval_y1 = (oval_x - self.brush_size), (oval_y - self.brush_size) + oval_x2, oval_y2 = (oval_x + self.brush_size), (oval_y + self.brush_size) + self.canvas.create_oval(oval_x1, oval_y1, oval_x2, oval_y2, fill=self.brush_color, outline=self.brush_color) + self.event_list.append((oval_x1, oval_y1, oval_x2, oval_y2, self.brush_color)) + else: + self.canvas.create_oval(x1, y1, x2, y2, fill=self.brush_color, outline=self.brush_color) + self.event_list.append((x1, y1, x2, y2, self.brush_color)) + #update the previous position with the current position + self.last_x, self.last_y = x, y #checks if the current tool selected is the eraser tool elif self.current_tool == "eraser": self.set_eraser_tool() @@ -129,7 +154,8 @@ def draw_brush(self, event): #called when the user releases the left mouse button after drawing on the canvas def reset(self, event): #ensures that there is a new brush stroke from the current mouse position - self.previous_point = None + self.last_x = None + self.last_y = None #represents the main window frame of a Tkinter GUI application From 8e64395c0b747b1f4f08b5687dc5a701149a6d61 Mon Sep 17 00:00:00 2001 From: Adhyan Negi Date: Fri, 28 Apr 2023 15:51:16 -0400 Subject: [PATCH 08/12] update --- .DS_Store | Bin 8196 -> 8196 bytes ScrollAndZoom/.DS_Store | Bin 0 -> 6148 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 ScrollAndZoom/.DS_Store diff --git a/.DS_Store b/.DS_Store index 1c43c066ee1ee65531a8a2dbc663481f4b0cbd87..7f8d847b016571682cc0b530e729f028e9c51260 100644 GIT binary patch delta 42 ncmZp1XmQw(Cd^@CVWy*CVq`M8LCk*gTH%W*0-KMD*mDB_5Yr5t delta 24 dcmZp1XmQw(COkPt$bIr!;fo-8^HC9dZUA@$2|NG* diff --git a/ScrollAndZoom/.DS_Store b/ScrollAndZoom/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ed544a32e6b13aa165417b8c4a80f5c1ab26b95d GIT binary patch literal 6148 zcmeHK%}T>S5T0$TO({YT3OxqA7Obrn#7n641&ruHB_>U=!I&-mF-R%otS{t~_&m<+ zZj@4c@FG%XVD_7xoyoG_hMipi5ZzgL2v7q63ze`?!R7~{ancnj7!RRP-{^x6eHg+3 zyp?En{6_|8@2a?49*p1x_wIZDyda&7f>;I^@g9ugXfka!KSZHe+S)E#Wvgo4xkH({ zQ-3;}bp7!S^)981gWUFmt7wpVwcRtBO#LVsj8#Gu4lv~QI!Z#BcI7MyCo0#~16IYV zc(wX`-s&_PcKf)wXxQ_U7TQPc&SFuq_Vy1>FTBV2DUq+5Qh|S;k{yFNyrHpXb Date: Thu, 25 May 2023 15:02:50 -0400 Subject: [PATCH 09/12] Cleaning out the repository and merging with prototype.py --- .DS_Store | Bin 8196 -> 0 bytes .idea/.gitignore => .gitignore | 0 .idea/GUI.iml | 8 -------- .idea/ImageAnnotationProject.iml | 10 --------- .idea/inspectionProfiles/Project_Default.xml | 19 ------------------ .../inspectionProfiles/profiles_settings.xml | 6 ------ .idea/misc.xml | 5 ----- .idea/modules.xml | 8 -------- .idea/vcs.xml | 6 ------ 9 files changed, 62 deletions(-) delete mode 100644 .DS_Store rename .idea/.gitignore => .gitignore (100%) delete mode 100644 .idea/GUI.iml delete mode 100644 .idea/ImageAnnotationProject.iml delete mode 100644 .idea/inspectionProfiles/Project_Default.xml delete mode 100644 .idea/inspectionProfiles/profiles_settings.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/vcs.xml diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 7f8d847b016571682cc0b530e729f028e9c51260..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeHM%Wl&^6ur}i)={Vw6_B#DU|Wea4H1Y<8Ui~u7*UCbf?Y>RgyXUDAd4tcw!j~- z;1gK0V9AOt65>CQSaar4nmD*})S?uak!H@=zQ>t+Ja@*|AtF{A`nyC0BC=2g=5uI% zQ^a*q7s{GGvkhe66Sb*9P3nf1^Pm9sY*DO)eP3NQtx>=z z@Lwt*)(0C^U{&K(p=zu&98@-E-t2XCESGpUvN!-l!jW0rz0> z!Ha@Ue^4xbWozr13mco(rj@gvIc+|22JT?kuerS^;^-mgfp^q*y+@tqsFA;Xhlc~V z6E=I2(D9ovd3w+ZeLkx3Vd(cI*HIU&td(u#3*&LAQrxlkZWJdw_V`u_{qkOAGRaz3 zu3f+Vpz$K;hWxd1i0MUvwqg#xN%k&i?K+3N8!5*2=VZ$+uh+E>mi_Ae$E)8y?Vn`r zFJT?EXGdX+!6ZD5mrgGXc-Vr4@b)6zqYef5+F}!@2pHlxq}D(3)Dr!R>99o(9b)!! zXc5pp6!7UWjyQE!twi}|1#`AkKIQy9!NZsqmk`4d{C8=9`QYPQ+_{YFGtwocxASo> z0*q2JXXF0um-|27eV1{cnti+uEYF@_7nT`yY))*@fm|1SM8s&-5phN<`kYTOf2CBW zNu|KLvMPxD|8Da4|5W!fMn(anz~89=%ha8E4P!rgjgGq^a%~&+IjShaZmLjH(8zQg xDARG^uRjdYw_z$cRgF`HID@i+4*{un@Z - - - - - - - \ No newline at end of file diff --git a/.idea/ImageAnnotationProject.iml b/.idea/ImageAnnotationProject.iml deleted file mode 100644 index e5d1e48..0000000 --- a/.idea/ImageAnnotationProject.iml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 8607595..0000000 --- a/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml deleted file mode 100644 index 105ce2d..0000000 --- a/.idea/inspectionProfiles/profiles_settings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index edafe49..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index cfd3f44..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From 627606129739b994f4c9e6150de8260a7370fcd3 Mon Sep 17 00:00:00 2001 From: Dirk Colbry Date: Thu, 25 May 2023 15:05:00 -0400 Subject: [PATCH 10/12] adding readme file --- README.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..5b368dc --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# SEE-Segment TKinter gui framework + +This framework is the start of a Graphical User Interface to help segment images to establish ground truth. To use this tool run the following from python (requires TKinter): + From a1a1ed5d77514e0509f4e82a534a425386a47cbd Mon Sep 17 00:00:00 2001 From: Dirk Colbry Date: Tue, 6 Jun 2023 16:48:27 -0400 Subject: [PATCH 11/12] minor updates to gitignore and readme --- .gitignore | 2 ++ README.md | 3 +++ 2 files changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index 26d3352..44ce839 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ # Default ignored files /shelf/ /workspace.xml +.ipynb_checkpoints +.DS_Store diff --git a/README.md b/README.md index 5b368dc..8842217 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,6 @@ This framework is the start of a Graphical User Interface to help segment images to establish ground truth. To use this tool run the following from python (requires TKinter): +'''python combined.py''' + + From d5538913d232939d719b1590535d16a33a80c657 Mon Sep 17 00:00:00 2001 From: Dirk Colbry Date: Tue, 6 Jun 2023 16:57:57 -0400 Subject: [PATCH 12/12] renaming folder to remove spaces --- {File opening => file_opening}/file_opening.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {File opening => file_opening}/file_opening.py (100%) diff --git a/File opening/file_opening.py b/file_opening/file_opening.py similarity index 100% rename from File opening/file_opening.py rename to file_opening/file_opening.py