diff --git a/hazama/__init__.py b/hazama/__init__.py index c9e2904..2f01969 100755 --- a/hazama/__init__.py +++ b/hazama/__init__.py @@ -22,6 +22,7 @@ # 1. Only slots methods which is auto connected need Slot decorator # 2. StyleSheets using dynamic property require (un)polish to take effect # 3. Subclass of QWidget refuse to paint QSS background. Use QFrame or set WA_StyledBackground +# 4. Inner class will break qt linguist! def main_entry(): import time diff --git a/hazama/ui/diarylist.py b/hazama/ui/diarylist.py index 0adb856..6a604db 100644 --- a/hazama/ui/diarylist.py +++ b/hazama/ui/diarylist.py @@ -209,61 +209,62 @@ def sizeHint(self, option, index): return QSize(-1, self._itemW.heightWithTag if hasTag else self._itemW.heightNoTag) +class DiaryListScrollBar(QScrollBar): + """Annotated scrollbar.""" + wantSetRow = Signal(int) + + def __init__(self, parent): + super().__init__(parent, objectName='diaryListSB') + self._poses = () + self._pairs = () # year: row + self._color = QColor('gold') + + def paintEvent(self, event): + super().paintEvent(event) + if not self._poses: + return + p = QPainter(self) + # avoid painting on slider handle + opt = QStyleOptionSlider() + self.initStyleOption(opt) + groove = self.style().subControlRect(QStyle.CC_ScrollBar, opt, + QStyle.SC_ScrollBarGroove, self) + slider = self.style().subControlRect(QStyle.CC_ScrollBar, opt, + QStyle.SC_ScrollBarSlider, self) + p.setClipRegion(QRegion(groove) - QRegion(slider), Qt.IntersectClip) + + x, y, w, h = groove.getRect() + x += 1 + w -= 2 + c = self._color + c.setAlpha(70) + p.setBrush(c) + c.setAlpha(145) + p.setPen(QPen(c, scaleRatio)) + p.drawRects([QRect(x, y+h*i, w, 3*scaleRatio) for i in self._poses]) + + def contextMenuEvent(self, event): + """Used to jump to the first day of years. Original menu is almost useless.""" + menu = QMenu() + menu.addAction(QAction(self.tr('Go to the first diary of each year'), menu, enabled=False)) + for year, row in self._pairs: + menu.addAction(QAction(str(year), menu, + triggered=lambda r=row: self.wantSetRow.emit(r))) + menu.exec_(event.globalPos()) + menu.deleteLater() + + def setPositions(self, rowCount, pairs): + self._poses = tuple(p / rowCount for _, p in pairs) + self._pairs = pairs + + annotateColor = NProperty(QColor, '_color') + + class DiaryList(QListView): """Main List that display preview of diaries""" startLoading = Signal() countChanged = Signal() - class ScrollBar(QScrollBar): - """Annotated scrollbar.""" - wantSetRow = Signal(int) - - def __init__(self, parent): - super().__init__(parent, objectName='diaryListSB') - self._poses = () - self._pairs = () # year: row - self._color = QColor('gold') - - def paintEvent(self, event): - super().paintEvent(event) - if not self._poses: - return - p = QPainter(self) - # avoid painting on slider handle - opt = QStyleOptionSlider() - self.initStyleOption(opt) - groove = self.style().subControlRect(QStyle.CC_ScrollBar, opt, - QStyle.SC_ScrollBarGroove, self) - slider = self.style().subControlRect(QStyle.CC_ScrollBar, opt, - QStyle.SC_ScrollBarSlider, self) - p.setClipRegion(QRegion(groove) - QRegion(slider), Qt.IntersectClip) - - x, y, w, h = groove.getRect() - x += 1 - w -= 2 - c = self._color - c.setAlpha(70) - p.setBrush(c) - c.setAlpha(145) - p.setPen(QPen(c, scaleRatio)) - p.drawRects([QRect(x, y+h*i, w, 3*scaleRatio) for i in self._poses]) - - def contextMenuEvent(self, event): - """Used to jump to the first day of years. Original menu is almost useless.""" - menu = QMenu() - menu.addAction(QAction(self.tr('Go to the first diary of each year'), menu, enabled=False)) - for year, row in self._pairs: - menu.addAction(QAction(str(year), menu, - triggered=lambda r=row: self.wantSetRow.emit(r))) - menu.exec_(event.globalPos()) - menu.deleteLater() - - def setPositions(self, rowCount, pairs): - self._poses = tuple(p / rowCount for _, p in pairs) - self._pairs = pairs - - annotateColor = NProperty(QColor, '_color') - def __init__(self, parent=None): super().__init__(parent) self._delegate = None @@ -271,7 +272,7 @@ def __init__(self, parent=None): # but mouse wheel still scroll item by item (the number of items scrolled depends on # qApp.wheelScrollLines) self.setVerticalScrollMode(self.ScrollPerPixel) - self.scrollbar = DiaryList.ScrollBar(self) + self.scrollbar = DiaryListScrollBar(self) self.scrollbar.wantSetRow.connect(self.setRow) self.setVerticalScrollBar(self.scrollbar) diff --git a/translation/ja.ts b/translation/ja.ts index 87b0c21..a1f7e5e 100644 --- a/translation/ja.ts +++ b/translation/ja.ts @@ -4,7 +4,7 @@ ConfigDialog - + Restore backup バックアップから復元 @@ -14,17 +14,17 @@ 現在の日記帳はバックアップで置き換えられます。本当に復元しますか? - + Export Diary 日記のエクスポート - + Plain Text (*.txt) テキスト (*.txt) - + Export Failed エクスポート失敗 @@ -44,12 +44,12 @@ 更新の確認 - + Current diary book will be replaced with the backup! 現在の日記帳はバックアップで置き換えられます! - + Every <b>%s</b> days a diary, from <b>%s</b> to <b>%s</b> <b>%s</b>日に一回の日記、<b>%s</b>から<b>%s</b>まで @@ -59,47 +59,47 @@ サイト - + N/A N/A - + checking... 確認中... - + Author 作者 - + Website サイト - + Check update 更新の確認 - + up-to-date すでに最新 - + New version: v%s 最新バージョン: v%s - + Install インストール - + Ignore this version このバージョンを無視する @@ -109,42 +109,42 @@ サイズ - + Connecting... 接続中... - + Installing... インストール中... - + Succeeded (Restart needed for update to take effect) 成功しました(更新が機能するのに再起動が必要) - + Failed to check update: %s 更新を確認できません: %s - + Failed to install update: %s 更新をインストールできません: %s - + Retry 再試行 - + OK OK - + Size サイズ @@ -152,7 +152,7 @@ DateTimeDialog - + Edit datetime 日時の編集 @@ -160,17 +160,17 @@ Dialog - + Restore 復元 - + Cancel キャンセル - + Delete 削除 @@ -178,35 +178,48 @@ DiaryList - + Edit 編集 - + Delete 削除 - + Random ランダム Delete diaries - 日記の削除 + 日記の削除 Selected diaries will be deleted permanently! - 選択した日記は完全に削除されます! + 選択した日記は完全に削除されます! + + + + Go to location + 位置へ移動 + + + + DiaryListScrollBar + + + Go to the first diary of each year + 毎年最初の日記へ移動 Editor - + New Diary 新しい日記 @@ -233,7 +246,7 @@ Please check database path(have permission?). If it's corrupt, you may have データベースのパスを確認してください(権限がある?)。損壊した場合は、手動で修復またはバックアップから復元してください。 - + Multiple access error 多重アクセスエラー @@ -243,7 +256,7 @@ Please check database path(have permission?). If it's corrupt, you may have 日記帳は既に開かれていますため、終了します。 - + This diary book is already open. この日記帳は既に開かれています。 @@ -253,22 +266,22 @@ Please check database path(have permission?). If it's corrupt, you may have ファイルにアクセスできません - + Diary book inaccessible 日記帳にアクセスできません - + File inaccessible ファイルにアクセスできません - + File corrupted ファイルが壊れています - + Diary book seems corrupted. You may have to recover it from backups. SQLite3: %s @@ -277,12 +290,12 @@ SQLite3: %s SQLite3: %s - + %s is corrupted, please delete or fix it. %s が壊れているため、削除または修復が必要です。 - + Failed to access %s %s にアクセスできません @@ -290,7 +303,7 @@ SQLite3: %s HeatMap - + (characters) (文字) @@ -298,22 +311,22 @@ SQLite3: %s MainWindow - + %i diaries %i件の日記 - + Date 日時 - + Title 表題 - + Length 長さ @@ -323,60 +336,90 @@ SQLite3: %s 降順 - + Ascending 昇順 - + Descending 降順 - + loading... 読み込み中… - + Heat Map ヒートマップ + + + Edit Style Sheet + スタイルシートの編集 + + + + Open Data Directory + データディレクトリを開く + + + + Open MacType Config + MacTypeのコンフィグを開く + + + + About Qt + Qtについて + + + + Delete diaries + 日記の削除 + + + + Selected diaries will be deleted permanently! + 選択した日記は完全に削除されます! + NTextEdit - + Format 書式 - + Highlight ハイライト - + Bold 太字 - + Strike out 取り消し線 - + Underline 下線 - + Italic 斜体 - + Clear format 書式のクリア @@ -424,25 +467,53 @@ SQLite3: %s 日記の削除 + + ScrollBar + + + Go to the first diary of each year + 毎年最初の日記へ移動 + + + + Edit + 編集 + + + + Delete + 削除 + + + + Random + ランダム + + + + Go to location + 位置へ移動 + + SearchBox - + Search 検索 - + Title && Text 表題と本文 - + Date (YYYY-MM-DD) 日付(YYYY-MM-DD) - + Click to change search option クリックして検索の設定を変更 @@ -450,12 +521,12 @@ SQLite3: %s TagList - + All 全て - + Rename 名前の変更 @@ -463,22 +534,22 @@ SQLite3: %s configDialog - + Settings 設定 - + Language: 言語: - + Editor エディタ - + Auto indent 自動インデント @@ -488,12 +559,12 @@ SQLite3: %s 現れる時に表題エディタをフォーカス - + General 全般 - + Backup バックアップ @@ -501,20 +572,20 @@ SQLite3: %s Backup every day and keep each one for a week. - 毎日バックアップ、一週間前のを消す。 + 毎日バックアップ、一週間前のを消す。 - + Enable backup バックアップ機能を有効にする - + Select to restore 一覧から選択 - + Export エクスポート @@ -525,67 +596,67 @@ SQLite3: %s 日記を一つのテキストファイルにエクスポート。 - + All diary 全ての日記 - + Selected diary 選択した日記のみ - + Save as... 名前を付けて保存... - + Diary 日記帳 - + Preview lines: プレビューの行数: - + Fonts フォント - + Datetime: 日時: - + Title: 表題: - + Text: 本文: - + Override default font デフォルトフォントを変更する - + Appearance 外見 - + Default: デフォルト: - + Lists リスト @@ -595,7 +666,7 @@ SQLite3: %s タグ一覧にカウントを表示する - + Open output file 作成したファイルを開く @@ -605,7 +676,7 @@ SQLite3: %s 現れる時に表題エリアをフォーカス(でなければ本文エリア) - + Export diary to single plain text file. 日記を一つのテキストファイルにエクスポート。 @@ -616,7 +687,7 @@ SQLite3: %s 現れる時に表題エリアをフォーカス(さもなくば本文エリア) - + Theme: テーマ: @@ -646,60 +717,81 @@ p, li { white-space: pre-wrap; } ハザマについて - + About Hazama Hazamaについて - + Extend background of titlebar to toolbar タイトルバーの背景をツールバーまで伸ばす - + Initial cursor position: カーソルの初期位置: - + Title 表題 - + Text 本文 - + Theme テーマ - + Color Scheme: 配色: - + Statistics 統計 - + Enable read-only mode for diaries older than 3 days 三日前の日記を読み取り専用にする - + Check for update automatically 自動的に新しいアップデートを確認する - + Show counts in tag list タグ一覧にカウントを表示する + + + Show year marks in scrollbar + 年のマークをスクロールバーに表示 + + + + Tab to indent + タブでインデント + + + + Backup diaries everyday and keep them for a week. + + 毎日バックアップ、一週間前のを消す。 + + + + Enhance font rendering (MacType) + フォント描画を改善する(MacType) + editor @@ -722,32 +814,32 @@ p, li { white-space: pre-wrap; } mainWindow - + Hazama Hazama - + Tag List タグ一覧 - + New 新しい日記 - + Delete 削除 - + Sort By 並べ替え - + Settings 設定 @@ -757,7 +849,7 @@ p, li { white-space: pre-wrap; } ヒートマップ - + Heat Map ヒートマップ diff --git a/translation/zh_CN.ts b/translation/zh_CN.ts index bb90631..0f312ac 100644 --- a/translation/zh_CN.ts +++ b/translation/zh_CN.ts @@ -4,7 +4,7 @@ ConfigDialog - + Export Diary 导出日记 @@ -14,7 +14,7 @@ 纯文本 (*.txt);;富文本 (*.rtf) - + Restore backup 恢复备份 @@ -24,12 +24,12 @@ 日记本里的所有日记将丢失,确认吗? - + Plain Text (*.txt) 纯文本 (*.txt) - + Export Failed 导出失败 @@ -49,12 +49,12 @@ 检查更新 - + Current diary book will be replaced with the backup! 当前日记本将被备份替换! - + Every <b>%s</b> days a diary, from <b>%s</b> to <b>%s</b> 每<b>%s</b>天一篇日记,从<b>%s</b>到<b>%s</b> @@ -64,47 +64,47 @@ 网站 - + N/A N/A - + checking... 正在检查... - + Author 作者 - + Website 网站 - + Check update 检查更新 - + up-to-date 已是最新 - + New version: v%s 新版本: v%s - + Install 安装 - + Ignore this version 忽略此版本 @@ -114,42 +114,42 @@ 大小 - + Connecting... 正在连接... - + Installing... 正在安装... - + Succeeded (Restart needed for update to take effect) 成功(需重新启动才能生效) - + Failed to check update: %s 检查更新失败: %s - + Failed to install update: %s 安装更新失败: %s - + Retry 重试 - + OK 确定 - + Size 大小 @@ -162,7 +162,7 @@ 修改创建时间 - + Edit datetime 修改日期时间 @@ -170,17 +170,17 @@ Dialog - + Restore 恢复 - + Cancel 取消 - + Delete 删除 @@ -188,35 +188,48 @@ DiaryList - + Edit 编辑 - + Delete 删除 - + Random 随机 Delete diaries - 删除日记 + 删除日记 Selected diaries will be deleted permanently! - 选中的日记将被永久删除! + 选中的日记将被永久删除! + + + + Go to location + 跳到位置 + + + + DiaryListScrollBar + + + Go to the first diary of each year + 跳到每年的第一篇日记 Editor - + New Diary 新的日记 @@ -294,12 +307,12 @@ Please check database path(have permission?). If it's corrupt, you may have 请检查数据库路径(是否有权限?)。如果数据库损坏,可能要手动修复当前文件或者恢复备份。 - + Multiple access error 多重访问错误 - + This diary book is already open. 这本日记本已经打开。 @@ -309,22 +322,22 @@ Please check database path(have permission?). If it's corrupt, you may have 无法访问文件 - + Diary book inaccessible 无法访问日记本 - + File inaccessible 无法访问文件 - + File corrupted 文件损坏 - + Diary book seems corrupted. You may have to recover it from backups. SQLite3: %s @@ -333,12 +346,12 @@ SQLite3: %s SQLite3: %s - + %s is corrupted, please delete or fix it. %s 已经损坏,请删除或修复它。 - + Failed to access %s 无法访问 %s @@ -354,7 +367,7 @@ SQLite3: %s HeatMap - + (characters) (字符) @@ -425,7 +438,7 @@ SQLite3: %s 设置 - + %i diaries %i 篇日记 @@ -440,17 +453,17 @@ SQLite3: %s %i 件结果 - + Date 日期 - + Title 标题 - + Length 长度 @@ -460,25 +473,55 @@ SQLite3: %s 倒序排列 - + Ascending 升序 - + Descending 降序 - + loading... 加载中… - + Heat Map 热点图 + + + Edit Style Sheet + 编辑样式表 + + + + Open Data Directory + 打开数据目录 + + + + Open MacType Config + 打开MacType设置 + + + + About Qt + 关于Qt + + + + Delete diaries + 删除日记 + + + + Selected diaries will be deleted permanently! + 选中的日记将被永久删除! + NList @@ -541,37 +584,37 @@ SQLite3: %s NTextEdit - + Format 格式 - + Highlight 高亮 - + Strike out 删除线 - + Bold 粗体 - + Underline 下划线 - + Italic 斜体 - + Clear format 清除格式 @@ -629,25 +672,53 @@ SQLite3: %s 删除日记 + + ScrollBar + + + Go to the first diary of each year + 跳到每年的第一篇日记 + + + + Edit + 编辑 + + + + Delete + 删除 + + + + Random + 随机 + + + + Go to location + 跳到位置 + + SearchBox - + Search 搜索 - + Title && Text 标题与正文 - + Date (YYYY-MM-DD) 日期(YYYY-MM-DD) - + Click to change search option 点击以变更搜索设置 @@ -883,12 +954,12 @@ SQLite3: %s TagList - + All 全部 - + Rename 重命名 @@ -896,22 +967,22 @@ SQLite3: %s configDialog - + Settings 设置 - + Language: 语言: - + Editor 编辑器 - + Auto indent 自动缩进 @@ -921,12 +992,12 @@ SQLite3: %s 打开时使光标位于标题编辑区域 - + General 常规 - + Backup 备份 @@ -934,20 +1005,20 @@ SQLite3: %s Backup every day and keep each one for a week. - 每日备份,每份保留一周。 + 每日备份,每份保留一周。 - + Enable backup 启用备份 - + Select to restore 选择以恢复 - + Export 导出 @@ -958,67 +1029,67 @@ SQLite3: %s 导出日记到单个纯文本文件或富文本文件。 - + All diary 全部日记 - + Selected diary 选中的日记 - + Save as... 另存为... - + Diary 日记本 - + Preview lines: 预览行数: - + Fonts 字体 - + Datetime: 日期时间: - + Title: 标题: - + Text: 正文: - + Override default font 覆盖默认字体 - + Appearance 外观 - + Default: 默认: - + Lists 列表 @@ -1028,7 +1099,7 @@ SQLite3: %s 在标签列表里显示统计数值 - + Open output file 打开导出的文件 @@ -1038,7 +1109,7 @@ SQLite3: %s 初始焦点位于标题区域(否则位于正文区域) - + Export diary to single plain text file. 导出日记到单个纯文本文件。 @@ -1049,7 +1120,7 @@ SQLite3: %s 初始焦点位于标题区域(否则位于正文区域) - + Theme: 主题: @@ -1074,60 +1145,81 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:4px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://github.com/krrr/Hazama/releases"><span style=" text-decoration: underline; color:#00345e;">检查更新</span></a><span style=" color:#000000;"> </span><a href="https://github.com/krrr/Hazama"><span style=" text-decoration: underline; color:#00345e;">repo@GitHub</span></a><span style=" color:#000000;"> </span><a href="https://github.com/krrr"><span style=" text-decoration: underline; color:#00345e;">作者</span></a></p></body></html> - + About Hazama 关于Hazama - + Extend background of titlebar to toolbar 将标题栏的背景扩展到工具栏 - + Initial cursor position: 初始光标位置: - + Title 标题 - + Text 正文 - + Theme 主题 - + Color Scheme: 配色方案: - + Statistics 统计 - + Enable read-only mode for diaries older than 3 days 三天前的日记自动变为只读 - + Check for update automatically 自动检查更新 - + Show counts in tag list 在标签列表里显示统计数值 + + + Show year marks in scrollbar + 在滚动条里显示年份标记 + + + + Tab to indent + 按Tab键缩进 + + + + Backup diaries everyday and keep them for a week. + + 每日备份,每份保留一周。 + + + + Enhance font rendering (MacType) + 增强字体渲染(MacType) + editor @@ -1150,32 +1242,32 @@ p, li { white-space: pre-wrap; } mainWindow - + Hazama Hazama - + Tag List 标签侧栏 - + New 新的日记 - + Delete 删除 - + Sort By 排序方式 - + Settings 设置 @@ -1185,7 +1277,7 @@ p, li { white-space: pre-wrap; } HeatMap - + Heat Map 热点图