Gtk4-tutorial/docs/index.html
2022-11-21 22:48:20 +09:00

198 lines
10 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<title>GTK 4 tutorial</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
pre{overflow: visible;}
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::after
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
div.sourceCode { margin: 10px; padding: 16px 10px 8px 10px; border: 2px solid silver; background-color: ghostwhite; overflow-x:scroll}
pre:not(.sourceCode) { margin: 10px; padding: 16px 10px 8px 10px; border: 2px solid silver; background-color: ghostwhite; overflow-x:scroll}
table {margin-left: auto; margin-right: auto; border-collapse: collapse; border: 1px solid;}
th {padding: 2px 6px; border: 1px solid; background-color: ghostwhite;}
td {padding: 2px 6px; border: 1px solid;}
img {display: block; margin-left: auto; margin-right: auto;}
figcaption {text-align: center;}
</style>
</head>
<body style="padding-top: 70px;">
<div class="container">
<nav class="navbar fixed-top navbar-expand-lg navbar-dark bg-primary">
<div class="container-fluid">
<span class="navbar-brand">Gtk4 tutorial</span>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
</ul>
</div>
</div>
</nav>
<h1 id="gtk-4-tutorial-for-beginners">GTK 4 Tutorial for beginners</h1>
<h4 id="contents-of-this-repository">Contents of this Repository</h4>
<p>This tutorial illustrates how to write C programs with the GTK 4
library. It focuses on beginners so the contents are limited to the
basics. The table of contents is at the end of this abstract.</p>
<ul>
<li>Section 3 to 21 describes the basics, with the example of a simple
editor <code>tfe</code> (Text File Editor).</li>
<li>Section 22 to 25 describes GtkDrawingArea.</li>
<li>Section 26 to 29 describes the list model and the list view
(GtkListView, GtkGridView and GtkColumnView). It also describes
GtkExpression.</li>
</ul>
<p>The latest version of the tutorial is located at <a
href="https://github.com/ToshioCP/Gtk4-tutorial">Gtk4-tutorial GitHub
repository</a>. You can read it from there directly without having to
download anything.</p>
<h4 id="gtk-4-documentation">GTK 4 Documentation</h4>
<p>Please refer to <a href="https://docs.gtk.org/gtk4/index.html">GTK
API Reference</a> and <a href="https://developer.gnome.org/">GNOME
Developer Documentation Website</a> for further information.</p>
<p>These websites are newly opened lately (Aug/2021). The old
documentation is located at <a
href="https://developer-old.gnome.org/gtk4/stable/">GTK Reference
Manual</a> and <a href="https://developer-old.gnome.org/">GNOME
Developer Center</a>. The new website is in progress at present, so you
might need to refer to the old version.</p>
<p>If you want to know about GObject and the type system, please refer
to <a href="https://github.com/ToshioCP/Gobject-tutorial">GObject
tutorial</a>. The GObject details are easy to understand and also
necessary to know when writing GTK 4 programs.</p>
<h4 id="contribution">Contribution</h4>
<p>This tutorial is under development and unstable. Even though the
codes of the examples have been tested on GTK 4 (version 4.0), bugs may
still exist. If you find any bugs, errors or mistakes in the tutorial
and C examples, please let me know. You can post it to <a
href="https://github.com/ToshioCP/Gtk4-tutorial/issues">GitHub
issues</a>. You can also post corrected files as a commit to <a
href="https://github.com/ToshioCP/Gtk4-tutorial/pulls">pull request</a>.
When you make corrections, correct the source files, which are under the
src directory, then run <code>rake</code> to create to create the
output file. The GFM files under the gfm directory are automatically
updated.</p>
<p>If you have a question, feel free to post it as an issue. All
questions are helpful and will make this tutorial get better.</p>
<h4 id="how-to-get-a-html-or-pdf-version">How to get a HTML or PDF
version</h4>
<p>If you want to get a HTML or PDF version, you can make them with
<code>rake</code>, which is a ruby version of make. Type
<code>rake html</code> for HTML. Type <code>rake pdf</code> for PDF.
There is a documentation (“<a href="Readme_for_developers.html">How to
build GTK 4 Tutorial</a>”) that describes how to make them.</p>
<h2 id="table-of-contents">Table of contents</h2>
<ol type="1">
<li><a href="sec1.html">Prerequisite and License</a></li>
<li><a href="sec2.html">Installing GTK 4 into Linux
distributions</a></li>
<li><a href="sec3.html">GtkApplication and GtkApplicationWindow</a></li>
<li><a href="sec4.html">Widgets (1)</a></li>
<li><a href="sec5.html">Widgets (2)</a></li>
<li><a href="sec6.html">String and memory management</a></li>
<li><a href="sec7.html">Widgets (3)</a></li>
<li><a href="sec8.html">Defining a child object</a></li>
<li><a href="sec9.html">The User Interface (UI) file and
GtkBuilder</a></li>
<li><a href="sec10.html">Build system</a></li>
<li><a href="sec11.html">Initialization and destruction of
instances</a></li>
<li><a href="sec12.html">Signals</a></li>
<li><a href="sec13.html">Functions in TfeTextView</a></li>
<li><a href="sec14.html">Functions in GtkNotebook</a></li>
<li><a href="sec15.html">tfeapplication.c</a></li>
<li><a href="sec16.html">tfe5 source files</a></li>
<li><a href="sec17.html">Menu and action</a></li>
<li><a href="sec18.html">Stateful action</a></li>
<li><a href="sec19.html">Ui file for menu and action entries</a></li>
<li><a href="sec20.html">GtkMenuButton, accelerators, font, pango and
gsettings</a></li>
<li><a href="sec21.html">Template XML and composite widget</a></li>
<li><a href="sec22.html">GtkDrawingArea and Cairo</a></li>
<li><a href="sec23.html">Periodic Events</a></li>
<li><a href="sec24.html">Combine GtkDrawingArea and TfeTextView</a></li>
<li><a href="sec25.html">Tiny turtle graphics interpreter</a></li>
<li><a href="sec26.html">GtkListView</a></li>
<li><a href="sec27.html">GtkGridView and activate signal</a></li>
<li><a href="sec28.html">GtkExpression</a></li>
<li><a href="sec29.html">GtkColumnView</a></li>
</ol>
<p>This website uses <a
href="https://getbootstrap.jp/">Bootstrap</a>.</p>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
</body>
</html>