From a7b6b29a5dd3973f56b5cf9e4b8851a3bdafa986 Mon Sep 17 00:00:00 2001 From: Arkagedon <38785328+ARKAGEDON@users.noreply.github.com> Date: Wed, 26 Oct 2022 19:09:26 +0000 Subject: [PATCH] Adding a GUI to save your packages --- .vscode/c_cpp_properties.json | 45 +++++++++++++++ .vscode/settings.json | 12 ++++ Makefile | 84 ++++++++++++++++++++++++++++ PackageSaver | Bin 0 -> 26464 bytes include/PkgSaver.h | 17 ++++++ packageManager.sh | 2 +- src/PkgSaver.c | 90 ++++++++++++++++++++++++++++++ src/main.c | 44 +++++++++++++++ src/packageSaver.glade | 102 ++++++++++++++++++++++++++++++++++ src/packageSaver.glade~ | 99 +++++++++++++++++++++++++++++++++ 10 files changed, 494 insertions(+), 1 deletion(-) create mode 100644 .vscode/c_cpp_properties.json create mode 100644 .vscode/settings.json create mode 100644 Makefile create mode 100755 PackageSaver create mode 100644 include/PkgSaver.h create mode 100644 src/PkgSaver.c create mode 100644 src/main.c create mode 100644 src/packageSaver.glade create mode 100644 src/packageSaver.glade~ diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..5114842 --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,45 @@ +{ + "configurations": [ + { + "name": "C Linux GTK3", + "includePath": [ + "${workspaceFolder}/**", + "/usr/lib/glib-2.0/include/", + "/usr/include/gtk-3.0", + "/usr/include/pango-1.0", + "/usr/include/glib-2.0", + "/usr/include/harfbuzz", + "/usr/include/fribidi", + "/usr/include/libpng16", + "/usr/include/cairo", + "/usr/include/pixman-1", + "/usr/include/gdk-pixbuf-2.0", + "/usr/include/libmount", + "/usr/include/blkid", + "/usr/include/gio-unix-2.0", + "/usr/include/atk-1.0", + "/usr/include/at-spi2-atk/2.0", + "/usr/include/at-spi-2.0", + "/usr/include/dbus-1.0", + "/usr/lib/dbus-1.0/include", + "/usr/local/include", + "/usr/include" + ], + "defines": [], + "compilerPath": "/usr/bin/gcc", + "cStandard": "c11", + "cppStandard": "c++17", + "intelliSenseMode": "clang-x64", + "compilerArgs": [ + "-Wall", + "-Wextra", + "-mtune=native", + "-no-pie", + "`pkg-config gtk+-3.0 --cflags`", + "`pkg-config --libs gtk+-3.0`", + "-lm" + ] + } + ], + "version": 4 + } \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..2296ae1 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,12 @@ +{ + "makefile.launchConfigurations": [ + { + "cwd": "/home/arka/Documents/Dev/C/Projets/PackageSaver", + "binaryPath": "/home/arka/Documents/Dev/C/Projets/PackageSaver/PackageSaver", + "binaryArgs": [] + } + ], + "files.associations": { + "random": "c" + } +} \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c794ac2 --- /dev/null +++ b/Makefile @@ -0,0 +1,84 @@ +NAME := PackageSaver + +#------------------------------------------------# +# INGREDIENTS # +#------------------------------------------------# +# +# INCS header file locations +# +# SRC_DIR source directory +# SRCS source files +# +# BUILD_DIR build directory +# OBJS object files +# DEPS dependency files +# +# CC compiler +# CFLAGS compiler flags +# CPPFLAGS preprocessor flags +# LDFLAGS linker flags +# LDLIBS libraries name + +INCS := include + +SRC_DIR := src +SRCS := PkgSaver.c main.c +SRCS := $(SRCS:%=$(SRC_DIR)/%) + +BUILD_DIR := .build +OBJS := $(SRCS:$(SRC_DIR)/%.c=$(BUILD_DIR)/%.o) + +CC := gcc +CFLAGS := -Wall `pkg-config --cflags --libs gtk+-3.0` -export-dynamic +CPPFLAGS := $(addprefix -I,$(INCS)) + +#------------------------------------------------# +# UTENSILS # +#------------------------------------------------# +# RM force remove +# MAKE quietly make +# DIR_DUP duplicate directory tree + +RM := rm -f +MAKE := $(MAKE) --silent --no-print-directory +DIR_DUP = mkdir -p $(@D) + + +#------------------------------------------------# +# RECIPES # +#------------------------------------------------# +# all default goal +# $(NAME) link .o -> archive +# $(LIBS) build libraries +# %.o compilation .c -> .o +# clean remove .o +# fclean remove .o + binary +# re remake default goal +# run run the program +# info print the default goal recipe + +all: $(NAME) + +$(NAME): $(OBJS) + $(CC) $(OBJS) -o $(NAME) $(CFLAGS) + +$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c + $(DIR_DUP) + $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< + +clean: + $(RM) $(OBJS) + +fclean: clean + $(RM) $(NAME) + +re: + $(MAKE) fclean + $(MAKE) all + +#------------------------------------------------# +# SPEC # +#------------------------------------------------# + +.PHONY: clean fclean re +.SILENT: diff --git a/PackageSaver b/PackageSaver new file mode 100755 index 0000000000000000000000000000000000000000..b81d99f578ba4f2c68b0b5573349bed7931a43a6 GIT binary patch literal 26464 zcmeHQ4R~BtnLhKA%%o|P>3<8wPD@*gkfbT46fiXXNjru9(H}t{@OCmYNd_h}>HM^5 z7uQND8e^UZT|sowEvq8xvQ{iw5HSebf~-rCUFajI6%-STSQW7%OZI)w&&-|Mxz*i$ zo_%)r$>}rqJKuZ0?>pyw_uPBWJvsO52in%I@_IbNB%ioKkPFRLNUJUgzfWgCTE!AE z4#&A-j;IFjmzXMVRRpCf9rKpcpvHZm)SJdk1v*2)!cfyfQtG*-$aqy^s0b;ZdR5GZ zc|Z!wW0BU>DBe)Jo~&dTiYCR`ispSo29ZZ{lo{#@m>f5OG-qL<_Qd5tiroOA8 zC;h3a|FcK!PO(YX=XxG=zlEk8CrnMLWc%VpO{sW8Dw!_yHuNr8+^~32V=mLUP?ob@ z>;lKs>h)WNcaIn(X7oM6Q^tEW4-uItI|)BlOZ`=wz5o73=iyl`w;!B+*G;EBa^C#r z4$80}v`HBzV*Hsz{Wp@RnOV!D`XUvh(p{TW_dY@!Uf%fBdH9 zZU6S_n7h0upML$0@80l%Pv5k#{e@p0+kWkgCBN;TG3Kj3dtmHkpRB#_s+R|!&;Rgp zs8vjdP~n6MB_DUeA4VrC$**;hp9tbh-i~L1sXShPY0xt6NTBLT}Bb({AI+C!?l6*FiuyTnM znv+CL)KXj`F3Wc&;}Yx2?6jh(R7s~h6HlZlUsi$Xnd)e+Bwk)cv0zQiX2StfG!?QdtMPqsg?jy^vI`kyfRCsXyplSxZ@xX}<~Yojl_%5omKI%UB{2Zh3Cf}7bY}${Qdo4#b8E%A60sYt zWEuk`9ZOiTXfBU26YGuQ1Y@8jcPB&#D$W6f2t;FDH(DLhWJ)A@(Sn{>DwE?V!^|P3 zM;SdSa(RrFtmw($l!zX*B;O%Ac4pB$0a1*bhKo3_SRlE$o!d>knRrh$-I<9+li5r| zbK`=dxP;4)u4uNSy|7zqN{dn0x2q^4o$73<`3xIO(?zZ`exucs>}@Y}G%U2$)|t$d z^U6p$24iJFj8+#5o+PUWUW;}n=s{ks%1L0_b2*desI?OETE-O=PvF#Lb_rg#^0I=@ z;R#$$Kw|lYRzB0&nF4FA*#HZ1jN3vE?CP~^maniDHeR%-m@VZNHeSp-h!_7bOT#}y znfGZ-m8ddRZkIB7zeCz?OWmeu@gCg6aA%Y0;K%N$=H2ZbxWN&dluVA}Ebx5I7tTuJ zO~flMGB-dy|2Owlq3?r12Yz6-vVUr$qDJ2EgBui%%GG<2V#O0SoMk2*wc+&!1U+WM z&ASsLXkvc!guF-AaJZFsE>kJxbY%wzFJ8;%oROxN1*x*{sXHX9zY;axU- zybbTM;r4k?uMMAQliy>*`5t1@hi&*|1A^XW!>8ErJ8d}U>?ZBE;nNHVdan(~tf80= z*zmK8s1S#2_}Mmm(1xF5!=JF>@37%VZTL(Ze$0l4ZTN8;KFfv=*>HWy*-A&VqaGOb zz^DgCJuvElQ4frIVAKPn9vJn&s0T(pFzSK-ogVmI{X5=_?0q#D>92aUNr=e4!Mu0m zXk_o>!N+8SM=t&z;E}oijAQ-GR^-Tcv26JG2-4i|lIIf6@KMP>M4n4G!-JB)pFEdr zh7U;o%jCIKGrV8&e@~vvL&LX8{?p{S6g9j@@*gM9C7j_N$$x}Amu`l)N&aT?T(TM7 zDEZywxl}XUD)}sVF3}7xko*ngxim8zmV7&TF3AjsB>!IWT#6YMlHWwWp8UzT0nELU ze2DyU$uB3*rI_KPlD~{RmtckmCBKk7mtKYsNdBGVx#TjuU-GlbbE#$cHp!nwo=Ysl zdn7-BJeO96dn7-GJeO34w@Kbho=Yji8zui{BX};M47W=Dx8%8WGQ2?Yza-D4yWz0p zUn0*Xl;IF~j)&%7t?7H_eUZMGB71*!a^se^=E3GCBLgkx;G~UA{z`)ouXi-o&%6aH z7%&4Z55hoXpz3~-OHbt|V<>e%h(oDnefpGgp@M*}gq3>!2$N7j2E~ZSg`QhOikDCIexX>Yg_vRh#z^1)ZPp_7rmZ{Pc;k&$?$-#>T0 zwBB~Ac@SNE9>XTmcNn>+W$wsO3tSfI+jj`!k-gt05%v4-r%r#>-Rwi(qYqsI_7Pqn z(0f4ZZH3-b`f+qZA9e&02$r(bmy zt@1(Twn%^5sd(f9<)(bqP#WNqk4abVeRW%;@BQ~WoH+Cktf}w2P`o$N_Z++TLw2U` z(a6BoqmhBOC+Oe4r-vq?TGV&g93i~5{Tkmvq`AFMAIvh>7Gt!3^ z_VdT)4Q-P>N8kFl?vD(tJ1SeL&iP~(4QxHc1`~Ga_GgvY!PCXc`nD5d{cQ*L4Hjz9 z8Wx=h=w|hAJ*Zm5p=aES(Nv~?-kTN9_00g41BO1t^6TY!-;9SzZ{Pbr3TN!GJ7S0z z(AGUT!zhyHJqsmV5mRuhrZarX8FvodATy7lRd+@PCfCVgsqiQj`hHB|d;Z95+kOb` zUna-%GI_FP7Frz~s{5mo;Q+;_SkGYqazNnH8o~`~lDv=O2K9X@dHty;IlC#&eTuUk zj*rna>VZ)YjCx?y1EU`J|L+0rSYg8cq-d-=nhrNy9lj|XE9Aos@$h;0*U-_-@>SU9 zl!%A(nJ~6Mh0R8u3&TCBL^PKOb8k}^+R0q504^QwOy;`^?PJ7dxosz`wy=e>iC7}J zBN4yMSO~X-XV1;ezC0{$OeA`+Nh`cmLh;#SL@pa^(iLrv?nq=CJ5$kkLhMYYy&K<>cFk&$_zVr77926C_VBG7wZ8yVqVR8bdNRX6R*`r4hrJ!0uu zm%sC(IdWS8b+5xOiT21nkIU*pw|ZBMtM;w(pbGh2#7!vw1loB5RG4z_D=e1fcLBE0 ze!1tfSpHVA{9%;0qF;C?E$Oe8#Uc#oMf@&Ax!fCS^xO9Oe4q0wA(W4%Q4frIVAKPn z9vJn&s0T(pFzSI(5B#6GHC`!X;vW{7 z%=ZT~6kGhB`1fy*WC#uF`uK-krbF6*`NklOKQA$vJ@rd9kH5UgG)+_c9&|$5tQgv$ z1hm`5QJpdGV`k64*^}N|r{oR3Uw7Q}>zFDQSW%bB)Q>+#$o>G7qWHU=X!;FJ4{Q3IrmtxFhNjiCRsH68 zO7G)ey<){>;raNw`uuS7!bW`UWCS$55L68WzX=6D;@bAa+UB%^B%%w9p=@~ zkEc9)yerDeet^rDYV>y9N8zw@D7FE=>+$n>f?tC%pEocTMLvJvQgXq-A`(ya*FmZ_ z;ozA!mEUamyj6FARQ2QFnLlGL^IyUR)&&o5Ahmf}T2_B!BQtO4fKL&!*Mj zeJmTJ%BBhbC9vh;!TT{B0@qOEZ;A2X{Q|N5#J)<52k(Q#t|aytF&@0%CpH=N_@5`n zgZHPzK0vt>#CY)jo)|x)_m2?c!CQl#dwA-+6PdeDAj&Fzz+Vjk^vOJmWU7qqx+)7a%h^99&-aC7OH&62X;qymCc#KO}=~!3iK^ zs~4d-xT^LaK|;dc3sS=y!6V4%woQ2pH3nDvXvkmVyGu3;A}#pwuC|sH%e&h7$nmcB z0)F00A?}%4dpYtr;rhwpQ+Fpn7kLH0G^2qJ(!hAO20#RAr5mXc`5TIG$TUDCS|$R` z(A4ps3H83Zv+L&8O~k$1+bDc>OQ#crxTjv!&I+!%*kSKTjf6 zQ=o8J?d7$X)>5E)oQ++ANmpPZfOlc`7t|$H6l6(_$FpXl2RdVB!BP{D+KC=tU2Uzj zHY>=Yu~KPPz?dI5AJ%3-v~Iiy4X*XgJbPwnDsJ7nU3k2NCVHd^)I$s7b^Bzs7)Zq` zbos=oN*wK{_#{7?a7Aq`+Ne53aI!Y3Wu`2$_3^`=S}*5x@TI*$Uc1cF=@c=(LmRd4 zpd><5w@xj&zXI|e7_Y(|4jayd$K&}^9qz+OW*qhv(WOYP{wl z>s#X4;0rY_Klh4tbIxsP_KnSVdGRH(XE)?%JWKgX#%nkz`AFM|-#+{}!asrELHr)a z?o0Z40%&^V0S*yiXe0TSde*Kjv^06~#Wfvera!(P2+vix`*=L>gVcY<@0YL| zd4M@HJMx_eYjiX)Geh!Sps~irrrfSvJkgVDLKGkiQGsL#iN?*MNrr-G>f{IXP5g6} z%EfX8#_I_$+Z@Ix=$B$nslRT|W$^ubJf5|Zxr`_=>1ehGU%?kJtGNiDw2NFaz1ZqV zW$>4-4x3ydt%aHwQ>ZJG&4)P=DjDkORl2zt{vKx~i7TY}XFvSakTCkU*kb3K7wc{;K`+iw+vYW^*DqVEDnmD@ zD$>zzMp%Ho=7mdCP4P^D!98+_(jYquqs4j=EI@YD+MUQ|MB1WyZg;8e=r>UOB{4=+ zRiT`(d?xdEZoo;ZrHFe+<>?U zEuHBCv>G}RpwK<1{u1eg<&O<(NsgCHxW|7(r3QEoTh^?BZzBrnzbghzafot*ccN{gB;1hy-jdNj+~*1RENE>g*0SvYutfgX^4?l6vNocH{nN0dEO6Y-N|$;Rfs2)xL^#L zTw@pGqu@Hipv+d2~?w6NKJ7M?V?(90`~Q%9Mb4 zgape4%%h+xU>*RNX1OOkMTB4cX2dDM37!WfW)2zF0(^h3B+o`x!si3`B5qUbY;8aj zK7)z(IB-r?i63y_n}K@}pDB2?GQf5-S@?Odd%>*ZNe~CVwbG7>Gh*kF{ai@&RkC5?-`r>+~!C#j0Q;X|{ z2LGePCkyBL*k>?Z^K!Z#Hj;{BmVh)~n7Dtsi*URA!@}cCqt07yMBd zoGAcKw!B@NB*Sg?0y5Kjv;Gd8EbP2{wOIp!vHoD77r1RNbq9co$w-qmRckhCVjl)zPal!1O8*l7X zyZvH<(bLd0%UZQ**}68XZT(7y?XwWn&*WK=uvV|#upDm+8&<8_+_uHqvTXUngC*q6{Z5al|iLof29a^ zX9yy9#-N1u0CQ)mq!jb6V&p?dlWYM1We~bz@fqUdxkqK=`>QSBU9p*qWK6v?#S2ss z_Am?(qpdvtB3ne?JHql+3R372j8VslQ}OkRZQ>~__O?Q#L>a@cva~%)B3}D!AqyGd zud+_jpR!UD8YoY2M@`eaO2I6h!6#3PomgxK0{Mx?+^+6?v>h~`RkX|G z@UoD=8cL&l(ZM@zBVIIn650GN8zdXjfJG4{wQTvC2ENxdQoIYVx}q_@D~&1?&1Y2! z_8sRK?NW+q#zI*(k&045=kOLS8s%tilzWXE<(;W9n~|#qjfpOO)8i{+ky9G#?kA*% z$-^*KAY!OB1G_jh$_kV*L`xKnd}qeJ6^-S)9P}6#5x8RI!jUOzZ_g%nm=eDDn>@T{ zvV?Jw7x`=&OIbO*{rz_n7d$b=!(3XWX?V^u8Opzh+7o5%>0B@Y{EYq*t#4?nT^M<+ z+Looo;OzRnTHnw)Wzu|SDNk!0`sTgP&~Ul*&S)hjjxDy;Jk-BYkJ|xz^2;#E)Gz^_zVdhMIjBlx1@Ie>*VlaWML3UxT6TQVYw) zni@Gn{~9>=Oc>tmn=rIh>p9!6VY!aYE*ky)<5Y>E$F!iS-`W39qMZ86wVc@pVyM|S zLj9@uIrZ-bMxPk_A`FHpERS+QU**(MpN=AQ7jky}a99-?dXj~<6w-M^zX;y0Z{FJs z9WFLZDH=Uv@;-;YS^Y3nyVHoDHh#aZ^^O0{pScWuv#6;u#(xI>mP6mXHygUr2x{u| zAOE7x{+s$+o0XuUvQX=iIO~5F7*;dnHNf)X`UMwEkeu>{H}ofv;h)&_ZKJqe68sDG zPe7Na$mpAO2J`qgUjiOw6>u_#V5gvVPboYC2BWzrcYDt?zs{ zgSbqFPSN^K^|01I=_qjaXReEWNZ(LC;aDX!^%}FyF8ZHett7bR!=4 + +typedef struct _treeViewer treeViewer; +struct _treeViewer +{ + GtkTreeView *treeView; + GtkTreeStore *treeStore; +}; + +void init_packages(treeViewer *tv); +void on_ct2_toggled (GtkCellRendererToggle *cell, gchar *path_string, gpointer user_data); +void on_destroy(); + +#endif \ No newline at end of file diff --git a/packageManager.sh b/packageManager.sh index f5cc12d..5089509 100755 --- a/packageManager.sh +++ b/packageManager.sh @@ -82,7 +82,7 @@ do ;; #Pacman is the package manager - pacman) currPkg=$(pacman -Q | sed -n "${pkgI}p" | cut -d" " -f1) + pacman) currPkg=$(pacman -Q | sed -n "${pkgI}p" | cut -d " " -f1) ;; esac diff --git a/src/PkgSaver.c b/src/PkgSaver.c new file mode 100644 index 0000000..e45f91f --- /dev/null +++ b/src/PkgSaver.c @@ -0,0 +1,90 @@ +#include "PkgSaver.h" + +/** + * @brief Function to init the TreeStore content with the packages names + * + * @param tv TreeViewer which needs to be filled + */ +void init_packages(treeViewer *tv) +{ + FILE *fp; + char buffer[1035]; + GtkTreeIter iter; + + /* Getting all the packages */ + fp = popen("pacman -Q | cut -d ' ' -f1", "r"); + if (fp == NULL) { + fprintf(stderr, "Failed to get packages, please open an issue on github\n" ); + exit(1); + } + + /* Read the packages, and adding them into the treeStore*/ + while (fgets(buffer, sizeof(buffer), fp) != NULL) + { + gtk_tree_store_append (tv->treeStore, &iter, NULL); + gtk_tree_store_set(tv->treeStore, &iter, 0, buffer, -1); + gtk_tree_store_set(tv->treeStore, &iter, 1, FALSE, -1); + } + + /* Closing the file */ + pclose(fp); +} + +/** + * @brief Function to get the value of the selected rows + * + * @param selection Selected row + */ +void on_select_changed(GtkTreeSelection *selection) +{ + + gchar *value; + gboolean box; + GtkTreeIter iter; + GtkTreeModel *model; + + if (gtk_tree_selection_get_selected(GTK_TREE_SELECTION(selection), &model, &iter) == FALSE) + return; + + /* Getting package column content */ + gtk_tree_model_get(model, &iter, 0, &value, -1); + printf("Select signal received: package = \"%s\"; ", value); + + /* Getting keeping ? column content */ + gtk_tree_model_get(model, &iter, 1, &box, -1); // get column 1 + printf("keeping ? = \"%d\"\n", box); +} + +/** + * @brief Function to change the toggling of a row + * + * @param cell The cell rendered (useless here) + * @param path_string The path of the row we want + * @param user_data TreeViewer which needs to be changed + */ +void on_ct2_toggled (GtkCellRendererToggle *cell, gchar *path_string, gpointer user_data) +{ + GtkTreeIter iter; + GtkTreeModel *model; + gboolean isKept = FALSE; + gchar *packageName; + treeViewer *tv = (treeViewer*) user_data; + + model = gtk_tree_view_get_model(tv->treeView); // get the tree model + + gtk_tree_model_get_iter_from_string (model, &iter, path_string); // get iter from path + + gtk_tree_model_get(model, &iter, 0, &packageName, -1); //Getting the name of the package + gtk_tree_model_get(model, &iter, 1, &isKept, -1); // Getting the value of the boolean + + if (isKept == FALSE) isKept = TRUE; else isKept = FALSE; + + gtk_tree_store_set(tv->treeStore, &iter, 1, isKept, -1); //Changing the checkbox toggling + + return; +} + +void on_destroy() +{ + gtk_main_quit(); +} \ No newline at end of file diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..32b3ae3 --- /dev/null +++ b/src/main.c @@ -0,0 +1,44 @@ +#include "PkgSaver.h" + +int main(int argc, char *argv[]) +{ + /*Initialisation of the window*/ + gtk_init(&argc, &argv); + + GtkBuilder *builder = gtk_builder_new_from_file("src/packageSaver.glade"); + GtkWidget *window = GTK_WIDGET(gtk_builder_get_object(builder, "window")); + + g_signal_connect(window, "destroy", G_CALLBACK(on_destroy), NULL); + gtk_builder_connect_signals(builder, NULL); + + + /*Initialisation of the component of the window*/ + treeViewer tv; + tv.treeView = GTK_TREE_VIEW(gtk_builder_get_object(builder, "tv1")); + tv.treeStore = GTK_TREE_STORE(gtk_builder_get_object(builder, "TreeStore")); + GtkTreeViewColumn *cx1 = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder, "cx1")); + GtkTreeViewColumn *cx2 = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder, "cx2")); + GtkCellRenderer *ct1 = GTK_CELL_RENDERER(gtk_builder_get_object(builder, "ct1")); + GtkCellRenderer *ct2 = GTK_CELL_RENDERER(gtk_builder_get_object(builder, "ct2")); + GtkTreeSelection *select = GTK_TREE_SELECTION(gtk_builder_get_object(builder, "select")); + + gtk_tree_view_column_add_attribute(cx1, ct1, "text", 0); // attach renderer to column + gtk_tree_view_column_add_attribute(cx2, ct2, "active", 1); // attach renderer to column + + select = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv.treeView)); + + /*Init the content of the treestore (all the name of packages)*/ + init_packages(&tv); + + /*Connection all the signal*/ + g_signal_connect (ct2, "toggled", G_CALLBACK (on_ct2_toggled), &tv); + + gtk_widget_show_all(window); + + gtk_main(); + return EXIT_SUCCESS; +} + +// TODO: free all when exiting +// saving the actions into a file ou clipboard +// adding a research by name feature \ No newline at end of file diff --git a/src/packageSaver.glade b/src/packageSaver.glade new file mode 100644 index 0000000..480fd04 --- /dev/null +++ b/src/packageSaver.glade @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + False + False + + + True + False + + + True + True + center + center + True + True + 500 + 200 + + + True + True + TreeStore + horizontal + + + + + + + + autosize + 100 + Package name + True + 0.5 + + + + + + + + 100 + Keeping ? + True + 0.5 + + + + + + + + + + + + Save in a file + 250 + 25 + True + True + True + top + + + + 200 + + + + + Save in clip board + 250 + 25 + True + True + True + top + + + + 250 + 200 + + + + + + diff --git a/src/packageSaver.glade~ b/src/packageSaver.glade~ new file mode 100644 index 0000000..a35e718 --- /dev/null +++ b/src/packageSaver.glade~ @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + False + False + + + True + False + + + True + True + center + center + True + True + 500 + 200 + + + True + True + TreeStore + horizontal + + + + + + + + autosize + 100 + Package name + True + 0.5 + + + + + + + + 100 + Keeping ? + True + 0.5 + + + + + + + + + Save in a file + 250 + 25 + True + True + True + top + + + + 200 + + + + + Save in clip board + 250 + 25 + True + True + True + top + + + + 250 + 200 + + + + + +