1
/* gfv - a Group File View plug-in for TiLP
2
* Copyright (C) 2003 Romain Lievin
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License as published by
6
* the Free Software Foundation; either version 2 of the License, or
7
* (at your option) any later version.
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21
* Initial main.c file generated by Glade. Edit as required.
22
* Glade will not overwrite this file.
33
#include "interface.h"
34
#include "callbacks.h"
37
#include "tilp_plugin.h"
38
#include <tilp/tifiles.h>
40
#define GETTEXT_PACKAGE PLUGIN
41
#define FONT_NAME "" //"courier"
43
TilpPluginInfo infos =
47
"Romain Lievin <roms@tilp.info>",
48
"73g,82g,83g,8xg,85g,86g,89g,92g,9xg,v2g"
53
Returns plug-ins properties/capabilites
54
- name [out] : the plug-in name
55
- version [out] : the plug-in version
56
- fext [out] : an array of file extensions
58
TilpPluginInfo* plugin_query(void)
64
static GtkWidget *window1;
65
static GtkTreeView *view;
66
static GtkTreeStore *tree;
75
GtkCellRenderer *renderer;
76
GtkTreeSelection *selection;
77
GtkTreeViewColumn *column;
81
bindtextdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
82
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
83
textdomain(GETTEXT_PACKAGE);
86
add_pixmap_directory (PACKAGE_DATA_DIR "/pixmaps");
88
/* Create main window */
89
window1 = create_window1 ();
90
gtk_window_resize(GTK_WINDOW(window1), 320, 240);
91
gtk_widget_show (window1);
93
treeview1 = gtk_object_get_data(GTK_OBJECT(window1), "treeview1");
94
view = GTK_TREE_VIEW(treeview1);
96
/* Create CTree (borrowed from ctree.c) */
97
#ifdef __WIN32__ // use UTF-8 for varnames
98
tifiles_translate_set_encoding(ENCODING_LATIN1);
100
tifiles_translate_set_encoding(ENCODING_UNICODE);
103
tree = gtk_tree_store_new(CTREE_NUMBER, G_TYPE_STRING,
104
GDK_TYPE_PIXBUF, G_TYPE_STRING,
105
G_TYPE_STRING, G_TYPE_POINTER,
106
G_TYPE_STRING, GDK_TYPE_PIXBUF);
108
model = GTK_TREE_MODEL(tree);
109
gtk_tree_view_set_model(view, model);
110
gtk_tree_view_set_headers_visible(view, TRUE);
111
gtk_tree_view_set_headers_clickable(view, TRUE);
112
gtk_tree_view_set_rules_hint(view, FALSE);
114
column = gtk_tree_view_column_new();
115
gtk_tree_view_append_column(view, column);
116
gtk_tree_view_column_set_title(column, _("Name"));
117
renderer = gtk_cell_renderer_pixbuf_new();
118
gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column),
120
gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column),
123
renderer = gtk_cell_renderer_text_new();
124
gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column),
126
gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column),
127
renderer, "text", CTREE_NAME,
130
renderer = gtk_cell_renderer_pixbuf_new();
131
gtk_tree_view_insert_column_with_attributes(view, -1, _("Attr"),
134
renderer = gtk_cell_renderer_text_new();
135
gtk_tree_view_insert_column_with_attributes(view, -1, _("Type"),
138
renderer = gtk_cell_renderer_text_new();
139
gtk_tree_view_insert_column_with_attributes(view, -1, _("Size"),
143
for (i = 0; i < CTREE_NCOLS; i++) {
144
GtkTreeViewColumn *col;
145
col = gtk_tree_view_get_column(view, i);
146
gtk_tree_view_column_set_resizable(col, TRUE);
149
selection = gtk_tree_view_get_selection(view);
150
gtk_tree_selection_set_mode(selection, GTK_SELECTION_NONE);
157
int plugin_load(const char *filename)
159
GtkTreeIter root_node;
160
GdkPixbuf *pix1, *pix2, *pix3, *pix4, *pix5, *pix6;
161
GdkPixbuf *pix9 = NULL;
162
GtkTreeIter parent_node;
163
GtkTreeIter child_node;
166
TicalcType calc_type;
174
title = g_strconcat(_("Group File Viewer"), " (", filename, ")", NULL);
175
gtk_window_set_title(GTK_WINDOW(window1), title);
179
calc_type = tifiles_which_calc_type(filename);
180
gtk_tree_store_append(tree, &root_node, NULL);
181
gtk_tree_store_set(tree, &root_node,
182
CTREE_NAME, tifiles_calctype_to_string(calc_type),
183
CTREE_DATA, (gpointer)NULL, -1);
186
if((err = tifiles_read_regular_file(filename, &content)))
191
tifiles_get_error(err, s);
192
dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL,
193
GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, s);
194
while (gtk_events_pending())
195
gtk_main_iteration();
196
gtk_dialog_run(GTK_DIALOG(dialog));
200
// and build the table of folder & variable entries (tree view)
201
tifiles_create_table_of_entries(&content, &table, &num_folders);
204
pix1 = create_pixbuf("ctree_close_dir.xpm");
205
pix2 = create_pixbuf("TIicon2.ico");
206
pix3 = create_pixbuf("ctree_open_dir.xpm");
207
pix4 = create_pixbuf("attr_locked.xpm");
208
pix5 = create_pixbuf("attr_archived.xpm");
209
pix6 = create_pixbuf("TIicon4.ico");
212
for(i=0; table[i] != NULL; i++)
216
int index = table[i][0];
217
gchar **row_text = g_malloc0((CTREE_NCOLS + 1) * sizeof(gchar *));
219
fentry = &(content.entries[index]);
221
row_text[0] = g_strdup(fentry->folder);
223
for(j=0; table[i][j] != -1; j++);
224
row_text[3] = g_strdup_printf("%i", j);
226
gtk_tree_store_append(tree, &parent_node, &root_node);
227
gtk_tree_store_set(tree, &parent_node,
228
CTREE_NAME, row_text[0],
229
CTREE_SIZE, row_text[3],
230
CTREE_DATA, (gpointer) fentry,
231
CTREE_ICON, pix1, -1);
233
g_strfreev(row_text);
235
for(j=0; table[i][j] != -1; j++)
237
int index = table[i][j];
238
TiVarEntry *entry = &(content.entries[index]);
239
gchar **row_text = g_malloc0((CTREE_NCOLS + 1) * sizeof(gchar *));
242
row_text[0] = g_strdup(entry->trans);
243
//printf("<<%s>>\n", row_text[0]);
244
//hexdump(row_text[0], 9);
245
row_text[2] = g_strdup_printf("%s",
246
tifiles_vartype2string(entry->type));
247
row_text[3] = g_strdup_printf("%u", entry->size);
249
strcpy(icon_name, tifiles_vartype2icon(entry->type));
250
strcat(icon_name, ".ico");
251
tilp_file_underscorize(icon_name);
252
pix9 = create_pixbuf(icon_name);
254
gtk_tree_store_append(tree, &child_node, &parent_node);
255
gtk_tree_store_set(tree, &child_node,
256
CTREE_NAME, row_text[0],
257
CTREE_TYPE, row_text[2],
258
CTREE_SIZE, row_text[3],
259
CTREE_DATA, (gpointer) entry,
261
CTREE_FONT, FONT_NAME,
264
switch (entry->attr) {
266
gtk_tree_store_set(tree, &child_node, CTREE_ATTR, pix4, -1);
269
gtk_tree_store_set(tree, &child_node, CTREE_ATTR, pix5, -1);
274
g_object_unref(pix9);
275
g_strfreev(row_text);
279
gtk_tree_view_expand_all(view);
282
tifiles_free_regular_content(&content);
285
g_object_unref(pix1);
286
g_object_unref(pix2);
287
g_object_unref(pix3);
288
g_object_unref(pix4);
289
g_object_unref(pix5);
290
g_object_unref(pix6);
296
int plugin_save(const char *filename)
305
main (int argc, char *argv[])
310
bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
311
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
312
textdomain (GETTEXT_PACKAGE);
316
gtk_init (&argc, &argv);
318
add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps");
321
* The following code was added by Glade to create one of each component
322
* (except popup menus), just so that you see something after building
323
* the project. Delete any components that you don't want shown initially.
325
window1 = create_window1 ();
326
gtk_widget_show (window1);