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 {