Gtkmm

gtkmm(이전 명칭 gtk-- 또는 gtk minus minusThe gtkmm FAQ)은 인기 있는 GUI 라이브러리인 GTK를 위한 공식 C++ 인터페이스다. gtkmm은 GNU 약소 일반 공중 사용 허가서(LGPL)에 따라 배포되는 자유 소프트웨어다.

gtkmm을 사용하면 코드 내에서 직접 또는 글레이드 인터페이스 디자이너를 활용하여 Gtk::Builder 클래스로 사용자 인터페이스를 생성할 수 있다. 다른 기능으로는 형식 안전(typesafe) 콜백, 포괄적인 그래픽 컨트롤 요소 세트, 상속을 통한 위젯 확장성 등이 있다.

 특징 
gtkmm은 GUI 라이브러리인 GTK의 공식 C++ 인터페이스이므로, C++ 프로그래머는 OOP 기법인 상속과 같은 일반적인 기술과 STL과 같은 C++ 고유의 기능을 사용할 수 있다 (실제로 위젯 컨테이너를 위한 많은 gtkmm 인터페이스는 표준 템플릿 라이브러리(STL)와 유사하게 설계되었다).

gtkmm의 주요 특징은 다음과 같다:
 상속을 사용하여 사용자 정의 위젯 파생.
 표준 C++에서의 형식 안전한 시그널 핸들러.
 다형성.
 문자열, 컨테이너, 반복자를 포함한 표준 C++ 라이브러리 사용.
 UTF-8을 통한 완전한 국제화 지원.
 완전한 C++ 메모리 관리.
 객체 합성.
 동적으로 할당된 위젯의 자동 할당 해제.
 C++ 이름공간의 완전한 활용.
 매크로 사용 안 함.
 크로스 플랫폼: 리눅스 (gcc, LLVM), FreeBSD (gcc, LLVM), NetBSD (gcc), 솔라리스 (gcc, Forte), Win32 (gcc, MSVC++), MacOS (gcc) 등.

 gtkmm의 Hello World 
//HelloWorldWindow.h

#ifndef HELLOWORLDWINDOW_H
#define HELLOWORLDWINDOW_H

#include <gtkmm/window.h>
#include <gtkmm/button.h>

// 기존 위젯에서 새로운 창 위젯을 상속받음.
// 이 창은 "Hello World"라는 라벨이 붙은 버튼만 포함함.
class HelloWorldWindow : public Gtk::Window
{
  public:
    HelloWorldWindow();

  protected:
    Gtk::Button hello_world;
};

#endif

//HelloWorldWindow.cc

#include <iostream>
#include "HelloWorldWindow.h"

HelloWorldWindow::HelloWorldWindow() : hello_world("Hello World")
{
    // 창의 제목 설정.
    set_title("Hello World");

    // 멤버 버튼을 창에 추가.
    set_child(hello_world);

    // 'clicked' 시그널 처리.
    hello_world.signal_clicked().connect([] () {
          std::cout << "Hello world" << std::endl;
    });
}

//main.cc

#include <gtkmm/application.h>
#include "HelloWorldWindow.h"

int main(int argc, char *argv[])
{
    // 애플리케이션 객체 생성.
    auto app = Gtk::Application::create("org.gtkmm.example");

    // hello world 창 객체를 생성하고 닫힐 때 반환함.
    return app->make_window_and_run<HelloWorldWindow>(argc, argv);
}

위 프로그램은 "Hello World"라는 라벨이 붙은 버튼이 있는 창을 생성한다. 버튼을 클릭하면 표준 출력으로 "Hello world"를 보낸다.

프로그램은 다음 명령어를 사용하여 실행된다:

$ g++ -std=c++17 *.cc -o example `pkg-config gtkmm-4.0 --cflags --libs`
$ ./example

이 작업은 보통 간단한 메이크파일을 사용하여 수행된다.

 응용 프로그램 
gtkmm을 사용하는 주요 응용 프로그램은 다음과 같다:
 Amsynth
 Cadabra
 잉크스케이프 벡터 그래픽 그리기 도구.
 인쇄 회로 기판 설계를 위한 전자 설계 자동화(EDA) 패키지인 Horizon EDA.
 PDF 문서의 페이지를 추출, 병합, 회전 및 재정렬하는 간단한 응용 프로그램인 PDF Slicer.
 RSI(반복성 긴장 장애)의 회복 및 예방을 돕는 Workrave.
 그놈 시스템 모니터
 Gigedit
 GParted 디스크 파티션 도구.
 GNU 디버거 gdb의 GUI인 Nemiver.
 펄스오디오 도구: pavucontrol, paman, paprefs pavumeter,
 RawTherapee
 그놈 Referencer 문서 정리 및 참고 문헌 관리자.
 Seq24
 Synfig Studio
 Linthesia
 MySQL 워크벤치 관리용 데이터베이스 GUI.
 리눅스 및 MacOS용 오픈 소스 디지털 오디오 워크스테이션(DAW) Ardour.
 Gnote 데스크톱 노트 작성 응용 프로그램.
 비주얼보이어드밴스
 VM웨어 워크스테이션과 VMware Player 모두 리눅스 이식판에서 gtkmm을 사용한다.

 같이 보기 
 wxWidgets
 FLTK
 FOX toolkit
 Qt
 GTK

 각주 

 외부 링크 


분류:C++ 라이브러리
분류:C++로 작성된 자유 소프트웨어
분류:자유 라이브러리
분류:LGPL 라이선스 소프트웨어