Create basic GObject structure for GraphView
This commit is contained in:
		@@ -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;
 | 
			
		||||
 
 | 
			
		||||
@@ -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})
 | 
			
		||||
 
 | 
			
		||||
@@ -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__ */
 | 
			
		||||
 | 
			
		||||
/** @} */
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user