Thursday 1 December 2022

https://ift.tt/gz02jOh

This tutorial will help ypu installing software required to develop desktop Ubuntu applications with C++ language and GTKmm library version 4. You might want to do so following examples of the excellent programs created with GTKmm like Ardour, Inkscape, GParted, Rawtherapee and even VisualBoyAdvance. This is an alternative to programming with C/GTK as we published back in 2018. We will show you how to prepare the tools, write your first program, compile it and repeat it.

Subscribe to UbuntuBuzz Telegram Channel to get article updates.

Info

This tutorial is written using the following specification:

  • OS version: Ubuntu 22.10 Kinetic Kudu
  • G++ version: 12.2 
  • GTK version: 4.0
  • GTKmm version: 4.0
  • Geany version: 1.38 "Sulamar"

 

Install Required Tools

You need to install the following tools:

  • g++
  • gtkmm
  • geany

1) Install g++ compiler:

$ sudo apt-get install g++

2) Install geany integrated development environment (IDE):

$ sudo apt-get install geany 

3) Install gtkmm:

According to Official Documentation, gtkmm version 4 requires several dependencies:

  • sigc++-3.0

  • gtk4

  • glibmm-2.68

  • cairomm-1.16

  • pangomm-2.48

According to the same documentation, one can install gtkmm version 4 with the following Ubuntu command line:

$ sudo apt-get install libgtkmm-4.0-dev

Once installed, you can start programming. 

 

Checking your installation

Command line below will help you verify your installation:

$ dpkg -l | grep -i gtkmm 

If installed properly, your Terminal will show similar result to this picture:


Write Basic Program

According to the documentation again, we can start programming C++/gtkmm with the example source code.

1. Run Geany.

2. Create new file. 

3. Save it as program1.cc in ~/Public/gtkmm/ directory.

4. Copy and paste the following source code.

5. Save file.

A program's source code will look like picture below:

(Geany showing program1.cc file)

 

Compile and Run Code

For your first experience, let's compile the code using Terminal.

1. Run Terminal. 

2. Go to ~/Public/gtkmm/ directory.

3. Check for files available in this directory. It should show program1.cc file.

4. Run command line below:

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

5. Check for files once again. It should now show a new file named program1 without extension.

6. Run the program:

$ ./program1

7. Program will show as an empty window and a title.

You managed to compile your first program. 

(Terminal showing a process of compilation with the program window showing floating over it saying on its titlebar Basic application, hello from Ubuntu Buzz!)


Explanation:

g++ is your compiler program for C++ language.

program1.cc is your source code file. 

program is the executable file as a result of compilation. Notice that on Ubuntu it does not have extension if you compare it to .exe in windows.

pkg-config is another command line program that is smart enough to help us in many things about compiling C++ code with GTKmm or other libraries.

c++17 is a sign that we deliberately tell the compiler to use the relatively new 2017 standard rather than the older ones.

More explanation can be read on the official documentation. 


Compile and Run Code with Geany

At default configuration, Geany cannot compile, build and run C++/GTKmm source codes correctly. For that purpose, one should configure Geany build commands manually. You can do this following the example above.  

 

Configuration:

1. Run Geany.

2. Open menu Build > Set Build Commands. 

3. Change Compile command from the default to the custom as the following:

Default command:

g++ -Wall -c "%f"

Custom compile command:

g++ -Wall -c "%f" `pkg-config --cflags --libs gtkmm-4.0` -std=c++17

4. Change Build command from the default to the custom below:

Default command:

g++ -Wall -o "%e" "%f"

Custom build command:

g++ -Wall -o "%e" "%f" `pkg-config --cflags --libs gtkmm-4.0` -std=c++17

5. Click OK. Configuration finished.

Picture below shows clearly how you should write the configuration above:

Compiling, building and running:

1. Open program1.cc file.

2. Click Compile button. 


Geany will process it and show compilation command as well as compilation message at the bottom section. It should say "Compilation finished successfully."

3. Click Build button. 


Geany will process it too the same way. It should also say "Compilation finished successfully." 

4. Click Run button.


Geany will launch Terminal to launch the program1 executable file on screen. Your program window should be running now.

And picture below shows the result, that is, an example of conveniently compiling, building, and running program with Geany:

(Geany showing the C++ source code, compilation message at the bottom, and running the resulting program as a new window launched via a Terminal)

To this point, now you will be able to learn single file C++/gtkmm examples. To learn more, see below. 

 

Compiling Program with Multiple Source File

You should be able to compile any gtkmm example programs that consisted of multiple source file each. For example, let's practice with Hello World example from https://gnome.pages.gitlab.gnome.org/gtkmm-documentation/sec-helloworld.html. It consisted of two .cc files and one .h file. We will write the source files using Geany and then compile them all using Terminal. 

1. Run Geany. We will save everything in ~/Public/gtkmm directory again.

2. Copy, paste and save the first source file as helloworld.h

3. Copy, paste and save the second source file as helloworld.cc

4. Copy, paste and save the third source file as main.cc

5. Run Terminal and go to ~/Public/gtkmm directory.

6. Check available files in current directory. You should be able to see helloworld.h, helloworld.cc, and main.cc.

7. Compile the program with command line below:

$ g++ helloworld.cc main.cc -o main `pkg-config --cflags --libs gtkmm-4.0` -std=c++17

8. Compilation process should be finished without error.

Notice that now we call both .cc files before the option -o.

9. Check available files once again. Now you should find a new file named main without extension.

10. Run the program:

$ ./main

You should see the same program as presented in the official documentation. Every time you click the button, a message will be printed on Terminal. See picture below.


First source code:

File: helloworld.h (For use with gtkmm 4)

#ifndef GTKMM_EXAMPLE_HELLOWORLD_H
#define GTKMM_EXAMPLE_HELLOWORLD_H

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

class HelloWorld : public Gtk::Window
{

public:
HelloWorld();
~HelloWorld() override;

protected:
//Signal handlers:
void on_button_clicked();

//Member widgets:
Gtk::Button m_button;
};

#endif // GTKMM_EXAMPLE_HELLOWORLD_H

Second source code:

File: helloworld.cc (For use with gtkmm 4)

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

HelloWorld::HelloWorld()
: m_button("Hello World") // creates a new button with label "Hello World".
{
// Sets the margin around the button.
m_button.set_margin(10);

// When the button receives the "clicked" signal, it will call the
// on_button_clicked() method defined below.
m_button.signal_clicked().connect(sigc::mem_fun(*this,
&HelloWorld::on_button_clicked));

// This packs the button into the Window (a container).
set_child(m_button);
}

HelloWorld::~HelloWorld()
{
}

void HelloWorld::on_button_clicked()
{
std::cout << "Hello World" << std::endl;
}

Third source code:

File: main.cc (For use with gtkmm 4)

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

int main(int argc, char* argv[])
{
auto app = Gtk::Application::create("org.gtkmm.example");

//Shows the window and returns when it is closed.
return app->make_window_and_run<HelloWorld>(argc, argv);
}

 

More Examples

GNOME Project maintains a lot of C++/GTKmm examples for you to study at their website https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/examples. See for example, helloworld, buttons, combobox, and dialogs among others.

 (GNOME websites showing resources and source code examples available for studying)

See Further Reading section for even more examples. 


Setup GTKmm Documentation

Do you know that you can have a full GTKmm documentation included with examples and user guides inside a nice application you can read offline? Yes, that is DevHelp. Let's install the viewer devhelp and the documentation package gtkmm-documentation as the following:

$ sudo apt-get install devhelp gtkmm-documentation

And the result is as the following:

(DevHelp, a nice programming book application that helps you learning gtkmm)


Further Readings

Programming with gtkmm 4

GTKMM Website

GTKmm Tutorial

GTKmm Examples by gammasoft

GTKmm Examples by Prof. Rice



This article is licensed under CC BY-SA 3.0.
Originally posted here: https://ift.tt/HzTcJGh

0 comments:

Post a Comment

ShortNewsWeb

Blog Archive

Categories

'The Woks of Life' Reminded Me to Cook With All the Flavors I Love (1) 13 of the Best Spooky Episodes From (Mostly) Un-Spooky Shows (1) 1Password Now Generates QR Codes to Share Wifi Passwords (1) 2024 (13) 30 Movies and TV Shows That Are Basically 'Competence Porn' (1) 30 of the Most Obscenely Patriotic Movies Ever (1) 40 Netflix Original Series You Should Watch (1) Active Directory (1) Adobe's AI Video Generator Might Be as Good as OpenAI's (1) AIX (1) and Max Bundle Isn't a Terrible Deal (1) Apache (2) Apple Intelligence Is Running Late (1) Apple Intelligence's Instructions Reveal How Apple Is Directing Its New AI (1) August 18 (1) August 4 (1) August 5 (1) Backup & Restore (2) best practices (1) bleepingcomputer (42) Blink Security Cameras Are up to 68% Off Ahead of Prime Day (1) CentOS (1) Configure PowerPath on Solaris (1) Documents (2) Don't Rely on a 'Monte Carlo' Retirement Analysis (1) Eight Cleaning Products TikTok Absolutely Loves (1) Eight of the Best Methods for Studying so You Actually Retain the Information (1) Eight Unexpected Ways a Restaurant Can Mislead You (1) Elevate Your Boring Store-Bought Pretzels With This Simple Seasoning Technique (1) Everything Announced at Apple's iPhone 16 Event (1) file system (6) Find (1) Five Red Flags to Look for in Any Restaurant (1) Flappy Bird's Creator Has Nothing to Do With Its 'Remake' (1) Four Signs Thieves Are Casing Your House (1) gaming (1) Hackers Now Have Access to 10 Billion Stolen Passwords (1) How I Finally Organized My Closet With a Digital Inventory System (1) How to Cancel Your Amazon Prime Membership After Prime Day Is Over (1) How to Choose the Best Weightlifting Straps for Your Workout (1) How to Keep Squirrels Off Your Bird Feeders (1) How to Take a Screenshot on a Mac (1) How to Take Full Control of Your Notifications on a Chromebook (1) Hulu (1) If You Got a Package You Didn't Order (1) Important Questions (17) Install and Configure PowerPath (1) interview questions for linux (2) Is ‘Ultra-Processed’ Food Really That Bad for You? (1) Is Amazon Prime Really Worth It? (1) It Might Be a Scam (1) July 14 (1) July 21 (1) July 28 (1) July 7 (1) June 30 (1) LifeHacker (89) Linux (36) Meta Releases Largest Open-Source AI Model Yet (1) Monitoring (3) music (688) My Favorite 14TB Hard Drive Is 25% Off Right Now (1) My Favorite Amazon Deal of the Day: Apple AirPods Max (2) My Favorite Amazon Deal of the Day: Google Nest Mesh WiFi Router (1) My Favorite Amazon Deal of the Day: Google Pixel 8 (1) My Favorite Amazon Deal of the Day: SHOKZ OpenMove Bone Conduction Headphones (1) My Favorite Tools for Managing Cords and Cables (1) Nagios (2) Newtorking (1) NFS (1) OMG! Ubuntu! (688) Oracle Linux (1) oracleasm (3) osnews (21) Password less communication (1) Patching (2) Poaching Is the Secret to Perfect Corn on the Cob (1) powerpath (1) Prioritize Your To-Do List By Imagining Rocks in a Jar (1) Red Hat Exam (1) register (38) Rsync (1) Safari’s ‘Distraction Control’ Will Help You Banish (Some) Pop Ups (1) Samba (1) Scrcpy (1) September 1 (1) September 15 (1) September 2 (1) September 22 (1) September 8 (1) Seven Home 'Upgrades' That Aren’t Worth the Money (1) ssh (1) Swift Shift Is the Window Management Tool Apple Should Have Built (1) System hardening (1) Target’s Answer to Prime Day Starts July 7 (1) Tech (9532) Tech CENTRAL (15) Technical stories (89) technpina (6) The 30 Best Movies of the 2020s so Far (and Where to Watch Them) (1) The 30 Best Sports Movies You Can Stream Right Now (1) The Best Deals on Robot Vacuums for Amazon’s Early Prime Day Sale (1) The Best Deals on Ryobi Tools During Home Depot's Labor Day Sale (1) The Best Early Prime Day Sales on Power Tools (1) The Best Places to Go When You Don't Want to Be Around Kids (1) The Best Strategies for Lowering Your Credit Card Interest Rate (1) The Best Ways to Store All Your Bags and Purses (1) The New Disney+ (1) The Two Best Times of Year to Look for a New Job (1) These Milwaukee Tools Are up to 69% off Right Now (1) This Google Nest Pro Is 30% Off for Prime Day (1) This Peanut Butter Latte Isn’t As Weird As It Sounds (1) This Tech Brand Will Get the Biggest Discounts During Prime Day (1) Three Quick Ways to Shorten a Necklace (1) Today’s Wordle Hints (and Answer) for Monday (2) Today’s Wordle Hints (and Answer) for Sunday (11) Try 'Pile Cleaning' When Your Mess Is Overwhelming (1) Ubuntu News (344) Ubuntu! (1) Unix (1) Use This App to Sync Apple Reminders With Your iPhone Calendar (1) veritas (2) Videos (1) Was ChatGPT Really Starting Conversations With Users? (1) Watch Out for These Red Flags in a Realtor Contract (1) Wayfair Is Having a '72-Hour Closeout' Sale to Compete With Prime Day (1) We Now Know When Google Will Roll Out Android 15 (1) What Is the 'Die With Zero' Movement (and Is It Right for You)? (1) What Not to Do When Training for a Marathon (1) What's New on Prime Video and Freevee in September 2024 (1) Windows (5) You Can Easily Add Words to Your Mac's Dictionary (1) You Can Get 'World War Z' on Sale for $19 Right Now (1) You Can Get a Membership to BJ's for Practically Free Right Now (1) You Can Get Beats Studio Buds+ on Sale for $100 Right Now (1) You Can Get Microsoft Visio 2021 Pro on Sale for $20 Right Now (1) You Can Get This 12-Port USB-C Hub on Sale for $90 Right Now (1) You Can Get This Roomba E5 Robot Vacuum on Sale for $170 Right Now (1) You Can Hire Your Own Personal HR Department (1) You Can Set Different Scrolling Directions for Your Mac’s Mouse and Trackpad (1)

Recent Comments

Popular Posts

Translate

My Blog List

Popular

System Admin Share

Total Pageviews