Toolbar2000과 TBX – 툴바/메뉴/도킹 UI 라이브러리

사용자 삽입 이미지무료 설치 패키지 프로그램인 InnoSetup으로 유명한 Jordan Russell이라는 개발자가 개발한 Toolbar2000라는 컴포넌트 라이브러리가 있습니다. 알만한 분들은 다 아는 유명한 컴포넌트죠. Toolbar2000은 이름 그대로 툴바 컴포넌트인데, 독특한 구조의 툴바를 확장하여 메뉴, 도킹 등의 기능들을 아주 멋지게 구현해놓았습니다. 툴바와 메뉴에 대해서는 VCL 기본 컴포넌트들에 비해 기능도 훨씬 강력하고, 성능도 뛰어납니다.

제가 2000년대 초반에 이 컴포넌트를 프로젝트에 처음 쓰기 시작했던 것이 VCL 기본 메뉴의 속도 문제 때문이었는데요. VCL 기본 메뉴는 수천개의 메뉴 아이템을 동적으로 생성하는 데에는 너무 느려서 대체 컴포넌트로 찾은 거였습니다. 생성 속도가 수십배 더 빠르더군요. 물론 더 강력한 기능들과 미려한 UI는 당연하구요. 그래서 그 이후로 툴바 및 메뉴 등을 쓸 때는 전 항상 이 Toolbar2000을 사용해왔습니다.

Toolbar2000은 원래의 개발자인 Jordan Russell에 의해 지금도 뜸하긴 하지만 계속 업데이트되고 있습니다. 현재의 최신 버전은 2008년 9월에 델파이/C++빌더 2009 버전에 대응하여 발표된 2.2.2 버전입니다. 유니코드 컨버전이 되어 있기 때문에 델파이와 C++빌더의 최신 버전인 XE 버전에서도 잘 설치되고 동작합니다.

http://www.jrsoftware.org/tb2k.php

1206359209한편, TBX는 Alex Denisov라는 유명한 개발자가 개발한 Toolbar2000의 확장 라이브러리인데요. (Denisov씨는 유명한 무료 그래픽 프로세싱 라이브러리 Graphics32의 개발자로 잘 알려져 있습니다) TBX는 Toolbar2000에 대한 플러그인 라이브러리로, Toolbar2000의 일부 루틴을 수정한 후 상당히 멋진 기능들을 추가해놓았습니다. 특히, 자체 구현된 테마 지원 기능이 아주 매력적인데요. (윈도우 OS의 테마 기능이 아니라 자체 구현한 것입니다)

TBX의 테마 기능은 테마 데이터를 불러오는 방식이 아니라, 실제 pas 소스 유닛으로 구현하는 것입니다. 따라서 테마의 성능에 아무런 오버헤드도 없고 말 그대로 네이티브 하죠. 테마를 ‘입히는’ 것이 아니라 네이티브로 개발하는 것이기 때문에 속도에 있어서는 타의 추종을 불허합니다. 대신 테마를 코드로 ‘개발’ 해야 하기 때문에 만드는 입장에서는 좀 까다롭습니다.

다만, TBX의 테마 기능은 모든 컨트롤들에 적용되는 것이 아니라 자체 컨트롤들에만 적용되는 거라는 한계는 있습니다. 예를 들면 폼 위에 놓은 TButton에 테마가 적용되지도 않고 타이틀바 디자인이 바뀌지도 않습니다. 하지만 다른 테마 지원 라이브러리들이 대부분 무겁고 둔한데 비해 가볍고 높은 성능의 장점을 가지면서도 상당히 멋진 테마를 구성할 수 있다는 점은 분명한 장점이겠지요.

1292719725

그런데, TBX는 Toolbar2000의 소스를 일부 수정해야만 적용할 수 있는데다가, 그 이유로 TBX와 Toolbar2000의 버전이 맞아야 하기 때문에 좀 번거로운 면이 있습니다. 그러다가 몇년 전에 TBX의 개발자인 Alex가 몇년 전부터 TBX의 개발, 유지보수를 포기해버렸죠. 사실.. TBX 자체의 기능 개선이 없는 경우에도 Toolbar2000의 업그레이드때는 원하지 않아도 TBX 업데이트를 해야 하는 상황이니 많이 피곤했을 겁니다.

그래서, 그 이후로는 Toolbar2000의 버전과 연동해야 하는 TBX를 사용하는 것이 많이 불편해졌습니다. 그래서 제가 개인적으로 TBX의 마지막 버전을 Toolbar2000의 이후 버전들과 통합하는 등의 작업을 진행해서 공개하기도 했었습니다.

그러다가… 작년 4월에, 오랫동안 사용하지 않던 GMail 계정에 오랜만에 들어가보니, 2009년 여름에 Yury Plashenkov라는 개발자로부터 TBX 관련으로 도움을 요청하는 메일이 와있었습니다. 제가 볼랜드포럼 컴포넌트 자료실에 올려두었던, TBX 구버전과 Toolbar2000 최신버전의 통합 패치를 위한 파일 관련해서 도움을 요청한 거였는데요. 뒤늦게 도와줄까 하고 답장을 보냈는데, 이미 해결했다고 하더군요. 하긴 거의 1년이나 후에 답장을 보냈으니…

그런데 다시 돌아온 답장에는 놀라운 소식이 더해져 있었습니다. Yury가 TBX의 원 개발자인 Alex의 허락을 얻어 TBX 프로젝트를 오픈소스 프로젝트로 넘겨서 작업을 착수한다는 거였습니다. 아주 좋은 소식이죠! 근데 그때쯤 아주 많이 바빠져서 신경을 못썼었는데요.

1062808785

최근에 진행중인 금융기관 프로젝트에서 또 TBX를 쓸 일이 생겨서, 제가 버전업하던 버전 말고 Yuri의 새 버전을 써보자 싶어서 Yuri가 알려준 오픈소스 호스팅 사이트를 찾아가보게 되었습니다. 아래의 구글 코드 사이트에 있습니다.
http://code.google.com/p/tbxlib/

아직 정식으로 다운로드를 제공하고 있지는 않고, SubVersion을 통해서만 받을 수 있는데요. 몇달 동안 써보고 있는데, Yuri가 아직 크게 변경한 내용이 없어서인지 별 문제 없이 잘 동작합니다.

현재 마지막 리비젼은 2월 23일에 커밋한 리비젼 10이고, 아래의 SVN 주소로 체크아웃하면 됩니다.
http://tbxlib.googlecode.com/svn/trunk/

저도 나름 TBX 소스를 꽤 잘 알고 있고 확장 컴포넌트들도 몇가지 만들어보기도 해서, 제가 참여해서 프로젝트를 같이 해보는 것도 좋겠다 싶기는 합니다만… 요즘 너무 바빠진 데다가 좀 여유가 생기면 집필 등의 다른 일들도 밀려 있어서 쉽지는 않겠네요.

한편, TBX의 최대 강점 중 하나는 테마 지원인데, 앞에서도 말했다시피 TBX의 테마는 완전히 네이티브 코드 기반이라 테마를 TBX 내부 구조를 잘 모르는 일반 개발자가 직접 만들기는 상당히 어렵습니다. Roy Magne Klever라는 개발자가 만들어 공개한 멋진 TBX 테마들이 있어 소개합니다. 아래 주소의 Roy의 블로그에서 다운로드 할 수 있습니다.

http://rmklever.com/?p=26
(위의 TBX 이미지에서 나타난 테마들이 Roy의 테마들 중 일부입니다)

Toolbar2000과 TBX를 꼭 써보고 싶은데 직접 통합하여 빌드하는 절차가이 어렵게 느껴지신다면, 개인적으로 요청하시면 제가 통합해놓은 버전을 보내드릴 수 있습니다.

3 comments for “Toolbar2000과 TBX – 툴바/메뉴/도킹 UI 라이브러리

  1. 임프님 ^^; 방명록 좀 꼭 확인바래요.
    그리고 블로그를 통해 다양한 글 한번 쭈욱 잘 보고갑니다 ^^

  2. 예전에 Toolbar2000 + TBX + SPtbx 도 같이 사용하다가 tbx 로 인해 sptbx 까지 못쓰게 되는 사태가 발생했었죠.

    그 이후에 SPTbx 가 Toolbar2000 가 다이렉트로 연동되면서 사용이 가능하게 되었지만요.
    아직 TBX 를 사용하는 업체 입장에서는 업그레이드를 해야겠지만 .. Tbx 가 약간 늦어버린 감이 생겨 버렸습니다.

  3. 안녕하세요.
    툴바개발하는데 디자인 난관에 부딪혀서 자료를 찾던중에 이글을 보고 댓글 남깁니다.
    Toolbar2000 + TBX 통합해 놓은것 좀 보내주시면 정말 감사하겠습니다. ㅠㅠ
    Toolbar2000만으로는 디자인이 좀 많이 뒤쳐지다 보니 통합으로 써보고싶습니다.
    꼭 좀 부탁드리겠습니다.
    그럼 즐거운 하루 보내십시요..

    ps 델파이는 2010을 씁니다.
    메일 주소 : valor97@naver.com

답글 남기기

이메일 주소는 공개되지 않습니다.