代码片段管理工具:rofi前端+Java守护进程
This commit is contained in:
13
CodeSnippetRofi/menu/AddMenu.py
Normal file
13
CodeSnippetRofi/menu/AddMenu.py
Normal 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)
|
||||
44
CodeSnippetRofi/menu/DeleteMenu.py
Normal file
44
CodeSnippetRofi/menu/DeleteMenu.py
Normal 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)
|
||||
32
CodeSnippetRofi/menu/EditMenu.py
Normal file
32
CodeSnippetRofi/menu/EditMenu.py
Normal 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)
|
||||
29
CodeSnippetRofi/menu/MainMenu.py
Normal file
29
CodeSnippetRofi/menu/MainMenu.py
Normal 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()
|
||||
71
CodeSnippetRofi/menu/SearchMenu.py
Normal file
71
CodeSnippetRofi/menu/SearchMenu.py
Normal 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
|
||||
Reference in New Issue
Block a user