代码片段管理工具:rofi前端+Java守护进程

This commit is contained in:
2025-10-05 00:30:37 +08:00
commit a6b2905ad2
49 changed files with 3058 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
import rofi
from helper.file_helper import add
class AddMenu:
def __init__(self,r:rofi.Rofi):
self._r = r
def run(self):
result = add()
if not result.ok:
self._r.error(result.message)

View File

@@ -0,0 +1,44 @@
import rofi
from helper.api_helper import run_search, run_delete
class DeleteMenu:
def __init__(self,r: rofi.Rofi):
self._r = r
def run(self):
try:
result = run_search("")
except Exception as e:
print(f"Error: {e}")
self._r.error(str(e))
return
if result.status != "SUCCESS":
self._r.error(result.data)
return
while True:
if len(result.data) == 0:
self._r.select("删除", ["未找到Snippet记录"])
break
options = [f"{d.name} - {d.path}" for d in result.data]
index, key = self._r.select("删除", options)
if key == -1:
break
ConfirmMenu(self._r,result.data[index].path).run()
class ConfirmMenu:
def __init__(self,r:rofi.Rofi, path: str):
self._r = r
self.path = path
def run(self):
options = ["", ""]
index, key = self._r.select("确定删除?", options)
if key == -1:
return
if index == 0:
res = run_delete(self.path)
if res.status != "SUCCESS":
self._r.error(res.data)

View File

@@ -0,0 +1,32 @@
import rofi
from helper.api_helper import run_search
from helper.file_helper import edit
class EditMenu:
def __init__(self,r: rofi.Rofi):
self._r = r
def run(self):
try:
result = run_search("")
except Exception as e:
print(f"Error: {e}")
self._r.error(str(e))
return
if result.status != "SUCCESS":
self._r.error(result.data)
return
while True:
if len(result.data) == 0:
self._r.select("编辑", ["未找到Snippet记录"])
break
options = [f"{d.name} - {d.path}" for d in result.data]
index, key = self._r.select("编辑", options)
if key == -1:
break
data = result.data[index]
res = edit(data.path, data.id)
if not res.ok:
self._r.error(res.message)

View File

@@ -0,0 +1,29 @@
import rofi
from menu.AddMenu import AddMenu
from menu.DeleteMenu import DeleteMenu
from menu.EditMenu import EditMenu
from menu.SearchMenu import SearchMenu
class MainMenu:
def __init__(self,r: rofi.Rofi):
self._r = r
def run(self):
while True:
options = ["搜索", "编辑", "添加", "删除"]
index, key = self._r.select("Code Snippet", options)
print(f"index: {index}")
print(f"key: {key}")
if key == -1:
break
match index:
case 0:
SearchMenu(self._r).run()
case 1:
EditMenu(self._r).run()
case 2:
AddMenu(self._r).run()
case 3:
DeleteMenu(self._r).run()

View File

@@ -0,0 +1,71 @@
import rofi
from entity.response import SearchResponse
from helper.api_helper import run_search, run_delete
from helper.file_helper import edit, edit_and_copy
class SearchMenu:
def __init__(self, r: rofi.Rofi):
self._r = r
def run(self):
while True:
key = self._r.text_entry("搜索", allow_blank=True)
if key is None:
break
print(key)
try:
res = run_search(key)
except Exception as e:
print(f"Error: {e}")
self._r.error(str(e))
return
if res.status != "SUCCESS":
self._r.error(res.data)
return
SearchResultMenu(self._r, res.data).run()
class SearchResultMenu:
def __init__(self, r: rofi.Rofi, data: list[SearchResponse.SearchData]):
self._r = r
self._data = data
def run(self):
while True:
if len(self._data) == 0:
self._r.select("搜索结果", ["未找到Snippet记录"])
break
else:
# 将data按照索引和path换成dict前者为键
options = [f"{d.name} - {d.path}" for d in self._data]
index, key = self._r.select("搜索结果", options)
if key == -1:
break
SearchResultActionMenu(self._r, self._data[index]).run()
class SearchResultActionMenu:
def __init__(self, r: rofi.Rofi, data: SearchResponse.SearchData):
self._r = r
self.data = data
def run(self):
while True:
index, key = self._r.select("操作", ["编辑", "编辑并复制", "删除"])
if key == -1:
break
match index:
case 0:
result = edit(self.data.path, self.data.id)
if not result.ok:
self._r.error(result.message)
case 1:
result = edit_and_copy(self.data.path, self.data.id)
if not result.ok:
self._r.error(result.message)
exit()
case 2:
run_delete(self.data.path)
break