Начал работу по получению данных с окон

pull/2/head
Igor Belitskiy 2 years ago
parent 35c86e624b
commit 5ea358287d

@ -96,6 +96,7 @@ uninstall:
@echo "Uninstall: OK"
install: check uninstall
@cc source/filters.c source/filters.h source/ubl-settings-resourcequota-cm.h source/view_edit.h source/view_edit.c source/view_add.h source/view_add.c source/ubl-utils.h source/ubl-utils.c source/ubl-strings.h source/ubl-settings-resourcequota.h source/ubl-settings-resourcequota.c -o ubl-settings-resourcequota `pkg-config --cflags --libs gtk+-3.0 vte-2.91 webkit2gtk-4.0 webkit2gtk-web-extension-4.0` -g
@echo "Install ..."
@for FILE_PO in $(wildcard *.po); do \
LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \

@ -120,6 +120,7 @@ main_window *setup_window(){
GtkBuilder *builder = gtk_builder_new_from_file(glade_path);
widgets->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
widgets->btnDelQuotas = yon_gtk_builder_get_widget(builder,"btnDelQuotas");
widgets->treeViewMain = yon_gtk_builder_get_widget(builder,"treeViewMain");
widgets->tvc0 = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"tvc0"));
widgets->tvc1 = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"tvc1"));
@ -223,28 +224,154 @@ void main_update_processes() {
}
void main_update_information() {
const gchar* menu_id = gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->cbtMainInfo));
char* cmd_param = gtk_combo_box_get_active_id(GTK_COMBO_BOX_TEXT(widgets->cbtMainInfoLevel2));
int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtMainInfo));
char* cmd = NULL;
if (*menu_id == 0) {
config_str fill_cmb_2 = NULL;
int size = 0;
if (menu_id == 0) {
fill_cmb_2 = philos_list_user(&size);
}
else if (*menu_id == 1) {
else if (menu_id == 1) {
}
else if (*menu_id == 2) {
else if (menu_id == 2) {
}
else if (*menu_id == 3) {
else if (menu_id == 3) {
}
if (*menu_id >= 0) {
if (menu_id >= 0) {
gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->cbtMainInfoLevel2));
yon_terminal_integrated_launch(widgets->vteProcesses, cmd, NULL, NULL);
philos_fill_combo_box_text(widgets->cbtMainInfoLevel2, fill_cmb_2, size);
// yon_terminal_integrated_launch(widgets->vteProcesses, cmd, NULL, NULL);
}
}
void main_cbx_2_event() {
int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtMainInfo));
char* cmd_text_param = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtMainInfo));
if (menu_id == 0) {
}
else if (menu_id == 1) {
}
else if (menu_id == 2) {
}
else if (menu_id == 3) {
}
if (menu_id >= 0) {
}
//char *cmd = yon_char_get_augumented("systemd-cgtop -d ", str_second);
//yon_terminal_integrated_launch(widgets->vteDispatcher, cmd, NULL, NULL);
}
void tree_view_delete(GtkWidget *self, main_window *widgets) {
yon_ubl_status_box_render(STR_DEL_TABLE ,BACKGROUND_IMAGE_SUCCESS_TYPE);
GtkTreeIter iter;
char *name;
GtkTreeModel *list_s = 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,&list_s,&iter)){
gtk_tree_model_get(list_s, &iter, 1, &name, -1);
} else {
yon_ubl_status_box_render(STR_DEL_TABLE, BACKGROUND_IMAGE_FAIL_TYPE);
}
}
void tree_view_select(GtkWidget *self, main_window *widgets) {
GtkTreeIter iter;
char *name;
GtkTreeModel *list_s=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, &list_s, &iter)){
int installed=0;
gtk_tree_model_get(gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->treeViewMain)),&iter,0,&installed,-1);
if (installed==1){
gtk_widget_set_sensitive(widgets->btnAdd,0);
gtk_widget_set_sensitive(widgets->btnDelQuotas,1);
} else {
gtk_widget_set_sensitive(widgets->btnAdd,1);
gtk_widget_set_sensitive(widgets->btnDelQuotas,0);
}
}
}
void wrapper_tree_view_add(GtkWidget *self, main_window *widgets){
yon_ubl_status_box_render(STR_QUOTAS_ADD, BACKGROUND_IMAGE_FAIL_TYPE);
add_show(NULL, glade_path);
}
void tree_view_add(int index) {
yon_char_parsed_append(main_config.type_quota, &main_config.size_tree_view, add_get_quota_object());
char* text = " ";
yon_char_parsed_append(main_config.quota_volume, &main_config.size_tree_view, text );
yon_char_parsed_append(main_config.soft_raw_limit, &main_config.size_tree_view, add_get_soft());
yon_char_parsed_append(main_config.hard_raw_limit, &main_config.size_tree_view, add_get_hard());
yon_char_parsed_append(main_config.swap, &main_config.size_tree_view, add_get_limit_swap());
yon_char_parsed_append(main_config.cpu_limit, &main_config.size_tree_view, add_get_limit_cpu());
yon_char_parsed_append(main_config.i_o_limit_read, &main_config.size_tree_view, add_get_read_device());
yon_char_parsed_append(main_config.i_o_limit_write, &main_config.size_tree_view, add_get_write_device());
GtkTreeIter iter;
gtk_list_store_append(main_config.list,&iter);
gtk_list_store_set(main_config.list,&iter,main_config.type_quota[index],
main_config.quota_volume[index],
main_config.soft_raw_limit[index],
main_config.hard_raw_limit[index],
main_config.swap[index],
main_config.cpu_limit[index],
main_config.i_o_limit_read[index],
main_config.i_o_limit_write[index]);
}
void config_data_append(int index) {
if (index == -1) {
}
else {
}
}
/*
void yon_gtk_list_store_fill_with_proprietaries(GtkListStore *list){
if(videoconfig.proprietary){
dictionary *dict=NULL;
gtk_list_store_clear(videoconfig.list);
gtk_list_store_clear(videoconfig.list2);
int inssize=0;
config_str installed=yon_config_load(get_proprietary_installed_command,&inssize);
for (int i=0;i<inssize;i++)
installed[i]=yon_char_divide_search(installed[i],"\n",-1);
for_dictionaries(dict,videoconfig.proprietary){
GtkTreeIter iter;
int size=0;
config_str str = yon_char_parse((char*)dict->data,&size,";");
if (strcmp(str[0],"")!=0&&str[0]){
gtk_list_store_append(videoconfig.list,&iter);
gtk_list_store_set(videoconfig.list,&iter,1,str[0],2,str[1],3,str[2],4,_(str[3]),5,_(str[4]),-1);
if (yon_char_parsed_check_exist(installed,inssize,str[0])!=-1)
gtk_list_store_set(videoconfig.list,&iter,0,1,-1);
}
else{
gtk_list_store_append(videoconfig.list2,&iter);
gtk_list_store_set(videoconfig.list2,&iter,1,str[0],2,str[1],3,str[2],4,_(str[3]),5,_(str[4]),-1);
if (yon_char_parsed_check_exist(installed,inssize,str[1])!=-1){
gtk_list_store_set(videoconfig.list2,&iter,0,1,-1);
}
}
}
}
}
*/
void main_visible_columns(GtkWidget *self) {
gboolean *flags_filters = filters_get_flag();
gtk_tree_view_column_set_visible(widgets->tvc0, flags_filters[0]);
@ -273,13 +400,16 @@ void main_event(main_window *widgets) {
g_signal_connect(G_OBJECT(widgets->AboutMenuItem),"activate",G_CALLBACK(on_about),NULL);
g_signal_connect(G_OBJECT(widgets->btnShowFilters),"clicked",G_CALLBACK(wrapper_filters_show), NULL);
g_signal_connect(G_OBJECT(widgets->btnAdd),"clicked",G_CALLBACK(add_show), glade_path);
g_signal_connect(G_OBJECT(widgets->btnAdd),"clicked",G_CALLBACK(wrapper_tree_view_add), widgets);
g_signal_connect(G_OBJECT(widgets->btnEdit),"clicked",G_CALLBACK(edit_show), glade_path);
g_signal_connect(G_OBJECT(widgets->btnInfo),"clicked",G_CALLBACK(info_show), glade_path);
g_signal_connect(G_OBJECT(widgets->btnUpdateDispatcher),"clicked",G_CALLBACK(main_update_dispatcher), NULL);
g_signal_connect(G_OBJECT(widgets->btnMainShowAllEmpty), "toggled", G_CALLBACK(main_update_processes), NULL);
g_signal_connect(G_OBJECT(widgets->btnMainShowCoreStream), "toggled", G_CALLBACK(main_update_processes), NULL);
g_signal_connect(G_OBJECT(widgets->cbtMainInfo),"changed",G_CALLBACK(main_update_information), NULL);
g_signal_connect(G_OBJECT(widgets->cbtMainInfoLevel2),"changed",G_CALLBACK(main_cbx_2_event), NULL);
g_signal_connect(G_OBJECT(widgets->btnDelQuotas), "clicked", G_CALLBACK(tree_view_delete), widgets);
g_signal_connect(G_OBJECT(widgets->treeViewMain), "cursor-changed", G_CALLBACK(tree_view_select), widgets);
/*
g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(),NULL);
g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(),NULL);
@ -384,6 +514,7 @@ int main(int argc, char *argv[]){
main_window *widgets = setup_window();
main_update_information();
filters_init_flag();
filters_setup_window(glade_path);
add_setup_window(glade_path);

@ -51,6 +51,19 @@ typedef struct {
int lock_save_local;
int lock_save_global;
int lock_load_global;
GtkListStore *list;
GtkListStore *list2;
render_data status_render;
config_str type_quota;
config_str quota_volume;
config_str soft_raw_limit;
config_str hard_raw_limit;
config_str swap;
config_str cpu_limit;
config_str i_o_limit_read;
config_str i_o_limit_write;
int size_tree_view;
} config;
typedef struct {
@ -65,6 +78,7 @@ typedef struct {
GtkTreeViewColumn *tvc6;
GtkTreeViewColumn *tvc7;
GtkWidget *btnDelQuotas;
GtkWidget *cbtMainInfoLevel2;
GtkWidget *cbtMainInfo;
GtkWidget *vteProcesses;
@ -120,9 +134,9 @@ typedef struct {
GtkWidget *CloseButton;
GtkWidget *AcceptButton;
} documentation_confirmation_window;
main_window *setup_window();
void main_update_processes();
void config_init();
@ -133,4 +147,10 @@ void main_localization(main_window *widgets);
void main_visible_columns();
void wrapper_filters_show(GtkWidget *self);
void main_update_dispatcher();
void main_update_information();
void main_update_information();
void main_fill_combo_box_text(GtkWidget *cbt, config_str list_data, int size);
void main_cbx_2_event();
void tree_view_delete(GtkWidget *self, main_window *widgets);
void tree_view_select(GtkWidget *self, main_window *widgets);
void tree_view_add(int index);
void wrapper_tree_view_add(GtkWidget *self, main_window *widgets);

@ -29,4 +29,7 @@
#define GLOBAL_LOCAL_SAVE_SUCCESS _("Local and global configuration saving succseeded.")
#define GLOBAL_SAVE_SUCCESS _("Global configuration saving succseeded.")
#define LOCAL_SAVE_SUCCESS _("Local configuration saving succseeded.")
#define LOCAL_SAVE_SUCCESS _("Local configuration saving succseeded.")
#define STR_DEL_TABLE _("Quota deleted")
#define STR_NO_SELECT_TABLE _("Quota deleted")
#define STR_QUOTAS_ADD _("Quota deleted")

@ -369,6 +369,87 @@ char *yon_char_divide(char *source, int dividepos)
return cut;
}
config_str philos_list_user(int* size) {
char* str_uid_min = "UID_MIN";
char* str_uid_max = "UID_MAX";
unsigned short uid_min = philos_read_uid_min_max(file_source_login_min_max, str_uid_min);
unsigned short uid_max = philos_read_uid_min_max(file_source_login_min_max, str_uid_max);
config_str str_users = malloc(1);
while (1) {
errno = 0; // so we can distinguish errors from no more entries
struct passwd* entry = getpwent();
if (!entry) {
if (errno) {
return str_users;
}
break;
}
if ((entry->pw_uid >= uid_min && entry->pw_uid < uid_max) || entry->pw_uid == 0) {
str_users = yon_char_parsed_append(str_users, size, entry->pw_name);
}
}
endpwent();
return str_users;
}
unsigned short philos_read_uid_min_max(char* filename, char* search) {
int uid = 0;
char* remove_tab = "\t";
char* remove_space = " ";
char* search_uid_min = "UID_MIN";
int buff_size = 255;
char* line = g_malloc0(buff_size);
char* search_true = yon_char_get_augumented("SYS_", search);
FILE *fp = fopen(filename, "r");
if(fp) {
while((fgets(line, buff_size, fp)) != NULL) {
try{
if (yon_char_find_count(line, search) != 0 && yon_char_find_count(line, search_true) == 0) {
line = philos_str_remove(line, search);
line = philos_str_remove(line, remove_space);
line = philos_str_remove(line, remove_tab);
uid = atoi(line);
}
}
catch (...) {
if (yon_char_find_count(search, search_uid_min) != 0){
uid = 1000;
}
else{
uid = 65534;
}
}
}
}
else{
if (yon_char_find_count(search, search_uid_min) != 0) {
uid = 1000;
}
else{
uid = 65534;
}
}
fclose(fp);
free(line);
free(search_true);
return uid;
}
char* philos_str_remove(char *str, const char *sub) {
size_t len = strlen(sub);
if (len > 0) {
char *p = str;
size_t size = 0;
while ((p = strstr(p, sub)) != NULL) {
size = (size == 0) ? (p - str) + strlen(p + len) + 1 : size - len;
memmove(p, p + len, size - (p - str));
}
}
return str;
}
int yon_char_find_count(char *source, char *find){
char *working_string=yon_char_new(source);
int i=0;
@ -379,7 +460,6 @@ int yon_char_find_count(char *source, char *find){
if(strstr(rtn[j],find))
i++;
}
printf("%d\n",i);
return i;
}
@ -546,6 +626,18 @@ config_str yon_char_parsed_new (config_str old, int *old_size, ...){
return new_parsed;
}
/**config_str yon_char_parsed_append(config_str parsed, int *size, char *string)
* [EN]
* Adds [string] at the end of [parsed] string array of [size] length.
* [RU]
* Добавляет строку [string] в конец массива строк [parsed] с длинной [size].
*/
config_str yon_char_parsed_append(config_str parsed, int *size, char *string){
config_str new_parsed=realloc(parsed,(*size+1)*sizeof(char*));
new_parsed[(*size)]=yon_char_new(string);
(*size)++;
return new_parsed;
}
// parsing functions
@ -836,7 +928,7 @@ void yon_terminal_integrated_launch(GtkWidget *terminal, char* command, void *en
vte_terminal_set_size(VTE_TERMINAL(terminal),10,15);
VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL);
vte_terminal_set_pty(VTE_TERMINAL(terminal),pty);
char *install_command=yon_char_unite("tput cup 0 0 && tput ed; ",command," ; sleep 5;exit 0","\n",NULL);
char *install_command=yon_char_unite("tput cup 0 0 && tput ed; ",command,"\n",NULL);
if(endwork_function)
g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(endwork_function), endwork_function_argument);
vte_terminal_spawn_async(VTE_TERMINAL(terminal),
@ -868,6 +960,26 @@ void yon_terminal_integrated_launch(GtkWidget *terminal, char* command, void *en
gtk_widget_show_all(terminal);
}
char* philos_get_size_bite(GtkWidget* chk_button, GtkWidget* spin, GtkWidget* combo_box_text) {
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(chk_button))) {
char* size_prifics = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(combo_box_text));
int size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spin));
char* str_size_bite = yon_char_from_int(size_bite);
char* str_size_bute = yon_char_unite(str_size_bite, " ", str_size_bite, NULL);
return str_size_bute;
}
else {
char* str = (char*)malloc(sizeof(char*)*2);
str[0] = '-';
str[1] = '\0';
return str;
}
}
void philos_fill_combo_box_text(GtkWidget *cbt, config_str list_data, int size) {
for (int index = 0; index < size; index++) {
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(cbt), list_data[index]);
}
}
#endif
int yon_gtk_combo_box_fill(GtkWidget *combo, config_str parameters,int size){

@ -11,7 +11,8 @@
#include <gtk/gtk.h>
#include <gtk/gtkx.h>
#include <vte/vte.h>
#include <pwd.h>
#include <stdbool.h>
#include "ubl-settings-resourcequota-cm.h"
#ifdef WEBKIT_FOUND
#include <webkit2/webkit2.h>
@ -30,6 +31,11 @@
#define yon_ubl_save_global_config(command) yon_config_save(command)
#define yon_ubl_save_local_config(command) yon_config_save(command)
#define try bool __HadError=false;
#define catch(x) ExitJmp:if(__HadError)
#define throw(x) {__HadError=true;goto ExitJmp;}
#define file_source_login_min_max "/etc/login.defs"
typedef enum
{
#ifdef __GTK_H__
@ -111,7 +117,7 @@ dictionary *yon_dictionary_get_nth(dictionary *dict, int place);
void *yon_dictionary_free_all(dictionary *dictionary,void (data_manipulation)(void*));
// char functions
char* philos_str_remove(char *str, const char *sub);
char *yon_char_get_augumented(char *source, char *append);
char *yon_char_new(char *chr);
@ -139,9 +145,11 @@ int yon_char_find_count(char *source, char *find);
int yon_char_parsed_includes_char_parsed (config_str source, config_str to_check, int source_size, int check_size);
config_str yon_char_parsed_new (config_str old, int *old_size, ...);
config_str yon_char_parsed_append(config_str parsed, int *size, char *string);
// parsing functions
config_str philos_list_user(int* size);
unsigned short philos_read_uid_min_max(char* filename, char* search);
apps *yon_apps_scan_and_parse_desktops(int *sizef);
void yon_apps_sort(apps *applist, int size);
@ -173,6 +181,8 @@ int yon_launch(thread_output *thread);
*
*/
void yon_terminal_integrated_launch(GtkWidget *terminal, char* command, void *endwork_function, void* endwork_function_argument);
char* philos_get_size_bite(GtkWidget* chk_button, GtkWidget* spin, GtkWidget* combo_box_text);
void philos_fill_combo_box_text(GtkWidget *cbt, config_str list_data, int size);
#endif
/**yon_gtk_builder_get_widget(builder, widget_name)

@ -10,6 +10,9 @@ add_window *add_setup_window(char* glade_path) {
add_widgets->btnSaveAddSave = yon_gtk_builder_get_widget(builder,"btnSaveAddSave");
add_widgets->btnAddCancel = yon_gtk_builder_get_widget(builder,"btnAddCancel");
add_widgets->cbxAddQuotaObj = yon_gtk_builder_get_widget(builder,"cbxAddQuotaObj");
add_widgets->cbxAddQuotaLevel2 = yon_gtk_builder_get_widget(builder,"cbxAddQuotaLevel2");
add_widgets->cbtAddDevice = yon_gtk_builder_get_widget(builder,"cbtAddDevice");
add_widgets->lblCPULimitAdd = yon_gtk_builder_get_widget(builder,"lblCPULimitAdd");
add_widgets->spinCPULimitAdd = yon_gtk_builder_get_widget(builder,"spinCPULimitAdd");
add_widgets->chkCPULimitAdd = yon_gtk_builder_get_widget(builder,"chkCPULimitAdd");
@ -60,6 +63,7 @@ void add_event(add_window *widgets) {
g_signal_connect(G_OBJECT(widgets->chkCPULimitAdd), "toggled", G_CALLBACK(add_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->chbAddRead), "toggled", G_CALLBACK(add_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->chbAddWrite), "toggled", G_CALLBACK(add_init_windows), NULL);
g_signal_connect(G_OBJECT(widgets->cbxAddQuotaObj),"changed",G_CALLBACK(add_update_combo_box), NULL);
}
void add_destroy(GtkWidget *self) {
@ -87,6 +91,7 @@ add_window *get_widget_add() {
}
void add_show(GtkWidget *self, char* glade_path) {
add_update_combo_box();
if (add_widgets != NULL) {
gtk_widget_show_all(add_widgets->Window);
}
@ -94,5 +99,67 @@ void add_show(GtkWidget *self, char* glade_path) {
add_setup_window(glade_path);
gtk_widget_show_all(add_widgets->Window);
}
}
char* add_get_select_device() {
return gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddDevice));
}
char* add_get_read_device() {
return philos_get_size_bite(add_widgets->chbAddRead, add_widgets->spiSevereRestrictionAdd,
add_widgets->cmSevereRestrictionAdd);
}
char* add_get_write_device() {
return philos_get_size_bite(add_widgets->chbAddWrite, add_widgets->spinAddRead,
add_widgets->cbtAddRead);
}
char* add_get_soft() {
return philos_get_size_bite(add_widgets->chkSoftRestrictionAdd, add_widgets->spinAddWrite,
add_widgets->cbtAddWrite);
}
char* add_get_hard() {
return philos_get_size_bite(add_widgets->chkSevereRestrictionAdd, add_widgets->spinSevereRestrictionAdd,
add_widgets->cmbSevereRestrictionAdd);
}
char* add_get_limit_cpu() {
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkCPULimitAdd))) {
int size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinCPULimitAdd));
return yon_char_from_int(size_bite);
}
else {
char* str = (char*)malloc(sizeof(char*)*2);
str[0] = '-';
str[1] = '\0';
return str;
}
}
char* add_get_limit_swap() {
return philos_get_size_bite(add_widgets->spinPaddingFLAdd, add_widgets->spinPaddingFLAdd,
add_widgets->spinPaddingFLAdd);
}
char* add_get_quota_object() {
return gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbxAddQuotaObj));
}
void add_update_combo_box() {
int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbxAddQuotaObj));
char* cmd = NULL;
config_str fill_cmb_2 = NULL;
int size = 0;
if (menu_id == 0) {
fill_cmb_2 = philos_list_user(&size);
}
else if (menu_id == 1) {
}
else if (menu_id == 2) {
}
else if (menu_id == 3) {
}
if (menu_id >= 0) {
gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(add_widgets->cbxAddQuotaLevel2));
philos_fill_combo_box_text(add_widgets->cbxAddQuotaLevel2, fill_cmb_2, size);
// yon_terminal_integrated_launch(widgets->vteProcesses, cmd, NULL, NULL);
}
}

@ -41,6 +41,10 @@ typedef struct {
GtkWidget* chkCPULimitAdd;
GtkWidget* spinCPULimitAdd;
GtkWidget* lblCPULimitAdd;
GtkWidget* cbtAddDevice;
GtkWidget* cbxAddQuotaObj;
GtkWidget* cbxAddQuotaLevel2;
} add_window;
// Функции
@ -53,4 +57,13 @@ void add_show(GtkWidget *self, char* glade_path);
void add_destroy(GtkWidget *self);
void add_set_active_widgets(GtkWidget *self, GtkWidget *entry, GtkWidget *label);
void add_init_windows();
void add_update_combo_box();
char* add_get_select_device();
char* add_get_read_device();
char* add_get_write_device();
char* add_get_soft();
char* add_get_hard();
char* add_get_limit_cpu();
char* add_get_limit_swap();
char* add_get_quota_object();
#endif

@ -945,7 +945,7 @@ limit
</packing>
</child>
<child>
<object class="GtkButton">
<object class="GtkButton" id="btnDelQuotas">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
@ -1926,7 +1926,7 @@ limit
</packing>
</child>
<child>
<object class="GtkComboBoxText">
<object class="GtkComboBoxText" id="cbxAddQuotaObj">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
@ -1935,6 +1935,14 @@ limit
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="active">0</property>
<property name="active-id">0</property>
<items>
<item translatable="yes">User</item>
<item translatable="yes">Group</item>
<item translatable="yes">Process</item>
<item translatable="yes">Slice</item>
</items>
</object>
<packing>
<property name="expand">True</property>
@ -1943,7 +1951,7 @@ limit
</packing>
</child>
<child>
<object class="GtkComboBoxText">
<object class="GtkComboBoxText" id="cbxAddQuotaLevel2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
@ -2440,7 +2448,7 @@ limit
</packing>
</child>
<child>
<object class="GtkEntry">
<object class="GtkEntry" id="cbtAddDevice">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="margin-left">5</property>

@ -20,6 +20,9 @@ msgstr ""
#: source/ubl-strings.h:8
#: source/ubl-strings.h:1
msgid "Quota deleted"
msgstr "Квота удалена"
msgid "User"
msgstr "Пользователь"

Loading…
Cancel
Save