6 static GtkTreeStore *archives;
7 static GtkBuilder *builder;
9 int load_archive(const char *path)
12 GtkTreeIter iter1, iter2;
16 lbx = lbx_fopen(path);
20 basename = g_path_get_basename(path);
21 gtk_tree_store_append(archives, &iter1, NULL);
22 gtk_tree_store_set(archives, &iter1, 0, basename, -1);
25 nfiles = lbx_numfiles(lbx);
26 for (unsigned i = 0; i < nfiles; i++) {
27 struct lbx_statbuf stat;
29 lbx_stat(lbx, i, &stat);
30 gtk_tree_store_append(archives, &iter2, &iter1);
31 gtk_tree_store_set(archives, &iter2, 0, stat.name, -1);
38 void open_archive(GtkWidget *widget)
40 GtkFileFilter *lbxfilter, *allfilter;
41 GtkFileChooser *chooser;
44 chooser = GTK_FILE_CHOOSER(gtk_file_chooser_dialog_new(
46 GTK_WINDOW(gtk_widget_get_toplevel(widget)),
47 GTK_FILE_CHOOSER_ACTION_OPEN,
48 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
49 GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
52 lbxfilter = gtk_file_filter_new();
53 gtk_file_filter_set_name(lbxfilter, "LBX Archives (*.lbx)");
54 gtk_file_filter_add_pattern(lbxfilter, "*.lbx");
56 allfilter = gtk_file_filter_new();
57 gtk_file_filter_set_name(allfilter, "All Files");
58 gtk_file_filter_add_pattern(allfilter, "*");
60 gtk_file_chooser_add_filter(chooser, lbxfilter);
61 gtk_file_chooser_add_filter(chooser, allfilter);
63 if (gtk_dialog_run(GTK_DIALOG(chooser)) == GTK_RESPONSE_ACCEPT) {
64 gchar *name = gtk_file_chooser_get_filename(chooser);
70 gtk_widget_destroy(GTK_WIDGET(chooser));
73 static void interface_init(void)
75 GtkTreeViewColumn *column;
76 GtkCellRenderer *renderer;
79 tree = GTK_TREE_VIEW(gtk_builder_get_object(builder, "treeview"));
80 gtk_tree_view_set_model(tree, GTK_TREE_MODEL(archives));
82 renderer = gtk_cell_renderer_text_new();
83 column = gtk_tree_view_column_new();
84 gtk_tree_view_column_pack_start(column, renderer, TRUE);
85 gtk_tree_view_column_add_attribute(column, renderer, "text", 0);
86 gtk_tree_view_append_column(tree, column);
89 int main(int argc, char **argv)
94 if (!gtk_init_with_args(&argc, &argv, NULL, NULL, NULL, &err)) {
95 fprintf(stderr, "%s\n", err->message);
99 archives = gtk_tree_store_new(1, G_TYPE_STRING);
101 load_archive(*argv++);
103 builder = gtk_builder_new();
104 if (!gtk_builder_add_from_file(builder, "src/gui/lbxgui.glade", &err)) {
105 fprintf(stderr, "%s\n", err->message);
109 window = GTK_WIDGET(gtk_builder_get_object(builder, "mainwindow"));
112 gtk_builder_connect_signals(builder, window);
113 gtk_widget_show_all(window);