Skip to content

Commit 907c299

Browse files
committed
Merge branch 'dev-future' into dev
2 parents fa31ce3 + 8801675 commit 907c299

File tree

120 files changed

+272
-245
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

120 files changed

+272
-245
lines changed

MANIFEST.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ include lires/version.yaml *
33
recursive-include lires/assets *
44
recursive-include lires_qt/docs *
55
recursive-include lires_qt/icons *
6-
recursive-include lires_qt/stylesheets *
6+
recursive-include lires_qt/assets *
77
recursive-include lires_web/dist *

lires/cmd/generateDefaultConf.py

Lines changed: 7 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,15 @@
11
import os
2-
from ..core.dataClass import DataTableList
3-
from ..confReader import CONF_FILE_PATH, saveToConf, DEFAULT_DATA_PATH, DEFAULT_PDF_VIEWER_DIR
2+
from ..confReader import generateDefaultConf
43

54
def run():
65
generateDefaultConf()
76

8-
try:
9-
import darkdetect
10-
# this is the only place where darkdetect is used,
11-
# this dependency is not required for the server environment
12-
is_sys_darkmode = darkdetect.isDark()
13-
except ImportError:
14-
is_sys_darkmode = False
15-
16-
def generateDefaultConf():
17-
"""
18-
"database" points to local database, used by LiresWeb,
19-
"""
20-
saveToConf(
21-
## CORE SETTINGS ##
22-
accepted_extensions = [".pdf", ".caj", ".html", ".hpack", ".md", ".pptx", ".ppt"],
23-
database = DEFAULT_DATA_PATH,
24-
25-
host = "",
26-
port = "8080",
27-
access_key = "",
28-
29-
pdfjs_viewer_path = os.path.join(DEFAULT_PDF_VIEWER_DIR, "web", "viewer.html"),
30-
31-
## GUI SETTINGS ##
32-
# Maybe move them to a separate file?
33-
server_preset = [{
34-
"host": "http://localhost",
35-
"port": "8080",
36-
"access_key": ""
37-
}],
38-
39-
default_tags = [],
40-
table_headers = [
41-
DataTableList.HEADER_FILESTATUS,
42-
DataTableList.HEADER_TITLE,
43-
DataTableList.HEADER_YEAR,
44-
DataTableList.HEADER_AUTHOR
45-
],
46-
sort_method = DataTableList.SORT_TIMEADDED,
47-
sort_reverse = False,
48-
font_sizes = {
49-
"data": ["Arial", 10],
50-
"tag": ["Arial", 10]
51-
52-
},
53-
stylesheet = "Simple-dark" if is_sys_darkmode else "Simple",
54-
auto_save_comments = False,
55-
gui_status = {
56-
"show_toolbar": True,
57-
"tag_uncollapsed": []
58-
},
59-
proxies = {
60-
"proxy_config": {
61-
"proxy_type": "socks5",
62-
"host": "127.0.0.1",
63-
"port": ""
64-
},
65-
"enable_requests": False,
66-
"enable_qt": False,
67-
},
68-
69-
)
70-
print("Generated default configuration file at: ", CONF_FILE_PATH)
7+
try:
8+
from lires_qt.config import generateDefaultGUIConfig
9+
generateDefaultGUIConfig()
10+
except ModuleNotFoundError as e:
11+
print(e)
12+
print("Failed to import lires_qt.config, skip generating GUI configuration file")
7113

7214
if __name__ == "__main__":
7315
run()

lires/confReader.py

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import os, json, tempfile, logging
22
from .core import globalVar as G
33
from .types.configT import *
4+
import deprecated
45

56
logger_lrs = logging.getLogger("lires")
67

@@ -10,9 +11,12 @@
1011

1112
# a schematic ascii image of the file tree
1213
# LRS_HOME
13-
# ├── conf.json
14+
# ├── config.json
15+
# ├── (config_gui.json)
1416
# ├── pdf-viewer
15-
# ├── log.txt
17+
# ├── core.log
18+
# ├── (gui.log)
19+
# ├── (server.log)
1620
# ├── Database (default)
1721
# │ ├── lrs.db
1822
# │ └── ...
@@ -36,12 +40,11 @@
3640
if G.prog_args and G.prog_args.config_file:
3741
CONF_FILE_PATH = os.path.abspath(G.prog_args.config_file)
3842
if os.path.isdir(CONF_FILE_PATH):
39-
CONF_FILE_PATH = os.path.join(CONF_FILE_PATH, "lrs-conf.json")
43+
CONF_FILE_PATH = os.path.join(CONF_FILE_PATH, "lrs-config.json")
4044
else:
41-
CONF_FILE_PATH = join(LRS_HOME, "conf.json")
45+
CONF_FILE_PATH = join(LRS_HOME, "config.json")
4246

4347
ASSETS_PATH = join(CURR_PATH, "assets")
44-
BIB_TEMPLATE_PATH = join(ASSETS_PATH, "bibtexTemplates")
4548

4649
DEFAULT_DATA_PATH = join(LRS_HOME, "Database")
4750
DEFAULT_PDF_VIEWER_DIR = join(LRS_HOME, "pdf-viewer")
@@ -109,6 +112,7 @@ def getDatabasePath_withFallback(offline: Optional[bool] = None, fallback: str =
109112
else:
110113
return fallback
111114

115+
@deprecated.deprecated(version="1.2.0", reason="use getConf instead")
112116
def getConfV(key : str):
113117
try:
114118
return getConf()[key]
@@ -142,9 +146,34 @@ def saveToConf(**kwargs):
142146
# So that next time the configuration will be read from file by getConf/getConfV
143147
G.resetGlobalConfVar()
144148

145-
def saveToConf_guiStatus(**kwargs):
146-
gui_status = getConfV("gui_status")
147-
for k,v in kwargs.items():
148-
gui_status[k] = v
149-
saveToConf(gui_status = gui_status)
150149

150+
def generateDefaultConf():
151+
"""
152+
"database" points to local database, used by LiresServer and Qt GUI in local mode,
153+
"""
154+
default_config: LiresConfT = {
155+
"accepted_extensions": [".pdf", ".caj", ".html", ".hpack", ".md", ".pptx", ".ppt"],
156+
"database": DEFAULT_DATA_PATH,
157+
158+
"host": "",
159+
"port": "8080",
160+
"access_key": "",
161+
162+
"pdfjs_viewer_path": os.path.join(DEFAULT_PDF_VIEWER_DIR, "web", "viewer.html"),
163+
164+
"proxies": {
165+
"proxy_config": {
166+
"proxy_type": "socks5",
167+
"host": "127.0.0.1",
168+
"port": ""
169+
},
170+
"enable_requests": False,
171+
"enable_qt": False,
172+
},
173+
}
174+
175+
with open(CONF_FILE_PATH, "w", encoding="utf-8") as fp:
176+
json.dump(default_config, fp, indent=1)
177+
178+
print("Generated default configuration file at: ", CONF_FILE_PATH)
179+
return

lires/core/dataClass.py

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -503,37 +503,6 @@ def reloadFromFile(self, idx):
503503
def getTable(self):
504504
pass
505505

506-
# def getTableItem(self, row: int, col: int) -> str:
507-
# data = self[row]
508-
# return DataList.TB_FUNCS[col](data)
509-
510-
# def getTableHeaderItem(self, col: int) -> str:
511-
# return self.TB_HEADER[col]
512-
513-
class DataTableList(DataList, DataCore):
514-
HEADER_FILESTATUS = "File status"
515-
HEADER_YEAR = "Year"
516-
HEADER_AUTHOR = "Author"
517-
HEADER_TITLE = "Title"
518-
HEADER_TIMEMODIFY = "Time modified"
519-
_HEADER_FUNCS = {
520-
HEADER_FILESTATUS: lambda x: x.getFileStatusStr(),
521-
HEADER_YEAR: lambda x: x.year,
522-
HEADER_AUTHOR: lambda x: x.getAuthorsAbbr(),
523-
HEADER_TITLE: lambda x: x.title,
524-
HEADER_TIMEMODIFY: lambda x: TimeUtils.toStr(TimeUtils.stamp2Local(x.time_modified))
525-
}
526-
def __init__(self, *args, **kwargs):
527-
super().__init__(*args, **kwargs)
528-
self.header_order = getConfV("table_headers")
529-
530-
def getTableItem(self, row: int, col: int) -> str:
531-
data = self[row]
532-
return DataTableList._HEADER_FUNCS[self.header_order[col]](data)
533-
534-
def getTableHeaderItem(self, col: int) -> str:
535-
return self.header_order[col]
536-
537506
class DataBase(Dict[str, DataPoint], DataCore):
538507
def __init__(self, local_path: Optional[str] = None, force_offline: bool = False):
539508
super().__init__()

lires/core/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ def formatMarkdownHTML(md_html: str, abs_fpath: bool = True):
283283
html_template = string.Template(fp.read())
284284

285285
USE_MATHJAX = False # To determine if using latex equation, save bandwidth
286-
for sign in ["$$", "\\("]:
286+
for sign in ["$$", "\\(", "$"]:
287287
if sign in md_html:
288288
USE_MATHJAX = True
289289
if USE_MATHJAX:

lires/types/configT.py

Lines changed: 1 addition & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,6 @@
11
from __future__ import annotations
22
from typing import Literal, Optional, Tuple, TypedDict, List, Union
33

4-
class _ConfServerPresetT(TypedDict):
5-
host: str
6-
port: str
7-
access_key: str
8-
9-
class _ConfFontSizeT(TypedDict):
10-
data: Tuple[str, int]
11-
tag: Tuple[str, int]
12-
13-
class _ConfGUIStatusT(TypedDict):
14-
show_toolbar: bool
15-
tag_uncollapsed: List[str]
16-
174
class _ConfProxyT(TypedDict):
185
proxy_config: _ProxyT
196
enable_requests: bool
@@ -40,20 +27,4 @@ class LiresConfT(TypedDict):
4027
# PDFjs viewer for pdf render in qwebengine and webui
4128
# the path is suppose to be the viewer.html
4229
pdfjs_viewer_path: str
43-
44-
"""GUI SETTINGS"""
45-
server_preset: List[_ConfServerPresetT]
46-
# Tag settings
47-
default_tags: List[str]
48-
table_headers: List[str]
49-
50-
# GUI settings
51-
sort_method: str
52-
sort_reverse: bool
53-
54-
font_sizes: _ConfFontSizeT
55-
stylesheet: str
56-
auto_save_comments: bool
57-
gui_status: _ConfGUIStatusT
58-
59-
proxies: _ConfProxyT
30+
proxies: _ConfProxyT

lires/version.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -444,3 +444,11 @@ version_history:
444444
- Refactors:
445445
- Better default arguments for datacard container
446446
- Record hover state in datacard container
447+
448+
1.0.5:
449+
- Deploy:
450+
- Use docker-compose
451+
- Refactor:
452+
- Isolate qt gui configuration file
453+
- Move bibtex templates into qt module
454+
- Set name for each access key
File renamed without changes.

0 commit comments

Comments
 (0)