Blame platform-demos/ko/textview.js.page

Packit 1470ea
Packit 1470ea
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" xmlns:xi="http://www.w3.org/2001/XInclude" type="guide" style="task" id="textview.js" xml:lang="ko">
Packit 1470ea
  <info>
Packit 1470ea
  <title type="text">TextView (JavaScript)</title>
Packit 1470ea
    <link type="guide" xref="beginner.js#multiline"/>
Packit 1470ea
    <link type="seealso" xref="button.js"/>
Packit 1470ea
    <link type="seealso" xref="grid.js"/>
Packit 1470ea
    <link type="seealso" xref="GtkApplicationWindow.js"/>
Packit 1470ea
    <link type="seealso" xref="label.js"/>
Packit 1470ea
    <revision version="0.1" date="2012-06-28" status="draft"/>
Packit 1470ea
Packit 1470ea
    <credit type="author copyright">
Packit 1470ea
      <name>Taryn Fox</name>
Packit 1470ea
      <email its:translate="no">jewelfox@fursona.net</email>
Packit 1470ea
      <years>2012</years>
Packit 1470ea
    </credit>
Packit 1470ea
Packit 1470ea
    <desc>다중 행 텍스트 편집기</desc>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>조성호</mal:name>
Packit 1470ea
      <mal:email>shcho@gnome.org</mal:email>
Packit 1470ea
      <mal:years>2017</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
  <title>TextView</title>
Packit 1470ea
  <media type="image" mime="image/png" src="media/textviewpenguinchat.png"/>
Packit 1470ea
  

TextView는 정말(아니면 최소한 보통) 세 객체의 모음으로 이루어져있습니다.

Packit 1470ea
  <list>
Packit 1470ea
    <item>

하단에는 <link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TextBuffer.html">TextBuffer</link>가 있습니다. TextBuffer는 텍스트를 저장해둡니다.

</item>
Packit 1470ea
    <item>

가운데에는 <link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TextView.html">TextView</link>가 있는데 버퍼의 텍스트를 보고 편집할 수 있게 하는 위젯입니다. 텍스트가 얼마나 있느냐에 따라 자동으로 크기 조절 합니다.

</item>
Packit 1470ea
    <item>

자동으로 크기 조절을 해서 TextView를 이상하게 보이지 않게 할 수 있으므로, 보통 ScrolledWindow의 안에 둡니다. 이름이 있는데도 불구, 제목 표시줄과 X 단추가 있는 실제 창이 아닙니다. 더 관리하기 쉬운 TextView에서 창처럼 동작하며, 여러분이 만들려는 프로그램에 넣을 수 있는 위젯입니다. 버퍼의 텍스트가 공간을 맞추기에 너무 많다면, 스크롤 표시줄이 나타납니다.

</item>
Packit 1470ea
  </list>
Packit 1470ea
  

TextView에 나타난 텍스트를 바꾸려면 TextBuffer가 실제로 텍스트 내용을 가지고 있으니 TextBuffer에서 처리하십시오. 누가 어떤 텍스트를 입력하는지 여러분이 보려고 할 떄도 동일합니다. 여기 예제 프로그램에서는 펭귄으로 가장한 누군가와 대화하고, "fish" 단어가 어딘가에 있는지 TextBuffer를 확인합니다.

Packit 1470ea
  <note>

실제로 수많은 펭귄의 수가 빠르게 줄어가고 있는데, 기후가 바뀌어 펭귄이 살아갈 터전의 빙하가 녹고 펭귄이 먹는 물고기가 줄어가기 때문입니다. 이 전제를 기반으로 만든 (약간은 바보 같을지도 모르는) 그놈 게임을 즐겨보고 싶으시다면 <link href="http://pingus.seul.org/">핑구스</link>를 찾아보십시오.

</note>
Packit 1470ea
    <links type="section"/>
Packit 1470ea
Packit 1470ea
  <section id="imports">
Packit 1470ea
    <title>가져올 라이브러리</title>
Packit 1470ea
    
Packit 1470ea
#!/usr/bin/gjs
Packit 1470ea
Packit 1470ea
const Gtk = imports.gi.Gtk;
Packit 1470ea
const Lang = imports.lang;
Packit 1470ea
Packit 1470ea
    

이 프로그램을 실행할 때 가져올 라이브러리입니다. 시작 부분에 항상 gjs가 필요함을 알리는 줄을 작성해야 함을 기억하십시오.

Packit 1470ea
    </section>
Packit 1470ea
Packit 1470ea
  <section id="applicationwindow">
Packit 1470ea
    <title>프로그램 창 만들기</title>
Packit 1470ea
    
Packit 1470ea
const TextViewExample = new Lang.Class ({
Packit 1470ea
    Name: 'TextView Example',
Packit 1470ea
Packit 1470ea
    // Create the application itself
Packit 1470ea
    _init: function () {
Packit 1470ea
        this.application = new Gtk.Application ({
Packit 1470ea
            application_id: 'org.example.jstextview' });
Packit 1470ea
Packit 1470ea
        // Connect 'activate' and 'startup' signals to the callback functions
Packit 1470ea
        this.application.connect('activate', Lang.bind(this, this._onActivate));
Packit 1470ea
        this.application.connect('startup', Lang.bind(this, this._onStartup));
Packit 1470ea
    },
Packit 1470ea
Packit 1470ea
    // Callback function for 'activate' signal presents windows when active
Packit 1470ea
    _onActivate: function () {
Packit 1470ea
        this._window.present ();
Packit 1470ea
    },
Packit 1470ea
Packit 1470ea
    // Callback function for 'startup' signal builds the UI
Packit 1470ea
    _onStartup: function () {
Packit 1470ea
        this._buildUI ();
Packit 1470ea
    },
Packit 1470ea
Packit 1470ea
    

이 예제의 모든 코드는 TextViewExample 클래스에 들어갑니다. 위 코드는 위젯과 창이 들어가는 <link href="http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Application.html">Gtk.Application</link>를 만듭니다.

Packit 1470ea
    
Packit 1470ea
    // Build the application's UI
Packit 1470ea
    _buildUI: function () {
Packit 1470ea
Packit 1470ea
        // Create the application window
Packit 1470ea
        this._window = new Gtk.ApplicationWindow  ({
Packit 1470ea
            application: this.application,
Packit 1470ea
            window_position: Gtk.WindowPosition.CENTER,
Packit 1470ea
            title: "Talk to a Penguin",
Packit 1470ea
            default_height: 400,
Packit 1470ea
            default_width: 440,
Packit 1470ea
            border_width: 20 });
Packit 1470ea
Packit 1470ea
    

_buildUI 함수는 프로그램 사용자 인터페이스를 만드는 모든 코드를 넣는 곳입니다. 첫 단계에서는 모든 위젯을 우겨넣을 새 <link xref="GtkApplicationWindow.js">Gtk.ApplicationWindow</link>를 만듭니다.

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="textview">
Packit 1470ea
    <title>TextView 만들기</title>
Packit 1470ea
    
Packit 1470ea
        // Create a label for the penguin to talk to you
Packit 1470ea
        this._penguin = new Gtk.Label ({
Packit 1470ea
            height_request: 180,
Packit 1470ea
            width_request: 400,
Packit 1470ea
            label: "Squaaaak?",
Packit 1470ea
            wrap: true });
Packit 1470ea
Packit 1470ea
Packit 1470ea
    

이 예제의 첫단계에서는 펭귄이 여러분에게 무언가 할 말을 넣을 때 쓸 <link xref="label.js">Label</link>을 만듭니다. 줄바꿈 속성을 true로 설정하여 텍스트 줄을 알아서 바꾸게 한 채로 텍스트를 설정하겠지만, TextView 자체에서 더 세밀한 설정이 가능하기에 다른 방식으로 해보겠습니다.

Packit 1470ea
Packit 1470ea
    
Packit 1470ea
        // Create a textview for you to talk to the penguin
Packit 1470ea
        this.buffer = new Gtk.TextBuffer();
Packit 1470ea
        this._textView = new Gtk.TextView ({
Packit 1470ea
            buffer: this.buffer,
Packit 1470ea
            editable: true,
Packit 1470ea
            wrap_mode: Gtk.WrapMode.WORD });
Packit 1470ea
Packit 1470ea
Packit 1470ea
    

첫 단계로 내용을 넣을 TextButter를 만듭니다. 그 다음 TextView를 만들고, 앞서 만든 TextButter를 버퍼로 활용하라고 지시하겠습니다. 또한 새로운 내용을 입력할 수 있게 할 목적으로 편집 가능하게 설정하겠습니다.

Packit 1470ea
    

wrap_mode 속성은 네가지 각각의 <link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.WrapMode.html">WrapModes</link> 중 하나를 선택하게 합니다. 예로, Gtk.WrapMode.CHAR는 페이지 모서리에 줄 끝이 도달하면 단어 중간을 잘라 줄을 바꿉니다. 대부분 사람은 줄이 너무 길면 단어 단위로 자동으로 줄을 바꿔주는 Gtk.WrapMode.WORD 옵션을 사용할지도 모릅니다.

Packit 1470ea
Packit 1470ea
    
Packit 1470ea
        // Create a "scrolled window" to put your textview in so it will scroll
Packit 1470ea
        this._scrolled = new Gtk.ScrolledWindow ({
Packit 1470ea
            hscrollbar_policy: Gtk.PolicyType.AUTOMATIC,
Packit 1470ea
            vscrollbar_policy: Gtk.PolicyType.AUTOMATIC,
Packit 1470ea
            shadow_type: Gtk.ShadowType.ETCHED_IN,
Packit 1470ea
            height_request: 180,
Packit 1470ea
            width_request: 400, });
Packit 1470ea
Packit 1470ea
        // Put the textview into the scrolled window
Packit 1470ea
        this._scrolled.add_with_viewport (this._textView);
Packit 1470ea
Packit 1470ea
    

ScrolledWindow를 만들고 수직 수평 방향으로 너무 크면 자동으로 스크롤하게 설정하겠습니다. 또한 멋들어지게 보이도록 잘 다듬은 테두리를 설정하겠습니다. 그 다음, TextView에 넣고 ScrolledWindow에 뷰포트를 제공하라고 지시하겠습니다.

Packit 1470ea
    </section>
Packit 1470ea
Packit 1470ea
    <section id="ui">
Packit 1470ea
    <title>사용자 인터페이스 나머지 부분 만들기</title>
Packit 1470ea
Packit 1470ea
    
Packit 1470ea
        // Create a grid to organize them in
Packit 1470ea
        this._grid = new Gtk.Grid ({
Packit 1470ea
            halign: Gtk.Align.CENTER,
Packit 1470ea
            valign: Gtk.Align.CENTER });
Packit 1470ea
Packit 1470ea
        // Put the label and textview in the grid one on top of the other
Packit 1470ea
        this._grid.attach (this._penguin, 0, 0, 1, 1);
Packit 1470ea
        this._grid.attach (this._scrolled, 0, 1, 1, 1);
Packit 1470ea
Packit 1470ea
    

처음 <link xref="grid.js">Grid</link> 부분에서 Label과 ScrolledWindow를 만들어넣겠습니다.

Packit 1470ea
Packit 1470ea
    
Packit 1470ea
        // Create a button to send your message to the penguin
Packit 1470ea
        this._send = new Gtk.Button ({
Packit 1470ea
            halign: Gtk.Align.END,
Packit 1470ea
            margin_top: 20,
Packit 1470ea
            label: "Send" });
Packit 1470ea
        this._send.connect ('clicked', Lang.bind (this, this._chat));
Packit 1470ea
Packit 1470ea
        // Create a grid that will have the other grid on top and the button on bottom
Packit 1470ea
        this._mainGrid = new Gtk.Grid ({
Packit 1470ea
            halign: Gtk.Align.CENTER,
Packit 1470ea
            valign: Gtk.Align.CENTER });
Packit 1470ea
Packit 1470ea
        // Add the other grid and the button to the main grid
Packit 1470ea
        this._mainGrid.attach (this._grid, 0, 0, 1, 1);
Packit 1470ea
        this._mainGrid.attach (this._send, 0, 1, 1, 1);
Packit 1470ea
Packit 1470ea
    

펭귄에게 메시지를 보낼 <link xref="button.js">Button</link>를 만들고, 상단에는 다른 새 Grid를 하단에는 Button을 넣겠습니다. 이 Button에는 상단에 여백을 주어 ScrolledWindow와 찰싹 붙어있지 않게 하겠습니다.

Packit 1470ea
Packit 1470ea
    
Packit 1470ea
        // Attach the main grid to the window
Packit 1470ea
        this._window.add (this._mainGrid);
Packit 1470ea
Packit 1470ea
        // Show the window and all child widgets
Packit 1470ea
        this._window.show_all();
Packit 1470ea
    },
Packit 1470ea
Packit 1470ea
Packit 1470ea
    

마지막으로 창에 메인 Grid를 붙이고, 프로그램을 실행할 때 창과 창 안에 있는 모든 요소를 나타내게 하겠습니다.

Packit 1470ea
Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="function">
Packit 1470ea
    <title>펭귄의 응답을 처리하는 함수</title>
Packit 1470ea
    
Packit 1470ea
    _chat: function () {
Packit 1470ea
Packit 1470ea
        // Create a random number to determine what the penguin says
Packit 1470ea
        this.number = Math.floor ((Math.random() * 3) + 1);
Packit 1470ea
Packit 1470ea
        // Did you actually say anything?
Packit 1470ea
        if (this.buffer.text) {
Packit 1470ea
Packit 1470ea
            // Did you mention fish?
Packit 1470ea
            if (this.buffer.text.match (/fish/gi)) {
Packit 1470ea
Packit 1470ea
                // Have the penguin squaak about fish
Packit 1470ea
                if (this.number == 1)
Packit 1470ea
                    this._penguin.set_label ("FISH!");
Packit 1470ea
Packit 1470ea
                else if (this.number == 2)
Packit 1470ea
                    this._penguin.set_label ("Fish fish fish fish. Fish!");
Packit 1470ea
Packit 1470ea
                else
Packit 1470ea
                    this._penguin.set_label ("Fish? Fish fish fish. Fish fish. FISH!");
Packit 1470ea
Packit 1470ea
            }
Packit 1470ea
Packit 1470ea
            // I guess you didn't mention fish
Packit 1470ea
            else {
Packit 1470ea
Packit 1470ea
                // Have the penguin talk about penguinny stuff
Packit 1470ea
                if (this.number == 1)
Packit 1470ea
                    this._penguin.set_label ("SQUAAK!");
Packit 1470ea
Packit 1470ea
                else if (this.number == 2)
Packit 1470ea
                    this._penguin.set_label ("Ork ork ork ork squaak. Squaak squaak! *waves flippers*");
Packit 1470ea
Packit 1470ea
                else
Packit 1470ea
                    this._penguin.set_label ("Ork ork ork ork ork?");
Packit 1470ea
Packit 1470ea
            }
Packit 1470ea
Packit 1470ea
        }
Packit 1470ea
Packit 1470ea
        // Clear the buffer
Packit 1470ea
        this.buffer.text = "";
Packit 1470ea
Packit 1470ea
        // Give focus back to the textview so you don't have to click it again
Packit 1470ea
        this._textView.has_focus = true;
Packit 1470ea
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
});
Packit 1470ea
Packit 1470ea
    

여기에 펭귄이 아무렇게나 말하는 JavaScript 기본 함수를 사용합니다. 펭귄은 물고기를 좋아하니, 물고기를 언급하면 펭귄이 대답하게 하겠습니다. 따라서, TextBuffer에 내용을 반환하는 JavaScript 문자열 객체의 <file>this.buffer.text</file>에 있는 match 메서드를 사용하겠습니다.

Packit 1470ea
    

보내기를 누를 떄마다 TextBuffer를 지울테니, 과정이 끝나면 <file>this.buffer.text</file> 값을 빈 문자열로 넣겠습니다. 그 다음 TextView에 포커스를 반환하여 입력하기 전에 굳이 누르지 않아도 계속 입력할 수 있게 하겠습니다.

Packit 1470ea
Packit 1470ea
    
Packit 1470ea
// Run the application
Packit 1470ea
let app = new TextViewExample ();
Packit 1470ea
app.application.run (ARGV);
Packit 1470ea
Packit 1470ea
    

마지막으로 마무리한 TextViewExample 클래스의 새 인스턴스를 만들고 프로그램을 실행하도록 설정하겠습니다.

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="complete">
Packit 1470ea
    <title>완전한 코드 예제</title>
Packit 1470ea
#!/usr/bin/gjs
Packit 1470ea
Packit 1470ea
imports.gi.versions.Gtk = '3.0';
Packit 1470ea
const Gtk = imports.gi.Gtk;
Packit 1470ea
Packit 1470ea
class TextViewExample {
Packit 1470ea
Packit 1470ea
    // Create the application itself
Packit 1470ea
    constructor() {
Packit 1470ea
        this.application = new Gtk.Application({
Packit 1470ea
            application_id: 'org.example.jstextview'
Packit 1470ea
        });
Packit 1470ea
Packit 1470ea
        // Connect 'activate' and 'startup' signals to the callback functions
Packit 1470ea
        this.application.connect('activate', this._onActivate.bind(this));
Packit 1470ea
        this.application.connect('startup', this._onStartup.bind(this));
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    // Callback function for 'activate' signal presents windows when active
Packit 1470ea
    _onActivate() {
Packit 1470ea
        this._window.present();
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    // Callback function for 'startup' signal builds the UI
Packit 1470ea
    _onStartup() {
Packit 1470ea
        this._buildUI();
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    // Build the application's UI
Packit 1470ea
    _buildUI() {
Packit 1470ea
Packit 1470ea
        // Create the application window
Packit 1470ea
        this._window = new Gtk.ApplicationWindow  ({
Packit 1470ea
            application: this.application,
Packit 1470ea
            window_position: Gtk.WindowPosition.CENTER,
Packit 1470ea
            title: "Talk to a Penguin",
Packit 1470ea
            default_height: 400,
Packit 1470ea
            default_width: 440,
Packit 1470ea
            border_width: 20 });
Packit 1470ea
Packit 1470ea
        // Create a label for the penguin to talk to you
Packit 1470ea
        this._penguin = new Gtk.Label ({
Packit 1470ea
            height_request: 180,
Packit 1470ea
            width_request: 400,
Packit 1470ea
            label: "Squaaaak?",
Packit 1470ea
            wrap: true });
Packit 1470ea
Packit 1470ea
        // Create a textview for you to talk to the penguin
Packit 1470ea
        this.buffer = new Gtk.TextBuffer();
Packit 1470ea
        this._textView = new Gtk.TextView ({
Packit 1470ea
            buffer: this.buffer,
Packit 1470ea
            editable: true,
Packit 1470ea
            wrap_mode: Gtk.WrapMode.WORD });
Packit 1470ea
Packit 1470ea
        // Create a "scrolled window" to put your textview in so it will scroll
Packit 1470ea
        this._scrolled = new Gtk.ScrolledWindow ({
Packit 1470ea
            hscrollbar_policy: Gtk.PolicyType.AUTOMATIC,
Packit 1470ea
            vscrollbar_policy: Gtk.PolicyType.AUTOMATIC,
Packit 1470ea
            shadow_type: Gtk.ShadowType.ETCHED_IN,
Packit 1470ea
            height_request: 180,
Packit 1470ea
            width_request: 400, });
Packit 1470ea
Packit 1470ea
        // Put the textview into the scrolled window
Packit 1470ea
        this._scrolled.add_with_viewport (this._textView);
Packit 1470ea
Packit 1470ea
        // Create a grid to organize them in
Packit 1470ea
        this._grid = new Gtk.Grid ({
Packit 1470ea
            halign: Gtk.Align.CENTER,
Packit 1470ea
            valign: Gtk.Align.CENTER });
Packit 1470ea
Packit 1470ea
        // Put the label and textview in the grid one on top of the other
Packit 1470ea
        this._grid.attach (this._penguin, 0, 0, 1, 1);
Packit 1470ea
        this._grid.attach (this._scrolled, 0, 1, 1, 1);
Packit 1470ea
Packit 1470ea
        // Create a button to send your message to the penguin
Packit 1470ea
        this._send = new Gtk.Button ({
Packit 1470ea
            halign: Gtk.Align.END,
Packit 1470ea
            margin_top: 20,
Packit 1470ea
            label: "Send" });
Packit 1470ea
        this._send.connect ('clicked', this._chat.bind(this));
Packit 1470ea
Packit 1470ea
        // Create a grid that will have the other grid on top and the button on bottom
Packit 1470ea
        this._mainGrid = new Gtk.Grid ({
Packit 1470ea
            halign: Gtk.Align.CENTER,
Packit 1470ea
            valign: Gtk.Align.CENTER });
Packit 1470ea
Packit 1470ea
        // Add the other grid and the button to the main grid
Packit 1470ea
        this._mainGrid.attach (this._grid, 0, 0, 1, 1);
Packit 1470ea
        this._mainGrid.attach (this._send, 0, 1, 1, 1);
Packit 1470ea
Packit 1470ea
        // Attach the main grid to the window
Packit 1470ea
        this._window.add (this._mainGrid);
Packit 1470ea
Packit 1470ea
        // Show the window and all child widgets
Packit 1470ea
        this._window.show_all();
Packit 1470ea
    }
Packit 1470ea
Packit 1470ea
    _chat() {
Packit 1470ea
Packit 1470ea
        // Create a random number to determine what the penguin says
Packit 1470ea
        this.number = Math.floor ((Math.random() * 3) + 1);
Packit 1470ea
Packit 1470ea
        // Did you actually say anything?
Packit 1470ea
        if (this.buffer.text) {
Packit 1470ea
Packit 1470ea
            // Did you mention fish?
Packit 1470ea
            if (this.buffer.text.match (/fish/gi)) {
Packit 1470ea
Packit 1470ea
                // Have the penguin squaak about fish
Packit 1470ea
                if (this.number == 1)
Packit 1470ea
                    this._penguin.set_label ("FISH!");
Packit 1470ea
Packit 1470ea
                else if (this.number == 2)
Packit 1470ea
                    this._penguin.set_label ("Fish fish fish fish. Fish!");
Packit 1470ea
Packit 1470ea
                else
Packit 1470ea
                    this._penguin.set_label ("Fish? Fish fish fish. Fish fish. FISH!");
Packit 1470ea
Packit 1470ea
            }
Packit 1470ea
Packit 1470ea
            // I guess you didn't mention fish
Packit 1470ea
            else {
Packit 1470ea
Packit 1470ea
                // Have the penguin talk about penguinny stuff
Packit 1470ea
                if (this.number == 1)
Packit 1470ea
                    this._penguin.set_label ("SQUAAK!");
Packit 1470ea
Packit 1470ea
                else if (this.number == 2)
Packit 1470ea
                    this._penguin.set_label ("Ork ork ork ork squaak. Squaak squaak! *waves flippers*");
Packit 1470ea
Packit 1470ea
                else
Packit 1470ea
                    this._penguin.set_label ("Ork ork ork ork ork?");
Packit 1470ea
Packit 1470ea
            }
Packit 1470ea
Packit 1470ea
        }
Packit 1470ea
Packit 1470ea
        // Clear the buffer
Packit 1470ea
        this.buffer.text = "";
Packit 1470ea
Packit 1470ea
        // Give focus back to the textview so you don't have to click it again
Packit 1470ea
        this._textView.has_focus = true;
Packit 1470ea
    }
Packit 1470ea
};
Packit 1470ea
Packit 1470ea
// Run the application
Packit 1470ea
let app = new TextViewExample ();
Packit 1470ea
app.application.run (ARGV);
Packit 1470ea
Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="in-depth">
Packit 1470ea
    <title>자세한 문서</title>
Packit 1470ea
<list>
Packit 1470ea
  <item>

<link href="http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/Gtk.Application.html">Gtk.Application</link>

</item>
Packit 1470ea
  <item>

<link href="http://developer.gnome.org/gtk3/stable/GtkApplicationWindow.html">Gtk.ApplicationWindow</link>

</item>
Packit 1470ea
  <item>

<link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Button.html">Gtk.Button</link>

</item>
Packit 1470ea
  <item>

<link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Grid.html">Gtk.Grid</link>

</item>
Packit 1470ea
  <item>

<link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.Label.html">Gtk.Label</link>

</item>
Packit 1470ea
  <item>

<link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.RadioButton.html">Gtk.RadioButton</link>

</item>
Packit 1470ea
  <item>

<link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.ScrolledWindow.html">Gtk.ScrolledWindow</link>

</item>
Packit 1470ea
  <item>

<link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TextBuffer.html">Gtk.TextBuffer</link>

</item>
Packit 1470ea
  <item>

<link href="http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Gtk.TextView.html">Gtk.TextView</link>

</item>
Packit 1470ea
</list>
Packit 1470ea
  </section>
Packit 1470ea
</page>