This is gtkmm, the C++ API for GTK.

Related tags

GUI gtkmm
Overview
This is gtkmm, the C++ API for GTK. 
See http://www.gtkmm.org/

# Building

Whenever possible, you should use the official binary packages approved by the
supplier of your operating system, such as your Linux distribution.

## Building on Windows

See README.win32

## Building from a release tarball

Extract the tarball and go to the extracted directory:
  $ tar xf [email protected][email protected]
  $ cd [email protected][email protected]

It's easiest to build with Meson, if the tarball was made with Meson,
and to build with Autotools, if the tarball was made with Autotools.
Then you don't have to use maintainer-mode.

How do you know how the tarball was made? If it was made with Meson,
it contains files in untracked/gdk/gdkmm/, untracked/gtk/gtkmm/ and
other subdirectories of untracked/.

### Building from a tarball with Meson

Don't call the builddir 'build'. There is a directory called 'build' with
files used by Autotools.

  $ meson --prefix /some_directory --libdir lib your_builddir .
  $ cd your_builddir

If the tarball was made with Autotools, you must enable maintainer-mode:
  $ meson configure -Dmaintainer-mode=true

Then, regardless of how the tarball was made:
  $ ninja
  $ ninja install
You can run the tests like so:
  $ ninja test

### Building from a tarball with Autotools

If the tarball was made with Autotools:
  $ ./configure --prefix=/some_directory
If the tarball was made with Meson, you must enable maintainer-mode:
  $ ./autogen.sh --prefix=/some_directory

Then, regardless of how the tarball was made:
  $ make
  $ make install
You can build the examples and tests, and run some of the tests, like so:
  $ make check

## Building from git

Building from git can be difficult so you should prefer building from
a release tarball unless you need to work on the gtkmm code itself.

jhbuild can be a good help
  https://gitlab.gnome.org/GNOME/jhbuild
  https://wiki.gnome.org/Projects/Jhbuild

### Building from git with Meson

Maintainer-mode is enabled by default when you build from a git clone.

Don't call the builddir 'build'. There is a directory called 'build' with
files used by Autotools.

  $ meson --prefix /some_directory --libdir lib your_builddir .
  $ cd your_builddir
  $ ninja
  $ ninja install
You can run the tests like so:
  $ ninja test
You can create a tarball like so:
  $ ninja dist

### Building from git with Autotools

  $ ./autogen.sh --prefix=/some_directory
  $ make
  $ make install
You can build the examples and tests, and run some of the tests, like so:
  $ make check
You can create a tarball like so:
  $ make distcheck
or
  $ make dist
You might also like...
✔️The smallest header-only GUI library(4 KLOC) for all platforms
✔️The smallest header-only GUI library(4 KLOC) for all platforms

Welcome to GUI-lite The smallest header-only GUI library (4 KLOC) for all platforms. 中文 Lightweight ✂️ Small: 4,000+ lines of C++ code, zero dependenc

FSearch is a fast file search utility for Unix-like systems based on GTK+3
FSearch is a fast file search utility for Unix-like systems based on GTK+3

FSearch is a fast file search utility, inspired by Everything Search Engine. It's written in C and based on GTK3.

Gtk - Gui Toolkit Bindings for php

Gtk - Gui Toolkit Bindings for php Gtk written in pure php using FFI_. Development Status: WARNING: API is unstable WARNING: Lots of things are not im

My color picker in GTK, based very heavily on the MS Powertoys color picker

My color picker in GTK, based very heavily on the MS Powertoys color picker

Uma prova de conceito para mostrar como rodar código nativo GTK dentro do Qt Framework :)

QTK Uma prova de conceito para mostrar como rodar código nativo GTK dentro do Qt Framework :) Nota: Como toda PoC que se preze esse projeto está incri

C++ - Gtk - Granite - Flatpak
C++ - Gtk - Granite - Flatpak

Description ElementaryCpp is a template for eOS applications, meaning that it's built over Gtkmm and C++17. Features GSchema Support ElementaryOS 6 Da

Atsugami - A taggable GTK+ image manager written in C
Atsugami - A taggable GTK+ image manager written in C

Atsugami [] Notes Limit of 999,999x999,999px Dependencies PostgreSQL (Tested on 14 and 14.1) GTK3 Clang BSD make (bmake) Building and installation # F

GTK is a multi-platform toolkit for creating graphical user interfaces.

GTK — The GTK toolkit General information GTK is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets,

Language that provides an abstraction to a PART of GTK difficulty
Language that provides an abstraction to a PART of GTK difficulty

Welcome to GPP_COMPILER Language that provides an abstraction to a PART of GTK difficulty . To get projet on your computer, clone it using the followi

Tiny cross-platform webview library for C/C++/Golang. Uses WebKit (Gtk/Cocoa) and Edge (Windows)

A tiny cross-platform webview library for C/C++/Golang to build modern cross-platform GUIs. Also, there are Rust bindings, Python bindings, Nim bindings, Haskell, C# bindings and Java bindings available.

GTK-based lockscreen for Wayland
GTK-based lockscreen for Wayland

gtklock GTK-based lockscreen for Wayland. About gtklock is based on gtkgreet. It uses the wlr-layer-shell and wlr-input-inhibitor Wayland protocols an

log4cplus is a simple to use C++ logging API providing thread-safe, flexible, and arbitrarily granular control over log management and configuration. It is modelled after the Java log4j API.

% log4cplus README Short Description log4cplus is a simple to use C++17 logging API providing thread--safe, flexible, and arbitrarily granular control

The Telegram Bot API provides an HTTP API for creating Telegram Bots.

The Telegram Bot API provides an HTTP API for creating Telegram Bots.

The goal of arrowvctrs is to wrap the Arrow Data C API and Arrow Stream C API to provide lightweight Arrow support for R packages

The goal of arrowvctrs is to wrap the Arrow Data C API and Arrow Stream C API to provide lightweight Arrow support for R packages to consume and produce streams of data in Arrow format. Right now it’s just a fun way for me to learn about Arrow!

Simple-MySQL-API is a free and easy API to manipulate MySQL with C99 and GCC compiler under GNU/Linux OS.

Simple-MySQL-API is a free and easy API to manipulate MySQL with C99 and GCC compiler under GNU/Linux OS.

Like libevent and libuv, libhv provides event-loop with non-blocking IO and timer, but simpler api and richer protocols.
Like libevent and libuv, libhv provides event-loop with non-blocking IO and timer, but simpler api and richer protocols.

中文版 Intro Like libevent, libev, and libuv, libhv provides event-loop with non-blocking IO and timer, but simpler api and richer protocols. Features cr

A simple header-only C++ argument parser library. Supposed to be flexible and powerful, and attempts to be compatible with the functionality of the Python standard argparse library (though not necessarily the API).

args Note that this library is essentially in maintenance mode. I haven't had the time to work on it or give it the love that it deserves. I'm not add

Thin C++-flavored wrappers for the CUDA Runtime API

cuda-api-wrappers: Thin C++-flavored wrappers for the CUDA runtime API Branch Build Status: Master | Development: nVIDIA's Runtime API for CUDA is int

Cross-platform C++ library providing a simple API to read and write INI-style configuration files

simpleini A cross-platform library that provides a simple API to read and write INI-style configuration files. It supports data files in ASCII, MBCS a

Comments
  • GLArea - First version soliciting for feedback

    GLArea - First version soliciting for feedback

    Not actually intended for merging.

    Sorry it's currently against 3.16 - that's what I've found on my machine to work with - but it's perhaps a good place to start to see if I'm going in the right direction.

    Adds the necessary GdkGLContext + enum + GtkGLArea bits plus a C++ equivalent of the C glarea example.

    Builds and runs, but I've probably got the lifecycle of some of these things wrong - on exit I get the following warning that perhaps you can help me with:

    (lt-gtkmm-demo:28487): Gtk-CRITICAL **: gtk_gl_area_make_current: assertion 'gtk_widget_get_realized (widget)' failed
    

    It's seems that the actual widget unrealize is being called before we get a chance to do what we need to clean up the GL bits. Any help here would be appreciated. (The original C glarea demo doesn't emit this error but has the same logic).

    In addition, I'm not confident in any of the "const" decisions for the wrapped methods / properties.

    If you'd prefer to have a patch against HEAD you can perhaps give me a little hint what's the best way to set up an environment for that (I'm on Arch L).

    So, one other thing to mention - this has only been run on Linux. I don't have a windows box to check it out I'm afraid.

    opened by danielhams 2
  • Fix object ownership in the wrapper of the render signal.

    Fix object ownership in the wrapper of the render signal.

    This change ensures that the wrapper implementation of the render signal emission does not take ownership of the underlying cairo_region_t C instance. It is necessary, because the C implementation expects to keep ownership, and destroys the underlying C instance after the signal was emitted.

    The wrapped signal is emitted from gdk_surface_process_update_internal.

    The relevant lines:

    expose_region = cairo_region_copy (surface->active_update_area);

    // here expose_region has a reference count of 1

    g_signal_emit (surface, signals[RENDER], 0, expose_region, &handled);

    // ...and here it needs to remain one, but with the current implementation // we get a double destroy below:

    cairo_region_destroy (expose_region);

    opened by baldvin-kovacs 0
Owner
GNOME Github Mirror
Contributions sent to this organization will be forwarded automatically to https://gitlab.gnome.org
GNOME Github Mirror
Gtk - Gui Toolkit Bindings for php

Gtk - Gui Toolkit Bindings for php Gtk written in pure php using FFI_. Development Status: WARNING: API is unstable WARNING: Lots of things are not im

Shubham Chaudhary 6 Dec 6, 2022
My color picker in GTK, based very heavily on the MS Powertoys color picker

My color picker in GTK, based very heavily on the MS Powertoys color picker

contribuewwt 12 Dec 2, 2022
GTK is a multi-platform toolkit for creating graphical user interfaces.

GTK — The GTK toolkit General information GTK is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets,

GNOME Github Mirror 1.1k Dec 31, 2022
Tiny cross-platform webview library for C/C++/Golang. Uses WebKit (Gtk/Cocoa) and Edge (Windows)

A tiny cross-platform webview library for C/C++/Golang to build modern cross-platform GUIs. Also, there are Rust bindings, Python bindings, Nim bindings, Haskell, C# bindings and Java bindings available.

webview 10.8k Jan 9, 2023
onnxruntime C Api wrapped for nim

onnxruntime-nim onnxruntime C Api wrapped for nim Wrapped C Api is generated using c2nim Onnxruntime Home Page Onnxruntime Github Header file onnxrunt

null 14 Apr 7, 2022
A lightweight modern C++11 library for Win32 API, using lambdas to handle Windows messages.

WinLamb A lightweight modern C++11 library for Win32 API, using lambdas to handle Windows messages. Overview Setup Example Classes summary License 1.

Rodrigo 239 Dec 28, 2022
A wallpaper changer using Wallhaven api. Written with C++/CLR, only 0.5 MB and have a GUI.

WHaven Wallpaper WHaven Wallpaper is a desktop wallpaper change program for change your wallpapers directly from wallhaven. Features You have a search

null 2 Aug 1, 2022
This is a thin c-api wrapper programmatically generated for the excellent C++ immediate mode gui Dear ImGui.

cimgui This is a thin c-api wrapper programmatically generated for the excellent C++ immediate mode gui Dear ImGui. All imgui.h functions are programm

Victor Bombi 22 Jul 5, 2021
An implementation of node editor with ImGui-like API.

Node Editor in ImGui About An implementation of node editor with ImGui-like API. Project purpose is to serve as a basis for more complex solutions lik

Michał Cichoń 2.4k Jan 9, 2023
ZIAPI repository which contains the interfaces and concrete implementations that make up our Epitech Zia project API proposal.

ZIAPI Welcome to the ZIAPI repository which contains the interfaces and concrete implementations that make up our Epitech Zia project API proposal. ZI

Martin Olivier 30 Oct 24, 2022