#include #include #include #include #include "ubl-standard-ui.c" #define cssPath "/usr/share/ubl-settings-info/ubl-settings-info.css" #define gladePath "/usr/share/ubl-settings-info/ubl-settings-info.glade" #define HeaderImagePath "/usr/share/icons/hicolor/scalable/apps/ubl-settings-info.svg" #define LogoImagePath "/usr/share/icons/hicolor/scalable/apps/ubl-settings-manager.svg" char *yon_char_get_augumented(char *source, char *append){ int size=strlen(source)+strlen(append)+1; char *final=malloc(size); memset(final,0,size); sprintf(final,"%s%s",source,append); return final; } char *yon_cut(char *source, int size, int startpos){ char *cut=NULL; cut=malloc(size+1); memset(cut,0,size+1); memcpy(cut,source+startpos,size); return cut; } void on_resized(GtkWidget *window, GdkEventConfigure *event){ int x,y; gtk_window_get_size(GTK_WINDOW(window),&x,&y); printf("x - %d\ny - %d\n"); } int main(int argc, char *argv[]){ int argsc=0; char *arv=""; char **argsv=&arv; GError *err=NULL; gtk_init(&argsc, &argsv); GtkBuilder *builder = gtk_builder_new_from_file(gladePath); GtkWidget *plugBox = GTK_WIDGET(gtk_builder_get_object(builder, "plugBox")); GtkWidget *button = GTK_WIDGET(gtk_builder_get_object(builder, "ButtonToHeader")); GtkWidget *labelInfo = GTK_WIDGET(gtk_builder_get_object(builder, "InfoLabel")); GtkWidget *iconInfo = GTK_WIDGET(gtk_builder_get_object(builder, "InfoIcon")); gtk_image_set_from_pixbuf(GTK_IMAGE(iconInfo),gdk_pixbuf_new_from_file_at_size(LogoImagePath,256,256,&err)); if (err){ printf("%s\n",err->message); g_error_free(err); } GtkCssProvider *css=gtk_css_provider_new(); gtk_css_provider_load_from_path(css,cssPath,&err); if (err){ printf("%s\n",err->message); g_error_free(err); } gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(css), 0); FILE *fp; char path[1035]; char *loc=setlocale(LC_ALL,NULL); if (strcmp(loc,"ru_RU.UTF-8")==0) fp = popen("screenfetch -N -n | sed 's/OS:/Система:/' | sed 's/Kernel:/Ядро:/g' | sed 's/Uptime:/Время работы:/g' | \ sed 's/Packages:/Установлено пакетов:/g' | sed 's/Shell:/Оболочка:/g' | sed 's/Resolution:/Разрешение:/g' | sed 's/DE:/Среда рабочего стола:/g' | \ sed 's/WM:/Оконный менеджер:/g' | sed 's/WM Theme:/Тема оконного менеджера:/g' | sed 's/GTK Theme:/Тема GTK:/g' | sed 's/Icon Theme:/Тема значков:/g' | sed 's/Font:/Шрифт:/g' | \ sed 's/Disk:/Диск:/g' | sed 's/RAM:/Оперативная память:/g'", "r"); else fp = popen("screenfetch -n -w -N", "r"); if (fp == NULL) { printf("Failed to run command\n" ); exit(1); } char *line=NULL; line=""; char *prevline=""; char *pth; char *preph=""; line=""; while (fgets(path, sizeof(path),fp)!=NULL){ line=strstr(path,": "); if (line!=NULL){ int size=strlen(path)-strlen(line); pth=yon_cut(path,size,0); pth=yon_char_get_augumented("",pth); pth=yon_char_get_augumented(pth,""); line=yon_char_get_augumented(pth,line); } else { line=path; pth="\n"; line=yon_char_get_augumented(pth,line); if (strlen(line)>40){ char *fnd=strstr(line," "); *fnd='\n'; } } prevline=yon_char_get_augumented(prevline,line); } prevline=yon_char_get_augumented(prevline,"");; gtk_label_set_text(GTK_LABEL(labelInfo),prevline); gtk_label_set_markup (GTK_LABEL(labelInfo),prevline);; int socket_id=0; int socket_ext_id=0; int option_index=0; int textsize=0; int pointer=0; static struct option long_options[] = { {"socket-id", 2, 0, 0}, {"socket-ext-id", 2, 0, 2}, {"size",2,0,1} }; int socket_find; for (int i=0;iuiwindow; gtk_box_pack_start(GTK_BOX(mainui),plugBox,1,1,0); gtk_widget_show_all(plugBox); } else { GtkWidget *mainui = NULL; returnstruct *ret = ubl_get_standard_ui(HeaderImagePath, "Информация о системе",0,button, socket_ext_id); mainui=ret->uiwindow; gtk_box_pack_start(GTK_BOX(mainui),plugBox,1,1,0); printf("Plug mod\n"); GtkWidget *plug=GTK_WIDGET(gtk_plug_new(socket_id)); g_signal_connect(G_OBJECT(plug), "destroy", G_CALLBACK(gtk_main_quit),NULL); GtkWidget *parentWindow = gtk_widget_get_parent(plugBox); gtk_container_remove(GTK_CONTAINER(parentWindow),plugBox); gtk_container_add(GTK_CONTAINER(plug),plugBox); gtk_widget_show_all(plug); } gtk_main(); }