Skip to content

Commit

Permalink
fix: Disable minimap for Diff editor (performance mode)
Browse files Browse the repository at this point in the history
  • Loading branch information
tomlin7 committed Jan 6, 2024
1 parent c86db9b commit da03142
Show file tree
Hide file tree
Showing 3 changed files with 126 additions and 2 deletions.
3 changes: 2 additions & 1 deletion biscuit/core/components/editors/texteditor/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ def __init__(self, master, path=None, exists=True, language=None, minimalist=Fal

self.text = Text(self, path=self.path, exists=self.exists, minimalist=minimalist, language=language)
self.linenumbers.attach(self.text)
self.minimap.attach(self.text)
if not self.minimalist:
self.minimap.attach(self.text)
self.scrollbar.config(command=self.text.yview)

self.text.config(font=self.font)
Expand Down
5 changes: 4 additions & 1 deletion biscuit/core/components/editors/texteditor/text.py
Original file line number Diff line number Diff line change
Expand Up @@ -394,7 +394,10 @@ def lsp_hover(self, response: HoverResponse) -> None:
if not (response.text or response.docs):
return self.hover.hide()

self.hover.show(self, response)
try:
self.hover.show(self, response)
except Exception as e:
print(e)

def get_cursor_pos(self):
return self.index(tk.INSERT)
Expand Down
120 changes: 120 additions & 0 deletions biscuit/core/utils/demo/dnd.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
import tkinter
from math import e
from tkinter.dnd import *


class Tester:
def __init__(self, root):
self.top = tkinter.Toplevel(root)
self.canvas = tkinter.Canvas(self.top, width=100, height=100)
self.canvas.pack(fill="both", expand=1)
self.canvas.dnd_accept = self.dnd_accept
self.top.minsize(300, 150)

def dnd_accept(self, source, event):
return self

def dnd_enter(self, source, event):
self.canvas.focus_set() # Show highlight border
x, y = source.where(self.canvas, event)
x1, y1, x2, y2 = source.canvas.bbox(source.id)
dx, dy = x2-x1, y2-y1
self.dndid = self.canvas.create_rectangle(x, y, x+dx, y+dy)
self.dnd_motion(source, event)

def dnd_motion(self, source, event):
x, y = source.where(self.canvas, event)
x1, y1, x2, y2 = self.canvas.bbox(self.dndid)
self.canvas.move(self.dndid, x-x1, y-y1)

def dnd_leave(self, source, event):
self.top.focus_set() # Hide highlight border
self.canvas.delete(self.dndid)
self.dndid = None

def dnd_commit(self, source, event):
self.dnd_leave(source, event)
x, y = source.where(self.canvas, event)
source.attach(self.canvas, x, y)

class Icon:

def __init__(self, name):
self.name = name
self.canvas = self.label = self.id = None

def attach(self, canvas, x=10, y=10):
if canvas is self.canvas:
self.canvas.coords(self.id, x, y)
return
if self.canvas is not None:
self.detach()
if canvas is None:
return
label = tkinter.Label(canvas, text=self.name,
borderwidth=2, relief="raised")
id = canvas.create_window(x, y, window=label, anchor="nw")
self.canvas = canvas
self.label = label
self.id = id
label.bind("<ButtonPress>", self.press)

def detach(self):
canvas = self.canvas
if canvas is None:
return
id = self.id
label = self.label
self.canvas = self.label = self.id = None
canvas.delete(id)
label.destroy()

def press(self, event):
if dnd_start(self, event):
# where the pointer is relative to the label widget:
self.x_off = event.x
self.y_off = event.y
# where the widget is relative to the canvas:
self.x_orig, self.y_orig = self.canvas.coords(self.id)

def move(self, event):
x, y = self.where(self.canvas, event)
self.canvas.coords(self.id, x, y)

def putback(self):
self.canvas.coords(self.id, self.x_orig, self.y_orig)

def where(self, canvas, event):
# where the corner of the canvas is relative to the screen:
x_org = canvas.winfo_rootx()
y_org = canvas.winfo_rooty()
# where the pointer is relative to the canvas widget:
x = event.x_root - x_org
y = event.y_root - y_org
# compensate for initial pointer offset
return x - self.x_off, y - self.y_off

def dnd_end(self, target, event):
if not target:
t = Tester(self.canvas)
t.top.title(self.name)
t.top.geometry(f"+{event.x_root}+{event.y_root}")
t.dnd_enter(self, event)
t.dnd_commit(self, event)

root = tkinter.Tk()
root.geometry("+1+1")
tkinter.Button(command=root.quit, text="Quit").pack()
t1 = Tester(root)
t1.top.geometry("+1+60")
t2 = Tester(root)
t2.top.geometry("+220+60")
t3 = Tester(root)
t3.top.geometry("+340+60")
i1 = Icon("ICON1")
i2 = Icon("ICON2")
i3 = Icon("ICON3")
i1.attach(t1.canvas)
i2.attach(t2.canvas)
i3.attach(t3.canvas)
root.mainloop()

0 comments on commit da03142

Please sign in to comment.