diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c
index 71a7d60..e9e4a9a 100644
--- a/source/ubinstall-gtk.c
+++ b/source/ubinstall-gtk.c
@@ -171,7 +171,7 @@ void config_init(){
main_config.slider_thread=0;
main_config.config_save_thread=NULL;
main_config.install_thread=NULL;
- main_config.progress_thread=NULL;
+ main_config.progress_thread=0;
main_config.install_complete=0;
}
@@ -285,15 +285,15 @@ void *yon_installation_start(main_window *widgets){
}
-void *yon_installation_progress_update(void *data);
-void *yon_installation_progress_update(void *data){
+gboolean yon_installation_progress_update(void *data);
+gboolean yon_installation_progress_update(void *data){
main_window *widgets = (main_window*)data;
FILE *file = NULL;
char *current = g_malloc0(4096);
clock_t last_time = 0;
clock_t current_time;
- while (main_config.install_thread){
while (1){
+ while (gtk_events_pending()) gtk_main_iteration();
current_time = clock();
if ((double)(current_time - last_time) / CLOCKS_PER_SEC >= 0.5){
if (!file)
@@ -308,7 +308,7 @@ void *yon_installation_progress_update(void *data){
free(yon_char_divide(current_copy,0));
free(yon_char_divide(percentage,0));
if (strcmp(percentage,"#pb")){
- double fraction = atof(percentage);
+ double fraction = atof(percentage);
gtk_label_set_text(GTK_LABEL(widgets->InstallationLabel),current_copy);
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->InstallationProgress),fraction/100);
} else {
@@ -331,8 +331,9 @@ void *yon_installation_progress_update(void *data){
fclose(file);
file=NULL;
- }
- return NULL;
+ if (main_config.install_thread){
+ return 1;
+ } else return 0;
}
void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *widgets);
@@ -368,7 +369,7 @@ void on_page_changed(GtkWidget *,GtkWidget *,int page, main_window *widgets){
// if (!main_config.install_thread&&!main_config.install_complete)
// main_config.install_thread = g_thread_new("InstallThread",(GThreadFunc)yon_installation_start,widgets);
if (!main_config.progress_thread)
- main_config.progress_thread = g_thread_new("ProgressThread",(GThreadFunc)yon_installation_progress_update,widgets);
+ main_config.progress_thread = gdk_threads_add_timeout(500,(GSourceFunc)yon_installation_progress_update,widgets);
if (!main_config.slider_thread)
main_config.slider_thread = g_timeout_add(5000,(GSourceFunc)on_image_slide,widgets);
@@ -443,6 +444,13 @@ void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){
return;
}
char *languages = "";
+ GtkTreeIter iter;
+ GtkTreeModel *model = GTK_TREE_MODEL(widgets->LanguagesFilter);
+ char *lang_code=NULL;
+ for_iter(model,&iter){
+ gtk_tree_model_get(model,&iter,1,&lang_code,-1);
+ languages = yon_char_unite(languages,",",lang_code,NULL);
+ }
if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->AvailableLanguagesEntry)))){
yon_config_remove_by_key(locale_parameter);
} else {
@@ -450,18 +458,12 @@ void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){
}
if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->LanguagesCombo))==-1){
yon_config_remove_by_key(lang_parameter);
+ } else {
+ char *language = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->LanguagesCombo));
+ yon_config_register(lang_parameter,lang_parameter_command,language);
}
char *region = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->RegionCombo));
char *zone = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->ZoneCombo));
- GtkTreeIter iter;
- GtkTreeModel *model = GTK_TREE_MODEL(widgets->LanguagesFilter);
- char *lang_code=NULL;
- for_iter(model,&iter){
- gtk_tree_model_get(model,&iter,1,&lang_code,-1);
- languages = yon_char_unite(languages,",",lang_code,NULL);
- }
- char *language = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->LanguagesCombo));
- yon_config_register(lang_parameter,lang_parameter_command,language);
yon_config_register(zone_parameter,zone_parameter_command,yon_char_unite(region,"/",zone,NULL));
gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),page+1);
@@ -600,45 +602,102 @@ void on_page_navigation_clicked(GtkWidget *self, main_window *widgets){
gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALLATION_BEGIN);
}break;
case YON_PAGE_USERS:{ //users
+
if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->UserNameEntry)))){
- yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
- yon_ubl_status_highlight_incorrect(widgets->UserNameEntry);
- return;
- } else if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->LoginEntry)))){
- yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
- yon_ubl_status_highlight_incorrect(widgets->LoginEntry);
- return;
+ yon_config_remove_by_key(user_gecos_parameter);
+ } else {
+ char *username = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->UserNameEntry));
+ yon_config_register(user_gecos_parameter,user_gecos_parameter_command,username);
+ }
- } else if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->PasswordCombo))==1&&yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->PasswordEntry)))){
- yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
- yon_ubl_status_highlight_incorrect(widgets->PasswordEntry);
- return;
+ if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->LoginEntry)))){
+ yon_config_remove_by_key(user_name_parameter);
+ } else {
+ char *login = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->UserNameEntry));
+ yon_config_register(user_name_parameter,user_name_parameter_command,login);
- } else if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->AdminPasswordCombo))==1&&yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->AdminPasswordEntry)))){
- yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
- yon_ubl_status_highlight_incorrect(widgets->AdminPasswordEntry);
- return;
+ }
+
+ if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->PasswordCombo))==1){
+ if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->PasswordEntry)))){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(widgets->PasswordEntry);
+ return;
+ } else {
+ char *password = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->PasswordEntry));
+ yon_config_register(user_password_parameter,user_password_parameter_command,password);
+
+ }
+ } else {
+ yon_config_register(user_password_parameter,user_password_parameter_command,PASSWORD_DEFAULT);
+ }
+
+ if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->AdminPasswordCombo))==1){
+ if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->AdminPasswordEntry)))){
+ yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
+ yon_ubl_status_highlight_incorrect(widgets->AdminPasswordEntry);
+ return;
+ } else {
+ char *root_password = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->AdminPasswordEntry));
+ yon_config_register(root_password_parameter,root_password_parameter_command,root_password);
+
+ }
+ } else {
+ yon_config_register(user_password_parameter,user_password_parameter_command,PASSWORD_DEFAULT);
+ }
- } else if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->HotnameEntry)))){
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->AutoHostnameCheck))){
+ yon_config_register(hostname_parameter,hostname_parameter_command,"auto");
+ } else {
+ if (yon_char_is_empty(gtk_entry_get_text(GTK_ENTRY(widgets->HotnameEntry)))){
+ yon_config_remove_by_key(hostname_parameter);
- yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
- yon_ubl_status_highlight_incorrect(widgets->HotnameEntry);
- return;
+ } else {
+ char *hostname = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->UserNameEntry));
+ yon_config_register(hostname_parameter,hostname_parameter_command,hostname);
+
+ }
}
- char *username = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->UserNameEntry));
- char *login = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->UserNameEntry));
- char *password = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->UserNameEntry));
- char *root_password = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->UserNameEntry));
- char *hostname = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->UserNameEntry));
+
char *autologin = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->AutologinCheck))?"yes":"no";
- yon_config_register(user_name_parameter,user_name_parameter_command,login);
- yon_config_register(user_gecos_parameter,user_gecos_parameter_command,username);
- yon_config_register(user_password_parameter,user_password_parameter_command,password);
- yon_config_register(root_password_parameter,root_password_parameter_command,root_password);
yon_config_register(autologin_parameter,autologin_parameter_command,autologin);
- yon_config_register(xkbmodel_parameter,xkbmodel_parameter_command,hostname);
- yon_config_register(hostname_parameter,hostname_parameter_command,root_password);
+
+ GtkTreeIter iter;
+ if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->LayoutsFilter),&iter)){
+ char *locales="";
+ for_iter (GTK_TREE_MODEL(widgets->LayoutsFilter),&iter){
+ char *id;
+ int status;
+ gtk_tree_model_get(GTK_TREE_MODEL(widgets->LayoutsFilter),&iter,0,&id,3,&status,-1);
+ if (status){
+ char *temp = yon_char_unite(locales,!yon_char_is_empty(locales)?",":"",id,NULL);
+ free(locales);
+ locales=temp;
+ }
+ }
+ if (!yon_char_is_empty(locales)){
+ yon_config_register(xkblayout_parameter,xkblayout_parameter_command,locales);
+ } else {
+ yon_config_remove_by_key(xkblayout_parameter);
+ }
+ }
+ char *model = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->KeyboardModelCombo));
+ if (!yon_char_is_empty(model)){
+ yon_config_register(xkbmodel_parameter,xkbmodel_parameter_command,model);
+ } else {
+ yon_config_remove_by_key(xkbmodel_parameter);
+ }
+
+ char *options = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->LayoutBindingCombo));
+ if (!yon_char_is_empty(options)){
+ yon_config_register(xkboptions_parameter,xkboptions_parameter_command,options);
+ } else {
+ yon_config_remove_by_key(xkboptions_parameter);
+ }
gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->Notebook),YON_PAGE_INSTALLATION);
+ if (gtk_progress_bar_get_fraction(GTK_PROGRESS_BAR(widgets->InstallationProgress))>0.9){
+
+ }
gtk_widget_set_sensitive(widgets->CancelInstallButton,0);
gtk_widget_set_sensitive(widgets->NextButton,0);
gtk_widget_set_sensitive(widgets->BackButton,0);
@@ -843,6 +902,10 @@ void on_same_installation_device_changed(GtkWidget *, main_window *widgets){
}
}
+void on_gparted_open(){
+ yon_launch_app_with_arguments(open_gparted_command,NULL);
+}
+
/**yon_main_window_complete(main_window *widgets)
* [EN]
*
@@ -866,6 +929,7 @@ main_window *yon_main_window_complete(){
widgets->SectionsToggle=yon_gtk_builder_get_widget(builder,"SectionsToggle");
widgets->UsersToggle=yon_gtk_builder_get_widget(builder,"USersToggle");
widgets->SummaryToggle=yon_gtk_builder_get_widget(builder,"SummaryToggle");
+ widgets->CompletionToggle=yon_gtk_builder_get_widget(builder,"CompletionToggle");
widgets->InstallationToggle=yon_gtk_builder_get_widget(builder,"InstallationToggle");
widgets->LanguageCombo=yon_gtk_builder_get_widget(builder,"LanguageCombo");
widgets->RegionCombo=yon_gtk_builder_get_widget(builder,"RegionCombo");
@@ -895,6 +959,7 @@ main_window *yon_main_window_complete(){
widgets->AdminPasswordEntry=yon_gtk_builder_get_widget(builder,"AdminPasswordEntry");
widgets->AdminPasswordButton=yon_gtk_builder_get_widget(builder,"AdminPasswordButton");
widgets->HotnameEntry=yon_gtk_builder_get_widget(builder,"HotnameEntry");
+ widgets->AutoHostnameCheck=yon_gtk_builder_get_widget(builder,"AutoHostnameCheck");
widgets->CancelInstallButton=yon_gtk_builder_get_widget(builder,"CancelInstallButton");
widgets->BackButton=yon_gtk_builder_get_widget(builder,"BackButton");
widgets->NextButton=yon_gtk_builder_get_widget(builder,"NextButton");
@@ -936,6 +1001,9 @@ main_window *yon_main_window_complete(){
widgets->CommonInstallationFilesystemTypeCombo = yon_gtk_builder_get_widget(builder,"CommonInstallationFilesystemTypeCombo");
widgets->CommonInstallationSectionNameEntry = yon_gtk_builder_get_widget(builder,"CommonInstallationSectionNameEntry");
+ widgets->GpartedNearButton = yon_gtk_builder_get_widget(builder,"GpartedNearButton");
+ widgets->GpartedSameButton = yon_gtk_builder_get_widget(builder,"GpartedSameButton");
+
widgets->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
widgets->AdditionalSoftwareCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"AdditionalSoftwareCell"));
@@ -946,6 +1014,9 @@ main_window *yon_main_window_complete(){
widgets->AdditionalSoftwareList = GTK_LIST_STORE(gtk_builder_get_object(builder,"AdditionalSoftwareList"));
widgets->PartitionsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"PartitionsList"));
+ g_signal_connect(G_OBJECT(widgets->GpartedSameButton),"clicked",G_CALLBACK(on_gparted_open),NULL);
+ g_signal_connect(G_OBJECT(widgets->GpartedNearButton),"clicked",G_CALLBACK(on_gparted_open),NULL);
+
g_signal_connect(G_OBJECT(widgets->Notebook),"switch-page",G_CALLBACK(on_page_changed),widgets);
g_signal_connect(G_OBJECT(widgets->MainWindow),"check-resize",G_CALLBACK(on_region_resized),widgets);
g_signal_connect(G_OBJECT(widgets->BackButton),"clicked",G_CALLBACK(on_page_navigation_clicked),widgets);
@@ -962,6 +1033,7 @@ main_window *yon_main_window_complete(){
g_signal_connect(G_OBJECT(widgets->LocationToggle),"toggled",G_CALLBACK(on_toggle_block),NULL);
g_signal_connect(G_OBJECT(widgets->SectionsToggle),"toggled",G_CALLBACK(on_toggle_block),NULL);
g_signal_connect(G_OBJECT(widgets->InstallationToggle),"toggled",G_CALLBACK(on_toggle_block),NULL);
+ g_signal_connect(G_OBJECT(widgets->CompletionToggle),"toggled",G_CALLBACK(on_toggle_block),NULL);
g_signal_connect(G_OBJECT(widgets->InstallationNearSysDevicesTree),"cursor-changed",G_CALLBACK(on_near_installation_device_changed),widgets);
g_signal_connect(G_OBJECT(widgets->SamePlaceDeviceTree),"cursor-changed",G_CALLBACK(on_near_installation_device_changed),widgets);
@@ -973,6 +1045,8 @@ main_window *yon_main_window_complete(){
g_signal_connect(G_OBJECT(widgets->AdditionalSoftwareCell),"toggled",G_CALLBACK(on_additional_software_toggled),widgets);
g_signal_connect(G_OBJECT(widgets->ManualLayoutRadio),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),gtk_widget_get_parent(gtk_widget_get_parent(widgets->AddButton)));
+
+ g_signal_connect(G_OBJECT(widgets->AutoHostnameCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),widgets->HotnameEntry);
// g_signal_connect(G_OBJECT(widgets->InstallationToggle),"toggled",G_CALLBACK(on_toggle_block),widgets);
gtk_tree_model_filter_set_visible_column(GTK_TREE_MODEL_FILTER(widgets->LanguagesFilter),0);
diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h
index 224e7a3..ac0801e 100755
--- a/source/ubinstall-gtk.h
+++ b/source/ubinstall-gtk.h
@@ -103,19 +103,25 @@ NULL
#define locale_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[locale]"
#define device_format_parameter "AUTOINSTALL[device_format]"
#define device_format_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[device_format]"
-#define device_label_parameter "AUTOINSTALL[device_label]"
-#define device_label_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[device_label]"
+#define device_label_parameter "AUTOINSTALL[part_label]"
+#define device_label_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[part_label]"
#define part_size_parameter "AUTOINSTALL[part_size]"
#define part_size_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[part_size]"
-#define part_type_parameter "AUTOINSTALL[part_type]"
-#define part_type_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[part_type]"
+#define part_type_parameter "AUTOINSTALL[part_fs_type]"
+#define part_type_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[part_fs_type]"
-#define save_config_command(parameters) yon_char_unite("pkexec bash -c 'ubconfig set [autoinstall] ",parameters, ";ubinstall2 --config /etc/ublinux/autoinstall'", NULL)
+#define save_config_command(parameters) yon_char_unite("pkexec bash -c 'ubconfig set [autoinstall] ",parameters, "; nice ubinstall2 --config /etc/ublinux/autoinstall'", NULL)
+
+#define set_user_config_command(parameters) yon_char_unite("pkexec bash -c 'ubconfig --target system set [autoinstall] ",parameters,";nice ubinstall2 --autoconfig'",NULL)
+
+#define open_gparted_command "pkexec gparted"
#define AUTOINSTALL_TYPE_INSTALL_command "ubconfig --source global get autoinstall AUTOINSTALL[install_type]"
#define AUTOINSTALL_DEVICE_command "ubconfig --source global get autoinstall AUTOINSTALL[device]"
#define AUTOSTART_PARTS_command "ubconfig --source global get autoinstall AUTOINSTALL[part]"
+#define PASSWORD_DEFAULT "ublinux"
+
#define start_fast_install_command "ubinstall2 --autoinstall"
#define progress_path "/var/log/ubinstall_progress.log"
@@ -165,7 +171,7 @@ typedef struct {
int install_mode;
GThread *config_save_thread;
GThread *install_thread;
- GThread *progress_thread;
+ guint progress_thread;
} config;
typedef struct {
@@ -186,6 +192,7 @@ typedef struct {
GtkWidget *SectionsToggle;
GtkWidget *UsersToggle;
GtkWidget *SummaryToggle;
+ GtkWidget *CompletionToggle;
GtkWidget *InstallationToggle;
GtkWidget *LanguageCombo;
GtkWidget *RegionCombo;
@@ -215,6 +222,7 @@ typedef struct {
GtkWidget *AdminPasswordEntry;
GtkWidget *AdminPasswordButton;
GtkWidget *HotnameEntry;
+ GtkWidget *AutoHostnameCheck;
GtkWidget *CancelInstallButton;
GtkWidget *BackButton;
GtkWidget *NextButton;
@@ -254,6 +262,9 @@ typedef struct {
GtkWidget *PackageInstallationProgress;
GtkWidget *PackageInstallationLabel;
+ GtkWidget *GpartedNearButton;
+ GtkWidget *GpartedSameButton;
+
GtkCellRenderer *AdditionalSoftwareCell;
GtkWidget *CommonInstallationDevicesTree;
diff --git a/source/ubl-strings.h b/source/ubl-strings.h
index 1cd26d8..58f18e5 100644
--- a/source/ubl-strings.h
+++ b/source/ubl-strings.h
@@ -47,6 +47,7 @@
#define AUTOMATIC_LOGIN_LABEL _("Automatic login without password prompt")
#define ADMIN_PASSWORD_LABEL _("Administrator password (root):")
#define COMPUTER_NAME_LABEL _("Computer name:")
+#define AUTOMATICALLY_LABEL _("Automatically")
#define USER_LABEL _("User")
#define COMPLETION_LABEL _("Completion")
#define INSTALLATION_COMPLETION_LABEL _("Installation completion")
diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade
index a8fdfef..11c91f5 100644
--- a/ubinstall-gtk.glade
+++ b/ubinstall-gtk.glade
@@ -311,7 +311,7 @@ agreement
-
+
+
+ Automatically
+ True
+ True
+ False
+ True
+
+
+ False
+ True
+ 1
+
+
True
@@ -2188,7 +2202,7 @@ and help you install UBLinux on your computer
True
True
- 1
+ 2
diff --git a/ubinstall-gtk.pot b/ubinstall-gtk.pot
index 5854fae..3cd3fc8 100644
--- a/ubinstall-gtk.pot
+++ b/ubinstall-gtk.pot
@@ -243,6 +243,10 @@ msgstr ""
msgid "Computer name:"
msgstr ""
+#: source/ubl-strings.h:49
+msgid "Automatically"
+msgstr ""
+
#: source/ubl-strings.h:50
msgid "User"
msgstr ""
diff --git a/ubinstall-gtk_ru.po b/ubinstall-gtk_ru.po
index daa8a09..67906fb 100644
--- a/ubinstall-gtk_ru.po
+++ b/ubinstall-gtk_ru.po
@@ -254,6 +254,10 @@ msgstr "Пароль администратора (root):"
msgid "Computer name:"
msgstr "Имя компьютера"
+#: source/ubl-strings.h:49
+msgid "Automatically"
+msgstr "Автоматически"
+
#: source/ubl-strings.h:50
msgid "User"
msgstr "Пользователь"