Revision: 7305
Author:   nogu.dev
Date:     Fri Sep 16 03:38:05 2011
Log:      * qt4/pref/customwidgets.cpp
  - (CustomTable::slotEditButtonClicked): Set header items.
  - (TableEditForm::TableEditForm): Don't hide horizontal header.
  - (TableEditForm::setTableHeaderItem): New function.
* qt4/pref/customwidgets.h
  - (TableEditForm::setTableHeaderItem): New function.
* scm/custom.scm
  - (custom-table?): Handle range.
  - (custom-range): Add support for table.
* scm/japanese-custom.scm
  - (ja-rk-rule-table-basic): Set header items.
* test/test-custom.scm
  - (test-case-table): Set header items.
  - (test custom-type-attrs): Follow change in test-case-table.
  - (test custom-range): Ditto.
* uim/uim-custom.c
  - (uim_custom_table_header_item_list): New function.
  - (uim_custom_range_get): Handle range.
* uim/uim-custom.h
  - (uim_custom_range): Add as_table_header.
http://code.google.com/p/uim/source/detail?r=7305

Modified:
 /trunk/qt4/pref/customwidgets.cpp
 /trunk/qt4/pref/customwidgets.h
 /trunk/scm/custom.scm
 /trunk/scm/japanese-custom.scm
 /trunk/test/test-custom.scm
 /trunk/uim/uim-custom.c
 /trunk/uim/uim-custom.h

=======================================
--- /trunk/qt4/pref/customwidgets.cpp   Sat Sep 10 20:51:14 2011
+++ /trunk/qt4/pref/customwidgets.cpp   Fri Sep 16 03:38:05 2011
@@ -1261,6 +1261,13 @@
     TableEditForm dialog( this );
     dialog.setWindowTitle( _FU8( m_custom->label ) );
     dialog.setCustomTable( m_custom->value->as_table );
+    int column = 0;
+    for ( struct uim_custom_choice **item
+            = m_custom->range->as_table_header.valid_items;
+            *item; item++ ) {
+        dialog.setTableHeaderItem( _FU8( ( *item )->label ), column );
+        column++;
+    }
     if ( dialog.exec() == QDialog::Accepted ) {
         m_custom->value->as_table = dialog.customTable();
         setCustom( m_custom );
@@ -1273,7 +1280,6 @@
 {
     m_table = new QTableWidget;
     m_table->setSelectionMode( QAbstractItemView::SingleSelection );
-    m_table->horizontalHeader()->setVisible( false );
     m_table->verticalHeader()->setVisible( false );
     connect( m_table, SIGNAL( itemSelectionChanged() ),
             this, SLOT( slotItemSelectionChanged() ) );
@@ -1392,6 +1398,14 @@

     return custom_table;
 }
+
+void TableEditForm::setTableHeaderItem( const QString &item, int column )
+{
+    if ( column < m_table->columnCount() ) {
+        m_table->setHorizontalHeaderItem( column,
+                new QTableWidgetItem( item ) );
+    }
+}

 void TableEditForm::slotItemSelectionChanged()
 {
=======================================
--- /trunk/qt4/pref/customwidgets.h     Sat Sep 10 18:52:14 2011
+++ /trunk/qt4/pref/customwidgets.h     Fri Sep 16 03:38:05 2011
@@ -326,6 +326,8 @@
     void setCustomTable( char ***custom_table );
     char ***customTable() const;

+    void setTableHeaderItem( const QString &item, int column );
+
 private:
     QTableWidget *m_table;
     QPushButton *m_removeButton;
=======================================
--- /trunk/scm/custom.scm       Fri Sep  9 19:58:06 2011
+++ /trunk/scm/custom.scm       Fri Sep 16 03:38:05 2011
@@ -121,14 +121,16 @@
                key-repls))))

 (define custom-table?
-  (lambda (table-repls)
-    (and (list? table-repls)
-         (every (lambda (row)
-                  (and (list? row)
-                       (every (lambda (cell)
-                                (string? cell))
-                              row)))
-                table-repls))))
+  (lambda arg
+    (let ((syms (car arg))
+          (choice-rec-alist (cdr arg)))
+      (and (list? syms)
+           (every (lambda (row)
+                    (and (list? row)
+                         (every (lambda (cell)
+                                  (string? cell))
+                                row)))
+                  syms)))))

 (define custom-pathname-type
   (lambda (custom-sym)
@@ -658,7 +660,7 @@
     (let* ((type (custom-type sym))
           (attrs (custom-type-attrs sym)))
       (case type
-       ((choice ordered-list)
+       ((choice ordered-list table)
         (map custom-choice-rec-sym attrs))
        ((integer string)
         attrs)
=======================================
--- /trunk/scm/japanese-custom.scm      Sun Sep 11 15:18:12 2011
+++ /trunk/scm/japanese-custom.scm      Fri Sep 16 03:38:05 2011
@@ -487,7 +487,10 @@
 (define-custom 'ja-rk-rule-table-basic
                (ja-rk-rule-rule->table ja-rk-rule-basic)
                '(ja-rk-rule composing-rule)
-               '(table)
+               (list 'table
+                 (list 'input (N_ "Input") (N_ "Input"))
+                (list 'next-input (N_ "Next intput") (N_ "Next input"))
+                 (list 'output (N_ "Output") (N_ "Output")))
                (N_ "Custom composing rule")
                (N_ "long description will be here."))

=======================================
--- /trunk/test/test-custom.scm Fri Sep  9 19:58:06 2011
+++ /trunk/test/test-custom.scm Fri Sep 16 03:38:05 2011
@@ -1805,7 +1805,9 @@
             "long description will be here."))
      (uim '(define-custom 'test-case-table '(("abc" "ABC") ("def" "DEF"))
             '(test)
-            '(table)
+            '(table
+              (lower-case "lower-case" "lower-case")
+              (upper-case "upper-case" "upper-case"))
             "alphabet table"
             "long description will be here."))))

@@ -2279,7 +2281,8 @@
                 (uim '(custom-type-attrs 'test-string)))
    (assert-equal '(regular-file)
                 (uim '(custom-type-attrs 'test-dic-file-name)))
-   (assert-equal '()
+   (assert-equal '((lower-case "lower-case" "lower-case")
+                   (upper-case "upper-case" "upper-case"))
                 (uim '(custom-type-attrs 'test-case-table))))

   ("test custom-range"
@@ -2297,7 +2300,7 @@
                 (uim '(custom-range 'test-string)))
    (assert-equal ()
                 (uim '(custom-range 'test-dic-file-name)))
-   (assert-equal ()
+   (assert-equal '(lower-case upper-case)
                 (uim '(custom-range 'test-case-table))))

   ("test custom-label"
=======================================
--- /trunk/uim/uim-custom.c     Fri Sep  9 19:58:06 2011
+++ /trunk/uim/uim-custom.c     Fri Sep 16 03:38:05 2011
@@ -210,6 +210,7 @@
 static char *literalized_strdup(const char *str);
 static char *row_list_to_str(const char *const *list);
 static char *table_to_str(const char** const *list, const char *sep);
+static struct uim_custom_choice **uim_custom_table_header_item_list(const char *custom_sym);


static union uim_custom_value *uim_custom_value_internal(const char *custom_sym, const char *getter_proc);
@@ -861,6 +862,12 @@
   return c_list_to_str((const void *const *)list,
                       (char *(*)(const void *))row_list_to_str, sep);
 }
+
+static struct uim_custom_choice **
+uim_custom_table_header_item_list(const char *custom_sym)
+{
+  return uim_custom_choice_item_list(custom_sym);
+}

 static union uim_custom_value *
 uim_custom_value_internal(const char *custom_sym, const char *getter_proc)
@@ -992,6 +999,10 @@
   case UCustom_OrderedList:
     range->as_olist.valid_items = uim_custom_olist_item_list(custom_sym);
     break;
+  case UCustom_Table:
+    range->as_table_header.valid_items
+        = uim_custom_table_header_item_list(custom_sym);
+    break;
   }

   return range;
=======================================
--- /trunk/uim/uim-custom.h     Fri Sep  9 19:58:06 2011
+++ /trunk/uim/uim-custom.h     Fri Sep 16 03:38:05 2011
@@ -113,6 +113,10 @@
   struct {
struct uim_custom_choice **valid_items; /* contains all possible items */
   } as_olist;
+
+  struct {
+    struct uim_custom_choice **valid_items;
+  } as_table_header;
 };

 struct uim_custom {

Reply via email to