newLISP で GUI する。。。または、CSV Editor の作成(改造編)

(以下は、 newLISP v 2.8.16 以上、または、guisever 1.42以上での話です。)

 早くも、改造に取りかかります(笑)。
 先ず、*tabList* からカレント・タブの要素を取り出す macro を用意しておきます。

(macro (get-tableID)  (lookup *currentCSV* *tabList* 0))
(macro (get-filename) (lookup *currentCSV* *tabList* 1))
(macro (get-row/col)  (lookup *currentCSV* *tabList* -2))
(macro (get-flag)     (lookup *currentCSV* *tabList* -1))
(macro (get-index)    ((ref *currentCSV* *tabList*) 0))

 こうしておけば、後で *tabList* の要素リストを変更しても最少限の変更で済みますからね。
 さて、今回は、テーブル表示の再表示ボタンを追加します。
 テーブルの行と列の削除でデータを削除できますが、テーブル自体の大きさは変わりません。
 つまり、最終行または最終列に空白の行または列が残ります。それらを削除し、ついでに、列の幅調整も行ないます。

(gs:image-button 'adjustButton 'adjust-action "/local/restart32.png" "/local/restart-down32.png")
(define (adjust-action)
  (unless (get-flag)
    (gs:table-get *currentCSV*)
    (letn (idx (get-index)
           fname (get-filename)
           table (make-table fname))
      (pop *tabList* -1)
      (setf (get-tableID) table)
      (gs:insert-tab 'CSVtab table fname idx)
      (set-table (delete-end-null-all gs:table-full) table)
      (gs:remove-tab 'CSVtab (i+ idx))
      (gs:request-focus 'CSVtab idx)
    )
  )
)

 やっていることは単純で、カレント・タブからデータを取り出し、新しく用意したテーブルにセットし、新しいタブをカレント・タブ位置に挿入してから、古い表示のカレント・タブを削除する、というもの。
 用意しておいた前述の macro のおかげで、簡単に書けます。
 全スクリプトは、こちらからどうぞ

 以上、如何でしょうか?

広告

No comments yet

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。