|
|
@ -515,149 +515,150 @@ void on_apply_filters(GtkWidget *self, dictionary *dict){
|
|
|
|
on_close_subwindow(self);
|
|
|
|
on_close_subwindow(self);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// void on_quota_manual_input(GtkWidget *self, quota_window *window){
|
|
|
|
void on_quota_manual_input(GtkWidget *self, quota_window *window){
|
|
|
|
// // g_signal_handlers_block_by_func(G_OBJECT(window));
|
|
|
|
gtk_combo_box_set_active(GTK_COMBO_BOX(window->DeviceLimitCombo),-1);
|
|
|
|
// int size=0;
|
|
|
|
int size=0;
|
|
|
|
// char *string = yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(self)));
|
|
|
|
char *string = yon_char_new((char*)gtk_entry_get_text(GTK_ENTRY(self)));
|
|
|
|
// config_str rtn = yon_char_parse(string,&size,",");
|
|
|
|
config_str rtn = yon_char_parse(string,&size,",");
|
|
|
|
// if (rtn){
|
|
|
|
if (rtn){
|
|
|
|
// for (int i=0; i<size; i++){
|
|
|
|
for (int i=0; i<size; i++){
|
|
|
|
// char *value = yon_char_new(rtn[i]);
|
|
|
|
char *value = yon_char_new(rtn[i]);
|
|
|
|
// yon_char_divide_search(value,"=",-1);
|
|
|
|
yon_char_divide_search(value,"=",-1);
|
|
|
|
// int size = yon_get_size_request_from_letter(value[strlen(value)-1]);
|
|
|
|
int size = yon_get_size_request_from_letter(value[strlen(value)-1]);
|
|
|
|
// if (size!=-1||strstr(rtn[i],"CPUQuota=")){
|
|
|
|
if (size!=-1||strstr(rtn[i],"CPUQuota=")){
|
|
|
|
// // value[strlen(value)-1]='\0';
|
|
|
|
// value[strlen(value)-1]='\0';
|
|
|
|
// if (strstr(rtn[i],"MemoryHigh=")){
|
|
|
|
if (strstr(rtn[i],"MemoryHigh=")){
|
|
|
|
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->SoftRestrictionCheck),1);
|
|
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->SoftRestrictionCheck),1);
|
|
|
|
// gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->SoftRestrictionSpin),strtol(value,NULL,10));
|
|
|
|
gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->SoftRestrictionSpin),strtol(value,NULL,10));
|
|
|
|
// gtk_combo_box_set_active(GTK_COMBO_BOX(window->SoftRestrictionCombo),size);
|
|
|
|
gtk_combo_box_set_active(GTK_COMBO_BOX(window->SoftRestrictionCombo),size);
|
|
|
|
// } else if (strstr(rtn[i],"MemoryMax=")){
|
|
|
|
} else if (strstr(rtn[i],"MemoryMax=")){
|
|
|
|
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->HardRestrictionCheck),1);
|
|
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->HardRestrictionCheck),1);
|
|
|
|
// gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->HardRestrictionSpin),strtol(value,NULL,10));
|
|
|
|
gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->HardRestrictionSpin),strtol(value,NULL,10));
|
|
|
|
// gtk_combo_box_set_active(GTK_COMBO_BOX(window->HardRestrictionCombo),size);
|
|
|
|
gtk_combo_box_set_active(GTK_COMBO_BOX(window->HardRestrictionCombo),size);
|
|
|
|
|
|
|
|
|
|
|
|
// } else if (strstr(rtn[i],"MemorySwapMax=")){
|
|
|
|
} else if (strstr(rtn[i],"MemorySwapMax=")){
|
|
|
|
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PagingLimitCheck),1);
|
|
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PagingLimitCheck),1);
|
|
|
|
// gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->PagingLimitSpin),strtol(value,NULL,10));
|
|
|
|
gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->PagingLimitSpin),strtol(value,NULL,10));
|
|
|
|
// gtk_combo_box_set_active(GTK_COMBO_BOX(window->PagingLimitCombo),size);
|
|
|
|
gtk_combo_box_set_active(GTK_COMBO_BOX(window->PagingLimitCombo),size);
|
|
|
|
|
|
|
|
|
|
|
|
// } else if (strstr(rtn[i],"CPUQuota=")){
|
|
|
|
} else if (strstr(rtn[i],"CPUQuota=")){
|
|
|
|
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->CpuLimitCheck),1);
|
|
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->CpuLimitCheck),1);
|
|
|
|
// gtk_spin_button_set_value(GTK_SPIN_BUTTON(window-> CpuLimitSpin),strtol(value,NULL,10));
|
|
|
|
gtk_spin_button_set_value(GTK_SPIN_BUTTON(window-> CpuLimitSpin),strtol(value,NULL,10));
|
|
|
|
|
|
|
|
|
|
|
|
// } else if (strstr(rtn[i],"IOReadBandwidthMax=")){
|
|
|
|
} else if (strstr(rtn[i],"IOReadBandwidthMax=")){
|
|
|
|
// char *name = yon_char_divide_search(value, " ",-1);
|
|
|
|
char *name = yon_char_divide_search(value, " ",-1);
|
|
|
|
// dictionary *dict;
|
|
|
|
dictionary *dict;
|
|
|
|
// for_dictionaries(dict,window->devices){
|
|
|
|
for_dictionaries(dict,window->devices){
|
|
|
|
// if (strstr(dict->key,name)){
|
|
|
|
if (strstr(dict->key,name)){
|
|
|
|
// if (!((device_limits*)dict->data)){
|
|
|
|
if (!((device_limits*)dict->data)){
|
|
|
|
// dict->data = g_malloc0(sizeof(device_limits));
|
|
|
|
dict->data = g_malloc0(sizeof(device_limits));
|
|
|
|
// ((device_limits*)dict->data)->write=NULL;
|
|
|
|
((device_limits*)dict->data)->write=NULL;
|
|
|
|
// ((device_limits*)dict->data)->read=NULL;
|
|
|
|
((device_limits*)dict->data)->read=NULL;
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
// ((device_limits*)dict->data)->read = value;
|
|
|
|
((device_limits*)dict->data)->read = value;
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// } else if (strstr(rtn[i],"IOWriteBandwidthMax=")){
|
|
|
|
} else if (strstr(rtn[i],"IOWriteBandwidthMax=")){
|
|
|
|
// char *name = yon_char_divide_search(value, " ",-1);
|
|
|
|
char *name = yon_char_divide_search(value, " ",-1);
|
|
|
|
// dictionary *dict;
|
|
|
|
dictionary *dict;
|
|
|
|
// for_dictionaries(dict,window->devices){
|
|
|
|
for_dictionaries(dict,window->devices){
|
|
|
|
// if (strstr(dict->key,name)){
|
|
|
|
if (strstr(dict->key,name)){
|
|
|
|
// if (!((device_limits*)dict->data)){
|
|
|
|
if (!((device_limits*)dict->data)){
|
|
|
|
// dict->data = g_malloc0(sizeof(device_limits));
|
|
|
|
dict->data = g_malloc0(sizeof(device_limits));
|
|
|
|
// ((device_limits*)dict->data)->write=NULL;
|
|
|
|
((device_limits*)dict->data)->write=NULL;
|
|
|
|
// ((device_limits*)dict->data)->read=NULL;
|
|
|
|
((device_limits*)dict->data)->read=NULL;
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
// ((device_limits*)dict->data)->write = value;
|
|
|
|
((device_limits*)dict->data)->write = value;
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// } else return;
|
|
|
|
} else return;
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
// free(value);
|
|
|
|
free(value);
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
// } else {
|
|
|
|
} else {
|
|
|
|
// char *value = yon_char_new(string);
|
|
|
|
char *value = yon_char_new(string);
|
|
|
|
// yon_char_divide_search(value,"=",-1);
|
|
|
|
yon_char_divide_search(value,"=",-1);
|
|
|
|
// int size = yon_get_size_request_from_letter(value[strlen(value)-1]);
|
|
|
|
int size = yon_get_size_request_from_letter(value[strlen(value)-1]);
|
|
|
|
// if (size!=-1||strstr(string,"CPUQuota=")){
|
|
|
|
if (size!=-1||strstr(string,"CPUQuota=")){
|
|
|
|
// // value[strlen(value)-1]='\0';
|
|
|
|
// value[strlen(value)-1]='\0';
|
|
|
|
// if (strstr(string,"MemoryHigh=")){
|
|
|
|
if (strstr(string,"MemoryHigh=")){
|
|
|
|
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->SoftRestrictionCheck),1);
|
|
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->SoftRestrictionCheck),1);
|
|
|
|
// gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->SoftRestrictionSpin),strtol(value,NULL,10));
|
|
|
|
gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->SoftRestrictionSpin),strtol(value,NULL,10));
|
|
|
|
// gtk_combo_box_set_active(GTK_COMBO_BOX(window->SoftRestrictionCombo),size);
|
|
|
|
gtk_combo_box_set_active(GTK_COMBO_BOX(window->SoftRestrictionCombo),size);
|
|
|
|
// } else if (strstr(string,"MemoryMax=")){
|
|
|
|
} else if (strstr(string,"MemoryMax=")){
|
|
|
|
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->HardRestrictionCheck),1);
|
|
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->HardRestrictionCheck),1);
|
|
|
|
// gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->HardRestrictionSpin),strtol(value,NULL,10));
|
|
|
|
gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->HardRestrictionSpin),strtol(value,NULL,10));
|
|
|
|
// gtk_combo_box_set_active(GTK_COMBO_BOX(window->HardRestrictionCombo),size);
|
|
|
|
gtk_combo_box_set_active(GTK_COMBO_BOX(window->HardRestrictionCombo),size);
|
|
|
|
|
|
|
|
|
|
|
|
// } else if (strstr(string,"MemorySwapMax=")){
|
|
|
|
} else if (strstr(string,"MemorySwapMax=")){
|
|
|
|
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PagingLimitCheck),1);
|
|
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->PagingLimitCheck),1);
|
|
|
|
// gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->PagingLimitSpin),strtol(value,NULL,10));
|
|
|
|
gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->PagingLimitSpin),strtol(value,NULL,10));
|
|
|
|
// gtk_combo_box_set_active(GTK_COMBO_BOX(window->PagingLimitCombo),size);
|
|
|
|
gtk_combo_box_set_active(GTK_COMBO_BOX(window->PagingLimitCombo),size);
|
|
|
|
|
|
|
|
|
|
|
|
// } else if (strstr(string,"CPUQuota=")){
|
|
|
|
} else if (strstr(string,"CPUQuota=")){
|
|
|
|
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->CpuLimitCheck),1);
|
|
|
|
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->CpuLimitCheck),1);
|
|
|
|
// gtk_spin_button_set_value(GTK_SPIN_BUTTON(window-> CpuLimitSpin),strtol(value,NULL,10));
|
|
|
|
gtk_spin_button_set_value(GTK_SPIN_BUTTON(window-> CpuLimitSpin),strtol(value,NULL,10));
|
|
|
|
|
|
|
|
|
|
|
|
// } else if (strstr(string,"IOReadBandwidthMax=")){
|
|
|
|
} else if (strstr(string,"IOReadBandwidthMax=")){
|
|
|
|
// char *name = yon_char_divide_search(value, " ",-1);
|
|
|
|
char *name = yon_char_divide_search(value, " ",-1);
|
|
|
|
// dictionary *dict;
|
|
|
|
dictionary *dict;
|
|
|
|
// for_dictionaries(dict,window->devices){
|
|
|
|
for_dictionaries(dict,window->devices){
|
|
|
|
// if (strstr(dict->key,name)){
|
|
|
|
if (strstr(dict->key,name)){
|
|
|
|
// if (!((device_limits*)dict->data)){
|
|
|
|
if (!((device_limits*)dict->data)){
|
|
|
|
// dict->data = g_malloc0(sizeof(device_limits));
|
|
|
|
dict->data = g_malloc0(sizeof(device_limits));
|
|
|
|
// ((device_limits*)dict->data)->write=NULL;
|
|
|
|
((device_limits*)dict->data)->write=NULL;
|
|
|
|
// ((device_limits*)dict->data)->read=NULL;
|
|
|
|
((device_limits*)dict->data)->read=NULL;
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
// ((device_limits*)dict->data)->read = value;
|
|
|
|
((device_limits*)dict->data)->read = value;
|
|
|
|
// }
|
|
|
|
break;
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
// } else if (strstr(string,"IOWriteBandwidthMax=")){
|
|
|
|
|
|
|
|
// char *name = yon_char_divide_search(value, " ",-1);
|
|
|
|
} else if (strstr(string,"IOWriteBandwidthMax=")){
|
|
|
|
// dictionary *dict;
|
|
|
|
char *name = yon_char_divide_search(value, " ",-1);
|
|
|
|
// for_dictionaries(dict,window->devices){
|
|
|
|
dictionary *dict;
|
|
|
|
// if (strstr(dict->key,name)){
|
|
|
|
for_dictionaries(dict,window->devices){
|
|
|
|
// if (!((device_limits*)dict->data)){
|
|
|
|
if (strstr(dict->key,name)){
|
|
|
|
// dict->data = g_malloc0(sizeof(device_limits));
|
|
|
|
if (!((device_limits*)dict->data)){
|
|
|
|
// ((device_limits*)dict->data)->write=NULL;
|
|
|
|
dict->data = g_malloc0(sizeof(device_limits));
|
|
|
|
// ((device_limits*)dict->data)->read=NULL;
|
|
|
|
((device_limits*)dict->data)->write=NULL;
|
|
|
|
// }
|
|
|
|
((device_limits*)dict->data)->read=NULL;
|
|
|
|
// ((device_limits*)dict->data)->write = value;
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
((device_limits*)dict->data)->write = value;
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
// } else return;
|
|
|
|
|
|
|
|
// }
|
|
|
|
} else return;
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
// g_signal_handlers_block_by_func(G_OBJECT(window->DeviceLimitCombo),G_CALLBACK(on_device_current_changed),window);
|
|
|
|
}
|
|
|
|
// gtk_combo_box_set_active(GTK_COMBO_BOX(window->DeviceLimitCombo),0);
|
|
|
|
// g_signal_handlers_block_by_func(G_OBJECT(window->DeviceLimitCombo),G_CALLBACK(on_device_current_changed),window);
|
|
|
|
// g_signal_handlers_unblock_by_func(G_OBJECT(window->DeviceLimitCombo),G_CALLBACK(on_device_current_changed),window);
|
|
|
|
// gtk_combo_box_set_active(GTK_COMBO_BOX(window->DeviceLimitCombo),0);
|
|
|
|
// if (window->devices->data){
|
|
|
|
// g_signal_handlers_unblock_by_func(G_OBJECT(window->DeviceLimitCombo),G_CALLBACK(on_device_current_changed),window);
|
|
|
|
// if (((device_limits*)window->devices->data)->read&&strcmp(((device_limits*)window->devices->data)->read,"")!=0){
|
|
|
|
// if (window->devices->data){
|
|
|
|
// char *rd = ((device_limits*)window->devices->data)->read;
|
|
|
|
// if (((device_limits*)window->devices->data)->read&&strcmp(((device_limits*)window->devices->data)->read,"")!=0){
|
|
|
|
// g_signal_handlers_block_by_func(G_OBJECT(window->DeviceLimitReadCheck),G_CALLBACK(on_quota_configuration_update),window);
|
|
|
|
// char *rd = ((device_limits*)window->devices->data)->read;
|
|
|
|
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DeviceLimitReadCheck),1);
|
|
|
|
// g_signal_handlers_block_by_func(G_OBJECT(window->DeviceLimitReadCheck),G_CALLBACK(on_quota_configuration_update),window);
|
|
|
|
// g_signal_handlers_unblock_by_func(G_OBJECT(window->DeviceLimitReadCheck),G_CALLBACK(on_quota_configuration_update),window);
|
|
|
|
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DeviceLimitReadCheck),1);
|
|
|
|
// gtk_combo_box_set_active(GTK_COMBO_BOX(window->DeviceLimitReadCombo),yon_get_size_request_from_letter(rd[strlen(rd)-1]));
|
|
|
|
// g_signal_handlers_unblock_by_func(G_OBJECT(window->DeviceLimitReadCheck),G_CALLBACK(on_quota_configuration_update),window);
|
|
|
|
// rd[strlen(rd)-1]='\0';
|
|
|
|
// gtk_combo_box_set_active(GTK_COMBO_BOX(window->DeviceLimitReadCombo),yon_get_size_request_from_letter(rd[strlen(rd)-1]));
|
|
|
|
// gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->DeviceLimitReadSpin),strtol(((device_limits*)window->devices->data)->read,NULL,10));
|
|
|
|
// rd[strlen(rd)-1]='\0';
|
|
|
|
// }
|
|
|
|
// gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->DeviceLimitReadSpin),strtol(((device_limits*)window->devices->data)->read,NULL,10));
|
|
|
|
// else ((device_limits*)window->devices->data)->read=NULL;
|
|
|
|
// }
|
|
|
|
// if (((device_limits*)window->devices->data)->write&&strcmp(((device_limits*)window->devices->data)->write,"")!=0){
|
|
|
|
// else ((device_limits*)window->devices->data)->read=NULL;
|
|
|
|
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DeviceLimitWriteCheck),1);
|
|
|
|
// if (((device_limits*)window->devices->data)->write&&strcmp(((device_limits*)window->devices->data)->write,"")!=0){
|
|
|
|
// gtk_combo_box_set_active(GTK_COMBO_BOX(window->DeviceLimitWriteCombo),yon_get_size_request_from_letter(((device_limits*)window->devices->data)->write[strlen(((device_limits*)window->devices->data)->write)-1]));
|
|
|
|
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->DeviceLimitWriteCheck),1);
|
|
|
|
// ((device_limits*)window->devices->data)->write[strlen(((device_limits*)window->devices->data)->write)-1]='\0';
|
|
|
|
// gtk_combo_box_set_active(GTK_COMBO_BOX(window->DeviceLimitWriteCombo),yon_get_size_request_from_letter(((device_limits*)window->devices->data)->write[strlen(((device_limits*)window->devices->data)->write)-1]));
|
|
|
|
// gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->DeviceLimitWriteSpin),strtol(((device_limits*)window->devices->data)->write,NULL,10));
|
|
|
|
// ((device_limits*)window->devices->data)->write[strlen(((device_limits*)window->devices->data)->write)-1]='\0';
|
|
|
|
// } else ((device_limits*)window->devices->data)->write=NULL;
|
|
|
|
// gtk_spin_button_set_value(GTK_SPIN_BUTTON(window->DeviceLimitWriteSpin),strtol(((device_limits*)window->devices->data)->write,NULL,10));
|
|
|
|
// }
|
|
|
|
// } else ((device_limits*)window->devices->data)->write=NULL;
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
|
|
|
|
}
|
|
|
|
// void on_quota_manual_input_focus (GtkWidget *self, GdkEventFocus *event, quota_window *window){
|
|
|
|
|
|
|
|
// on_quota_manual_input(self,window);
|
|
|
|
void on_quota_manual_input_focus (GtkWidget *self, GdkEventFocus *event, quota_window *window){
|
|
|
|
// }
|
|
|
|
on_quota_manual_input(self,window);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void on_filters_opened(GtkWidget *self, main_window *widgets) {
|
|
|
|
void on_filters_opened(GtkWidget *self, main_window *widgets) {
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_filters_path);
|
|
|
|
GtkBuilder *builder = gtk_builder_new_from_resource(glade_filters_path);
|
|
|
@ -813,8 +814,8 @@ void on_add_open(GtkWidget *self, main_window *widgets){
|
|
|
|
g_signal_connect(G_OBJECT(window->DeviceLimitReadCheck),"toggled",G_CALLBACK(on_quota_configuration_update),window);
|
|
|
|
g_signal_connect(G_OBJECT(window->DeviceLimitReadCheck),"toggled",G_CALLBACK(on_quota_configuration_update),window);
|
|
|
|
g_signal_connect(G_OBJECT(window->DeviceLimitWriteCheck),"toggled",G_CALLBACK(on_quota_configuration_update),window);
|
|
|
|
g_signal_connect(G_OBJECT(window->DeviceLimitWriteCheck),"toggled",G_CALLBACK(on_quota_configuration_update),window);
|
|
|
|
|
|
|
|
|
|
|
|
// g_signal_connect(G_OBJECT(window->ManualInputEntry),"activate",G_CALLBACK(on_quota_manual_input),window);
|
|
|
|
g_signal_connect(G_OBJECT(window->ManualInputEntry),"activate",G_CALLBACK(on_quota_manual_input),window);
|
|
|
|
// g_signal_connect(G_OBJECT(window->ManualInputEntry),"focus-out-event",G_CALLBACK(on_quota_manual_input_focus),window);
|
|
|
|
g_signal_connect(G_OBJECT(window->ManualInputEntry),"focus-out-event",G_CALLBACK(on_quota_manual_input_focus),window);
|
|
|
|
yon_get_devices(window);
|
|
|
|
yon_get_devices(window);
|
|
|
|
dictionary *dict;
|
|
|
|
dictionary *dict;
|
|
|
|
for_dictionaries(dict,window->devices){
|
|
|
|
for_dictionaries(dict,window->devices){
|
|
|
|