C로 만드는 base64 디코드 커맨드 출처: http://www.cs.man.ac.uk/~fellowsd/tcl/base64decode.c C로 작성된 base64 확장 커맨드입니다. C로 확장하는 방법을 배우는데도 꽤 괜찮은 예제라 생각합니다.#ifdef TCLCMD#include #else#include #endif#include static const char encoding_vector[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";#ifdef TCLCMDstatic int atend;static intgetidx(char *buffer, int len, int *posn) { char c; char *idx; if (atend) return -1;.. Tcl & Tk/팁 (Tip) 약 1개월 전
try/catch/finally 커맨드 출처: http://people.man.ac.uk/~zzcgudf/tcl/try.tcl 아래의 코드로 Tcl에서도 try/catch/finally 구문을 사용할 수 있습니다. 이 스크립트를 사용하면 예외 처리를 쉽게 할 수 있어 스크립트의 오류를 최소한의 코드로 구조화된 방식으로 처리할 수 있습니다. Tcl 8.0 이상에서 사용 가능합니다.namespace eval ::try { namespace export try variable bodyMatch { \("uplevel" body line} proc helper {script part {eiv ei} {ecv ec} {codev code} {msgv msg}} { global errorInfo errorCode .. Tcl & Tk/팁 (Tip) 약 1개월 전
특정 주기로 실행하는 every 커맨드 아래 every 커맨드는 특정 주기로 특정 스크립트를 수행할 수 있는 커맨드입니다.proc every {ms body} {eval $body; after $ms [info level 0]}# 예제every 50 {sound_gauge_update [lindex [jack meter] 1]; puts [jack meter]} Tcl & Tk/팁 (Tip) 약 1개월 전
Windows의 트레이 영역에 Notification 팝업 띄우기 twapi를 이용한 예제입니다. 이 예제를 응용하면 Winico 같이 프로그램을 트레이로 넣을 수 있습니다.set auto_path [linsert $auto_path 0 ./twapi-bin]package require twapiset ico [twapi::load_icon_from_system information -width 16 -height 16]set ::systray_test_events {}proc systray_test_handler {args} { lappend ::systray_test_events $args}set id [twapi::systemtray addicon $ico [namespace current]::systray_test_handler]set balloon.. Tcl & Tk/팁 (Tip) 약 1개월 전
Round Frame 출처: https://wiki.tcl-lang.org/page/ttk+Frame+with+Custom+Borders 라운드 프레임 예제 입니다.package require Tk 8.5proc main {} { ttk::style element create RoundedFrame image \ {frameBorder focus frameFocusBorder} \ -border 16 -sticky nsew ttk::style layout RoundedFrame { RoundedFrame -sticky nsew } ttk::frame .f1 -style RoundedFrame text .f1.t -borderwidth 0 -height 8 .. Tcl & Tk/팁 (Tip) 약 1개월 전
Embedding Tk into a native Win32 GUI 출처: http://ishiboo.com/~danny/Projects/embeded_tk/MFC 윈도우에 Tk Toplevel 윈도우를 내장하는 방법입니다. Tcl & Tk/팁 (Tip) 약 1개월 전
파일 복사 진행 상황을 tablelist에 표시하기 어찌하다 보니 아래의 예제가 만들어졌습니다. 테스트 코드로 만든 거라 지저분하고 정리는 안되어 있지만 동작은 합니다. 참고하실 분은 참고하세요. 이 예제의 핵심은 파일 복사 진행 상황을 tablelist의 컬럼에 프로그레스바 형태로 표시해 줍니다.package require img::pngpackage require tablelistset src "c:/temp"set dest "E:/Temp/ddd"proc makewin {} { variable tbl set tf .tf frame $tf -class ScrollArea set tbl $tf.tbl set vsb $tf.vsb tablelist::tablelist $tbl \ .. Tcl & Tk/팁 (Tip) 약 1개월 전
sqlite의 이용한 Save As 구현 현재 Tcl 프로그램의 데이터 관리를 sqlite를 사용하여 관리하고 있습니다. 이것저것 신경 쓸 거 없어 좋네요. Save As를 구현하려다 보니 아래의 코드가 만들어졌습니다. src.sql 파일은 미리 존재해야 하고, 상황에 따라 파일을 복사해서 Save As를 구현해도 되지만, db1(src.sql) 이 열려 있는 상태에서는 아래와 같이 하는 방법이 좋은 것 같습니다.#sqlite db1 "src.sql"sqlite db2 "dest.sql"db1 eval { SELECT name FROM sqlite_master WHERE type = "table" } row { set table $row(name) # 테이블 생성 set query "PRAGMA table_.. Tcl & Tk/팁 (Tip) 약 1개월 전