From ca1d49219896ff866b14e63298193cbdc4348605 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20K=C3=B6gl?= Date: Tue, 29 Apr 2014 09:54:58 +0200 Subject: [PATCH] justified text and small improvements --- texter/texter/build.sh | 2 +- texter/texter/main.py | 68 +++++++++++------- texter/texter/text_model.py | 12 +++- texter/texter/text_sorter_ui.py | 55 +++------------ texter/texter/texter3.ui | 2 +- texter/texter/texter4.ui | 118 -------------------------------- 6 files changed, 66 insertions(+), 191 deletions(-) diff --git a/texter/texter/build.sh b/texter/texter/build.sh index 5a54324..94ec27b 100644 --- a/texter/texter/build.sh +++ b/texter/texter/build.sh @@ -1,2 +1,2 @@ pyuic4 -o texter_ui.py texter3.ui -# pykdeuic4-python2.7 -o text_sorter_ui.py texter4.ui +pyuic4 -o text_sorter_ui.py texter4.ui diff --git a/texter/texter/main.py b/texter/texter/main.py index b2d4cca..8a1a265 100644 --- a/texter/texter/main.py +++ b/texter/texter/main.py @@ -71,6 +71,10 @@ class TextSorterDialog(QtGui.QWidget, Ui_TextSorterDialog): def fill_list(self): self.model = self.parent().parent().model self.text_list.setModel(self.model) + ix = self.parent().parent().current_index + index = self.model.index(ix, 0) + self.text_list.setCurrentIndex(index) + def slot_text_up(self): row = self.text_list.currentIndex().row() @@ -81,6 +85,7 @@ class TextSorterDialog(QtGui.QWidget, Ui_TextSorterDialog): text_db[row-1], text_db[row] = text_db[row], text_db[row-1] self.text_list.setCurrentIndex(self.model.index(row - 1, 0)) self.text_list.clicked.emit(self.model.index(row - 1, 0)) + self.parent().parent().db_dirty = True return True def slot_text_down(self): @@ -93,6 +98,7 @@ class TextSorterDialog(QtGui.QWidget, Ui_TextSorterDialog): index = self.model.index(row + 1, 0) self.text_list.setCurrentIndex(index) self.text_list.clicked.emit(index) + self.parent().parent().db_dirty = True return True def slot_show_text(self, model_index): @@ -108,6 +114,7 @@ class TextSorterDialog(QtGui.QWidget, Ui_TextSorterDialog): index = self.model.index(0, 0) self.text_list.setCurrentIndex(index) self.text_list.clicked.emit(index) + self.parent().parent().db_dirty = True class FadeAnimation(QtCore.QObject): animation_started = QtCore.pyqtSignal() @@ -120,8 +127,8 @@ class FadeAnimation(QtCore.QObject): self.fade_steps = fade_steps self.current_alpha = 255 self.timer = None - - + + def start_animation(self): print "start_animation" self.animation_started.emit() @@ -165,7 +172,6 @@ class FadeAnimation(QtCore.QObject): self.animation_finished.emit() print "animation_finished" - class TextAnimation(QtCore.QObject): animation_started = QtCore.pyqtSignal() @@ -245,6 +251,7 @@ class TextAnimation(QtCore.QObject): try: char = self.text.next() self.dst_cursor.insertText(char) + self.dst_text_edit.ensureCursorVisible() except StopIteration: self.fragment_iter += 1 self.text = None @@ -287,11 +294,14 @@ class MainWindow(KMainWindow, Ui_MainWindow): self.db_dirty = False self.is_animate = False self.fade_animation = None + self.dialog = None + self.current_object = None + self.current_index = -1 self.is_auto_publish = False self.setupUi(self) - + self.fade_animation = FadeAnimation(self.live_text, 6, self) self.font = QtGui.QFont("monospace", self.default_size) @@ -333,7 +343,7 @@ class MainWindow(KMainWindow, Ui_MainWindow): self.preview_size_action.triggered[QtGui.QAction].connect(self.slot_preview_font_size) self.live_size_action.triggered[QtGui.QAction].connect(self.slot_live_font_size) - self.fade_action.triggered.connect(self.slot_fade) + #self.fade_action.triggered.connect(self.slot_fade) self.next_action.triggered.connect(self.slot_next_item) self.previous_action.triggered.connect(self.slot_previous_item) @@ -364,6 +374,7 @@ class MainWindow(KMainWindow, Ui_MainWindow): "format_font_family", #"format_font_size", "format_text_background_color", + "format_list_style", "format_list_indent_more", "format_list_indent_less", "format_text_bold", @@ -371,7 +382,7 @@ class MainWindow(KMainWindow, Ui_MainWindow): "format_text_strikeout", "format_text_italic", "format_align_right", - "format_align_justify", + #"format_align_justify", "manage_link", "format_text_subscript", "format_text_superscript", @@ -380,6 +391,7 @@ class MainWindow(KMainWindow, Ui_MainWindow): for action in self.live_editor_collection.actions(): text = str(action.objectName()) + print "text", text if text in disabled_action_names: action.setVisible(False) @@ -493,12 +505,12 @@ class MainWindow(KMainWindow, Ui_MainWindow): spacer = KToolBarSpacerAction(self.action_collection) self.action_collection.addAction("1_spacer", spacer) - - self.fade_action = self.action_collection.addAction("fade_action") - #icon = QtGui.QIcon.fromTheme(_fromUtf8("go-previous-view-page")) - #self.fade_action.setIcon(icon) - self.fade_action.setIconText("fade") - self.fade_action.setShortcut(KShortcut(QtGui.QKeySequence(QtCore.Qt.ALT + QtCore.Qt.Key_F)), KAction.ShortcutTypes(KAction.ActiveShortcut | KAction.DefaultShortcut)) + + #self.fade_action = self.action_collection.addAction("fade_action") + ##icon = QtGui.QIcon.fromTheme(_fromUtf8("go-previous-view-page")) + ##self.fade_action.setIcon(icon) + #self.fade_action.setIconText("fade") + #self.fade_action.setShortcut(KShortcut(QtGui.QKeySequence(QtCore.Qt.ALT + QtCore.Qt.Key_F)), KAction.ShortcutTypes(KAction.ActiveShortcut | KAction.DefaultShortcut)) self.previous_action = self.action_collection.addAction("previous_action") icon = QtGui.QIcon.fromTheme(_fromUtf8("go-previous-view-page")) @@ -637,7 +649,6 @@ class MainWindow(KMainWindow, Ui_MainWindow): self.preview_size_action.setFontSize(self.default_size) self.preview_text.document().setDefaultFont(self.font) - def slot_set_live_defaults(self): self.live_center_action.setChecked(True) self.live_text.alignCenter() @@ -645,29 +656,35 @@ class MainWindow(KMainWindow, Ui_MainWindow): self.live_size_action.setFontSize(self.default_size) self.live_text.document().setDefaultFont(self.font) - def slot_clear_live(self): self.live_text.clear() self.slot_set_live_defaults() - def slot_clear_preview(self): self.preview_text.clear() self.slot_set_preview_defaults() - + def slot_fade(self): if self.fade_animation.timer is None: self.fade_animation.start_animation() - def fill_combo_box(self): + if self.dialog is not None: + self.dialog.deleteLater() + self.dialog = None + self.text_combo.clear() - for preview, text in self.model.text_db: + current_row = -1 + for ix, list_obj in enumerate(self.model.text_db): + preview, text = list_obj self.text_combo.addAction(preview) + if list_obj == self.current_object: + current_row = ix - self.text_combo.setCurrentItem(0) - self.slot_load_preview_text(0) - + if current_row == -1: + current_row = self.current_index + self.slot_load_preview_text(current_row) + self.text_combo.setCurrentItem(current_row) def slot_load_preview_text(self, index): try: @@ -678,7 +695,6 @@ class MainWindow(KMainWindow, Ui_MainWindow): if self.is_auto_publish: self.slot_publish() - def slot_save_live_text(self): text = self.live_text.toHtml() preview = self.get_preview_text(unicode(self.live_text.toPlainText())) @@ -733,6 +749,12 @@ class MainWindow(KMainWindow, Ui_MainWindow): def slot_open_dialog(self): + self.current_index = self.text_combo.currentItem() + self.current_object = self.model.text_db[self.current_index] + if self.dialog is not None: + self.dialog.deleteLater() + self.dialog = None + self.dialog = KDialog(self) self.dialog_widget = TextSorterDialog(self.dialog) self.dialog.setMainWidget(self.dialog_widget) @@ -745,8 +767,6 @@ class MainWindow(KMainWindow, Ui_MainWindow): #self.dialog.setFixedSize(x, global_height-40) self.dialog.okClicked.connect(self.fill_combo_box) self.dialog.exec_() - self.dialog.deleteLater() - self.dialog = None def slot_load(self): path = os.path.expanduser("~/.texter") diff --git a/texter/texter/text_model.py b/texter/texter/text_model.py index 2135be6..b3a9262 100644 --- a/texter/texter/text_model.py +++ b/texter/texter/text_model.py @@ -19,6 +19,8 @@ class TextModel(QtCore.QAbstractTableModel): return 2 def data(self, index, role): + if role not in (1,3,4,5,6,7,8,9,10,13): + print "role", role if not index.isValid() or \ not 0 <= index.row() < self.rowCount(): return QVariant() @@ -28,6 +30,10 @@ class TextModel(QtCore.QAbstractTableModel): if role == QtCore.Qt.DisplayRole: return self.text_db[row][column] #return "foo bar" + elif role == QtCore.Qt.ForegroundRole: + return QtGui.QBrush(QtCore.Qt.black) + elif role == QtCore.Qt.BackgroundRole: + return QtGui.QBrush(QtCore.Qt.white) return QtCore.QVariant() @@ -43,7 +49,11 @@ class TextModel(QtCore.QAbstractTableModel): def setData(self, index, value, role): if role == QtCore.Qt.EditRole: - self.text_db[index.row()][index.column()] = value.toString() + text = value.toString() + if not text: + return False + else: + self.text_db[index.row()][index.column()] = text return True diff --git a/texter/texter/text_sorter_ui.py b/texter/texter/text_sorter_ui.py index 1579de3..1a0f767 100644 --- a/texter/texter/text_sorter_ui.py +++ b/texter/texter/text_sorter_ui.py @@ -1,11 +1,12 @@ -#!/usr/bin/env python -# coding=UTF-8 +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'texter4.ui' # -# Generated by pykdeuic4 from texter4.ui on Mon Apr 21 01:34:50 2014 +# Created: Mon Apr 28 21:58:51 2014 +# by: PyQt4 UI code generator 4.10.3 # -# WARNING! All changes to this file will be lost. -from PyKDE4 import kdecore -from PyKDE4 import kdeui +# WARNING! All changes made in this file will be lost! + from PyQt4 import QtCore, QtGui try: @@ -39,44 +40,6 @@ class Ui_TextSorterDialog(object): self.text_list.setSizePolicy(sizePolicy) self.text_list.setMinimumSize(QtCore.QSize(200, 576)) self.text_list.setMaximumSize(QtCore.QSize(16777215, 576)) - palette = QtGui.QPalette() - brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) - brush.setStyle(QtCore.Qt.SolidPattern) - palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush) - brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) - brush.setStyle(QtCore.Qt.SolidPattern) - palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush) - brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) - brush.setStyle(QtCore.Qt.SolidPattern) - palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush) - brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) - brush.setStyle(QtCore.Qt.SolidPattern) - palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush) - brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) - brush.setStyle(QtCore.Qt.SolidPattern) - palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush) - brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) - brush.setStyle(QtCore.Qt.SolidPattern) - palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush) - brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) - brush.setStyle(QtCore.Qt.SolidPattern) - palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush) - brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) - brush.setStyle(QtCore.Qt.SolidPattern) - palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush) - brush = QtGui.QBrush(QtGui.QColor(128, 125, 123)) - brush.setStyle(QtCore.Qt.SolidPattern) - palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush) - brush = QtGui.QBrush(QtGui.QColor(128, 125, 123)) - brush.setStyle(QtCore.Qt.SolidPattern) - palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush) - brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) - brush.setStyle(QtCore.Qt.SolidPattern) - palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush) - brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) - brush.setStyle(QtCore.Qt.SolidPattern) - palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush) - self.text_list.setPalette(palette) self.text_list.setObjectName(_fromUtf8("text_list")) self.text_preview = KRichTextWidget(self.splitter) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) @@ -250,7 +213,7 @@ class Ui_TextSorterDialog(object): QtCore.QMetaObject.connectSlotsByName(TextSorterDialog) def retranslateUi(self, TextSorterDialog): - TextSorterDialog.setWindowTitle(kdecore.i18n(_fromUtf8("Form"))) - self.remove_button.setText(kdecore.i18n(_fromUtf8("Remove"))) + TextSorterDialog.setWindowTitle(_translate("TextSorterDialog", "Form", None)) + self.remove_button.setText(_translate("TextSorterDialog", "Remove", None)) from PyKDE4.kdeui import KButtonGroup, KArrowButton, KPushButton, KRichTextWidget diff --git a/texter/texter/texter3.ui b/texter/texter/texter3.ui index 245650c..d9255da 100644 --- a/texter/texter/texter3.ui +++ b/texter/texter/texter3.ui @@ -233,7 +233,7 @@ Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextEditable|Qt::TextEditorInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - KRichTextWidget::SupportAlignment|KRichTextWidget::SupportChangeListStyle|KRichTextWidget::SupportFontFamily|KRichTextWidget::SupportFontSize|KRichTextWidget::SupportIndentLists|KRichTextWidget::SupportTextForegroundColor + KRichTextWidget::SupportAlignment|KRichTextWidget::SupportFontFamily|KRichTextWidget::SupportFontSize|KRichTextWidget::SupportTextForegroundColor diff --git a/texter/texter/texter4.ui b/texter/texter/texter4.ui index 7e7b432..c066dce 100644 --- a/texter/texter/texter4.ui +++ b/texter/texter/texter4.ui @@ -38,124 +38,6 @@ 576 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - - - 128 - 125 - 123 - - - - - - - 128 - 125 - 123 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - -