Skip to content

Commit

Permalink
Move from GTK2 to GTK3
Browse files Browse the repository at this point in the history
  • Loading branch information
Fulgen301 committed Jul 2, 2024
1 parent e5b276f commit 602e136
Show file tree
Hide file tree
Showing 17 changed files with 94 additions and 129 deletions.
9 changes: 6 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -336,11 +336,14 @@ if (NOT USE_CONSOLE)
set(HAVE_FREETYPE 1)
endif ()

# Link GTK2
# Link GTK3
if (WITH_DEVELOPER_MODE)
set(WITH_GLIB 1)
find_package(GTK2 2.4 REQUIRED gtk)
target_link_libraries(clonk GTK2::gtk)
find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
target_include_directories(clonk PRIVATE ${GTK3_INCLUDE_DIRS})
target_link_libraries(clonk ${GTK3_LIBRARIES})
target_compile_definitions(clonk PRIVATE GTK_DISABLE_SINGLE_INCLUDES GDK_DISABLE_DEPRECATED GSEAL_ENABLE)
endif ()

# Link iconv
Expand Down
41 changes: 12 additions & 29 deletions src/C4Console.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,24 +66,7 @@ namespace

#include <gdk/gdkcursor.h>
#include <gdk/gdkx.h>
#include <gtk/gtkstock.h>
#include <gtk/gtkwindow.h>
#include <gtk/gtkmessagedialog.h>
#include <gtk/gtkfilechooserdialog.h>
#include <gtk/gtkaboutdialog.h>
#include <gtk/gtklabel.h>
#include <gtk/gtkbutton.h>
#include <gtk/gtktogglebutton.h>
#include <gtk/gtkhbox.h>
#include <gtk/gtkvbox.h>
#include <gtk/gtkscrolledwindow.h>
#include <gtk/gtkentry.h>
#include <gtk/gtkframe.h>
#include <gtk/gtkvseparator.h>
#include <gtk/gtktextview.h>
#include <gtk/gtkmenubar.h>
#include <gtk/gtkmenuitem.h>
#include <gtk/gtkseparatormenuitem.h>
#include <gtk/gtk.h>

#include <res/Play.h>
#include <res/Halt.h>
Expand Down Expand Up @@ -404,9 +387,9 @@ GtkWidget *C4Console::InitGUI()
gtk_container_add(GTK_CONTAINER(btnModeEdit), image_mode_edit);
gtk_container_add(GTK_CONTAINER(btnModeDraw), image_mode_draw);

GtkWidget *top_hbox = gtk_hbox_new(FALSE, 18);
GtkWidget *play_hbox = gtk_hbox_new(FALSE, 6);
GtkWidget *mode_hbox = gtk_hbox_new(FALSE, 6);
GtkWidget *top_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 18);
GtkWidget *play_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);
GtkWidget *mode_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);

gtk_box_pack_start(GTK_BOX(play_hbox), btnPlay, FALSE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(play_hbox), btnHalt, FALSE, TRUE, 0);
Expand All @@ -423,7 +406,7 @@ GtkWidget *C4Console::InitGUI()

// Statusbar

GtkWidget *statusbar = gtk_hbox_new(FALSE, 6);
GtkWidget *statusbar = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);

GtkWidget *status_frame = gtk_frame_new(nullptr);
gtk_frame_set_shadow_type(GTK_FRAME(status_frame), GTK_SHADOW_IN);
Expand All @@ -437,8 +420,8 @@ GtkWidget *C4Console::InitGUI()
gtk_misc_set_alignment(GTK_MISC(lblScript), 0.0, 0.5);
gtk_misc_set_alignment(GTK_MISC(lblTime), 0.0, 0.5);

GtkWidget *sep1 = gtk_vseparator_new();
GtkWidget *sep2 = gtk_vseparator_new();
GtkWidget *sep1 = gtk_separator_new(GTK_ORIENTATION_VERTICAL);
GtkWidget *sep2 = gtk_separator_new(GTK_ORIENTATION_VERTICAL);

gtk_box_pack_start(GTK_BOX(statusbar), lblFrame, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(statusbar), sep1, FALSE, FALSE, 0);
Expand Down Expand Up @@ -544,8 +527,8 @@ GtkWidget *C4Console::InitGUI()

// Window

GtkWidget *topbox = gtk_vbox_new(FALSE, 0);
GtkWidget *midbox = gtk_vbox_new(FALSE, 6);
GtkWidget *topbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
GtkWidget *midbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6);
gtk_container_set_border_width(GTK_CONTAINER(midbox), 6);

gtk_box_pack_start(GTK_BOX(midbox), scroll, TRUE, TRUE, 0);
Expand Down Expand Up @@ -760,7 +743,7 @@ bool C4Console::SaveGame(bool fSaveGame)
SetCursor(LoadCursor(0, IDC_WAIT));
#elif WITH_DEVELOPER_MODE
// Seems not to work. Don't know why...
gdk_window_set_cursor(window->window, cursorWait);
gdk_window_set_cursor(gtk_widget_get_window(window), cursorWait);
#endif

C4GameSave *pGameSave;
Expand All @@ -787,7 +770,7 @@ bool C4Console::SaveGame(bool fSaveGame)
#ifdef _WIN32
SetCursor(LoadCursor(0, IDC_ARROW));
#elif WITH_DEVELOPER_MODE
gdk_window_set_cursor(window->window, nullptr);
gdk_window_set_cursor(gtk_widget_get_window(window), nullptr);
#endif

// Initialize/script notification
Expand Down Expand Up @@ -1027,7 +1010,7 @@ bool C4Console::FileSelect(char *sFilename, int iSize, const char *szFilter, uin
SetCurrentDirectory(Config.General.ExePath);
return fResult;
#elif WITH_DEVELOPER_MODE
GtkWidget *dialog = gtk_file_chooser_dialog_new(fSave ? "Save file..." : "Load file...", GTK_WINDOW(window), fSave ? GTK_FILE_CHOOSER_ACTION_SAVE : GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, fSave ? GTK_STOCK_SAVE : GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, nullptr);
GtkWidget *dialog = gtk_file_chooser_dialog_new(fSave ? "Save file..." : "Load file...", GTK_WINDOW(window), fSave ? GTK_FILE_CHOOSER_ACTION_SAVE : GTK_FILE_CHOOSER_ACTION_OPEN, "format-text-bold", GTK_RESPONSE_CANCEL, fSave ? "document-save" : "document-open", GTK_RESPONSE_ACCEPT, nullptr);

// TODO: Set dialog modal?

Expand Down
2 changes: 1 addition & 1 deletion src/C4Console.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
#include <StdWindow.h>

#ifdef WITH_DEVELOPER_MODE
#include <gtk/gtkwidget.h>
#include <gtk/gtk.h>
#endif

const int C4CNS_ModePlay = 0,
Expand Down
5 changes: 2 additions & 3 deletions src/C4DevmodeDlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,7 @@

#include <cassert>

#include <gtk/gtknotebook.h>
#include <gtk/gtklabel.h>
#include <gtk/gtk.h>

GtkWidget *C4DevmodeDlg::window = nullptr;
GtkWidget *C4DevmodeDlg::notebook = nullptr;
Expand Down Expand Up @@ -90,7 +89,7 @@ void C4DevmodeDlg::RemovePage(GtkWidget *widget)

void C4DevmodeDlg::SwitchPage(GtkWidget *widget)
{
bool is_visible = GTK_WIDGET_VISIBLE(GTK_WIDGET(window));
bool is_visible = gtk_widget_get_visible(GTK_WIDGET(window));

// Remember window position
if (window != nullptr && is_visible)
Expand Down
3 changes: 1 addition & 2 deletions src/C4DevmodeDlg.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,7 @@
#pragma once

#ifdef WITH_DEVELOPER_MODE
#include <gtk/gtkwidget.h>
#include <gtk/gtkwindow.h>
#include <gtk/gtk.h>
#endif // WITH_DEVELOPER_MODE

// TODO: Threadsafety?
Expand Down
6 changes: 1 addition & 5 deletions src/C4EditCursor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,7 @@
#ifdef WITH_DEVELOPER_MODE
#include <C4Language.h>

#include <gtk/gtklabel.h>
#include <gtk/gtkmenushell.h>
#include <gtk/gtkmenu.h>
#include <gtk/gtkmenuitem.h>
#include <gtk/gtkseparatormenuitem.h>
#include <gtk/gtk.h>
#endif

C4EditCursor::C4EditCursor()
Expand Down
2 changes: 1 addition & 1 deletion src/C4EditCursor.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
#include "C4Control.h"

#ifdef WITH_DEVELOPER_MODE
#include <gtk/gtkwidget.h>
#include <gtk/gtk.h>
#endif

class C4EditCursor
Expand Down
4 changes: 1 addition & 3 deletions src/C4ObjectListDlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@

#ifdef WITH_DEVELOPER_MODE
#include <gtk/gtk.h>
#include <gtk/gtknotebook.h>
#include <gtk/gtklabel.h>

/* Some boilerplate GObject defines. 'klass' is used instead of 'class', because 'class' is a C++ keyword */

Expand Down Expand Up @@ -745,7 +743,7 @@ void C4ObjectListDlg::Open()
g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(OnDestroy), this);

// The VBox and Tree
GtkWidget *vbox = gtk_vbox_new(FALSE, 8);
GtkWidget *vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 8);

GtkWidget *scrolled_wnd = gtk_scrolled_window_new(nullptr, nullptr);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_wnd), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
Expand Down
4 changes: 1 addition & 3 deletions src/C4ObjectListDlg.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@
#pragma once

#ifdef WITH_DEVELOPER_MODE
#include <gtk/gtkwidget.h>
#include <gtk/gtkwindow.h>
#include <gtk/gtktreeselection.h>
#include <gtk/gtk.h>
#endif // WITH_DEVELOPER_MODE

#include "C4ObjectList.h"
Expand Down
8 changes: 2 additions & 6 deletions src/C4PropertyDlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,7 @@
#include <C4DevmodeDlg.h>
#include <C4Language.h>

#include <gtk/gtkentry.h>
#include <gtk/gtkvbox.h>
#include <gtk/gtktextview.h>
#include <gtk/gtkwindow.h>
#include <gtk/gtkscrolledwindow.h>
#include <gtk/gtk.h>
#endif

#ifdef _WIN32
Expand Down Expand Up @@ -121,7 +117,7 @@ bool C4PropertyDlg::Open()
#ifdef WITH_DEVELOPER_MODE
if (vbox == nullptr)
{
vbox = gtk_vbox_new(FALSE, 6);
vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6);

GtkWidget *scrolled_wnd = gtk_scrolled_window_new(nullptr, nullptr);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_wnd), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
Expand Down
2 changes: 1 addition & 1 deletion src/C4PropertyDlg.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
#include "C4ObjectList.h"

#ifdef WITH_DEVELOPER_MODE
#include <gtk/gtkwidget.h>
#include <gtk/gtk.h>
#endif

class C4PropertyDlg
Expand Down
44 changes: 18 additions & 26 deletions src/C4ToolsDlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,6 @@
#include <C4Language.h>
#include <C4DevmodeDlg.h>

#include <gtk/gtkwindow.h>
#include <gtk/gtkimage.h>
#include <gtk/gtktogglebutton.h>
#include <gtk/gtkvscale.h>
#include <gtk/gtkhbox.h>
#include <gtk/gtkvbox.h>
#include <gtk/gtkcombobox.h>
#include <gtk/gtkstock.h>
#include <gtk/gtk.h>

#include <res/Brush.h>
Expand Down Expand Up @@ -284,8 +276,8 @@ bool C4ToolsDlg::Open()
#elif defined(WITH_DEVELOPER_MODE)
if (hbox == nullptr)
{
hbox = gtk_hbox_new(FALSE, 12);
GtkWidget *vbox = gtk_vbox_new(FALSE, 6);
hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 12);
GtkWidget *vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6);

GtkWidget *image_brush = CreateImageFromInlinedPixbuf(brush_pixbuf_data);
GtkWidget *image_line = CreateImageFromInlinedPixbuf(line_pixbuf_data);
Expand Down Expand Up @@ -313,9 +305,9 @@ bool C4ToolsDlg::Open()
gtk_box_pack_start(GTK_BOX(vbox), landscape_exact, FALSE, FALSE, 0);

gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
vbox = gtk_vbox_new(FALSE, 12);
vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 12);
gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0);
GtkWidget *local_hbox = gtk_hbox_new(FALSE, 6);
GtkWidget *local_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);

brush = gtk_toggle_button_new();
line = gtk_toggle_button_new();
Expand All @@ -336,16 +328,16 @@ bool C4ToolsDlg::Open()
gtk_box_pack_start(GTK_BOX(local_hbox), picker, FALSE, FALSE, 0);

gtk_box_pack_start(GTK_BOX(vbox), local_hbox, FALSE, FALSE, 0);
local_hbox = gtk_hbox_new(FALSE, 12);
local_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 12);
gtk_box_pack_start(GTK_BOX(vbox), local_hbox, TRUE, TRUE, 0);

preview = gtk_image_new();
gtk_box_pack_start(GTK_BOX(local_hbox), preview, FALSE, FALSE, 0);

scale = gtk_vscale_new(nullptr);
scale = gtk_scale_new(GTK_ORIENTATION_VERTICAL, nullptr);
gtk_box_pack_start(GTK_BOX(local_hbox), scale, FALSE, FALSE, 0);

vbox = gtk_vbox_new(FALSE, 6);
vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6);

ift = gtk_toggle_button_new();
no_ift = gtk_toggle_button_new();
Expand All @@ -358,10 +350,10 @@ bool C4ToolsDlg::Open()

gtk_box_pack_start(GTK_BOX(local_hbox), vbox, FALSE, FALSE, 0);

vbox = gtk_vbox_new(FALSE, 6);
vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6);

materials = gtk_combo_box_new_text();
textures = gtk_combo_box_new_text();
materials = gtk_combo_box_text_new();
textures = gtk_combo_box_text_new();

gtk_combo_box_set_row_separator_func(GTK_COMBO_BOX(materials), RowSeparatorFunc, nullptr, nullptr);
gtk_combo_box_set_row_separator_func(GTK_COMBO_BOX(textures), RowSeparatorFunc, nullptr, nullptr);
Expand Down Expand Up @@ -491,10 +483,10 @@ void C4ToolsDlg::InitMaterialCtrls()
g_signal_handler_block(materials, handlerMaterials);
gtk_list_store_clear(list);

gtk_combo_box_append_text(GTK_COMBO_BOX(materials), C4TLS_MatSky);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(materials), C4TLS_MatSky);
for (int32_t cnt = 0; cnt < Game.Material.Num; cnt++)
{
gtk_combo_box_append_text(GTK_COMBO_BOX(materials), Game.Material.Map[cnt].Name);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(materials), Game.Material.Map[cnt].Name);
}
g_signal_handler_unblock(materials, handlerMaterials);
SelectComboBoxText(GTK_COMBO_BOX(materials), Material);
Expand Down Expand Up @@ -523,7 +515,7 @@ void C4ToolsDlg::UpdateTextures()
#ifdef _WIN32
SendDlgItemMessage(hDialog, IDC_COMBOTEXTURE, CB_INSERTSTRING, 0, reinterpret_cast<LPARAM>(szTexture));
#elif defined(WITH_DEVELOPER_MODE)
gtk_combo_box_prepend_text(GTK_COMBO_BOX(textures), szTexture);
gtk_combo_box_text_prepend_text(GTK_COMBO_BOX_TEXT(textures), szTexture);
#endif
}
}
Expand All @@ -533,7 +525,7 @@ void C4ToolsDlg::UpdateTextures()
#ifdef _WIN32
SendDlgItemMessage(hDialog, IDC_COMBOTEXTURE, CB_INSERTSTRING, 0, reinterpret_cast<LPARAM>("-------"));
#elif defined(WITH_DEVELOPER_MODE)
gtk_combo_box_prepend_text(GTK_COMBO_BOX(textures), "-------");
gtk_combo_box_text_prepend_text(GTK_COMBO_BOX_TEXT(textures), "-------");
#endif
}

Expand All @@ -546,7 +538,7 @@ void C4ToolsDlg::UpdateTextures()
#ifdef _WIN32
SendDlgItemMessage(hDialog, IDC_COMBOTEXTURE, CB_INSERTSTRING, 0, reinterpret_cast<LPARAM>(szTexture));
#elif defined(WITH_DEVELOPER_MODE)
gtk_combo_box_prepend_text(GTK_COMBO_BOX(textures), szTexture);
gtk_combo_box_text_prepend_text(GTK_COMBO_BOX_TEXT(textures), szTexture);
#endif
}
}
Expand Down Expand Up @@ -667,7 +659,7 @@ void C4ToolsDlg::UpdatePreview()
#ifdef _WIN32
if (IsWindowEnabled(GetDlgItem(hDialog, IDC_PREVIEW)))
#elif defined(WITH_DEVELOPER_MODE)
if (GTK_WIDGET_SENSITIVE(preview))
if (gtk_widget_get_sensitive(preview))
#endif
Application.DDraw->DrawPatternedCircle(surfacePreview.get(),
previewWidth / 2, previewHeight / 2,
Expand Down Expand Up @@ -1043,14 +1035,14 @@ void C4ToolsDlg::OnButtonNoIft(GtkWidget *widget, gpointer data)

void C4ToolsDlg::OnComboMaterial(GtkWidget *widget, gpointer data)
{
gchar *text = gtk_combo_box_get_active_text(GTK_COMBO_BOX(widget));
gchar *text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widget));
static_cast<C4ToolsDlg *>(data)->SetMaterial(text);
g_free(text);
}

void C4ToolsDlg::OnComboTexture(GtkWidget *widget, gpointer data)
{
gchar *text = gtk_combo_box_get_active_text(GTK_COMBO_BOX(widget));
gchar *text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widget));
static_cast<C4ToolsDlg *>(data)->SetTexture(text);
g_free(text);
}
Expand Down
2 changes: 1 addition & 1 deletion src/C4ToolsDlg.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
#endif

#ifdef WITH_DEVELOPER_MODE
#include <gtk/gtkwidget.h>
#include <gtk/gtk.h>
#endif

const int32_t C4TLS_Brush = 0,
Expand Down
Loading

0 comments on commit 602e136

Please sign in to comment.