]> git.sesse.net Git - kdenlive/commitdiff
Title Widget: Icon for align:none and Unicode Insert added
authorSimon A. Eugster <simon.eu@gmail.com>
Wed, 17 Jun 2009 18:35:16 +0000 (18:35 +0000)
committerSimon A. Eugster <simon.eu@gmail.com>
Wed, 17 Jun 2009 18:35:16 +0000 (18:35 +0000)
Unicode dialog checking for control character
Comments added
WordWrap enabled for Unicode dialog

svn path=/trunk/kdenlive/; revision=3558

13 files changed:
icons/hi16-action-kdenlive-align-none.png [new file with mode: 0644]
icons/hi16-action-kdenlive-insert-unicode.png [new file with mode: 0644]
icons/hisc-action-kdenlive-align-none.svgz [new file with mode: 0644]
icons/hisc-action-kdenlive-insert-unicode.svgz [new file with mode: 0644]
icons/ox16-action-kdenlive-align-none.png [new file with mode: 0644]
icons/ox16-action-kdenlive-insert-unicode.png [new file with mode: 0644]
icons/oxsc-action-kdenlive-align-none.svgz [new file with mode: 0644]
icons/oxsc-action-kdenlive-insert-unicode.svgz [new file with mode: 0644]
src/titlewidget.cpp
src/unicodedialog.cpp
src/unicodedialog.h
src/widgets/titlewidget_ui.ui
src/widgets/unicodedialog_ui.ui

diff --git a/icons/hi16-action-kdenlive-align-none.png b/icons/hi16-action-kdenlive-align-none.png
new file mode 100644 (file)
index 0000000..f207824
Binary files /dev/null and b/icons/hi16-action-kdenlive-align-none.png differ
diff --git a/icons/hi16-action-kdenlive-insert-unicode.png b/icons/hi16-action-kdenlive-insert-unicode.png
new file mode 100644 (file)
index 0000000..ec47bea
Binary files /dev/null and b/icons/hi16-action-kdenlive-insert-unicode.png differ
diff --git a/icons/hisc-action-kdenlive-align-none.svgz b/icons/hisc-action-kdenlive-align-none.svgz
new file mode 100644 (file)
index 0000000..bb66a85
Binary files /dev/null and b/icons/hisc-action-kdenlive-align-none.svgz differ
diff --git a/icons/hisc-action-kdenlive-insert-unicode.svgz b/icons/hisc-action-kdenlive-insert-unicode.svgz
new file mode 100644 (file)
index 0000000..68525a0
Binary files /dev/null and b/icons/hisc-action-kdenlive-insert-unicode.svgz differ
diff --git a/icons/ox16-action-kdenlive-align-none.png b/icons/ox16-action-kdenlive-align-none.png
new file mode 100644 (file)
index 0000000..f207824
Binary files /dev/null and b/icons/ox16-action-kdenlive-align-none.png differ
diff --git a/icons/ox16-action-kdenlive-insert-unicode.png b/icons/ox16-action-kdenlive-insert-unicode.png
new file mode 100644 (file)
index 0000000..ec47bea
Binary files /dev/null and b/icons/ox16-action-kdenlive-insert-unicode.png differ
diff --git a/icons/oxsc-action-kdenlive-align-none.svgz b/icons/oxsc-action-kdenlive-align-none.svgz
new file mode 100644 (file)
index 0000000..bb66a85
Binary files /dev/null and b/icons/oxsc-action-kdenlive-align-none.svgz differ
diff --git a/icons/oxsc-action-kdenlive-insert-unicode.svgz b/icons/oxsc-action-kdenlive-insert-unicode.svgz
new file mode 100644 (file)
index 0000000..68525a0
Binary files /dev/null and b/icons/oxsc-action-kdenlive-insert-unicode.svgz differ
index 6c4aacc1a566e617bb77c4fa4124eb768e7770a0..7f8773f4fd4ccbdd9eda922df6dbb53e9002fa91 100644 (file)
@@ -116,6 +116,9 @@ TitleWidget::TitleWidget(KUrl url, QString projectPath, Render *render, QWidget
     buttonAlignCenter->setIcon(KIcon("format-justify-center"));
     buttonAlignLeft->setIcon(KIcon("format-justify-left"));
     buttonAlignRight->setIcon(KIcon("format-justify-right"));
+       buttonAlignNone->setIcon(KIcon("kdenlive-align-none"));
+       buttonInsertUnicode->setIcon(KIcon("kdenlive-insert-unicode"));
+       
     buttonAlignNone->setToolTip(i18n("No alignment"));
     buttonAlignRight->setToolTip(i18n("Align right"));
     buttonAlignLeft->setToolTip(i18n("Align left"));
index af995cac3d1555050a9bcd17fd72ec119e7df173..c676d57817f8fac6492a6a59eb09f1e3b1f2b09f 100644 (file)
@@ -39,17 +39,42 @@ UnicodeDialog::~UnicodeDialog()
 
 /// METHODS
 
-QString UnicodeDialog::unicodeInfo(QString unicode_number)
+bool UnicodeDialog::controlCharacter(QString text)
 {
-       QString infoText("");
-       QString u = unicode_number;
+       bool isControlCharacter = false;
+       QString t = text.toLower();
        
-       while (unicode_number.at(0) == QChar('0')) {
-               unicode_number = unicode_number.remove(0, 1);
+       switch (inputMethod) {
+               case InputHex:
+                       if (t == "" 
+                               || (t.length() == 1 && !(t == "9" || t == "a" || t == "d"))
+                               || (t.length() == 2 && t.at(0) == QChar('1'))) {
+                               isControlCharacter = true;
+                       }
+                       break;
+                       
+               case InputDec:
+                       break;
        }
        
-       if (false) {
-               // Just a placeholder for reason of ease (shifting around lines)
+       return isControlCharacter;
+}
+
+QString UnicodeDialog::trimmedUnicodeNumber(QString text)
+{
+       while (text.length() > 0 && text.at(0) == QChar('0')) {
+               text = text.remove(0, 1);
+       }
+       return text;
+}
+
+QString UnicodeDialog::unicodeInfo(QString unicode_number)
+{
+       QString infoText("");
+       QString u = trimmedUnicodeNumber(unicode_number);
+       
+       if (controlCharacter(u)) {
+               infoText = i18n("Control character. Cannot be inserted/printed. See <a href=\"http://en.wikipedia.org/wiki/Control_character\">Wikipedia:Control_character</a>");
        } else if (u == "2009") {
                infoText = i18n("A thin space, in HTML also &amp;thinsp;. See <a href=\"http://en.wikipedia.org/wiki/Space_(punctuation)\">Wikipedia:Space_(punctuation)</a>");
        } else if (u == "2019") {
@@ -65,9 +90,6 @@ QString UnicodeDialog::unicodeInfo(QString unicode_number)
        return infoText;
 }
 
-/**
- * Validates an Unicode number.
- */
 QString UnicodeDialog::validateText(QString text)
 {
        QRegExp regex("([0-9]|[a-f])", Qt::CaseInsensitive, QRegExp::RegExp2);
@@ -76,6 +98,7 @@ QString UnicodeDialog::validateText(QString text)
        
        switch (inputMethod) {
                case InputHex:
+                       // Remove all characters we don't want
                        while ((pos = regex.indexIn(text, pos)) != -1) {
                                newText += regex.cap(1);
                                pos++;
@@ -107,6 +130,7 @@ void UnicodeDialog::slotTextChanged(QString text)
        unicodeNumber->setText(newText);
        unicodeNumber->setCursorPosition(cursorPos);
        
+       // Get the decimal number as uint to create the QChar from
        uint value;
        switch (inputMethod) {
                case InputHex:
@@ -118,7 +142,7 @@ void UnicodeDialog::slotTextChanged(QString text)
        }
        
        if (!ok) {
-               //TODO!
+               // Impossible! validateText never fails!
        }
        
        // If an invalid character has been entered:
@@ -135,9 +159,16 @@ void UnicodeDialog::slotTextChanged(QString text)
        unicodeNumber->blockSignals(false);
 }
 
+/**
+ * When return pressed, we return the selected unicode character
+ * if it was not a control character.
+ */
 void UnicodeDialog::slotReturnPressed() 
 {
-       emit charSelected(unicodeChar->text());
+       QString text = trimmedUnicodeNumber(unicodeNumber->text());
+       if (!controlCharacter(text)) {
+               emit charSelected(unicodeChar->text());
+       }
        emit accept();
 }
 
index 4c0376623d804553c8b36e91e8fc171b94571649..52abd3f7c5857dbd432dc52c5e574c234918fc57 100644 (file)
@@ -23,7 +23,7 @@ public:
        UnicodeDialog(InputMethod inputMeth);
        ~UnicodeDialog();
        
-       /** \brief Returns infos about an unicode number. Extendable/improvable ;) */
+       /** \brief Returns infos about a unicode number. Extendable/improvable ;) */
        QString unicodeInfo(QString unicode_number);
 
 private:
@@ -31,8 +31,13 @@ private:
        
        /** Selected input method */
        InputMethod inputMethod;
+       
        /** \brief Validates text and removes all invalid characters (non-hex e.g.) */
        QString validateText(QString text);
+       /** \brief Removes all leading zeros */
+       QString trimmedUnicodeNumber(QString text);
+       /** \brief Checks whether the given string is a control character */
+       bool controlCharacter(QString text);
        
        int lastCursorPos;
        QString lastUnicodeNumber;
index c0e63b87e50cffab1a07e1729f2ea9c014c38785..5e8ca00608b8ae55e4b58f32cc9a9611dc6f4b5d 100644 (file)
@@ -6,7 +6,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>902</width>
+    <width>906</width>
     <height>442</height>
    </rect>
   </property>
           </property>
          </widget>
         </item>
+        <item>
+         <widget class="Line" name="line">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+         </widget>
+        </item>
         <item>
          <widget class="QToolButton" name="buttonInsertUnicode">
           <property name="text">
         <rect>
          <x>0</x>
          <y>0</y>
-         <width>441</width>
+         <width>443</width>
          <height>143</height>
         </rect>
        </property>
         <rect>
          <x>0</x>
          <y>0</y>
-         <width>441</width>
-         <height>143</height>
+         <width>96</width>
+         <height>73</height>
         </rect>
        </property>
        <attribute name="label">
         <rect>
          <x>0</x>
          <y>0</y>
-         <width>425</width>
+         <width>272</width>
          <height>224</height>
         </rect>
        </property>
index 534e9177fdfe11b112fbaf46a4eb0c6cf05294af..30678bf3e56f59b46cdc95cb1a991a29d134224b 100644 (file)
         <property name="alignment">
          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
         </property>
+        <property name="wordWrap">
+         <bool>true</bool>
+        </property>
        </widget>
       </item>
       <item row="0" column="0">