Main Window and list clear
* designed basic window * implemented free function to clear library structures
This commit is contained in:
parent
3cfdc86ef8
commit
7d3b7f96eb
@ -2,12 +2,14 @@ cmake_minimum_required(VERSION 2.8)
|
|||||||
|
|
||||||
find_package(PkgConfig REQUIRED)
|
find_package(PkgConfig REQUIRED)
|
||||||
pkg_search_module(GLIB REQUIRED glib-2.0)
|
pkg_search_module(GLIB REQUIRED glib-2.0)
|
||||||
|
pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
|
||||||
|
|
||||||
|
include_directories(${GLIB_INCLUDE_DIRS} ${GTK3_INCLUDE_DIRS})
|
||||||
include_directories(${GLIB_INCLUDE_DIRS})
|
link_directories(${GLIB_LINK_DIRS} ${GTK3_LINK_DIRS})
|
||||||
link_directories(${GLIB_LINK_DIRS})
|
configure_file(glade/main.glade glade/main.glade COPYONLY)
|
||||||
|
|
||||||
project(gds-render)
|
project(gds-render)
|
||||||
add_executable(${PROJECT_NAME} "main.c" "gdsparse.c")
|
add_executable(${PROJECT_NAME} "main.c" "gdsparse.c")
|
||||||
|
|
||||||
target_link_libraries(${PROJECT_NAME} ${GLIB_LDFLAGS} m)
|
|
||||||
|
target_link_libraries(${PROJECT_NAME} ${GLIB_LDFLAGS} ${GTK3_LDFLAGS} m)
|
||||||
|
39
gdsparse.c
39
gdsparse.c
@ -1,3 +1,13 @@
|
|||||||
|
/*
|
||||||
|
* What's missing? - A lot:
|
||||||
|
* Support for Boxes
|
||||||
|
* Support for 4 Byte real
|
||||||
|
* Support for pathtypes
|
||||||
|
* Support for datatypes (only layer so far)
|
||||||
|
* etc...
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "gdsparse.h"
|
#include "gdsparse.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -420,7 +430,7 @@ int parse_gds_from_file(const char *filename, GList **library_list)
|
|||||||
current_cell = NULL;
|
current_cell = NULL;
|
||||||
printf("Leaving Cell\n");
|
printf("Leaving Cell\n");
|
||||||
break;
|
break;
|
||||||
//case BOX:
|
//case BOX:
|
||||||
case BOUNDARY:
|
case BOUNDARY:
|
||||||
if (current_cell == NULL) {
|
if (current_cell == NULL) {
|
||||||
GDS_ERROR("Boundary outside of cell");
|
GDS_ERROR("Boundary outside of cell");
|
||||||
@ -600,3 +610,30 @@ int parse_gds_from_file(const char *filename, GList **library_list)
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void delete_cell_inst_element(struct gds_cell_instance *cell_inst)
|
||||||
|
{
|
||||||
|
free(cell_inst);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void delete_cell_element(struct gds_cell *cell)
|
||||||
|
{
|
||||||
|
g_list_free_full(cell->child_cells, (GDestroyNotify)delete_cell_inst_element);
|
||||||
|
free(cell);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void delete_library_element(struct gds_library *lib)
|
||||||
|
{
|
||||||
|
g_list_free(lib->cell_names);
|
||||||
|
g_list_free_full(lib->cells, (GDestroyNotify)delete_cell_element);
|
||||||
|
free(lib);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int clear_lib_list(GList **library_list)
|
||||||
|
{
|
||||||
|
if (*library_list == NULL) return 0;
|
||||||
|
g_list_free_full(*library_list, (GDestroyNotify)delete_library_element);
|
||||||
|
*library_list = NULL;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@ -57,6 +57,6 @@ struct gds_library {
|
|||||||
|
|
||||||
|
|
||||||
int parse_gds_from_file(const char *filename, GList **library_array);
|
int parse_gds_from_file(const char *filename, GList **library_array);
|
||||||
|
int clear_lib_list(GList **library_list);
|
||||||
|
|
||||||
#endif /* __GDSPARSE_H__ */
|
#endif /* __GDSPARSE_H__ */
|
||||||
|
126
glade/main.glade
Normal file
126
glade/main.glade
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- Generated with glade 3.22.1 -->
|
||||||
|
<interface>
|
||||||
|
<requires lib="gtk+" version="3.20"/>
|
||||||
|
<object class="GtkWindow">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<signal name="delete-event" handler="on_window_close" swapped="no"/>
|
||||||
|
<child type="titlebar">
|
||||||
|
<object class="GtkHeaderBar">
|
||||||
|
<property name="name">header</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="title" translatable="yes">GDS Renderer</property>
|
||||||
|
<property name="subtitle" translatable="yes">GDSII to PDF Converter</property>
|
||||||
|
<property name="show_close_button">True</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="button-load-gds">
|
||||||
|
<property name="label">gtk-open</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="use_stock">True</property>
|
||||||
|
<property name="always_show_image">True</property>
|
||||||
|
<style>
|
||||||
|
<class name="suggested-action"/>
|
||||||
|
</style>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSearchEntry">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="primary_icon_name">edit-find-symbolic</property>
|
||||||
|
<property name="primary_icon_activatable">False</property>
|
||||||
|
<property name="primary_icon_sensitive">False</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkListBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="selection_mode">browse</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkListBox">
|
||||||
|
<property name="name">layer-list</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton">
|
||||||
|
<property name="label">gtk-convert</property>
|
||||||
|
<property name="name">button-convert</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="use_stock">True</property>
|
||||||
|
<property name="always_show_image">True</property>
|
||||||
|
<style>
|
||||||
|
<class name="suggested-action"/>
|
||||||
|
</style>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</interface>
|
41
main.c
41
main.c
@ -1,14 +1,43 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "gdsparse.h"
|
#include "gdsparse.h"
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
|
gboolean on_window_close(gpointer window, gpointer user)
|
||||||
int main()
|
|
||||||
{
|
{
|
||||||
GList *libs = NULL;
|
gtk_widget_destroy(GTK_WIDGET(window));
|
||||||
unsigned int count = 0;
|
gtk_main_quit();
|
||||||
int i = 0;
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
parse_gds_from_file("/home/mari/Desktop/test.gds", &libs);
|
void on_load_gds(gpointer button, gpointer user)
|
||||||
|
{
|
||||||
|
GList **list_ptr = (GList **)user;
|
||||||
|
|
||||||
|
// TODO: File dialog
|
||||||
|
clear_lib_list(list_ptr);
|
||||||
|
parse_gds_from_file("/home/mari/Desktop/test.gds", list_ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void on_convert_clicked(gpointer button, gpointer user)
|
||||||
|
{
|
||||||
|
printf("convert\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
GtkBuilder *main_builder;
|
||||||
|
GList *gds_libs = NULL;
|
||||||
|
|
||||||
|
gtk_init(&argc, &argv);
|
||||||
|
|
||||||
|
main_builder = gtk_builder_new_from_file("glade/main.glade");
|
||||||
|
gtk_builder_connect_signals(main_builder, NULL);
|
||||||
|
|
||||||
|
g_signal_connect(GTK_WIDGET(gtk_builder_get_object(main_builder, "button-load-gds")),
|
||||||
|
"clicked", G_CALLBACK(on_load_gds), (gpointer)&gds_libs);
|
||||||
|
|
||||||
|
|
||||||
|
gtk_main();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user