1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
| #include <stdlib.h>
#include <stdio.h>
#include <glade/glade.h>
#include <gtk/gtk.h>
#include <sqlite3.h>
#define FILENAME "/home/ice/Desktop/teste.glade"
/* Compilar:
gcc -o teste main.c -L/usr/local/lib -lsqlite3 `pkg-config --cflags --libs libglade-2.0`
*/
static GladeXML *xml;
GtkListStore *store;
GtkTreeIter iter;
enum
{
CID,
DESCRICAO,
COLUMNS
};
void setup_tree_view (GtkWidget*);
int callback_sqlite(void *NotUsed,
int ncols,
char **values,
char **headers);
void on_window1_destroy (GtkWidget *widget, gpointer user_data){
gtk_main_quit();
}
//Function to insert result rows from query in list treeview
char saida(int a, char *b){
gtk_list_store_append (store, &iter);
gtk_list_store_set (store, &iter,
CID, a, DESCRICAO, b, -1);
}
void on_button1_clicked (GtkWidget *button, gpointer user_data){
GtkWidget *i;
const char *j;
i = GTK_WIDGET(glade_xml_get_widget(xml,"entry1"));
j = gtk_entry_get_text(GTK_ENTRY(i));
//Clear previous query results
gtk_list_store_clear(store);
//Call query sqlite3 function
sqlite_function(j);
}
int sqlite_function (char *j){
sqlite3 *db;
char *zErrMsg = 0;
int rc;
char *sql;
rc = sqlite3_open("/home/ice/Desktop/cid10.db", &db);
if( rc ){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
rc = sqlite3_exec(db, j, callback_sqlite, NULL, &zErrMsg);
if( rc!=SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
sqlite3_close(db);
return 0;
}
//SQLite callback function
int callback_sqlite (void *NotUsed, int ncols, char **values, char **headers){
int r;
char *s;
r =(int) values[0]; //Values in first column of database table
s = values[1];//Values in second column of database table
saida(r,s);
return 0;
}
int main (int argc, char **argv)
{
GtkWidget *window1;
GtkWidget *entry1;
GtkWidget *treeview1;
gtk_init(&argc, &argv);
glade_init();
xml = glade_xml_new(FILENAME, NULL, NULL);
window1 = glade_xml_get_widget (xml, "window1");
entry1 = glade_xml_get_widget (xml, "entry1");
treeview1 = glade_xml_get_widget (xml, "treeview1");
glade_xml_signal_connect (xml, "on_button1_clicked", G_CALLBACK(on_button1_clicked));
glade_xml_signal_connect(xml, "on_window1_destroy", G_CALLBACK(on_window1_destroy));
if (!xml) {
g_warning("Erro ao criar interface");
return 1;
}
treeview1 = GTK_WIDGET(glade_xml_get_widget(xml, "treeview1"));
store = gtk_list_store_new (COLUMNS, G_TYPE_STRING, G_TYPE_STRING);
gtk_tree_view_set_model (GTK_TREE_VIEW (treeview1), GTK_TREE_MODEL (store));
g_object_unref (store);
setup_tree_view (treeview1);
gtk_widget_show(window1);
gtk_main();
return 0;
}
void setup_tree_view (GtkWidget *treeview)
{
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
renderer = gtk_cell_renderer_text_new ();
column = gtk_tree_view_column_new_with_attributes
("CID", renderer, "text", CID, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
renderer = gtk_cell_renderer_text_new ();
column = gtk_tree_view_column_new_with_attributes
("DESCRICAO", renderer, "text", DESCRICAO, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
}
|