Added tooltip

pull/71/head
parent 6ff395095f
commit 1c12210868

@ -143,6 +143,7 @@ install: check uninstall
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.source-symbolic.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.source-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.save-symbolic.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.save-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.update-symbolic.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.update-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.arrow-round-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "${CMAKE_BUILD_DIR}/com.ublinux.${PKGNAME}${PKGIDENT}.policy" @install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "${CMAKE_BUILD_DIR}/com.ublinux.${PKGNAME}${PKGIDENT}.policy"
@if [ -z ${DESTDIR} ]; then \ @if [ -z ${DESTDIR} ]; then \
[ -d "${DESTDIR}/usr/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \ [ -d "${DESTDIR}/usr/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --><path d="M125.7 160H176c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32s32 14.3 32 32v51.2L97.6 97.6c87.5-87.5 229.3-87.5 316.8 0s87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3s-163.8-62.5-226.3 0L125.7 160z"/></svg>

After

Width:  |  Height:  |  Size: 611 B

@ -1455,6 +1455,85 @@ void on_tree_selection_changed(GtkWidget *self, main_window *widgets){
} }
} }
gboolean on_tooltip_show(GtkWidget* self, gint x, gint y, gboolean keyboard_mode, GtkTooltip* tooltip, main_window *widgets) {
if (self || x || y || keyboard_mode) {};
gtk_tooltip_set_custom(tooltip,widgets->TooltipBox);
GtkWidget *tree = NULL;
GtkTreeModel *model = NULL;
if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook)) == 0) {
tree = widgets->SystemUnitsTree;
model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->SystemUnitsTree));
} else {
tree = widgets->UserUnitsTree;
model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->UserUnitsTree));
}
gint tree_x, tree_y;
gtk_tree_view_convert_widget_to_bin_window_coords(GTK_TREE_VIEW(tree), x, y, &tree_x, &tree_y);
GtkTreePath *path;
if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tree), tree_x, tree_y, &path, NULL, NULL, NULL)) {
GtkTreeIter iter;
if (gtk_tree_model_get_iter(model, &iter, path)) {
gchar *name, *description, *state;
gint64 activa, deactiva;
int size;
gtk_tree_model_get(model, &iter, 5, &name, 6, &description, 11, &state, -1);
config_str target = yon_config_load(get_activate_deactivate_times(name), &size);
free(yon_char_divide_search(target[0], "=", -1));
yon_char_remove_last_symbol(target[0], '\n');
free(yon_char_divide_search(target[1], "=", -1));
yon_char_remove_last_symbol(target[1], '\n');
free(yon_char_divide_search(target[2], "=", -1));
yon_char_remove_last_symbol(target[2], '\n');
activa = g_ascii_strtoll(target[1], NULL, 10);
deactiva = g_ascii_strtoll(target[1], NULL, 10);
gtk_label_set_text(GTK_LABEL(widgets->NameLabel), name);
gtk_label_set_text(GTK_LABEL(widgets->DescriptionLabel), description);
gtk_label_set_text(GTK_LABEL(widgets->StatusQueryLabel), state);
gtk_label_set_text(GTK_LABEL(widgets->UnitLabel), target[0]);
free(name);
free(description);
free(state);
free(target[1]);
free(target[2]);
gchar *formatted_activa = NULL;
gchar *formatted_deactiva = NULL;
if (activa) {
GDateTime *datetime = g_date_time_new_from_unix_local(activa);
formatted_activa = g_date_time_format(datetime, "%d:%M:%Y %T");
g_date_time_unref(datetime);
} else {
formatted_activa = g_strdup(NULL_LABEL);
}
if (deactiva) {
GDateTime *datetime = g_date_time_new_from_unix_local(deactiva);
formatted_deactiva = g_date_time_format(datetime, "%d:%M:%Y %T");
g_date_time_unref(datetime);
} else {
formatted_deactiva = g_strdup(NULL_LABEL);
}
gtk_label_set_text(GTK_LABEL(widgets->ActivateLabel), formatted_activa);
gtk_label_set_text(GTK_LABEL(widgets->DeactivateLabel), formatted_deactiva);
g_free(formatted_activa);
g_free(formatted_deactiva);
// Освобождение памяти пути
gtk_tree_path_free(path);
return TRUE;
}
gtk_tree_path_free(path);
}
return FALSE;
}
/**yon_main_window_complete(main_window *widgets) /**yon_main_window_complete(main_window *widgets)
* [EN] * [EN]
* *
@ -1478,6 +1557,14 @@ void yon_main_window_complete(main_window *widgets){
widgets->SystemUnitsTree=yon_gtk_builder_get_widget(builder,"SystemUnitsTree"); widgets->SystemUnitsTree=yon_gtk_builder_get_widget(builder,"SystemUnitsTree");
widgets->MainNotebook=yon_gtk_builder_get_widget(builder,"MainNotebook"); widgets->MainNotebook=yon_gtk_builder_get_widget(builder,"MainNotebook");
widgets->TooltipBox=yon_gtk_builder_get_widget(builder,"TooltipBox");
widgets->NameLabel=yon_gtk_builder_get_widget(builder,"NameLabel");
widgets->DescriptionLabel=yon_gtk_builder_get_widget(builder,"DescriptionLabel");
widgets->UnitLabel=yon_gtk_builder_get_widget(builder,"UnitLabel");
widgets->StatusQueryLabel=yon_gtk_builder_get_widget(builder,"StatusQueryLabel");
widgets->ActivateLabel=yon_gtk_builder_get_widget(builder,"ActivateLabel");
widgets->DeactivateLabel=yon_gtk_builder_get_widget(builder,"DeactivateLabel");
widgets->SystemServicesStatusMenuItem=yon_gtk_builder_get_widget(builder,"SystemServicesStatusMenuItem"); widgets->SystemServicesStatusMenuItem=yon_gtk_builder_get_widget(builder,"SystemServicesStatusMenuItem");
widgets->InstalledUnitsStatusMenuItem=yon_gtk_builder_get_widget(builder,"InstalledUnitsStatusMenuItem"); widgets->InstalledUnitsStatusMenuItem=yon_gtk_builder_get_widget(builder,"InstalledUnitsStatusMenuItem");
widgets->UnitsStatusListMenuItem=yon_gtk_builder_get_widget(builder,"UnitsStatusListMenuItem"); widgets->UnitsStatusListMenuItem=yon_gtk_builder_get_widget(builder,"UnitsStatusListMenuItem");
@ -1583,6 +1670,9 @@ void yon_main_window_complete(main_window *widgets){
GList *list = gtk_tree_view_get_columns(GTK_TREE_VIEW(widgets->SystemUnitsTree)); GList *list = gtk_tree_view_get_columns(GTK_TREE_VIEW(widgets->SystemUnitsTree));
yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->SystemUnitsTree)); yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->SystemUnitsTree));
g_signal_connect(G_OBJECT(widgets->UserUnitsTree),"query-tooltip",G_CALLBACK(on_tooltip_show),widgets);
g_signal_connect(G_OBJECT(widgets->SystemUnitsTree),"query-tooltip",G_CALLBACK(on_tooltip_show),widgets);
g_signal_connect(G_OBJECT(widgets->SystemPrevButton),"clicked",G_CALLBACK(on_system_update_hz_clicked),widgets); g_signal_connect(G_OBJECT(widgets->SystemPrevButton),"clicked",G_CALLBACK(on_system_update_hz_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->SystemUpdateButton),"clicked",G_CALLBACK(on_interface_update),widgets); g_signal_connect(G_OBJECT(widgets->SystemUpdateButton),"clicked",G_CALLBACK(on_interface_update),widgets);
g_signal_connect(G_OBJECT(widgets->SystemServiceUpdateButton),"clicked",G_CALLBACK(on_system_update_clicked),widgets); g_signal_connect(G_OBJECT(widgets->SystemServiceUpdateButton),"clicked",G_CALLBACK(on_system_update_clicked),widgets);

@ -75,6 +75,7 @@
#define list_of_sockets_command "systemctl list-sockets --all --no-pager| sed -e 's/ */;/g'" #define list_of_sockets_command "systemctl list-sockets --all --no-pager| sed -e 's/ */;/g'"
#define list_of_timers_command "systemctl list-timers --all --no-pager| sed -e 's/ */;/g'" #define list_of_timers_command "systemctl list-timers --all --no-pager| sed -e 's/ */;/g'"
#define list_of_session_command "while IFS=\" \" read -r GET_SESSION GET_UID GET_USER GET_SEAT GET_TTY; do echo -e \"${GET_SESSION} $(loginctl session-status ${GET_SESSION} --no-page | sed -Enr \"s/^\\s*State: (.*)$/\1/p\") ${GET_UID} ${GET_USER} ${GET_SEAT} ${GET_TTY}\"; done < <(loginctl list-sessions --no-legend)" #define list_of_session_command "while IFS=\" \" read -r GET_SESSION GET_UID GET_USER GET_SEAT GET_TTY; do echo -e \"${GET_SESSION} $(loginctl session-status ${GET_SESSION} --no-page | sed -Enr \"s/^\\s*State: (.*)$/\1/p\") ${GET_UID} ${GET_USER} ${GET_SEAT} ${GET_TTY}\"; done < <(loginctl list-sessions --no-legend)"
#define get_activate_deactivate_times(target) yon_char_append("systemctl show -p ActiveEnterTimestampMonotonic -p InactiveEnterTimestampMonotonic -p Names ",target)
#define config_get_command(target) yon_char_append("cat ",target) #define config_get_command(target) yon_char_append("cat ",target)
@ -212,6 +213,14 @@ typedef struct {
GtkWidget *UserSocketsStatusListMenuItem; GtkWidget *UserSocketsStatusListMenuItem;
GtkWidget *UserTimersStatusListMenuItem; GtkWidget *UserTimersStatusListMenuItem;
GtkWidget *TooltipBox;
GtkWidget *NameLabel;
GtkWidget *DescriptionLabel;
GtkWidget *UnitLabel;
GtkWidget *StatusQueryLabel;
GtkWidget *ActivateLabel;
GtkWidget *DeactivateLabel;
GtkTreeModelFilter *SystemFilter; GtkTreeModelFilter *SystemFilter;
GtkTreeModelFilter *UserFilter; GtkTreeModelFilter *UserFilter;
@ -269,6 +278,8 @@ typedef struct {
char *target; char *target;
} log_window; } log_window;
gboolean on_tooltip_show(GtkWidget* self, gint x, gint y, gboolean keyboard_mode, GtkTooltip* tooltip, main_window *widgets);
void on_config_local_load(GtkWidget *self,main_window *widgets); void on_config_local_load(GtkWidget *self,main_window *widgets);
void on_config_global_load(GtkWidget *self,main_window *widgets); void on_config_global_load(GtkWidget *self,main_window *widgets);

@ -149,5 +149,10 @@
#define SERVICE_RELOAD_SUCCESS_LABEL _("Service has been successfully restarted") #define SERVICE_RELOAD_SUCCESS_LABEL _("Service has been successfully restarted")
#define SAVE_LABEL _("Save") #define SAVE_LABEL _("Save")
#define NULL_LABEL _("Null")
#define UNIT_FILE_LABEL _("Unit file:")
#define UNIT_STATE_LABEL _("Unit file state:")
#define ACTIVATED_LABEL _("Activated:")
#define DEACTIVATED_LABEL _("Deactivated:")
#define service_tooltip_template() yon_char_unite("<u>",target,"</u>\n",_("Description:"),description,"\n",_("Unit file:"),unit,"\n",_("Status:"),status,"\n",) #define service_tooltip_template(target,description,unit,status,activated,deactivated) yon_char_unite("<u>",target,"</u>\n",_("Description:"),description,"\n",_("Unit file:"),unit,"\n",_("Status:"),status,"\n",_("Activated:"),activated,"\n",_("Deactivated:"),deactivated,NULL)

@ -53,6 +53,8 @@
<column type="gboolean"/> <column type="gboolean"/>
<!-- column-name UnitState --> <!-- column-name UnitState -->
<column type="gchararray"/> <column type="gchararray"/>
<!-- column-name Tooltip -->
<column type="gchararray"/>
</columns> </columns>
</object> </object>
<object class="GtkTreeModelFilter" id="SystemFilter"> <object class="GtkTreeModelFilter" id="SystemFilter">
@ -74,6 +76,254 @@
<column type="gchararray"/> <column type="gchararray"/>
</columns> </columns>
</object> </object>
<object class="GtkBox" id="TooltipBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Service:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="NameLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Service:</property>
<property name="single-line-mode">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can-focus">False</property>
<style>
<class name="separatorBottom"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Description:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="DescriptionLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Description:</property>
<property name="single-line-mode">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Unit file:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="UnitLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Unit file:</property>
<property name="single-line-mode">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Unit file state:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="StatusQueryLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Unit file state:</property>
<property name="single-line-mode">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Activated:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="ActivateLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Activated:</property>
<property name="single-line-mode">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Deactivated:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="DeactivateLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Deactivated:</property>
<property name="single-line-mode">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">6</property>
</packing>
</child>
</object>
<object class="GtkListStore" id="UserList"> <object class="GtkListStore" id="UserList">
<columns> <columns>
<!-- column-name ConfigAutostart --> <!-- column-name ConfigAutostart -->
@ -100,6 +350,8 @@
<column type="gboolean"/> <column type="gboolean"/>
<!-- column-name UnitState --> <!-- column-name UnitState -->
<column type="gchararray"/> <column type="gchararray"/>
<!-- column-name Tooltip -->
<column type="gchararray"/>
</columns> </columns>
</object> </object>
<object class="GtkTreeModelFilter" id="UserFilter"> <object class="GtkTreeModelFilter" id="UserFilter">
@ -168,12 +420,12 @@
<object class="GtkImage" id="image20"> <object class="GtkImage" id="image20">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-services.update-symbolic</property> <property name="icon-name">com.ublinux.ubl-settings-services.arrow-round-symbolic</property>
</object> </object>
<object class="GtkImage" id="image21"> <object class="GtkImage" id="image21">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-services.update-symbolic</property> <property name="icon-name">com.ublinux.ubl-settings-services.arrow-round-symbolic</property>
</object> </object>
<object class="GtkImage" id="image3"> <object class="GtkImage" id="image3">
<property name="visible">True</property> <property name="visible">True</property>
@ -675,6 +927,7 @@
<property name="model">SystemList</property> <property name="model">SystemList</property>
<property name="search-column">5</property> <property name="search-column">5</property>
<property name="enable-grid-lines">both</property> <property name="enable-grid-lines">both</property>
<property name="tooltip-column">12</property>
<child internal-child="selection"> <child internal-child="selection">
<object class="GtkTreeSelection"/> <object class="GtkTreeSelection"/>
</child> </child>
@ -1275,6 +1528,7 @@
<property name="model">UserList</property> <property name="model">UserList</property>
<property name="search-column">5</property> <property name="search-column">5</property>
<property name="enable-grid-lines">both</property> <property name="enable-grid-lines">both</property>
<property name="tooltip-column">12</property>
<child internal-child="selection"> <child internal-child="selection">
<object class="GtkTreeSelection"/> <object class="GtkTreeSelection"/>
</child> </child>

@ -137,7 +137,7 @@ msgstr ""
msgid "Service:" msgid "Service:"
msgstr "" msgstr ""
#: source/ubl-strings.h:37 #: source/ubl-strings.h:37 source/ubl-strings.h:158
msgid "Description:" msgid "Description:"
msgstr "" msgstr ""
@ -489,3 +489,27 @@ msgstr ""
#: source/ubl-strings.h:151 #: source/ubl-strings.h:151
msgid "Save" msgid "Save"
msgstr "" msgstr ""
#: source/ubl-strings.h:152
msgid "Null"
msgstr ""
#: source/ubl-strings.h:153 source/ubl-strings.h:158
msgid "Unit file:"
msgstr ""
#: source/ubl-strings.h:154
msgid "Unit file state:"
msgstr ""
#: source/ubl-strings.h:155 source/ubl-strings.h:158
msgid "Activated:"
msgstr ""
#: source/ubl-strings.h:156 source/ubl-strings.h:158
msgid "Deactivated:"
msgstr ""
#: source/ubl-strings.h:158
msgid "Status:"
msgstr ""

@ -137,7 +137,7 @@ msgstr "Открыть лог сервиса"
msgid "Service:" msgid "Service:"
msgstr "Сервис:" msgstr "Сервис:"
#: source/ubl-strings.h:37 #: source/ubl-strings.h:37 source/ubl-strings.h:158
msgid "Description:" msgid "Description:"
msgstr "Описание:" msgstr "Описание:"
@ -491,3 +491,27 @@ msgstr "Сервис был успешно перезапущен"
#: source/ubl-strings.h:151 #: source/ubl-strings.h:151
msgid "Save" msgid "Save"
msgstr "Сохранить" msgstr "Сохранить"
#: source/ubl-strings.h:152
msgid "Null"
msgstr "Нет данных"
#: source/ubl-strings.h:153 source/ubl-strings.h:158
msgid "Unit file:"
msgstr "Юнит-файл:"
#: source/ubl-strings.h:154
msgid "Unit file state:"
msgstr "Статус юнит-файла:"
#: source/ubl-strings.h:155 source/ubl-strings.h:158
msgid "Activated:"
msgstr "Активирован:"
#: source/ubl-strings.h:156 source/ubl-strings.h:158
msgid "Deactivated:"
msgstr "Деактивирован:"
#: source/ubl-strings.h:158
msgid "Status:"
msgstr "Статус:"

Loading…
Cancel
Save