Skip to content

Commit 61d8ccb

Browse files
authored
Merge pull request #24 from jun08111/master
[Client]결과리스트 선택/다중선택 완료
2 parents 5446237 + bbb8c4f commit 61d8ccb

File tree

3 files changed

+82
-30
lines changed

3 files changed

+82
-30
lines changed

README.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,24 @@
1010
설명...아키텍처, 이미지
1111

1212
## 사용방법
13+
설치후 실행
14+
15+
## 개발방법
16+
1. download
17+
1. build
18+
gcc -o bxr_plover main.c -lrabbitmq -Wall `pkg-config --cflags --libs gtk+-3.0` -export-dynamic</br>
19+
/usr/include 위치에 사용하는 rabbitmq의 *.h 파일들을 넣으면 링크오류 해결.</br>
20+
1. run
21+
./bxr_plover
22+
</br>
1323
다운로드후 bxr_plover실행
1424

1525
## 개발방법
1626
1. download
1727
2. build</br>
1828
gcc -o bxr_plover main.c -lrabbitmq -L /usr/local/lib -Wall `pkg-config --cflags --libs gtk+-3.0` -export-dynamic
1929
3. run</br>
20-
./bxr_plover
30+
./bxr_plove
2131

2232
## 라이선스
2333
This project is licensed under the GPL v3.0 License.<br>

src/glade/bxr_plover

264 Bytes
Binary file not shown.

src/glade/main.c

Lines changed: 71 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,29 @@
1-
#include <gtk/gtk.h>
21
#include <stdio.h>
32
#include <stdlib.h>
43
#include <string.h>
54
#include <stdint.h>
6-
#include <regex.h>
75
#include <errno.h>
8-
#include <sys/types.h>
9-
#include <sys/stat.h>
106
#include <unistd.h>
11-
#include <amqp.h>
12-
#include <amqp_tcp_socket.h>
137
#include <assert.h>
148
#include <dirent.h>
9+
#include <sys/types.h>
10+
#include <sys/stat.h>
11+
12+
#include <gtk/gtk.h>
13+
14+
#include <regex.h>
1515

16+
#include <amqp.h>
17+
#include <amqp_tcp_socket.h>
1618
#include "utils.h"
1719
#include "utils.c"
20+
1821
#include "b64.h"
1922
#include "encode.c"
2023
#include "decode.c"
2124

2225
#define MAX_ERROR_MSG 0x1000
23-
#define MAX_CNTF 50
26+
#define MAX_CNTF 50 // 최대 검출 파일 개수 //
2427

2528
typedef struct Data_storage
2629
{
@@ -36,13 +39,13 @@ typedef struct Data_storage
3639

3740
}data_storage;
3841

39-
data_storage ds[MAX_CNTF]; // 파일기준의 data구조체 //
42+
data_storage ds[MAX_CNTF]; // 파일기준의 data구조체 //
4043

41-
static gchar *path; // 파일경로 //
42-
static int cntf = 0; // 파일개수 cnt //
44+
static gchar *path; // 파일경로 //
45+
static int cntf = 0; // 파일개수 cnt //
4346
static char chkfname[20];
44-
int chk_tf; // chk_true or false //
45-
//uint data_flag = 1; // 어떤종류의 민감정보인지 확인하기위한 flag //
47+
static int chk_tf; // chk_true or false //
48+
//uint data_flag = 1; // 어떤종류의 민감정보인지 확인하기위한 flag //
4649

4750

4851
GtkWidget *detect_window,
@@ -704,9 +707,9 @@ int chk_user()
704707

705708
return chk_tf;
706709
}
707-
/* end of */
710+
/* end of chk_user(); */
708711

709-
// main_window //
712+
// main_window function //
710713
void m_detect_btn_clicked (GtkButton *m_detect_btn, gpointer *data)
711714
{
712715
gtk_widget_show(detect_window);
@@ -727,11 +730,11 @@ void main_window_destroy()
727730

728731
return;
729732
}
730-
/* end of main_window */
733+
/* end of main_window function */
731734

732735

733736

734-
// detect_window //
737+
// detect_window function //
735738
void d_detect_entry_activate (GtkEntry *d_detect_entry, gpointer *data)
736739
{
737740
path = (gchar *)gtk_entry_get_text(d_detect_entry);
@@ -769,7 +772,7 @@ void d_folder_btn_clicked (GtkButton *d_folder_btn, gpointer *data)
769772
return;
770773
}
771774

772-
// treeview //
775+
// treeview function//
773776
enum
774777
{
775778
d_treeview_num = 0,
@@ -784,6 +787,38 @@ enum
784787
NUM_COLS
785788
} ;
786789

790+
gboolean
791+
view_selection_func (GtkTreeSelection *selection,
792+
GtkTreeModel *model,
793+
GtkTreePath *path,
794+
gboolean path_currently_selected,
795+
gpointer userdata)
796+
{
797+
GtkTreeIter iter;
798+
799+
if (gtk_tree_model_get_iter(model, &iter, path))
800+
{
801+
gchar *name;
802+
803+
gtk_tree_model_get(model, &iter, d_treeview_filelocation, &name, -1);
804+
805+
if (!path_currently_selected)
806+
{
807+
g_print ("%s is going to be selected.\n", name);
808+
}
809+
810+
else
811+
{
812+
g_print ("%s is going to be unselected.\n", name);
813+
}
814+
815+
g_free(name);
816+
}
817+
818+
return TRUE; /* allow selection state to change */
819+
}
820+
821+
787822
static GtkTreeModel *
788823
create_and_fill_model (void)
789824
{
@@ -814,10 +849,11 @@ create_and_fill_model (void)
814849
static GtkWidget *
815850
create_view_and_model (void)
816851
{
817-
GtkTreeViewColumn *col;
852+
GtkTreeViewColumn *col;
818853
GtkCellRenderer *renderer;
819854
GtkWidget *view;
820855
GtkTreeModel *model;
856+
GtkTreeSelection *selection;
821857

822858
view = gtk_tree_view_new();
823859

@@ -899,6 +935,12 @@ create_view_and_model (void)
899935
renderer = gtk_cell_renderer_text_new();
900936
gtk_tree_view_column_pack_start(col, renderer, TRUE);
901937
gtk_tree_view_column_add_attribute(col, renderer, "text", d_treeview_filelocation);
938+
939+
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(view));
940+
941+
gtk_tree_selection_set_select_function(selection, view_selection_func, NULL, NULL);
942+
943+
902944

903945
model = create_and_fill_model();
904946

@@ -907,11 +949,11 @@ create_view_and_model (void)
907949
g_object_unref(model); // destroy model automatically with view //
908950

909951
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(view)),
910-
GTK_SELECTION_NONE);
952+
GTK_SELECTION_MULTIPLE);
911953

912954
return view;
913955
}
914-
/* end of treeview */
956+
/* end of treeview function */
915957

916958

917959
void d_detect_btn_clicked (GtkButton *d_detect_btn, gpointer *data)
@@ -957,11 +999,11 @@ void detect_window_destroy (GtkWidget *detect_window, gpointer *data)
957999

9581000
return;
9591001
}
960-
/* end of detect_window */
1002+
/* end of detect_window function */
9611003

9621004

9631005

964-
// enrollment_window //
1006+
// enrollment_window function //
9651007
void e_enroll_btn_clicked (GtkButton *e_enroll_btn, gpointer *data)
9661008
{
9671009
gtk_widget_hide(GTK_WIDGET(data));
@@ -972,14 +1014,14 @@ void e_enroll_btn_clicked (GtkButton *e_enroll_btn, gpointer *data)
9721014

9731015

9741016

975-
// setting_setting //
1017+
// setting_window function //
9761018
void s_cloese_btn_clicked (GtkButton *setting_window, gpointer *data)
9771019
{
9781020
gtk_widget_hide(GTK_WIDGET(data));
9791021

9801022
return;
9811023
}
982-
/* end of setting_setting */
1024+
/* end of setting_window function */
9831025

9841026

9851027

@@ -1009,11 +1051,11 @@ int main (int argc, char *argv[])
10091051
gtk_builder_connect_signals(builder, NULL);
10101052

10111053
g_object_unref(builder);
1012-
1013-
chk_user(chk_tf);
1014-
1015-
if (chk_tf == FALSE) // TRUE(1)=있다 //
1016-
{
1054+
1055+
chk_user(chk_tf);
1056+
1057+
if (chk_tf == FALSE) // TRUE(1)=있다 //
1058+
{
10171059
gtk_widget_show(enrollment_window);
10181060
gtk_main();
10191061
}

0 commit comments

Comments
 (0)