Create basic GObject structure for GraphView

This commit is contained in:
Mario Hüttel 2020-04-02 00:32:11 +02:00
parent 850ae7db43
commit 7323fd15e8
4 changed files with 139 additions and 8 deletions

View File

@ -1,18 +1,48 @@
/*
* This file is part of GtkGraphView.
*
* Foobar is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* GtkGraphView 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GtkGraphView. If not, see <https://www.gnu.org/licenses/>.
*/
#include <stdio.h>
#include <gtk/gtk.h>
#include <gtk-graph-view.h>
static gboolean main_window_delete_event(GtkWidget *window, gpointer user)
{
(void)user;
gtk_widget_destroy(window);
gtk_main_quit();
return FALSE;
}
int main(int argc, char **argv)
{
GtkWidget *main_window;
printf("Hello World!\n");
GtkWidget *graph_view;
gtk_init(&argc, &argv);
main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(main_window);
gtk_window_set_default_size(GTK_WINDOW(main_window), 800, 800);
g_signal_connect(main_window, "delete-event", G_CALLBACK(main_window_delete_event), NULL);
graph_view = gtk_graph_view_new();
gtk_container_add(GTK_CONTAINER(main_window), graph_view);
gtk_widget_show_all(main_window);
gtk_main();
return 0;

View File

@ -4,12 +4,14 @@ project(gtkgraphview LANGUAGES C)
find_package(PkgConfig REQUIRED)
pkg_search_module(GLIB REQUIRED glib-2.0)
pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
pkg_check_modules(EPOXY REQUIRED epoxy)
add_compile_options(-Wall -Wextra -Wold-style-declaration -Wuninitialized -Wmaybe-uninitialized -Wunused-parameter)
aux_source_directory("src" SRC_DIR)
add_library(${PROJECT_NAME} SHARED ${SRC_DIR})
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_link_libraries(${PROJECT_NAME} PUBLIC ${GLIB_LDFLAGS} ${GTK3_LDFLAGS})
target_link_directories(${PROJECT_NAME} PUBLIC ${GLIB_LINK_DIRS} ${GTK3_LINK_DIRS})
target_include_directories(${PROJECT_NAME} PRIVATE ${EPOXY_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} PUBLIC ${GLIB_LDFLAGS} ${GTK3_LDFLAGS} ${EPOXY_LDFLAGS})
target_link_directories(${PROJECT_NAME} PUBLIC ${GLIB_LINK_DIRS} ${GTK3_LINK_DIRS} ${EPOXY_LINK_DIRS})
target_include_directories(${PROJECT_NAME} PUBLIC ${GLIB_INCLUDE_DIRS} ${GTK3_INCLUDE_DIRS})

View File

@ -0,0 +1,49 @@
/*
* This file is part of GtkGraphView.
*
* Foobar is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* GtkGraphView 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GtkGraphView. If not, see <https://www.gnu.org/licenses/>.
*/
/**
* @file gtk-graph-view.h
* @brief header file for the GtkGraphView Widget
* @author Mario Hüttel <mario.huettel@gmx.net>
*/
/**
* @addtogroup GtkGraphView
* @{
*/
#ifndef __GTK_GRAPH_VIEW_H__
#define __GTK_GRAPH_VIEW_H__
#include <gtk/gtk.h>
G_BEGIN_DECLS
#define GTK_TYPE_GRAPH_VIEW (gtk_graph_view_get_type())
G_DECLARE_FINAL_TYPE(GtkGraphView, gtk_graph_view, GTK, GRAPH_VIEW, GtkGLArea)
/**
* @brief Instanciate new GtkGraphView object
* @return created object
*/
GtkWidget *gtk_graph_view_new();
G_END_DECLS
#endif /* __GTK_GRAPH_VIEW_H__ */
/** @} */

View File

@ -1,6 +1,56 @@
#include <gtk-graph-view.h>
/*
* This file is part of GtkGraphView.
*
* Foobar is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* GtkGraphView 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GtkGraphView. If not, see <https://www.gnu.org/licenses/>.
*/
int test()
#include <gtk-graph-view.h>
#include <epoxy/gl.h>
struct _GtkGraphView {
GtkGLArea parent;
};
typedef struct {
int i; /**< @note This is just a dummy. Remove! */
} GtkGraphViewPrivate;
G_DEFINE_TYPE_WITH_PRIVATE(GtkGraphView, gtk_graph_view, GTK_TYPE_GL_AREA)
/**
* @brief Init class structure of GtkGraphView
* @param klass Class structure
*/
static void gtk_graph_view_class_init(GtkGraphViewClass *klass)
{
return 1;
(void)klass;
return;
}
/**
* @brief Init a new GtkGraphView GObject
* @param obj Object to initialize
*/
static void gtk_graph_view_init(GtkGraphView *obj)
{
GtkGraphViewPrivate *priv;
priv = gtk_graph_view_get_instance_private(obj);
priv->i = 0;
}
GtkWidget *gtk_graph_view_new()
{
return gtk_widget_new(GTK_TYPE_GRAPH_VIEW, NULL);
}