Skip to content

Commit 9fb7f7b

Browse files
authored
Merge pull request #10 from jun08111/master
update treeview
2 parents 4c1c375 + 41b99d1 commit 9fb7f7b

File tree

7 files changed

+400
-100
lines changed

7 files changed

+400
-100
lines changed

src/glade/bxr_plover

416 Bytes
Binary file not shown.

src/glade/main.c

Lines changed: 161 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@
1313
#include <assert.h>
1414
#include <dirent.h>
1515

16-
#include "/bxr_plover/src/rabbitmq-c/examples/utils.h"
17-
#include "/bxr_plover/src/rabbitmq-c/examples/utils.c"
18-
#include "/bxr_plover/src/glade/b64.h"
19-
#include "/bxr_plover/src/glade/encode.c"
20-
#include "/bxr_plover/src/glade/decode.c"
16+
#include "utils.h"
17+
#include "utils.c"
18+
#include "b64.h"
19+
#include "encode.c"
20+
#include "decode.c"
2121

2222
#define MAX_ERROR_MSG 0x1000
2323
#define MAX_CNT 10
@@ -26,8 +26,8 @@ typedef struct Data_storage
2626
{
2727
char fpath[300]; //파일 경로
2828
char fname[20]; //파일 이름
29-
int cnt; //민감정보 총 개수(어디다 둬야할까...)
30-
int fsize; //파일 크기
29+
uint cnt; //민감정보 총 개수
30+
uint fsize; //파일 크기
3131
char stat; //파일 상태
3232

3333

@@ -36,9 +36,8 @@ typedef struct Data_storage
3636
data_storage ds_j[MAX_CNT]; //j: 주민번호, d: 운전면허
3737

3838
static gchar *path;
39-
int chk_tf; //chk_true false
40-
int data_flag = 1; //어떤종류의 민감정보인지 확인하기위한 flag
41-
39+
int chk_tf; //chk_true false
40+
uint data_flag = 1; //어떤종류의 민감정보인지 확인하기위한 flag
4241

4342

4443
GtkWidget *detect_window,
@@ -48,22 +47,17 @@ GtkScrolledWindow *d_scrolledwindow;
4847

4948
GtkEntry *d_detect_entry;
5049

51-
GtkTreeView d_treeview;
52-
53-
GtkTreeSelection d_treeselection;
54-
55-
GtkListStore *d_liststore;
5650

57-
void e_enroll_btn_clicked (GtkButton *e_enroll_btn, gpointer *data);
51+
void e_enroll_btn_clicked (GtkButton *e_enroll_btn, gpointer *data);
5852

5953
void m_window_destroy();
6054
void m_detect_btn_clicked (GtkButton *m_detect_btn, gpointer *data);
61-
void m_setting_btn_clicked (GtkButton *m_setting_btn, gpointer *data);
55+
void m_setting_btn_clicked (GtkButton *m_setting_btn, gpointer *data);
6256

6357
void d_detect_btn_clicked (GtkButton *d_detect_btn, gpointer *data);
6458
void d_option_btn_clicked (GtkButton *d_option_btn, gpointer *data);
6559
void d_folder_btn_clicked (GtkButton *d_folder_btn, gpointer *data);
66-
void d_close_btn_clicked (GtkButton *d_close_btn, gpointer *data);
60+
void d_close_btn_clicked (GtkButton *d_close_btn, gpointer *data);
6761
void d_detect_entry_activate (GtkEntry *d_detect_entry, gpointer *data);
6862

6963
void s_cloese_btn_clicked (GtkButton *s_cloese_btn, gpointer *data);
@@ -369,10 +363,12 @@ int detect_func(gchar *path)
369363
}
370364
amqp_bytes_free(props.reply_to);
371365
}
372-
366+
367+
373368
/*
374369
wait an answer
375370
*/
371+
/*
376372
{
377373
amqp_basic_consume(conn, 1, reply_to_queue, amqp_empty_bytes, 0, 1, 0,
378374
amqp_empty_table);
@@ -463,25 +459,25 @@ int detect_func(gchar *path)
463459
464460
if (body_received != body_target)
465461
{
466-
/* Can only happen when amqp_simple_wait_frame returns <= 0 */
467-
/* We break here to close the connection */
462+
// Can only happen when amqp_simple_wait_frame returns <= 0 //
463+
// We break here to close the connection //
468464
break;
469465
}
470466
471-
/* everything was fine, we can quit now because we received the reply */
467+
// everything was fine, we can quit now because we received the reply //
472468
break;
473469
}
474470
}
475471
}
472+
*/
473+
476474

477475
/*
478476
closing
479477
*/
480-
die_on_amqp_error(amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS),
481-
"Closing channel");
478+
//die_on_amqp_error(amqp_channel_close(conn, 1, AMQP_REPLY_SUCCESS), "Closing channel");
482479

483-
die_on_amqp_error(amqp_connection_close(conn, AMQP_REPLY_SUCCESS),
484-
"Closing connection");
480+
//die_on_amqp_error(amqp_connection_close(conn, AMQP_REPLY_SUCCESS), "Closing connection");
485481

486482
die_on_error(amqp_destroy_connection(conn), "Ending connection");
487483

@@ -560,10 +556,141 @@ void d_folder_btn_clicked (GtkButton *d_folder_btn, gpointer *data)
560556
return;
561557
}
562558

559+
//treeview start//
560+
enum
561+
{
562+
d_treeview_num = 0,
563+
d_treeview_type,
564+
d_treeview_filename,
565+
d_treeview_filelocation,
566+
d_treeview_cnt,
567+
d_treeview_stat,
568+
d_treeview_size,
569+
NUM_COLS
570+
} ;
571+
572+
static GtkTreeModel *
573+
create_and_fill_model (void)
574+
{
575+
GtkTreeStore *treestore;
576+
GtkTreeIter iter;
577+
578+
treestore = gtk_tree_store_new(NUM_COLS, G_TYPE_UINT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT, G_TYPE_STRING, G_TYPE_UINT);
579+
580+
for(int i = 1; i <= ds_j->cnt; i++)
581+
{
582+
gtk_tree_store_append(treestore, &iter, NULL);
583+
gtk_tree_store_set (treestore, &iter,
584+
d_treeview_num, i,
585+
d_treeview_type, "data_flag",
586+
d_treeview_filename, ds_j[i].fname,
587+
d_treeview_filelocation, ds_j[i].fpath,
588+
d_treeview_cnt, ds_j[i].cnt,
589+
d_treeview_stat, "have to define",
590+
d_treeview_size, ds_j[i].fsize,
591+
-1);
592+
}
593+
594+
return GTK_TREE_MODEL(treestore);
595+
}
596+
597+
static GtkWidget *
598+
create_view_and_model (void)
599+
{
600+
GtkTreeViewColumn *col;
601+
GtkCellRenderer *renderer;
602+
GtkWidget *view;
603+
GtkTreeModel *model;
604+
605+
view = gtk_tree_view_new();
606+
607+
/* --- Column #번호 --- */
608+
col = gtk_tree_view_column_new();
609+
610+
gtk_tree_view_column_set_title(col, "번호");
611+
612+
/* pack tree view column into tree view */
613+
gtk_tree_view_append_column(GTK_TREE_VIEW(view), col);
614+
615+
renderer = gtk_cell_renderer_text_new();
616+
617+
/* pack cell renderer into tree view column */
618+
gtk_tree_view_column_pack_start(col, renderer, TRUE);
619+
620+
gtk_tree_view_column_add_attribute(col, renderer, "text", d_treeview_num);
621+
622+
/* --- Column #민감정보 종류 --- */
623+
col = gtk_tree_view_column_new();
624+
gtk_tree_view_column_set_title(col, "민감정보 종류");
625+
gtk_tree_view_append_column(GTK_TREE_VIEW(view), col);
626+
renderer = gtk_cell_renderer_text_new();
627+
gtk_tree_view_column_pack_start(col, renderer, TRUE);
628+
gtk_tree_view_column_add_attribute(col, renderer, "text", d_treeview_type);
629+
630+
/* --- Column #파일 이름 --- */
631+
col = gtk_tree_view_column_new();
632+
gtk_tree_view_column_set_title(col, "파일 이름");
633+
gtk_tree_view_append_column(GTK_TREE_VIEW(view), col);
634+
renderer = gtk_cell_renderer_text_new();
635+
gtk_tree_view_column_pack_start(col, renderer, TRUE);
636+
gtk_tree_view_column_add_attribute(col, renderer, "text", d_treeview_filename);
637+
638+
/* --- Column #파일 위치 --- */
639+
col = gtk_tree_view_column_new();
640+
gtk_tree_view_column_set_title(col, "파일 위치");
641+
gtk_tree_view_append_column(GTK_TREE_VIEW(view), col);
642+
renderer = gtk_cell_renderer_text_new();
643+
gtk_tree_view_column_pack_start(col, renderer, TRUE);
644+
gtk_tree_view_column_add_attribute(col, renderer, "text", d_treeview_filelocation);
645+
646+
/* --- Column #민감정보 개수 --- */
647+
col = gtk_tree_view_column_new();
648+
gtk_tree_view_column_set_title(col, "민감정보 개수");
649+
gtk_tree_view_append_column(GTK_TREE_VIEW(view), col);
650+
renderer = gtk_cell_renderer_text_new();
651+
gtk_tree_view_column_pack_start(col, renderer, TRUE);
652+
gtk_tree_view_column_add_attribute(col, renderer, "text", d_treeview_cnt);
653+
654+
/* --- Column #상태 --- */
655+
col = gtk_tree_view_column_new();
656+
gtk_tree_view_column_set_title(col, "상태");
657+
gtk_tree_view_append_column(GTK_TREE_VIEW(view), col);
658+
renderer = gtk_cell_renderer_text_new();
659+
gtk_tree_view_column_pack_start(col, renderer, TRUE);
660+
gtk_tree_view_column_add_attribute(col, renderer, "text", d_treeview_stat);
661+
662+
/* --- Column #파일 크기 --- */
663+
col = gtk_tree_view_column_new();
664+
gtk_tree_view_column_set_title(col, "파일 크기");
665+
gtk_tree_view_append_column(GTK_TREE_VIEW(view), col);
666+
renderer = gtk_cell_renderer_text_new();
667+
gtk_tree_view_column_pack_start(col, renderer, TRUE);
668+
gtk_tree_view_column_add_attribute(col, renderer, "text", d_treeview_size);
669+
670+
model = create_and_fill_model();
671+
672+
gtk_tree_view_set_model(GTK_TREE_VIEW(view), model);
673+
674+
g_object_unref(model); /* destroy model automatically with view */
675+
676+
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(view)),
677+
GTK_SELECTION_NONE);
678+
679+
return view;
680+
}
681+
//treeview end//
682+
683+
563684
void d_detect_btn_clicked (GtkButton *d_detect_btn, gpointer *data)
564685
{
686+
GtkWidget *view;
687+
565688
detect_func(path);
566689

690+
view = create_view_and_model();
691+
gtk_container_add(GTK_CONTAINER(d_scrolledwindow), view);
692+
gtk_widget_show_all((GtkWidget *)d_scrolledwindow);
693+
567694
return;
568695
}
569696

@@ -626,21 +753,23 @@ void s_cloese_btn_clicked (GtkButton *setting_window, gpointer *data)
626753
//main//
627754
int main (int argc, char *argv[])
628755
{
629-
GtkBuilder *builder;
756+
GtkBuilder *builder;
630757
GtkWidget *main_window,
631-
*enrollment_window;
758+
*enrollment_window,
759+
*view;
632760

633761
gtk_init(&argc, &argv);
634762

635763
builder = gtk_builder_new();
636764
gtk_builder_add_from_file(builder, "main.glade", NULL);
637765

638766
main_window = GTK_WIDGET(gtk_builder_get_object(builder, "main_window"));
639-
enrollment_window = GTK_WIDGET(gtk_builder_get_object(builder, "enrollment_window"));
640-
detect_window = GTK_WIDGET(gtk_builder_get_object(builder, "detect_window"));
767+
enrollment_window = GTK_WIDGET(gtk_builder_get_object(builder, "enrollment_window"));
768+
detect_window = GTK_WIDGET(gtk_builder_get_object(builder, "detect_window"));
641769
setting_window = GTK_WIDGET(gtk_builder_get_object(builder, "setting_window"));
642-
d_scrolledwindow = GTK_SCROLLED_WINDOW(gtk_builder_get_object(builder, "d_scrolledwindow"));
643-
d_liststore = GTK_LIST_STORE(gtk_builder_get_object(builder, "d_liststore"));
770+
d_scrolledwindow = GTK_SCROLLED_WINDOW(gtk_builder_get_object(builder, "d_scrolledwindow"));
771+
772+
644773

645774

646775
//닫기x 버튼을 hide로 바꾸기//

src/glade/main.glade

Lines changed: 1 addition & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,6 @@
22
<!-- Generated with glade 3.22.1 -->
33
<interface>
44
<requires lib="gtk+" version="3.20"/>
5-
<object class="GtkListStore" id="d_liststore">
6-
<columns>
7-
<!-- column-name 번호 -->
8-
<column type="번호"/>
9-
<!-- column-name 파일 이름 -->
10-
<column type="파일 이름"/>
11-
<!-- column-name 민감정보 종류 -->
12-
<column type="민감정보 종류"/>
13-
<!-- column-name 위치 -->
14-
<column type="위치"/>
15-
<!-- column-name 상태 -->
16-
<column type="상태"/>
17-
<!-- column-name 파일 크기 -->
18-
<column type="파일 크기"/>
19-
</columns>
20-
<data>
21-
<row/>
22-
<row/>
23-
</data>
24-
</object>
255
<object class="GtkWindow" id="detect_window">
266
<property name="width_request">680</property>
277
<property name="height_request">450</property>
@@ -133,20 +113,7 @@
133113
<property name="can_focus">True</property>
134114
<property name="shadow_type">in</property>
135115
<child>
136-
<object class="GtkTreeView" id="d_treeview">
137-
<property name="visible">True</property>
138-
<property name="can_focus">True</property>
139-
<property name="model">d_liststore</property>
140-
<property name="enable_search">False</property>
141-
<property name="search_column">20</property>
142-
<property name="show_expanders">False</property>
143-
<child internal-child="selection">
144-
<object class="GtkTreeSelection" id="d_treeselection">
145-
<signal name="changed" handler="d_treeselection_changed" object="d_liststore" swapped="no"/>
146-
<signal name="notify" handler="d_treeselection_notify" object="d_liststore" swapped="no"/>
147-
</object>
148-
</child>
149-
</object>
116+
<placeholder/>
150117
</child>
151118
</object>
152119
<packing>

src/glade/main.glade~

100755100644
Lines changed: 2 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,6 @@
22
<!-- Generated with glade 3.22.1 -->
33
<interface>
44
<requires lib="gtk+" version="3.20"/>
5-
<object class="GtkListStore" id="d_liststore">
6-
<columns>
7-
<!-- column-name 번호 -->
8-
<column type="번호"/>
9-
<!-- column-name 파일 이름 -->
10-
<column type="파일 이름"/>
11-
<!-- column-name 민감정보 종류 -->
12-
<column type="민감정보 종류"/>
13-
<!-- column-name 위치 -->
14-
<column type="위치"/>
15-
<!-- column-name 상태 -->
16-
<column type="상태"/>
17-
<!-- column-name 파일 크기 -->
18-
<column type="파일 크기"/>
19-
</columns>
20-
<data>
21-
<row/>
22-
<row/>
23-
</data>
24-
</object>
255
<object class="GtkWindow" id="detect_window">
266
<property name="width_request">680</property>
277
<property name="height_request">450</property>
@@ -90,7 +70,7 @@
9070
<property name="visible">True</property>
9171
<property name="can_focus">True</property>
9272
<property name="receives_default">True</property>
93-
<signal name="clicked" handler="d_detect_btn_clicked" swapped="no"/>
73+
<signal name="clicked" handler="d_detect_btn_clicked" object="d_liststore" swapped="no"/>
9474
</object>
9575
<packing>
9676
<property name="x">520</property>
@@ -133,19 +113,7 @@
133113
<property name="can_focus">True</property>
134114
<property name="shadow_type">in</property>
135115
<child>
136-
<object class="GtkTreeView" id="d_treeview">
137-
<property name="visible">True</property>
138-
<property name="can_focus">True</property>
139-
<property name="model">d_liststore</property>
140-
<property name="search_column">20</property>
141-
<property name="show_expanders">False</property>
142-
<child internal-child="selection">
143-
<object class="GtkTreeSelection" id="d_treeselection">
144-
<signal name="changed" handler="d_treeselection_changed" object="d_liststore" swapped="no"/>
145-
<signal name="notify" handler="d_treeselection_notify" object="d_liststore" swapped="no"/>
146-
</object>
147-
</child>
148-
</object>
116+
<placeholder/>
149117
</child>
150118
</object>
151119
<packing>

src/glade/main.o

100755100644
3.38 KB
Binary file not shown.

0 commit comments

Comments
 (0)