Добавил код для создания векторов

pull/24/head
Igor Belitskiy 2 years ago
parent fa3d859ab8
commit 9fadf5ae2c

@ -135,56 +135,36 @@ void control_event(main_window* _config_main_gui, custom_window* _config_custom_
g_signal_connect(G_OBJECT(_config_custom_gui->btnFilterProject),"clicked",G_CALLBACK(wrapper_filters_project_show), glade_path);
}
void wrapper_filters_user_show() {
filters_set_name("user");
filters_show(NULL, glade_path);
}
void wrapper_filters_group_show() {
filters_set_name("group");
filters_show(NULL, glade_path);
}
void wrapper_filters_project_show() {
filters_set_name("project");
filters_show(NULL, glade_path);
}
void wrapper_add_user_show() {
set_temp_menu("user", "add");
temp_show(NULL, glade_path);
}
void wrapper_edit_user_show() {
set_temp_menu("user", "edit");
temp_show(NULL, glade_path);
/*
void main_visible_columns(GtkWidget *self) {
gboolean *flags_filters = filters_get_flag();
gtk_tree_view_column_set_visible(widgets->tvc0, flags_filters[0]);
gtk_tree_view_column_set_visible(widgets->tvc1, flags_filters[1]);
gtk_tree_view_column_set_visible(widgets->tvc2, flags_filters[2]);
gtk_tree_view_column_set_visible(widgets->tvc3, flags_filters[3]);
gtk_tree_view_column_set_visible(widgets->tvc4, flags_filters[4]);
gtk_tree_view_column_set_visible(widgets->tvc5, flags_filters[5]);
gtk_tree_view_column_set_visible(widgets->tvc6, flags_filters[6]);
gtk_tree_view_column_set_visible(widgets->tvc7, flags_filters[7]);
filters_on_hide_subwindow(self);
}
*/
void wrapper_add_group_show() {
set_temp_menu("group", "add");
temp_show(NULL, glade_path);
}
void wrapper_edit_group_show() {
set_temp_menu("group", "edit");
temp_show(NULL, glade_path);
}
void wrapper_add_project_show() {
set_temp_menu("project", "add");
temp_show(NULL, glade_path);
}
void wrapper_edit_project_show() {
set_temp_menu("project", "edit");
temp_show(NULL, glade_path);
}
int main(int argc, char *argv[]){
local=setlocale(LC_ALL, "");
bindtextdomain(LocaleName, yon_char_unite(LocalePath, "/", NULL));
bind_textdomain_codeset(LocaleName, "UTF-8");
textdomain (LocaleName);
//bind_textdomain_codeset(LocaleName, "UTF-8");
textdomain(LocaleName);
config_init(&main_config);
int size_array_size_pow = 0;
array_size_pow = yon_char_parsed_append(array_size_pow,&size_array_size_pow, STR_KB);
array_size_pow = yon_char_parsed_append(array_size_pow,&size_array_size_pow, STR_MB);
array_size_pow = yon_char_parsed_append(array_size_pow,&size_array_size_pow, STR_GB);
array_size_pow = yon_char_parsed_append(array_size_pow,&size_array_size_pow, STR_TB);
config_init(&main_config);
int option_index=0;
int show_help=0;
int debug_mode=0;
@ -257,8 +237,9 @@ int main(int argc, char *argv[]){
}
gtk_init(&argc,&argv);
main_window *widgets = setup_window(&cfg_main_gui,&cfg_custom_gui);
filters_set_name("project");
filters_init_flag();
control_event(widgets, &cfg_custom_gui);
yon_ubl_header_setup_resource(widgets->HeadOverlay,widgets->HeadBox,widgets->HeadImage,banner_path);

@ -1,5 +1,5 @@
#include "ubl-settings-diskquota.h"
#include "view_temp_u_g_p.h"
char *local;
@ -10,12 +10,3 @@ void control_event(main_window* _config_main_gui, custom_window* _config_custom_
void wrapper_all_save();
void wrapper_global_save();
void wrapper_system_save();
void wrapper_add_user_show();
void wrapper_edit_user_show();
void wrapper_add_group_show();
void wrapper_edit_group_show();
void wrapper_add_project_show();
void wrapper_edit_project_show();
void wrapper_filters_user_show();
void wrapper_filters_group_show();
void wrapper_filters_project_show();

@ -0,0 +1,17 @@
#include "remove.h"
void template_remove_line() {
int index = 0;
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(main_config.list);
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->treeViewMain));
if(gtk_tree_selection_get_selected(selection, &model, &iter)) {
char* str_iter = yon_char_new(gtk_tree_model_get_string_from_iter(model, &iter));
index = atoi(str_iter);
g_object_ref(main_config.list);
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->treeViewMain), NULL);
gtk_list_store_clear(main_config.list);
char* key_del = save_format_key(index);
}
}

@ -0,0 +1 @@
#include "model.h"

@ -3,7 +3,8 @@
#include "save.h"
char* template_format_save(config_u_g_p* config, char* cmd) {
char* template_format_save(config_u_g_p* config, char* source_set_cmd) {
char* cmd = yon_char_new("");
for (int i = 0; i < config->size; i++) {
char* key = save_format_key(config, i);
char* value = save_format_str_value(config, i);
@ -18,9 +19,53 @@ char* template_format_save(config_u_g_p* config, char* cmd) {
}
}
if (strlen(cmd) > 8 && check_save()== 0) {
cmd = yon_char_unite(source_set_cmd, " " ,cmd, NULL);
return cmd;
}
free(cmd);
return NULL;
}
char* template_format_remove_save(config_u_g_p* config, char* source_remove_cmd) {
char* cmd = yon_char_new(source_remove_cmd);
if (main_config.size_array_del_line == 0) {
return NULL;
}
if (strlen(cmd) > strlen(source_remove_cmd) && check_save()== 0) {
return cmd;
}
return cmd;
}
char* wrapper_template_save(config_u_g_p* config, char* source_set_cmd, char* source_remove_cmd) {
char str_cmd_remove = template_format_remove_save(config,source_remove_cmd);
char str_cmd_set = template_format_save(config,source_set_cmd);
if (cmd_set != NULL && cmd_remove != NULL) {
philos_config_save(yon_char_unite(cmd_set, "; " , cmd_remove, NULL));
}
else if (cmd_remove != NULL) {
philos_config_save(cmd_remove);
}
else if (cmd_set != NULL) {
philos_config_save(cmd_set);
}
else {
return 0;
}
if (cmd_remove != NULL) {
free(cmd_remove);
}
if (cmd_set != NULL) {
free(cmd_set);
}
main_config.flag_set_data = 0;
return 1;
}
char* save_format_key(config_u_g_p* config, int index) {
if (config->status_set[index] == 1) {
return NULL;

@ -3,9 +3,11 @@
#include "ubl-utils.h"
#include "../ubl-strings.h"
#include "model.h"
char* template_format_save(config_u_g_p* _config, char* cmd);
char* template_format_save(config_u_g_p* _config, char* source_set_cmd);
char* save_format_key(config_u_g_p* _config, int index);
char* save_str_users(config_u_g_p* _config, int index);
char* save_format_str_value(config_u_g_p* config, int index);
char* save_format_status_cmd(config_u_g_p* config, int index);
char* template_format_remove_save(config_u_g_p* config, char* source_remove_cmd);
char* wrapper_template_save(config_u_g_p* config, char* source_set_cmd, char* source_remove_cmd);
#endif

@ -0,0 +1,155 @@
#include "vector.h"
int vectorTotal(vector *v)
{
int totalCount = UNDEFINE;
if(v)
{
totalCount = v->vectorList.total;
}
return totalCount;
}
int vectorResize(vector *v, int capacity)
{
int status = UNDEFINE;
if(v)
{
void **items = realloc(v->vectorList.items, sizeof(void *) * capacity);
if (items)
{
v->vectorList.items = items;
v->vectorList.capacity = capacity;
status = SUCCESS;
}
}
return status;
}
int vectorPushBack(vector *v, void *item)
{
int status = UNDEFINE;
if(v)
{
if (v->vectorList.capacity == v->vectorList.total)
{
status = vectorResize(v, v->vectorList.capacity * 2);
if(status != UNDEFINE)
{
v->vectorList.items[v->vectorList.total++] = item;
}
}
else
{
v->vectorList.items[v->vectorList.total++] = item;
status = SUCCESS;
}
}
return status;
}
int vectorSet(vector *v, int index, void *item)
{
int status = UNDEFINE;
if(v)
{
if ((index >= 0) && (index < v->vectorList.total))
{
v->vectorList.items[index] = item;
status = SUCCESS;
}
}
return status;
}
void *vectorGet(vector *v, int index)
{
void *readData = NULL;
if(v)
{
if ((index >= 0) && (index < v->vectorList.total))
{
readData = v->vectorList.items[index];
}
}
return readData;
}
int vectorDelete(vector *v, int index)
{
int status = UNDEFINE;
int i = 0;
if(v)
{
if ((index < 0) || (index >= v->vectorList.total))
return status;
v->vectorList.items[index] = NULL;
for (i = index; (i < v->vectorList.total - 1); ++i)
{
v->vectorList.items[i] = v->vectorList.items[i + 1];
v->vectorList.items[i + 1] = NULL;
}
v->vectorList.total--;
if ((v->vectorList.total > 0) && ((v->vectorList.total) == (v->vectorList.capacity / 4)))
{
vectorResize(v, v->vectorList.capacity / 2);
}
status = SUCCESS;
}
return status;
}
int vectorFree(vector *v)
{
int status = UNDEFINE;
if(v)
{
free(v->vectorList.items);
v->vectorList.items = NULL;
status = SUCCESS;
}
return status;
}
void vector_init(vector *v)
{
//init function pointers
v->pfVectorTotal = vectorTotal;
v->pfVectorResize = vectorResize;
v->pfVectorAdd = vectorPushBack;
v->pfVectorSet = vectorSet;
v->pfVectorGet = vectorGet;
v->pfVectorFree = vectorFree;
v->pfVectorDelete = vectorDelete;
//initialize the capacity and allocate the memory
v->vectorList.capacity = VECTOR_INIT_CAPACITY;
v->vectorList.total = 0;
v->vectorList.items = malloc(sizeof(void *) * v->vectorList.capacity);
}
/*
int main(int argc, char *argv[])
{
int i =0;
//init vector
VECTOR_INIT(v);
//Add data in vector
v.pfVectorAdd(&v,"aticleworld.com\n");
v.pfVectorAdd(&v,"amlendra\n");
v.pfVectorAdd(&v,"Pooja\n");
v.pfVectorAdd(&v,"aticleworld.com\n");
v.pfVectorAdd(&v,"amlendra\n");
v.pfVectorAdd(&v,"Pooja\n");
v.pfVectorAdd(&v,"aticleworld.com\n");
v.pfVectorAdd(&v,"amlendra\n");
v.pfVectorAdd(&v,"Pooja\n");
//print the data and type cast it
for (i = 0; i < v.pfVectorTotal(&v); i++)
{
printf("%s", (char*)v.pfVectorGet(&v, i));
}
//Set the data at index 0
v.pfVectorSet(&v,0,"Apoorv\n");
printf("\n\n\nVector list after changes\n\n\n");
//print the data and type cast it
for (i = 0; i < v.pfVectorTotal(&v); i++)
{
printf("%s", (char*)v.pfVectorGet(&v, i));
}
vectorFree(&v);
return 0;
}
*/

@ -0,0 +1,31 @@
#include <stdio.h>
#include <stdlib.h>
// https://aticleworld.com/implement-vector-in-c/
#define VECTOR_INIT_CAPACITY 6
#define UNDEFINE -1
#define SUCCESS 0
#define VECTOR_INIT(vec) vector vec;\
vector_init(&vec)
//Store and track the stored data
typedef struct sVectorList
{
void **items;
int capacity;
int total;
} sVectorList;
//structure contain the function pointer
typedef struct sVector vector;
struct sVector
{
sVectorList vectorList;
//function pointers
int (*pfVectorTotal)(vector *);
int (*pfVectorResize)(vector *, int);
int (*pfVectorAdd)(vector *, void *);
int (*pfVectorSet)(vector *, int, void *);
void *(*pfVectorGet)(vector *, int);
int (*pfVectorDelete)(vector *, int);
int (*pfVectorFree)(vector *);
};

@ -209,4 +209,41 @@ custom_window *setup_window_custom(custom_window* custom_widgets, GtkBuilder *bu
custom_widgets->btnFilterProject = yon_gtk_builder_get_widget(builder,"btnFilterProject");
return custom_widgets;
}
void wrapper_filters_user_show() {
filters_set_name("user");
filters_show(NULL, glade_path);
}
void wrapper_filters_group_show() {
filters_set_name("group");
filters_show(NULL, glade_path);
}
void wrapper_filters_project_show() {
filters_set_name("project");
filters_show(NULL, glade_path);
}
void wrapper_add_user_show() {
set_temp_menu("user", "add");
temp_show(NULL, glade_path);
}
void wrapper_edit_user_show() {
set_temp_menu("user", "edit");
temp_show(NULL, glade_path);
}
void wrapper_add_group_show() {
set_temp_menu("group", "add");
temp_show(NULL, glade_path);
}
void wrapper_edit_group_show() {
set_temp_menu("group", "edit");
temp_show(NULL, glade_path);
}
void wrapper_add_project_show() {
set_temp_menu("project", "add");
temp_show(NULL, glade_path);
}
void wrapper_edit_project_show() {
set_temp_menu("project", "edit");
temp_show(NULL, glade_path);
}

@ -19,6 +19,7 @@
#endif
#include "view_filters.h"
#include "ubl-strings.h"
#include "view_temp_u_g_p.h"
#define WIKI_LINK "https://wiki.ublinux.ru/ru/Программное_обеспечениерограммы_и_утилиты/Все/ubl-settings-diskquota"
@ -136,4 +137,13 @@ void event(main_window *widgets);
custom_window *setup_window_custom(custom_window* custom_widgets, GtkBuilder *builder);
void on_link(GtkWidget *self, char* uri, gpointer user_data);
void config_init(config_settings_gui* main_config);
void wrapper_add_user_show();
void wrapper_edit_user_show();
void wrapper_add_group_show();
void wrapper_edit_group_show();
void wrapper_add_project_show();
void wrapper_edit_project_show();
void wrapper_filters_user_show();
void wrapper_filters_group_show();
void wrapper_filters_project_show();
#endif

Binary file not shown.
Loading…
Cancel
Save