timers loading test

pull/28/head
parent 9b39b7d0e7
commit 87282e7e0d

@ -13,6 +13,11 @@ include_directories(${VTE291_INCLUDE_DIRS})
link_directories(${VTE291_LIBRARY_DIRS})
add_definitions(${VTE291_CFLAGS_OTHER})
pkg_check_modules(JSON REQUIRED json-c)
include_directories(${JSON_INCLUDE_DIRS})
link_directories(${JSON_LIBRARY_DIRS})
add_definitions(${JSON_CFLAGS_OTHER})
find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0)
if(WEBKIT_LIBRARIES_FOUND)
@ -75,7 +80,8 @@ set(LIBRARIES
${GTK_LIBRARIES}
${WEBKIT_LIBRARIES}
${UTILS_LIBRARIES}
${VTE291_LIBRARIES}
${VTE291_LIBRARIES}
${JSON_LIBRARIES}
pthread
ublsettings
ublsettings-gtk3

@ -339,21 +339,26 @@ void on_system_unloaded_toggled(GtkWidget *self, main_window *widgets){
}
void on_user_update_hz_clicked(GtkWidget *self, main_window *widgets){
if (self){}
if (widgets){
// log_window *window = yon_log_window_new();
if (self){}
if (widgets){
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
data->action_text = "Are you sure?";
data->data = widgets;
data->function = (data_function)yon_system_systemd_restart;
yon_confirmation_dialog_call(self,data);
// gtk_widget_show(window->Window);
}
}
}
void on_user_update_clicked(GtkWidget *self, main_window *widgets){
if (self){}
if (widgets){
log_window *window = yon_log_window_new();
gtk_widget_show(window->Window);
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
data->action_text = "Are you sure?";
data->data = widgets;
data->function = (data_function)yon_system_systemd_reexec;
yon_confirmation_dialog_call(self,data);
}
}
@ -361,9 +366,16 @@ void on_user_update_clicked(GtkWidget *self, main_window *widgets){
void on_user_info_clicked(GtkWidget *self, main_window *widgets){
if (self){}
if (widgets){
log_window *window = yon_log_window_new();
gtk_widget_show(window->Window);
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(widgets->UserList);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UserUnitsTree)),&model,&iter)){
char *name;
gtk_tree_model_get(model,&iter,5,&name,-1);
log_window *window = yon_log_window_new();
window->target = user_service_info_command(name);
yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL);
gtk_widget_show(window->Window);
}
}
}
@ -371,9 +383,16 @@ void on_user_info_clicked(GtkWidget *self, main_window *widgets){
void on_user_log_clicked(GtkWidget *self, main_window *widgets){
if (self){}
if (widgets){
log_window *window = yon_log_window_new();
gtk_widget_show(window->Window);
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(widgets->UserList);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UserUnitsTree)),&model,&iter)){
char *name;
gtk_tree_model_get(model,&iter,5,&name,-1);
log_window *window = yon_log_window_new();
window->target = user_get_log_command(name);
yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL);
gtk_widget_show(window->Window);
}
}
}
@ -381,9 +400,24 @@ void on_user_log_clicked(GtkWidget *self, main_window *widgets){
void on_user_edit_clicked(GtkWidget *self, main_window *widgets){
if (self){}
if (widgets){
log_window *window = yon_log_window_new();
gtk_widget_show(window->Window);
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(widgets->UserList);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UserUnitsTree)),&model,&iter)){
char *name;
gtk_tree_model_get(model,&iter,5,&name,-1);
log_window *window = yon_log_window_new();
gtk_widget_show(window->SaveButton);
window->target=user_show_source_command(name);
yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL);
GdkRGBA rgba;
rgba.blue=1;
rgba.green=1;
rgba.red=1;
vte_terminal_set_color_cursor(VTE_TERMINAL(window->SystemTerminal),&rgba);
gtk_widget_set_sensitive(window->SystemTerminal,1);
g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_save_clicked),window);
gtk_widget_show(window->Window);
}
}
}
@ -391,9 +425,17 @@ void on_user_edit_clicked(GtkWidget *self, main_window *widgets){
void on_user_status_clicked(GtkWidget *self, main_window *widgets){
if (self){}
if (widgets){
log_window *window = yon_log_window_new();
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(widgets->UserList);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->UserUnitsTree)),&model,&iter)){
char *name;
gtk_tree_model_get(model,&iter,5,&name,-1);
log_window *window = yon_log_window_new();
window->target = user_properties_command(name);
yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL);
gtk_widget_show(window->Window);
}
gtk_widget_show(window->Window);
}
}
@ -438,24 +480,43 @@ void on_user_unloaded_toggled(GtkWidget *self, main_window *widgets){
}
void on_config_log_save(GtkWidget *self, log_window *window){
if (self){};
GtkTextIter start, end;
GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(window->TextEditor));
gtk_text_buffer_get_end_iter(buffer,&end);
gtk_text_buffer_get_start_iter(buffer,&start);
char *text = gtk_text_buffer_get_text(buffer,&start,&end,1);
if (text){
if (yon_file_save(window->target,text)){
yon_ubl_status_box_render(SAVED_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
} else {
yon_ubl_status_box_render(ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
}
}
}
void on_config_edit_clicked(GtkWidget *self, main_window *widgets){
if (self){}
if (widgets){
log_window *window = yon_log_window_new();
gtk_widget_hide(gtk_widget_get_parent(window->SystemTerminal));
gtk_widget_show(gtk_widget_get_parent(window->TextEditor));
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(widgets->ConfigList);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ConfigMainTree)),&model,&iter)){
log_window *window = yon_log_window_new();
gtk_widget_hide(gtk_widget_get_parent(window->SystemTerminal));
gtk_widget_show(gtk_widget_get_parent(window->TextEditor));
gtk_widget_show(window->SaveButton);
char *name;
gtk_tree_model_get(model,&iter,0,&name,-1);
int size;
window->target = name;
config_str parsed = yon_config_load(config_get_command(name),&size);
char *text = yon_char_parsed_to_string(parsed,size,"");
gtk_text_buffer_set_text(gtk_text_view_get_buffer(GTK_TEXT_VIEW(window->TextEditor)),text,-1);
g_signal_connect(G_OBJECT(window->SaveButton),"clicked",G_CALLBACK(on_config_log_save),window);
gtk_widget_show(window->Window);
}
gtk_widget_show(window->Window);
}
}
@ -573,9 +634,9 @@ gboolean yon_interface_update(main_window *widgets){
config_str config_files = yon_config_load(get_config_files_command,&config_size);
int sessions_size;
config_str sessions = yon_config_load(list_of_session_command,&sessions_size);
// int timers_size;
// config_str timers = yon_config_load(list_of_timers_command,&timers_size);
int timers_size;
config_str timers = yon_config_load(get_timers_command,&timers_size);
struct json_object *jsobject = json_tokener_parse(timers[0]);
for (int i=0; i<system_size;i++){
GtkTreeIter iter;
if (system_services[i][strlen(system_services[i])-1]=='\n') system_services[i][strlen(system_services[i])-1] = '\0';
@ -619,6 +680,52 @@ gboolean yon_interface_update(main_window *widgets){
gtk_list_store_set(widgets->SessionsList,&iter,0,atoi(parsed[0]),1,atoi(parsed[1]),2,parsed[2],3,parsed[3],4,parsed[4],-1);
}
}
for (size_t i=0;i<json_object_array_length(jsobject);i++){
struct json_object *item_obj = json_object_array_get_idx(jsobject, i);
const char *unit="",*next="",*left="",*last="'",*passed="",*activates="";
// Получение значений по ключам
struct json_object *unit_obj;
if (json_object_object_get_ex(item_obj, "unit", &unit_obj)) {
unit = json_object_get_string(unit_obj);
}
struct json_object *next_obj;
if (json_object_object_get_ex(item_obj, "next", &next_obj)) {
next = json_object_get_string(next_obj);
}
struct json_object *left_obj;
if (json_object_object_get_ex(item_obj, "left", &left_obj)) {
left = json_object_get_string(left_obj);
}
struct json_object *last_obj;
if (json_object_object_get_ex(item_obj, "last", &last_obj)) {
last = json_object_get_string(last_obj);
}
struct json_object *passed_obj;
if (json_object_object_get_ex(item_obj, "passed", &passed_obj)) {
passed = json_object_get_string(passed_obj);
}
struct json_object *activates_obj;
if (json_object_object_get_ex(item_obj, "activates", &activates_obj)) {
activates = json_object_get_string(activates_obj);
}
GtkTreeIter iter;
gtk_list_store_append(widgets->TimersList,&iter);
GDateTime *datetime = g_date_time_new_from_unix_local(atoi(next));
next = g_date_time_format(datetime,"%Y.%m.%d H:M:s");
g_date_time_unref(datetime);
datetime = g_date_time_new_from_unix_local(atoi(left));
left = g_date_time_format(datetime,"%Y.%m.%d H:M:s");
g_date_time_unref(datetime);
datetime = g_date_time_new_from_unix_local(atoi(last));
last = g_date_time_format(datetime,"%Y.%m.%d H:M:s");
g_date_time_unref(datetime);
gtk_list_store_set(widgets->TimersList,&iter,0,unit,1,next,2,left,3,last,4,passed,5,activates,-1);
}
}
return 0;
}

@ -13,6 +13,7 @@
#include <libublsettings-gtk3.h>
#include <libublsettingsui-gtk3.h>
#include <time.h>
#include <json-c/json.h>
#ifdef WEBKIT_FOUND
#include <webkit2/webkit2.h>
#endif
@ -49,6 +50,11 @@
#define show_source_command(target) yon_char_append("systemctl edit --full ",target)
#define properties_command(target) yon_char_append("systemctl show --no-pager ",target)
#define user_service_info_command(target) yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ status -l --no-pager ",target,NULL)
#define user_get_log_command(target) yon_char_unite("usermod -a -G systemd-journal ",yon_ubl_root_user_get(),";journalctl --user -u --all --no-pager --unit ",target,NULL)
#define user_show_source_command(target) yon_char_unite("systemctl edit --full ",target,NULL)
#define user_properties_command(target) yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ show --no-pager ",target,NULL)
#define get_config_files_command "find /etc/systemd -iname *.conf -exec du -sh --time {} \\;|sed -e 's/\t/;/g'"
#define system_services_status_command "systemctl status --no-pager"
@ -57,6 +63,7 @@
#define list_of_units_states_command "systemctl list-units --all --no-pager"
#define list_of_sockets_states_command "systemctl list-sockets --all --no-pager"
#define list_of_timers_states_command "systemctl list-timers --all --no-pager"
#define get_timers_command "systemctl list-timers --all --no-pager --plain --no-legend --output=json"
#define installed_units_command "systemctl list-unit-files --no-pager| sed -e 's/ */;/g'"
#define list_of_units_command "systemctl list-units --all --no-pager| sed -e 's/ */;/g'"
@ -329,6 +336,7 @@ void on_user_inactive_toggled(GtkWidget *self, main_window *widgets);
void on_user_unloaded_toggled(GtkWidget *self, main_window *widgets);
void on_config_log_save(GtkWidget *self, log_window *window);
void on_config_edit_clicked(GtkWidget *self, main_window *widgets);
void on_session_start_clicked(GtkWidget *self, main_window *widgets);

@ -55,6 +55,8 @@
#define SOURCE_UNFOUND_LABEL _("Service source were not loaded")
#define SAVING_LABEL _("Saving...")
#define SAVED_LABEL _("Saved")
#define ERROR_LABEL _("Error has occured")
#define SWITCH_OFF_ERROR_LABEL _("Service were not stopped")
#define STOP_SERVICE_WARMING_LABEL(target) yon_char_unite(_("Are you sure want to stop "),target,"?\n",_("The stop will be forced.\nThe system may become unstable."),NULL)
Loading…
Cancel
Save