#include <glib.h>
#include <gtk/gtk.h>
#include "eggtrayicon.h"
#include "support.h"
#include "others.h"
#include "lininfo.h"
Go to the source code of this file.
Functions | |
void | lkmonitor_exit () |
performs collector cancellation | |
void | docklet_onclick (GtkWidget *w) |
void | lkmonitor_create_tray_icon () |
Creates docklet. | |
int | lkmonitor_load_net_dev (GtkWidget *w) |
void | lkmonitor_init_widgets (GtkWidget *window) |
void | lkmonitor_fill_tv (GtkListStore *model, GtkTreeView *gtv, GtkTreeIter iter, char *buffer, int type) |
void | lkmonitor_fill_tv_modules (GtkListStore *model, GtkTreeView *gtv, GtkTreeIter iter, char *buffer) |
void | lkmonitor_write_settings () |
Write settings. | |
char * | lkmonitor_itoa (int num) |
Converts from integet to char *. | |
Variables | |
struct { | |
EggTrayIcon * eti | |
GtkWidget * eb | |
GtkWidget * image | |
} | docklet |
GThread * | gt_collector |
GtkWidget * | window1 |
void docklet_onclick | ( | GtkWidget * | w | ) |
Shows the window when click on the docklet.
w | the clicked widget |
Definition at line 67 of file lkmonitor.c.
References is_icon, and window1.
Referenced by lkmonitor_create_tray_icon().
00068 { 00069 extern gboolean is_icon; 00070 00071 gtk_widget_show(window1); 00072 is_icon=FALSE; 00073 00074 }
void lkmonitor_create_tray_icon | ( | ) |
Creates docklet.
Creates the tray_icon. Based on the code of jabber IM client.
Definition at line 79 of file lkmonitor.c.
References create_pixbuf(), docklet_onclick(), egg_tray_icon_new(), and window1.
Referenced by main().
00079 { 00080 00081 gint w = 0; 00082 gint h = 0; 00083 00084 docklet.eti = egg_tray_icon_new("lkmonitor"); 00085 docklet.eb = gtk_event_box_new(); 00086 docklet.image = gtk_image_new(); 00087 00088 GdkPixbuf *pb = NULL; 00089 GdkPixbuf *pb_scaled = NULL; 00090 00091 pb =create_pixbuf("lkmonitor/spider-shadow32.png"); 00092 gtk_icon_size_lookup(GTK_ICON_SIZE_LARGE_TOOLBAR, &w, &h); 00093 pb_scaled = gdk_pixbuf_scale_simple(pb, w, h, GDK_INTERP_BILINEAR); 00094 gtk_image_set_from_pixbuf(GTK_IMAGE(docklet.image), pb_scaled); 00095 00096 00097 gtk_container_add(GTK_CONTAINER(docklet.eb), docklet.image); 00098 gtk_container_add(GTK_CONTAINER(docklet.eti), docklet.eb); 00099 gtk_widget_show_all(GTK_WIDGET(docklet.eti)); 00100 00101 00102 g_signal_connect(G_OBJECT(docklet.eb), "button-press-event", G_CALLBACK(docklet_onclick), window1); 00103 00104 00105 g_object_ref(G_OBJECT(docklet.eti)); 00106 }
void lkmonitor_exit | ( | ) |
performs collector cancellation
Stops collector thread and runs outside event loop.
Definition at line 56 of file lkmonitor.c.
References collector_exit.
Referenced by on_quit1_activate().
00057 { 00058 extern gboolean collector_exit; 00059 00060 collector_exit=TRUE; 00061 gtk_main_quit(); 00062 }
void lkmonitor_fill_tv | ( | GtkListStore * | model, | |
GtkTreeView * | gtv, | |||
GtkTreeIter | iter, | |||
char * | buffer, | |||
int | type | |||
) |
Fills devices treeviews with data.
model | the model | |
gtv | the treview to fill | |
iter | iterator for the model | |
buffer | string with data to be inserted into the model | |
type | number identifying the type of treeview to fill |
Definition at line 351 of file lkmonitor.c.
References TV_DEVS, and TV_MODS.
Referenced by update_devs(), and update_modules_info().
00353 { 00354 g_assert(model!=NULL && gtv!=NULL && buffer !=NULL); 00355 00356 char *pointer; 00357 //Now add data to model 00358 00359 pointer=buffer; 00360 00361 if(type==TV_DEVS){ 00362 00363 char name[50]; 00364 int num; 00365 00366 while(*pointer!='\0'){ 00367 gtk_list_store_append(model,&iter); 00368 sscanf(pointer,"%d %s",&num,name); 00369 gtk_list_store_set(model,&iter,0,num,1,name,-1); 00370 pointer=strchr(pointer,'\n')+1; 00371 } 00372 } 00373 00374 if(type==TV_MODS){ 00375 00376 char name[20], size[6], refcount[3], state[10], address[20]; 00377 00378 while(*pointer!='\0'){ 00379 gtk_list_store_append(model,&iter); 00380 sscanf(pointer,"%s %s %s %s %s",name,size,refcount,state,address); 00381 gtk_list_store_set(model,&iter,0,name,1,size,2,refcount,3,state,4,address,-1); 00382 pointer=strchr(pointer, '\n')+1; 00383 } 00384 } 00385 }
void lkmonitor_fill_tv_modules | ( | GtkListStore * | model, | |
GtkTreeView * | gtv, | |||
GtkTreeIter | iter, | |||
char * | buffer | |||
) |
Fills devices treeviews with data.
model | the model | |
gtv | the treview to fill | |
iter | iterator for the model | |
buffer | string with data to be inserted into the model |
Definition at line 394 of file lkmonitor.c.
00396 { 00397 g_assert(model!=NULL && gtv!=NULL && buffer !=NULL); 00398 00399 char *pointer; 00400 char name[50]; 00401 int num; 00402 //Now add data to model 00403 00404 pointer=buffer; 00405 00406 while(*pointer!='\0'){ 00407 gtk_list_store_append(model,&iter); 00408 sscanf(pointer,"%d %s",&num,name); 00409 gtk_list_store_set(model,&iter,0,num,1,name,-1); 00410 pointer=strchr(pointer,'\n')+1; 00411 } 00412 }
void lkmonitor_init_widgets | ( | GtkWidget * | window | ) |
Initialize additional widgets. This function initialize more widgets like GtkTreeViews.
window | main window |
Definition at line 153 of file lkmonitor.c.
References lkmonitor_load_net_dev(), lookup_widget(), and window1.
Referenced by main().
00154 { 00155 00156 GtkListStore *block_list; 00157 GtkListStore *char_list; 00158 GtkListStore *process_list; 00159 GtkListStore *modules_list; 00160 GtkCellRenderer *b_renderer; 00161 GtkCellRenderer *c_renderer; 00162 GtkCellRenderer *p_renderer; 00163 GtkTreeView *gtv_char; 00164 GtkTreeView *gtv_block; 00165 GtkTreeView *gtv_processes; 00166 GtkTreeView *gtv_modules; 00167 00168 /* For the gtktextviews */ 00169 GtkTextView *gtv; 00170 GtkTextBuffer *gtktextb_ioports; 00171 GtkTextBuffer *gtktextb_iomem; 00172 GtkTextBuffer *gtktextb_dma; 00173 GtkTextBuffer *gtktextb_fs; 00174 GtkTextBuffer *gtktextb_pfs; 00175 00176 00177 /*Tree views to show devices*/ 00178 /*For block devices*/ 00179 00180 /*First column*/ 00181 gtv_block= (GtkTreeView *)lookup_widget(window,"gtv_block"); 00182 block_list=gtk_list_store_new(2,G_TYPE_INT, G_TYPE_STRING); 00183 gtk_tree_view_set_model(GTK_TREE_VIEW(gtv_block),GTK_TREE_MODEL(block_list)); 00184 00185 b_renderer = gtk_cell_renderer_text_new (); 00186 gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (gtv_block), 00187 -1, 00188 _("Number"), 00189 b_renderer, 00190 "text", 0, 00191 NULL); 00192 00193 /*Second column*/ 00194 00195 b_renderer = gtk_cell_renderer_text_new (); 00196 gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (gtv_block), 00197 -1, 00198 _("Device"), 00199 b_renderer, 00200 "text", 1, 00201 NULL); 00202 00203 00204 /*For char devices*/ 00205 00206 /*First column*/ 00207 gtv_char= (GtkTreeView *)lookup_widget(window,"gtv_char"); 00208 char_list=gtk_list_store_new(2,G_TYPE_INT, G_TYPE_STRING); 00209 gtk_tree_view_set_model(GTK_TREE_VIEW(gtv_char),GTK_TREE_MODEL(char_list)); 00210 00211 c_renderer = gtk_cell_renderer_text_new (); 00212 gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (gtv_char), 00213 -1, 00214 _("Number"), 00215 c_renderer, 00216 "text", 0, 00217 NULL); 00218 00219 /*Second column*/ 00220 00221 c_renderer = gtk_cell_renderer_text_new (); 00222 gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (gtv_char), 00223 -1, 00224 _("Device"), 00225 c_renderer, 00226 "text", 1, 00227 NULL); 00228 00229 /*For Processes List*/ 00230 00231 /*First column*/ 00232 gtv_processes= (GtkTreeView *)lookup_widget(window,"gtv_processes"); 00233 process_list=gtk_list_store_new(2,G_TYPE_INT, G_TYPE_STRING); 00234 gtk_tree_view_set_model(GTK_TREE_VIEW(gtv_processes),GTK_TREE_MODEL(process_list)); 00235 00236 p_renderer = gtk_cell_renderer_text_new (); 00237 gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (gtv_processes), 00238 -1, 00239 _("PID"), 00240 p_renderer, 00241 "text", 0, 00242 NULL); 00243 00244 /*Second column*/ 00245 00246 c_renderer = gtk_cell_renderer_text_new (); 00247 gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (gtv_processes), 00248 -1, 00249 _("Command"), 00250 c_renderer, 00251 "text", 1, 00252 NULL); 00253 00254 /* For Modules list */ 00255 00256 gtv_modules= (GtkTreeView *)lookup_widget(window,"gtv_modules"); 00257 modules_list=gtk_list_store_new(5,G_TYPE_STRING, G_TYPE_STRING,G_TYPE_STRING, 00258 G_TYPE_STRING,G_TYPE_STRING); 00259 00260 gtk_tree_view_set_model(GTK_TREE_VIEW(gtv_modules),GTK_TREE_MODEL(modules_list)); 00261 00262 /*First column*/ 00263 p_renderer = gtk_cell_renderer_text_new (); 00264 gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (gtv_modules), 00265 -1, 00266 _("Name"), 00267 p_renderer, 00268 "text", 0, 00269 NULL); 00270 00271 /*Second column*/ 00272 00273 c_renderer = gtk_cell_renderer_text_new (); 00274 gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (gtv_modules), 00275 -1, 00276 _("Size"), 00277 c_renderer, 00278 "text", 1, 00279 NULL); 00280 00281 /*Third column*/ 00282 p_renderer = gtk_cell_renderer_text_new (); 00283 gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (gtv_modules), 00284 -1, 00285 _("RefCount"), 00286 p_renderer, 00287 "text", 2, 00288 NULL); 00289 00290 /*Forth column*/ 00291 00292 c_renderer = gtk_cell_renderer_text_new (); 00293 gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (gtv_modules), 00294 -1, 00295 _("State"), 00296 c_renderer, 00297 "text", 3, 00298 NULL); 00299 00300 /*Fifth column*/ 00301 00302 c_renderer = gtk_cell_renderer_text_new (); 00303 gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (gtv_modules), 00304 -1, 00305 _("Address"), 00306 c_renderer, 00307 "text", 4, 00308 NULL); 00309 00310 /* We need to initialize the gtktextviews adding buffers to them */ 00311 00312 /* First, create the GtkTextBuffers */ 00313 00314 gtktextb_ioports=gtk_text_buffer_new(NULL); 00315 gtktextb_iomem=gtk_text_buffer_new(NULL); 00316 gtktextb_dma=gtk_text_buffer_new(NULL); 00317 gtktextb_fs=gtk_text_buffer_new(NULL); 00318 gtktextb_pfs=gtk_text_buffer_new(NULL); 00319 00320 /* Attach them */ 00321 gtv=GTK_TEXT_VIEW(lookup_widget(window1,"gtextv_ioports")); 00322 gtk_text_view_set_buffer(gtv,gtktextb_ioports); 00323 00324 gtv=GTK_TEXT_VIEW(lookup_widget(window1,"gtextv_iomem")); 00325 gtk_text_view_set_buffer(gtv,gtktextb_iomem); 00326 00327 gtv=GTK_TEXT_VIEW(lookup_widget(window1,"gtextv_dma")); 00328 gtk_text_view_set_buffer(gtv,gtktextb_dma); 00329 00330 gtv=GTK_TEXT_VIEW(lookup_widget(window1,"gtextv_fs")); 00331 gtk_text_view_set_buffer(gtv,gtktextb_fs); 00332 00333 gtv=GTK_TEXT_VIEW(lookup_widget(window1,"gtextv_pfs")); 00334 gtk_text_view_set_buffer(gtv,gtktextb_pfs); 00335 00336 00337 /* Search for net devices and fill the combo box */ 00338 lkmonitor_load_net_dev(window1); 00339 00340 }
char* lkmonitor_itoa | ( | int | num | ) |
Converts from integet to char *.
Converts an int to a string
num | Integer |
Definition at line 504 of file lkmonitor.c.
Referenced by get_process_info(), update_net_info(), and update_process_window().
00505 { 00506 GString *gs=g_string_new(""); 00507 00508 g_string_printf(gs,"%d",num); 00509 00510 return gs->str; 00511 00512 }
int lkmonitor_load_net_dev | ( | GtkWidget * | w | ) |
Searchs for net devices and place them in the combo box
w | Main window |
Definition at line 112 of file lkmonitor.c.
References lookup_widget(), NET_DEVS, and skip_lines().
Referenced by lkmonitor_init_widgets().
00113 { 00114 char *contents,*contentsp,*p; 00115 char dev_name[10]; 00116 int i=0; 00117 GtkComboBox *gcb_netdevs; 00118 00119 if(g_file_get_contents(NET_DEVS,&contents,NULL,NULL)==FALSE){ 00120 g_warning("No net devices file"); 00121 gcb_netdevs=GTK_COMBO_BOX(lookup_widget(w,"cb_net_devs")); 00122 gtk_widget_set_sensitive(GTK_WIDGET(gcb_netdevs),FALSE); 00123 g_free(contents); 00124 return -1; 00125 } 00126 00127 gcb_netdevs=GTK_COMBO_BOX(lookup_widget(w,"cb_net_devs")); 00128 00129 /* File exists */ 00130 00131 contentsp=skip_lines(contents,2); 00132 00133 while(sscanf(contentsp,"%10s:",dev_name)!=EOF){ 00134 /* Remove the ':' */ 00135 if((p=strchr(dev_name,':'))!=NULL) 00136 *p='\0'; 00137 gtk_combo_box_insert_text(gcb_netdevs,i++,dev_name); 00138 contentsp=skip_lines(contentsp,1); 00139 } 00140 00141 gtk_combo_box_set_active(gcb_netdevs,0); 00142 00143 /* Clean up */ 00144 g_free(contents); 00145 return 0; 00146 00147 }
void lkmonitor_write_settings | ( | ) |
Write settings.
Write new settings.
Definition at line 416 of file lkmonitor.c.
References DOMAIN_NAME, FILE_MAX, HOST_NAME, INODES, lookup_widget(), P_MAX_M, P_MAX_Q, P_MAX_S, PAGE_MAX, SEG_MAX, SEG_SIZE, SEM, THREADS_MAX, window1, write_string_to_file(), and write_values_to_file().
Referenced by on_btn_write_clicked().
00417 { 00418 //This is called from a callback, so we are still running in a gtk lock. 00419 GtkEntry *ent; 00420 GtkLabel *lbl; 00421 GtkSpinButton *spb; 00422 GString *gs; 00423 int val1,val2,val3,val4; 00424 00425 /*For Identification*/ 00426 ent=GTK_ENTRY(lookup_widget(window1,"ent_hostname")); 00427 gs=g_string_new(gtk_entry_get_text(ent)); 00428 write_string_to_file(gs->str,HOST_NAME); 00429 00430 ent=GTK_ENTRY(lookup_widget(window1,"ent_domainname")); 00431 gs=g_string_new(gtk_entry_get_text(ent)); 00432 write_string_to_file(gs->str,DOMAIN_NAME); 00433 00434 /*For Files*/ 00435 00436 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_fdmax")); 00437 val1=(int)gtk_spin_button_get_value_as_int(spb); 00438 00439 write_values_to_file(3,FILE_MAX,val1); 00440 00441 /*For Inodes*/ 00442 lbl=GTK_LABEL(lookup_widget(window1,"lbl_inmax")); 00443 val1=atoi((char *)gtk_label_get_text(lbl)); 00444 00445 lbl=GTK_LABEL(lookup_widget(window1,"lbl_ina")); 00446 val2=atoi((char *)gtk_label_get_text(lbl)); 00447 00448 write_values_to_file(2,INODES,val1,val2); 00449 00450 /*For POSIX signals*/ 00451 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_mq")); 00452 val1=gtk_spin_button_get_value_as_int(spb); 00453 write_values_to_file(1,P_MAX_Q,val1); 00454 00455 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_max_mpq")); 00456 val1=gtk_spin_button_get_value_as_int(spb); 00457 write_values_to_file(1,P_MAX_M,val1); 00458 00459 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_max_ms")); 00460 val1=gtk_spin_button_get_value_as_int(spb); 00461 write_values_to_file(1,P_MAX_S,val1); 00462 00463 /*For shared memory*/ 00464 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_max_pages")); 00465 val1=gtk_spin_button_get_value_as_int(spb); 00466 write_values_to_file(1,PAGE_MAX,val1); 00467 00468 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_max_segs")); 00469 val1=gtk_spin_button_get_value_as_int(spb); 00470 write_values_to_file(1,SEG_MAX,val1); 00471 00472 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_seg_size")); 00473 val1=gtk_spin_button_get_value_as_int(spb); 00474 write_values_to_file(1,SEG_SIZE,val1); 00475 00476 /*For semaphores*/ 00477 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_sem_per_id")); 00478 val1=gtk_spin_button_get_value_as_int(spb); 00479 00480 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_sem_val")); 00481 val2=gtk_spin_button_get_value_as_int(spb); 00482 00483 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_ops")); 00484 val3=gtk_spin_button_get_value_as_int(spb); 00485 00486 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_sem_id")); 00487 val4=gtk_spin_button_get_value_as_int(spb); 00488 00489 write_values_to_file(4,SEM,val1,val2,val3,val4); 00490 00491 /*For threads*/ 00492 spb=GTK_SPIN_BUTTON(lookup_widget(window1,"spb_maxthreads")); 00493 val1=gtk_spin_button_get_value_as_int(spb); 00494 00495 write_values_to_file(1,THREADS_MAX,val1); 00496 }
struct { ... } docklet |
GtkWidget* eb |
Definition at line 45 of file lkmonitor.c.
Definition at line 44 of file lkmonitor.c.
GThread* gt_collector |
GtkWidget* image |
Definition at line 46 of file lkmonitor.c.
GtkWidget* window1 |
Definition at line 48 of file main.c.
Referenced by create_window1(), docklet_onclick(), lkmonitor_create_tray_icon(), lkmonitor_init_widgets(), lkmonitor_write_settings(), main(), refresh(), update_channels(), update_cmd_ver(), update_cpu(), update_cpu_mhz(), update_devs(), update_fs_info(), update_mem(), update_misc(), update_modules_info(), update_net_info(), update_process(), and update_settings().