Upgrade desktop dialogs from GTK2 to GTK3 (#124)

This commit is contained in:
griffi-gh 2023-08-16 20:02:10 +02:00 committed by GitHub
commit d11112cdfa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 1656 additions and 2694 deletions

View file

@ -20,7 +20,7 @@ jobs:
- name: Install deps
run: |
sudo apt-get update
sudo apt-get install -y libgtk2.0-dev libgl-dev libglew-dev libxss-dev libxxf86vm-dev libasound2-dev libudev-dev valgrind libcurl4-openssl-dev libpng-dev libjpeg-dev libfreetype6-dev libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-mixer-dev libsdl2-gfx-dev
sudo apt-get install -y libgtk-3-dev libgtksourceview-4-dev libgl-dev libglew-dev libxss-dev libxxf86vm-dev libasound2-dev libudev-dev valgrind libcurl4-openssl-dev libpng-dev libjpeg-dev libfreetype6-dev libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-mixer-dev libsdl2-gfx-dev
- name: Build
run: |
cd build-linux/
@ -44,7 +44,8 @@ jobs:
mingw-w64-x86_64-toolchain
autotools
mingw-w64-x86_64-curl
mingw-w64-x86_64-gtk2
mingw-w64-x86_64-gtk3
mingw-w64-x86_64-gtksourceview4
mingw-w64-x86_64-libpng
mingw-w64-x86_64-libjpeg-turbo
mingw-w64-x86_64-freetype
@ -93,4 +94,3 @@ jobs:
with:
name: principia-release-unsigned.apk
path: build-android/principia/build/outputs/apk/release/principia-release-unsigned.apk

2
.gitignore vendored
View file

@ -58,3 +58,5 @@ configure~
build-android/principia/deps
build-android/deps__
__pycache__
/debug.css

View file

@ -41,7 +41,7 @@ After installation, a terminal opens. Run the following command to update the en
The terminal will then ask you to close it when done. Proceed with doing so, and then go to the start menu and run MSYS Mingw32 64-bit. It is important that you run the "MINGW64 64-Bit" version and not the "MSYS2 MSYS" or "MINGW64 32-Bit". Run the commands below to install the necessary dependencies.
$ pacman -S --needed base-devel mingw-w64-x86_64-toolchain autotools
$ pacman -S mingw-w64-x86_64-curl mingw-w64-x86_64-gtk2 mingw-w64-x86_64-libpng mingw-w64-x86_64-libjpeg-turbo mingw-w64-x86_64-freetype mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL2_gfx mingw-w64-x86_64-SDL2_image mingw-w64-x86_64-SDL2_mixer mingw-w64-x86_64-SDL2_ttf
$ pacman -S mingw-w64-x86_64-curl mingw-w64-x86_64-gtk3 mingw-w64-x86_64-gtksourceview4 mingw-w64-x86_64-libpng mingw-w64-x86_64-libjpeg-turbo mingw-w64-x86_64-freetype mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL2_gfx mingw-w64-x86_64-SDL2_image mingw-w64-x86_64-SDL2_mixer mingw-w64-x86_64-SDL2_ttf
Then navigate to the 'build-windows' folder inside of where you cloned Principia, for example:
@ -67,15 +67,15 @@ For making Windows release builds you would run the `make_release.sh` script, wh
Install dependencies. For Debian-based distros:
$ sudo apt-get install automake libgtk2.0-dev libgl-dev libglew-dev libxss-dev libxxf86vm-dev libasound2-dev libudev-dev valgrind libcurl4-openssl-dev libpng-dev libjpeg-dev libfreetype6-dev libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-mixer-dev libsdl2-gfx-dev
$ sudo apt-get install automake libgtk-3-dev libgtksourceview-4-dev libgl-dev libglew-dev libxss-dev libxxf86vm-dev libasound2-dev libudev-dev valgrind libcurl4-openssl-dev libpng-dev libjpeg-dev libfreetype6-dev libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-mixer-dev libsdl2-gfx-dev
For Arch-based distros:
$ sudo pacman -S glew gtk2 curl freetype2 libpng libjpeg sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_ttf
$ sudo pacman -S glew gtk3 gtksourceview4 curl freetype2 libpng libjpeg sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_ttf
For Fedora:
$ sudo dnf install @development-tools automake gcc-c++ freetype-devel libcurl-devel libpng-devel libjpeg-turbo-devel gtk2-devel SDL2-devel SDL2_image-devel SDL2_gfx-devel SDL2_ttf-devel SDL2_mixer-devel valgrind-devel libXxf86vm-devel glew-devel mesa-libGLU-devel alsa-lib-devel systemd-devel
$ sudo dnf install @development-tools automake gcc-c++ freetype-devel libcurl-devel libpng-devel libjpeg-turbo-devel gtk3-devel gtksourceview4-devel SDL2-devel SDL2_image-devel SDL2_gfx-devel SDL2_ttf-devel SDL2_mixer-devel valgrind-devel libXxf86vm-devel glew-devel mesa-libGLU-devel alsa-lib-devel systemd-devel
For NixOS, Follow the instructions [here](./nix/README.md).

View file

@ -8,7 +8,8 @@ GLOBAL_FLAGS := -DGL_GLEXT_PROTOTYPES \
-DLUASOCKET_INET_PTON \
-D__STDC_FORMAT_MACROS=1 \
-DSDL_NO_COMPAT \
-DUNICODE
-DUNICODE \
-DUSE_GTK_SOURCE_VIEW
GLOBAL_FLAGS += -I../src/tms/backends/linux/ \
-I../src/src/ -I../src/ -I/usr/include/ \
@ -20,11 +21,12 @@ GLOBAL_FLAGS += -I../src/tms/backends/linux/ \
-I../src/include/ \
-I../src/gtk-undo \
${GTK_CFLAGS} \
${GTK_SOURCEVIEW_CFLAGS} \
-I../src/lua/
principia_CFLAGS = ${GLOBAL_FLAGS} -std=gnu99
principia_CXXFLAGS = ${GLOBAL_FLAGS}
principia_LDADD = -lz -ldl -lGL -lGLEW -lpthread -lX11 -lXi -lrt ${GTK_LIBS} -lcurl -ljpeg -lpng -lfreetype ${SDL2_LIBS} ${SDL2_TTF_LIBS} ${SDL2_GFX_LIBS} ${SDL2_IMAGE_LIBS} ${SDL2_MIXER_LIBS}
principia_LDADD = -lz -ldl -lGL -lGLEW -lpthread -lX11 -lXi -lrt ${GTK_SOURCEVIEW_LIBS} ${GTK_LIBS} -lcurl -ljpeg -lpng -lfreetype ${SDL2_LIBS} ${SDL2_TTF_LIBS} ${SDL2_GFX_LIBS} ${SDL2_IMAGE_LIBS} ${SDL2_MIXER_LIBS}
principia_LDFLAGS =
principia_SOURCES = \
@ -66,10 +68,6 @@ principia_SOURCES = \
../src/tms/bindings/cpp/cpp.cc \
../src/tms/modules/3ds/3ds.c \
\
\
../src/gtk-undo/undo_manager.c \
../src/gtk-undo/undo_view.c \
\
../src/lua/eris.c \
../src/lua/lapi.c \
../src/lua/lauxlib.c \

View file

@ -6,8 +6,8 @@ AM_SILENT_RULES([yes])
AC_PROG_CC
AC_PROG_CXX
PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.0)
PKG_CHECK_MODULES(GTK, gtk+-3.0 gdk-3.0)
PKG_CHECK_MODULES(GTK_SOURCEVIEW, gtksourceview-4)
PKG_CHECK_MODULES(SDL2, sdl2 >= 2.0.0)
PKG_CHECK_MODULES(SDL2_TTF, SDL2_ttf >= 2.0.0)
PKG_CHECK_MODULES(SDL2_GFX, SDL2_gfx >= 1.0.0)

View file

@ -11,7 +11,8 @@ GLOBAL_FLAGS := -DGL_GLEXT_PROTOTYPES \
-DUNICODE \
-DTMS_FAST_MATH \
-DTMS_BACKEND_WINDOWS \
-DTMS_BACKEND_PC
-DTMS_BACKEND_PC \
-DUSE_GTK_SOURCE_VIEW
TMS_PATH = ../src/tms
ROOT = ../
@ -24,19 +25,22 @@ GLOBAL_FLAGS += -I../src/tms/backends/windows/ \
-I/mingw64/include/ \
-I/mingw64/include/freetype2 \
-I/mingw64/include/SDL2/ \
-I/mingw64/include/gtksourceview-4 \
-I/mingw64/include/gtk-3.0 \
-I/mingw64/include/pango-1.0 \
-I/mingw64/include/glib-2.0 \
-I/mingw64/lib/glib-2.0/include \
-I/mingw64/lib/gtk-2.0/include \
-I/mingw64/include/glib-2.0/glib \
-I/mingw64/include/gdk-pixbuf-2.0 \
-I/mingw64/include/atk-1.0 \
-I/mingw64/include/gtk-2.0/ \
-I/mingw64/include/cairo \
-I/mingw64/include/harfbuzz \
-I/mingw64/include/pango-1.0 \
-I../src/gtk-undo \
-I../src/lua/ -I../src/include/
-I/mingw64/include/freetype2 \
-I/mingw64/include/libpng1 \
-I/mingw64/include/fribidi \
-I/mingw64/include/cairo \
-I/mingw64/include/pixman-1 \
-I/mingw64/include/gdk-pixbuf-2.0 \
-I/mingw64/include/webp \
-I/mingw64/include/atk-1.0 \
-I../src/lua/ -I../src/include/ \
-DLIBDEFLATE_DLL
principia_CFLAGS = ${GLOBAL_FLAGS} -std=gnu99
@ -45,7 +49,8 @@ principia_CPPFLAGS = -static-libgcc -static-libstdc++
principia_LDADD = -L`pwd` -lopengl32 -lz \
-lmingw32 -lws2_32 -lwinmm -luuid -loleaut32 -limm32 -lversion \
-lole32 -luser32 \
-lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lpango-1.0 -lgdi32 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl \
-lgtksourceview-4 \
-lgtk-3 -lgdk-3 -lz -lgdi32 -limm32 -lshell32 -lole32 -luuid -lwinmm -ldwmapi -lsetupapi -lcfgmgr32 -lhid -lwinspool -lcomctl32 -lcomdlg32 -lpangowin32-1.0 -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl \
-lcurl -lShlwapi -lpng -ljpeg -lfreetype -lSDL2 -lSDL2_image -lSDL2_mixer -lSDL2_gfx -lSDL2_ttf
principia_SOURCES = \
@ -134,9 +139,6 @@ principia.rc \
../src/tms/bindings/cpp/cpp.cc \
../src/tms/modules/3ds/3ds.c \
\
../src/gtk-undo/undo_manager.c \
../src/gtk-undo/undo_view.c \
\
../src/src/fluid.cc \
../src/src/oilrig.cc \
../src/src/factory.cc \
@ -376,4 +378,3 @@ principia.rc \
windres $^ -o $@
%.o : %.rc
windres $^ -o $@

View file

@ -7,7 +7,8 @@
, fribidi
, freetype
, glew
, gtk2
, gtk3
, gtksourceview4
, libdatrie
, libGL
, libjpeg
@ -49,7 +50,7 @@ stdenv.mkDerivation {
curl
fribidi
glew
gtk2
gtk3
libdatrie
libGL
libjpeg
@ -115,4 +116,3 @@ stdenv.mkDerivation {
};
}

File diff suppressed because it is too large Load diff

View file

@ -1,86 +0,0 @@
/*
* Copyright (C) 1998, 1999 Alex Roberts, Evan Lawrence
* Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi
* Copyright (C) 2002, 2003 Paolo Maggi
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef CHROME_BROWSER_AUTOCOMPLETE_UNDO_MANAGER_H_
#define CHROME_BROWSER_AUTOCOMPLETE_UNDO_MANAGER_H_
#include <gtk/gtk.h>
G_BEGIN_DECLS
#define GTK_SOURCE_TYPE_UNDO_MANAGER (gtk_source_undo_manager_get_type())
#define GTK_SOURCE_UNDO_MANAGER(obj) \
(G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_SOURCE_TYPE_UNDO_MANAGER, GtkSourceUndoManager))
#define GTK_SOURCE_UNDO_MANAGER_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST((klass), GTK_SOURCE_TYPE_UNDO_MANAGER, GtkSourceUndoManagerClass))
#define GTK_SOURCE_IS_UNDO_MANAGER(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE((obj), GTK_SOURCE_TYPE_UNDO_MANAGER))
#define GTK_SOURCE_IS_UNDO_MANAGER_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE((klass), GTK_SOURCE_TYPE_UNDO_MANAGER))
#define GTK_SOURCE_UNDO_MANAGER_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS((obj), GTK_SOURCE_TYPE_UNDO_MANAGER, GtkSourceUndoManagerClass))
typedef struct _GtkSourceUndoManager GtkSourceUndoManager;
typedef struct _GtkSourceUndoManagerClass GtkSourceUndoManagerClass;
typedef struct _GtkSourceUndoManagerPrivate GtkSourceUndoManagerPrivate;
struct _GtkSourceUndoManager
{
GObject base;
GtkSourceUndoManagerPrivate *priv;
};
struct _GtkSourceUndoManagerClass
{
GObjectClass parent_class;
/* Signals */
void (*can_undo)(GtkSourceUndoManager *um, gboolean can_undo);
void (*can_redo)(GtkSourceUndoManager *um, gboolean can_redo);
};
GType gtk_source_undo_manager_get_type(void) G_GNUC_CONST;
GtkSourceUndoManager* gtk_source_undo_manager_new(GtkTextBuffer *buffer);
gboolean gtk_source_undo_manager_can_undo(const GtkSourceUndoManager *um);
gboolean gtk_source_undo_manager_can_redo(const GtkSourceUndoManager *um);
void gtk_source_undo_manager_undo(GtkSourceUndoManager *um);
void gtk_source_undo_manager_redo(GtkSourceUndoManager *um);
void gtk_source_undo_manager_begin_not_undoable_action(GtkSourceUndoManager *um);
void gtk_source_undo_manager_end_not_undoable_action(GtkSourceUndoManager *um);
gint gtk_source_undo_manager_get_max_undo_levels(GtkSourceUndoManager *um);
void gtk_source_undo_manager_set_max_undo_levels(GtkSourceUndoManager *um,
gint undo_levels);
G_END_DECLS
#endif // CHROME_BROWSER_AUTOCOMPLETE_UNDO_MANAGER_H_

View file

@ -1,83 +0,0 @@
// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Boilerplate code was generated by http://burtonini.com/cgi/gobject.py
#include <gdk/gdkkeysyms.h>
#include "undo_view.h"
G_DEFINE_TYPE (GtkUndoView, gtk_undo_view, GTK_TYPE_TEXT_VIEW)
static void
gtk_undo_view_dispose(GObject *object) {
GtkUndoView *uview = GTK_UNDO_VIEW(object);
if(uview->undo_manager_) {
g_object_unref(G_OBJECT(uview->undo_manager_));
uview->undo_manager_ = NULL;
}
G_OBJECT_CLASS(gtk_undo_view_parent_class)->dispose(object);
}
static void
gtk_undo_view_undo(GtkUndoView *uview) {
if(gtk_source_undo_manager_can_undo(uview->undo_manager_))
gtk_source_undo_manager_undo(uview->undo_manager_);
}
static void
gtk_undo_view_redo(GtkUndoView *uview) {
if(gtk_source_undo_manager_can_redo(uview->undo_manager_))
gtk_source_undo_manager_redo(uview->undo_manager_);
}
static void
gtk_undo_view_class_init(GtkUndoViewClass *klass) {
GObjectClass *object_class = G_OBJECT_CLASS(klass);
GtkBindingSet *binding_set;
g_signal_new("undo",
G_TYPE_FROM_CLASS(klass),
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET(GtkUndoViewClass, undo),
NULL,
NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE,
0);
g_signal_new("redo",
G_TYPE_FROM_CLASS(klass),
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET(GtkUndoViewClass, redo),
NULL,
NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE,
0);
klass->undo = gtk_undo_view_undo;
klass->redo = gtk_undo_view_redo;
binding_set = gtk_binding_set_by_class(klass);
gtk_binding_entry_add_signal(binding_set, GDK_z, GDK_CONTROL_MASK, "undo", 0);
gtk_binding_entry_add_signal(binding_set, GDK_y, GDK_CONTROL_MASK, "redo", 0);
gtk_binding_entry_add_signal(binding_set, GDK_z, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "redo", 0);
gtk_binding_entry_add_signal(binding_set, GDK_F14, 0, "undo", 0);
object_class->dispose = gtk_undo_view_dispose;
}
static void
gtk_undo_view_init(GtkUndoView *self) {
}
GtkWidget*
gtk_undo_view_new(GtkTextBuffer *buffer) {
GtkWidget *ret = g_object_new(GTK_TYPE_UNDO_VIEW, "buffer", buffer, NULL);
GTK_UNDO_VIEW(ret)->undo_manager_ = gtk_source_undo_manager_new(GTK_TEXT_BUFFER(buffer));
return ret;
}

View file

@ -1,51 +0,0 @@
// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Boilerplate code was generated by http://burtonini.com/cgi/gobject.py
#ifndef CHROME_BROWSER_AUTOCOMPLETE_UNDO_VIEW_H_
#define CHROME_BROWSER_AUTOCOMPLETE_UNDO_VIEW_H_
#include <gtk/gtk.h>
#include "undo_manager.h"
G_BEGIN_DECLS
#define GTK_TYPE_UNDO_VIEW gtk_undo_view_get_type()
#define GTK_UNDO_VIEW(obj) \
(G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_TYPE_UNDO_VIEW, GtkUndoView))
#define GTK_UNDO_VIEW_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST((klass), GTK_TYPE_UNDO_VIEW, GtkUndoViewClass))
#define GTK_IS_UNDO_VIEW(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE((obj), GTK_TYPE_UNDO_VIEW))
#define GTK_IS_UNDO_VIEW_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE((klass), GTK_TYPE_UNDO_VIEW))
#define GTK_UNDO_VIEW_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS((obj), GTK_TYPE_UNDO_VIEW, GtkUndoViewClass))
typedef struct {
GtkTextView parent;
GtkSourceUndoManager *undo_manager_;
} GtkUndoView;
typedef struct {
GtkTextViewClass parent_class;
void (*undo)(GtkUndoView *);
void (*redo)(GtkUndoView *);
} GtkUndoViewClass;
GType gtk_undo_view_get_type(void);
GtkWidget* gtk_undo_view_new(GtkTextBuffer *buffer);
G_END_DECLS
#endif // CHROME_BROWSER_AUTOCOMPLETE_UNDO_VIEW_H_

View file

@ -244,6 +244,12 @@ const char *available_bgs[] = {
};
const int num_bgs = sizeof(available_bgs)/sizeof(void*);
const int colored_bgs[] = {
6, /* Colored */
7, /* Colored space */
-1
};
static const char *menu_bgsources[] = {
"attribute vec2 position;"
"attribute vec2 texcoord;"

View file

@ -354,4 +354,6 @@ extern tms::shader *shader_pv_textured_ao;
extern const char *available_bgs[];
extern const int num_bgs;
extern const int colored_bgs[];
#endif

File diff suppressed because it is too large Load diff