Skip to content

Commits on Source 4

......@@ -4,8 +4,8 @@ project(whiskermenu)
# version number
set(whiskermenu_version_major "2")
set(whiskermenu_version_minor "1")
set(whiskermenu_version_micro "7")
set(whiskermenu_version_minor "2")
set(whiskermenu_version_micro "0")
set(whiskermenu_version_tag "")
set(whiskermenu_version "${whiskermenu_version_major}.${whiskermenu_version_minor}.${whiskermenu_version_micro}")
if(${whiskermenu_version_tag} MATCHES "git")
......
This diff is collapsed.
2.2.0
=====
- Fix panel icon size not following theme.
- Disable opacity option when non-composited.
- Rename option for including favorites in recent.
- Load applications in a thread. (bug #12903)
- Slide out search results.
- Require GTK+ version 3.22.
- Translation updates: Amharic, Belarusian, Bulgarian, Catalan,
Chinese (China), Chinese (Taiwan), Croatian, Czech, Danish, Dutch,
Esperanto, French, German, Lithuanian, Nepali, Polish, Portuguese,
Portuguese (Brazil), Romanian, Russian, Slovak, Slovenian, Turkish.
2.1.7
=====
- Fix memory leak when recreating window.
......
xfce4-whiskermenu-plugin (2.2.0-1) unstable; urgency=medium
* New upstream version 2.2.0
-- Yves-Alexis Perez <corsac@debian.org> Mon, 21 May 2018 20:48:13 +0200
xfce4-whiskermenu-plugin (2.1.7-1) unstable; urgency=medium
* New upstream version 2.1.7
......
......@@ -13,7 +13,7 @@ if(ENABLE_LINKER_OPTIMIZED_HASH_TABLES)
endif()
find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK3 REQUIRED gtk+-3.0>=3.12)
pkg_check_modules(GTK3 REQUIRED gtk+-3.0>=3.22)
pkg_check_modules(exo REQUIRED exo-2>=0.11)
pkg_check_modules(garcon REQUIRED garcon-1)
pkg_check_modules(libxfce4panel REQUIRED libxfce4panel-2.0>=4.11)
......
/*
* Copyright (C) 2013, 2015, 2016 Graeme Gott <graeme@gottcode.org>
* Copyright (C) 2013, 2015, 2016, 2017, 2018 Graeme Gott <graeme@gottcode.org>
*
* This library is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
......@@ -40,6 +40,7 @@ enum
{
STATUS_INVALID,
STATUS_LOADING,
STATUS_LOADING_RELOAD,
STATUS_LOADED
};
......@@ -155,26 +156,43 @@ void ApplicationsPage::apply_filter(GtkToggleButton* togglebutton)
//-----------------------------------------------------------------------------
void ApplicationsPage::invalidate_applications()
{
if (m_load_status == STATUS_LOADED)
{
m_load_status = STATUS_INVALID;
}
else if (m_load_status == STATUS_LOADING)
{
m_load_status = STATUS_LOADING_RELOAD;
}
}
//-----------------------------------------------------------------------------
void ApplicationsPage::load_applications()
bool ApplicationsPage::load_applications()
{
// Check if already loaded
if (m_load_status == STATUS_LOADED)
{
return;
return true;
}
// Check if currently loading
else if ((m_load_status == STATUS_LOADING) || (m_load_status == STATUS_LOADING_RELOAD))
{
return false;
}
m_load_status = STATUS_LOADING;
// Load menu
clear_applications();
load_contents();
return;
// Load contents in thread if possible
GTask* task = g_task_new(NULL, NULL, &ApplicationsPage::load_contents_slot, this);
g_task_set_task_data(task, this, NULL);
g_task_run_in_thread(task, &ApplicationsPage::load_garcon_menu_slot);
g_object_unref(task);
return false;
}
//-----------------------------------------------------------------------------
......@@ -225,7 +243,7 @@ void ApplicationsPage::clear_applications()
//-----------------------------------------------------------------------------
void ApplicationsPage::load_contents()
void ApplicationsPage::load_garcon_menu()
{
// Create menu
if (wm_settings->custom_menu_file.empty())
......@@ -246,7 +264,6 @@ void ApplicationsPage::load_contents()
if (!m_garcon_menu)
{
m_load_status = STATUS_INVALID;
return;
}
......@@ -287,10 +304,24 @@ void ApplicationsPage::load_contents()
}
category->sort();
m_categories.insert(m_categories.begin(), category);
}
//-----------------------------------------------------------------------------
void ApplicationsPage::load_contents()
{
if (!m_garcon_menu)
{
get_window()->set_loaded();
m_load_status = STATUS_INVALID;
return;
}
// Set all applications category
get_view()->set_fixed_height_mode(true);
get_view()->set_model(category->get_model());
get_view()->set_model(m_categories.front()->get_model());
// Add buttons for categories
std::vector<SectionButton*> category_buttons;
......@@ -306,8 +337,9 @@ void ApplicationsPage::load_contents()
// Update menu items of other panels
get_window()->set_items();
get_window()->set_loaded();
m_load_status = STATUS_LOADED;
m_load_status = (m_load_status == STATUS_LOADING) ? STATUS_LOADED : STATUS_INVALID;
}
//-----------------------------------------------------------------------------
......
/*
* Copyright (C) 2013, 2015 Graeme Gott <graeme@gottcode.org>
* Copyright (C) 2013, 2015, 2017, 2018 Graeme Gott <graeme@gottcode.org>
*
* This library is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
......@@ -43,7 +43,7 @@ public:
Launcher* get_application(const std::string& desktop_id) const;
void invalidate_applications();
void load_applications();
bool load_applications();
void reload_category_icon_size();
private:
......@@ -54,6 +54,17 @@ private:
void load_menu(GarconMenu* menu, Category* parent_category);
void load_menu_item(GarconMenuItem* menu_item, Category* category);
static void load_garcon_menu_slot(GTask* task, gpointer, gpointer task_data, GCancellable*)
{
reinterpret_cast<ApplicationsPage*>(task_data)->load_garcon_menu();
g_task_return_boolean(task, true);
}
static void load_contents_slot(GObject*, GAsyncResult*, gpointer user_data)
{
reinterpret_cast<ApplicationsPage*>(user_data)->load_contents();
}
private:
GarconMenu* m_garcon_menu;
GarconMenu* m_garcon_settings_menu;
......
......@@ -282,7 +282,7 @@ void ConfigurationDialog::recent_items_max_changed(GtkSpinButton* button)
void ConfigurationDialog::toggle_remember_favorites(GtkToggleButton* button)
{
wm_settings->favorites_in_recent = !gtk_toggle_button_get_active(button);
wm_settings->favorites_in_recent = gtk_toggle_button_get_active(button);
wm_settings->set_modified();
}
......@@ -662,6 +662,11 @@ GtkWidget* ConfigurationDialog::init_appearance_tab()
gtk_range_set_value(GTK_RANGE(m_background_opacity), wm_settings->menu_opacity);
g_signal_connect_slot(m_background_opacity, "value-changed", &ConfigurationDialog::background_opacity_changed, this);
GdkScreen* screen = gtk_widget_get_screen(m_window);
const bool enabled = gdk_screen_is_composited(screen);
gtk_widget_set_sensitive(label, enabled);
gtk_widget_set_sensitive(GTK_WIDGET(m_background_opacity), enabled);
return GTK_WIDGET(page);
}
......@@ -727,9 +732,9 @@ GtkWidget* ConfigurationDialog::init_behavior_tab()
g_signal_connect_slot(m_recent_items_max, "value-changed", &ConfigurationDialog::recent_items_max_changed, this);
// Add option to remember favorites
m_remember_favorites = gtk_check_button_new_with_mnemonic(_("Ignore _favorites"));
m_remember_favorites = gtk_check_button_new_with_mnemonic(_("Include _favorites"));
gtk_grid_attach(recent_table, m_remember_favorites, 0, 1, 2, 1);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_remember_favorites), !wm_settings->favorites_in_recent);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_remember_favorites), wm_settings->favorites_in_recent);
g_signal_connect_slot(m_remember_favorites, "toggled", &ConfigurationDialog::toggle_remember_favorites, this);
// Add option to display recently used
......
......@@ -277,26 +277,7 @@ G_GNUC_END_IGNORE_DEPRECATIONS
// Show context menu
gtk_tree_view_set_hover_selection(GTK_TREE_VIEW(m_view->get_widget()), false);
gtk_menu_attach_to_widget(GTK_MENU(menu), m_view->get_widget(), NULL);
#if GTK_CHECK_VERSION(3,22,0)
gtk_menu_popup_at_pointer(GTK_MENU(menu), event);
#else
int button = 0;
int event_time;
GtkMenuPositionFunc position_func = NULL;
if (event)
{
GdkEventButton* event_button = reinterpret_cast<GdkEventButton*>(event);
button = event_button->button;
event_time = event_button->time;
}
else
{
position_func = (GtkMenuPositionFunc)&Page::position_context_menu;
event_time = gtk_get_current_event_time ();
}
gtk_menu_popup(GTK_MENU(menu), NULL, NULL, position_func, this, button, event_time);
#endif
}
//-----------------------------------------------------------------------------
......@@ -323,26 +304,6 @@ void Page::extend_context_menu(GtkWidget*)
//-----------------------------------------------------------------------------
void Page::position_context_menu(GtkMenu*, gint* x, gint* y, gboolean* push_in, Page* page)
{
// Find rectangle of selected row
GtkTreeView* treeview = GTK_TREE_VIEW(page->m_view->get_widget());
GdkRectangle rect;
GtkTreeViewColumn* column = gtk_tree_view_get_column(treeview, 0);
gtk_tree_view_get_cell_area(treeview, page->m_selected_path, column, &rect);
int root_x;
int root_y;
gdk_window_get_root_coords(gtk_tree_view_get_bin_window(treeview), rect.x, rect.y, &root_x, &root_y);
// Position context menu centered on row
*push_in = false;
*x = root_x + (rect.width >> 2);
*y = root_y + (rect.height >> 1);
}
//-----------------------------------------------------------------------------
void Page::add_selected_to_desktop()
{
// Fetch desktop folder
......
/*
* Copyright (C) 2013, 2017 Graeme Gott <graeme@gottcode.org>
* Copyright (C) 2013, 2017, 2018 Graeme Gott <graeme@gottcode.org>
*
* This library is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
......@@ -68,7 +68,6 @@ private:
Launcher* get_selected_launcher() const;
void create_context_menu(GtkTreeIter* iter, GdkEvent* event);
virtual void extend_context_menu(GtkWidget* menu);
static void position_context_menu(GtkMenu*, gint* x, gint* y, gboolean* push_in, Page* page);
private:
Window* m_window;
......
......@@ -53,7 +53,6 @@ static bool panel_utils_grab_available()
GdkWindow* root = gdk_screen_get_root_window(xfce_gdk_screen_get_active(NULL));
GdkDisplay* display = gdk_display_get_default();
#if GTK_CHECK_VERSION(3,20,0)
GdkSeat* seat = gdk_display_get_default_seat(display);
// Don't try to get the grab for longer then 1/4 second
......@@ -67,51 +66,6 @@ static bool panel_utils_grab_available()
}
g_usleep(100);
}
#else
GdkDeviceManager* device_manager = gdk_display_get_device_manager(display);
GdkDevice* pointer = gdk_device_manager_get_client_pointer(device_manager);
GdkDevice* keyboard = gdk_device_get_associated_device(pointer);
// Don't try to get the grab for longer then 1/4 second
GdkGrabStatus grab_pointer = GDK_GRAB_FROZEN;
GdkGrabStatus grab_keyboard = GDK_GRAB_FROZEN;
for (guint i = 0; i < (G_USEC_PER_SEC / 400); ++i)
{
grab_keyboard = gdk_device_grab(keyboard,
root,
GDK_OWNERSHIP_NONE,
true,
GDK_ALL_EVENTS_MASK,
NULL,
GDK_CURRENT_TIME);
if (grab_keyboard == GDK_GRAB_SUCCESS)
{
grab_pointer = gdk_device_grab(pointer,
root,
GDK_OWNERSHIP_NONE,
true,
GDK_ALL_EVENTS_MASK,
NULL,
GDK_CURRENT_TIME);
if (grab_pointer == GDK_GRAB_SUCCESS)
{
grab_succeed = true;
break;
}
}
g_usleep(100);
}
// Release the grab so the menu window can take it
if (grab_pointer == GDK_GRAB_SUCCESS)
{
gdk_device_ungrab(pointer, GDK_CURRENT_TIME);
}
if (grab_keyboard == GDK_GRAB_SUCCESS)
{
gdk_device_ungrab(keyboard, GDK_CURRENT_TIME);
}
#endif
if (!grab_succeed)
{
......@@ -163,12 +117,6 @@ Plugin::Plugin(XfcePanelPlugin* plugin) :
gtk_widget_set_name(m_button, "whiskermenu-button");
#if !LIBXFCE4PANEL_CHECK_VERSION(4,13,0)
widget_add_css(m_button, ".xfce4-panel button { padding: 1px; }");
gtk_button_set_relief(GTK_BUTTON(m_button), GTK_RELIEF_NONE);
#if GTK_CHECK_VERSION(3,20,0)
gtk_widget_set_focus_on_click(GTK_WIDGET(m_button), false);
#else
gtk_button_set_focus_on_click(GTK_BUTTON(m_button), false);
#endif
#endif
g_signal_connect_slot(m_button, "toggled", &Plugin::button_toggled, this);
gtk_widget_show(m_button);
......@@ -179,13 +127,13 @@ Plugin::Plugin(XfcePanelPlugin* plugin) :
gtk_widget_show(GTK_WIDGET(m_button_box));
m_button_icon = GTK_IMAGE(gtk_image_new());
widget_add_css(GTK_WIDGET(m_button_icon), "image { padding: 3px; }");
icon_changed(wm_settings->button_icon_name.c_str());
gtk_box_pack_start(m_button_box, GTK_WIDGET(m_button_icon), true, false, 0);
if (wm_settings->button_icon_visible)
{
gtk_widget_show(GTK_WIDGET(m_button_icon));
}
gtk_widget_set_sensitive(GTK_WIDGET(m_button_icon), false);
m_button_label = GTK_LABEL(gtk_label_new(NULL));
gtk_label_set_markup(m_button_label, wm_settings->button_title.c_str());
......@@ -194,6 +142,7 @@ Plugin::Plugin(XfcePanelPlugin* plugin) :
{
gtk_widget_show(GTK_WIDGET(m_button_label));
}
gtk_widget_set_sensitive(GTK_WIDGET(m_button_label), false);
// Add plugin to panel
gtk_container_add(GTK_CONTAINER(plugin), m_button);
......@@ -218,7 +167,7 @@ Plugin::Plugin(XfcePanelPlugin* plugin) :
g_signal_connect_slot<GtkWidget*,GdkScreen*>(m_button, "screen-changed", &Plugin::update_size, this);
// Create menu window
m_window = new Window;
m_window = new Window(this);
g_signal_connect_slot<GtkWidget*>(m_window->get_widget(), "unmap", &Plugin::menu_hidden, this);
}
......@@ -338,6 +287,14 @@ void Plugin::set_configure_enabled(bool enabled)
//-----------------------------------------------------------------------------
void Plugin::set_loaded(bool loaded)
{
gtk_widget_set_sensitive(GTK_WIDGET(m_button_icon), loaded);
gtk_widget_set_sensitive(GTK_WIDGET(m_button_label), loaded);
}
//-----------------------------------------------------------------------------
void Plugin::button_toggled(GtkToggleButton* button)
{
if (gtk_toggle_button_get_active(button) == false)
......@@ -348,7 +305,7 @@ void Plugin::button_toggled(GtkToggleButton* button)
else
{
xfce_panel_plugin_block_autohide(m_plugin, true);
show_menu(m_button, xfce_panel_plugin_get_orientation(m_plugin) == GTK_ORIENTATION_HORIZONTAL);
show_menu(false);
}
}
......@@ -409,7 +366,7 @@ gboolean Plugin::remote_event(XfcePanelPlugin*, gchar* name, GValue* value)
}
else if (value && G_VALUE_HOLDS_BOOLEAN(value) && g_value_get_boolean(value))
{
show_menu(NULL, true);
show_menu(true);
}
else
{
......@@ -468,25 +425,32 @@ gboolean Plugin::size_changed(XfcePanelPlugin*, gint size)
0, GTK_PACK_START);
// Resize icon
if (wm_settings->button_single_row)
{
size /= xfce_panel_plugin_get_nrows(m_plugin);
}
#if LIBXFCE4PANEL_CHECK_VERSION(4,13,0)
gint icon_size = xfce_panel_plugin_get_icon_size(m_plugin);
#else
gint icon_size = size / xfce_panel_plugin_get_nrows(m_plugin);
icon_size -= 4;
if (icon_size < 24)
{
icon_size = 16;
}
else if (icon_size < 32)
GtkBorder padding, border;
GtkStyleContext* context = gtk_widget_get_style_context(m_button);
GtkStateFlags flags = gtk_widget_get_state_flags(m_button);
gtk_style_context_get_padding(context, flags, &padding);
gtk_style_context_get_border(context, flags, &border);
gint xthickness = padding.left + padding.right + border.left + border.right;
gint ythickness = padding.top + padding.bottom + border.top + border.bottom;
gint icon_size = size - 2 * std::max(xthickness, ythickness);
#endif
gtk_image_set_pixel_size(m_button_icon, icon_size);
if (wm_settings->button_title_visible)
{
icon_size = 24;
gtk_widget_set_size_request(m_button, -1, -1);
}
else if (icon_size < 36)
else
{
icon_size = 32;
gtk_widget_set_size_request(m_button, size, size);
}
#endif
gtk_image_set_pixel_size(m_button_icon, icon_size);
if (wm_settings->button_title_visible || !wm_settings->button_single_row)
{
......@@ -532,19 +496,19 @@ void Plugin::update_size()
//-----------------------------------------------------------------------------
void Plugin::show_menu(GtkWidget* parent, bool horizontal)
void Plugin::show_menu(bool at_cursor)
{
if (wm_settings->menu_opacity != m_opacity)
{
if ((m_opacity == 100) || (wm_settings->menu_opacity == 100))
{
delete m_window;
m_window = new Window;
m_window = new Window(this);
g_signal_connect_slot<GtkWidget*>(m_window->get_widget(), "unmap", &Plugin::menu_hidden, this);
}
m_opacity = wm_settings->menu_opacity;
}
m_window->show(parent, horizontal);
m_window->show(at_cursor ? Window::PositionAtCursor : Window::Position(xfce_panel_plugin_get_orientation(m_plugin)));
}
//-----------------------------------------------------------------------------
......@@ -58,6 +58,7 @@ public:
void set_button_title(const std::string& title);
void set_button_icon_name(const std::string& icon);
void set_configure_enabled(bool enabled);
void set_loaded(bool loaded);
private:
void button_toggled(GtkToggleButton* button);
......@@ -70,7 +71,7 @@ private:
void show_about();
gboolean size_changed(XfcePanelPlugin*, gint size);
void update_size();
void show_menu(GtkWidget* parent, bool horizontal);
void show_menu(bool at_cursor);
private:
XfcePanelPlugin* m_plugin;
......
/*
* Copyright (C) 2013, 2016, 2017 Graeme Gott <graeme@gottcode.org>
* Copyright (C) 2013, 2016, 2017, 2018 Graeme Gott <graeme@gottcode.org>
*
* This library is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
......@@ -52,11 +52,7 @@ SectionButton::SectionButton(const gchar* icon, const gchar* text) :
gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(m_button), false);
gtk_button_set_relief(GTK_BUTTON(m_button), GTK_RELIEF_NONE);
gtk_widget_set_tooltip_text(GTK_WIDGET(m_button), text);
#if GTK_CHECK_VERSION(3,20,0)
gtk_widget_set_focus_on_click(GTK_WIDGET(m_button), false);
#else
gtk_button_set_focus_on_click(GTK_BUTTON(m_button), false);
#endif
g_signal_connect(m_button, "enter-notify-event", G_CALLBACK(on_enter_notify_event), GTK_TOGGLE_BUTTON(m_button));
m_box = GTK_BOX(gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 4));
......@@ -79,6 +75,8 @@ SectionButton::SectionButton(const gchar* icon, const gchar* text) :
m_label = gtk_label_new(text);
gtk_box_pack_start(m_box, m_label, false, true, 0);
gtk_widget_show_all(GTK_WIDGET(m_button));
reload_icon_size();
}
......
......@@ -5,6 +5,7 @@ Name=Whisker Menu
Name[am]=የ ዊስከር ዝርዝር
Name[ar]=قائمة Whisker
Name[ast]=Menú Whisker
Name[be]=Меню Whisker
Name[bg]=Whisker Меню
Name[ca]=Menú Whisker
Name[ca@valencia]=Menú Whisker
......@@ -54,6 +55,7 @@ Comment=Show a menu to easily access installed applications
Comment[am]=የ ተገጠሙ መተግበሪያዎች በ ቀላሉ በ ዝርዝር ውስጥ ማሳያ
Comment[ar]=إظهار قائمة لولوج إلى التطبيقات المثبتة بسهولة
Comment[ast]=Amuesa un menú p'acceder cenciellamente a les aplicaciones instalaes
Comment[be]=Адлюстроўвае меню для зручнага доступу да ўсталяваных праграм
Comment[bg]=Показване на меню за лесен достъп до инсталираните приложения
Comment[ca]=Mostra un menú per accedir fàcilment a les aplicacions instal·lades
Comment[ca@valencia]=Mostra un menú per a accedir fàcilment a les aplicacions instal·lades
......
......@@ -21,6 +21,7 @@
#include "command.h"
#include "favorites-page.h"
#include "launcher-view.h"
#include "plugin.h"
#include "profile-picture.h"
#include "recent-page.h"
#include "resizer-widget.h"
......@@ -39,12 +40,11 @@ using namespace WhiskerMenu;
//-----------------------------------------------------------------------------
#if GTK_CHECK_VERSION(3,20,0)
static void grab_pointer(GdkWindow* window, guint32)
static void grab_pointer(GtkWidget* widget)
{
GdkDisplay* display = gdk_display_get_default();
GdkSeat* seat = gdk_display_get_default_seat(display);
GdkWindow* window = gtk_widget_get_window(widget);
gdk_seat_grab(seat, window, GDK_SEAT_CAPABILITY_ALL_POINTING, true, NULL, NULL, NULL, NULL);
}
......@@ -55,35 +55,13 @@ static void ungrab_pointer()
gdk_seat_ungrab(seat);
}
#else
static void grab_pointer(GdkWindow* window, guint32 time)
{
GdkDisplay* display = gdk_display_get_default();
GdkDeviceManager* device_manager = gdk_display_get_device_manager(display);
GdkDevice* device = gdk_device_manager_get_client_pointer(device_manager);
gdk_device_grab(device, window, GDK_OWNERSHIP_NONE, true,
GdkEventMask(
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK
),
NULL, time);
}
static void ungrab_pointer()
{
GdkDisplay* display = gdk_display_get_default();
GdkDeviceManager* device_manager = gdk_display_get_device_manager(display);
GdkDevice* device = gdk_device_manager_get_client_pointer(device_manager);
gdk_device_ungrab(device, gtk_get_current_event_time());
}
#endif
//-----------------------------------------------------------------------------
WhiskerMenu::Window::Window() :
WhiskerMenu::Window::Window(Plugin* plugin) :
m_plugin(plugin),
m_window(NULL),
m_search_cover(GTK_STACK_TRANSITION_TYPE_OVER_DOWN),
m_search_uncover(GTK_STACK_TRANSITION_TYPE_UNDER_UP),
m_sidebar_size_group(NULL),
m_layout_left(true),
m_layout_bottom(true),
......@@ -123,6 +101,16 @@ WhiskerMenu::Window::Window() :
gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_OUT);
gtk_container_add(GTK_CONTAINER(m_window), frame);
// Create window contents stack
m_window_stack = GTK_STACK(gtk_stack_new());
gtk_container_add(GTK_CONTAINER(frame), GTK_WIDGET(m_window_stack));
// Create loading message
m_window_load_spinner = GTK_SPINNER(gtk_spinner_new());
gtk_widget_set_halign(GTK_WIDGET(m_window_load_spinner), GTK_ALIGN_CENTER);
gtk_widget_set_valign(GTK_WIDGET(m_window_load_spinner), GTK_ALIGN_CENTER);
gtk_stack_add_named(m_window_stack, GTK_WIDGET(m_window_load_spinner), "load");
// Create the profile picture
m_profilepic = new ProfilePicture(this);
......@@ -189,8 +177,8 @@ WhiskerMenu::Window::Window() :
// Create box for packing children
m_vbox = GTK_BOX(gtk_box_new(GTK_ORIENTATION_VERTICAL, 6));
gtk_container_add(GTK_CONTAINER(frame), GTK_WIDGET(m_vbox));
gtk_container_set_border_width(GTK_CONTAINER(m_vbox), 2);
gtk_stack_add_named(m_window_stack, GTK_WIDGET(m_vbox), "contents");
// Create box for packing commands
m_commands_box = GTK_BOX(gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0));
......@@ -215,16 +203,18 @@ WhiskerMenu::Window::Window() :
gtk_box_pack_start(m_search_box, GTK_WIDGET(m_search_entry), true, true, 0);
// Create box for packing launcher pages and sidebar
m_contents_stack = GTK_STACK(gtk_stack_new());
m_contents_box = GTK_BOX(gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6));
gtk_box_pack_start(m_vbox, GTK_WIDGET(m_contents_box), true, true, 0);
gtk_box_pack_start(m_contents_box, m_search_results->get_widget(), true, true, 0);
gtk_stack_add_named(m_contents_stack, GTK_WIDGET(m_contents_box), "contents");
gtk_stack_add_named(m_contents_stack, m_search_results->get_widget(), "search");
gtk_box_pack_start(m_vbox, GTK_WIDGET(m_contents_stack), true, true, 0);
// Create box for packing launcher pages
m_panels_box = GTK_BOX(gtk_box_new(GTK_ORIENTATION_VERTICAL, 0));
gtk_box_pack_start(m_contents_box, GTK_WIDGET(m_panels_box), true, true, 0);
gtk_box_pack_start(m_panels_box, m_favorites->get_widget(), true, true, 0);
gtk_box_pack_start(m_panels_box, m_recent->get_widget(), true, true, 0);
gtk_box_pack_start(m_panels_box, m_applications->get_widget(), true, true, 0);
m_panels_stack = GTK_STACK(gtk_stack_new());
gtk_box_pack_start(m_contents_box, GTK_WIDGET(m_panels_stack), true, true, 0);
gtk_stack_add_named(m_panels_stack, m_favorites->get_widget(), "favorites");
gtk_stack_add_named(m_panels_stack, m_recent->get_widget(), "recent");
gtk_stack_add_named(m_panels_stack, m_applications->get_widget(), "applications");
// Create box for packing sidebar
m_sidebar_buttons = GTK_BOX(gtk_box_new(GTK_ORIENTATION_VERTICAL, 0));
......@@ -245,12 +235,7 @@ WhiskerMenu::Window::Window() :
// Show widgets
gtk_widget_show_all(frame);
gtk_widget_hide(m_favorites->get_widget());
gtk_widget_hide(m_recent->get_widget());
gtk_widget_hide(m_applications->get_widget());
gtk_widget_hide(m_search_results->get_widget());
m_default_button->set_active(true);
gtk_widget_show(frame);
// Resize to last known size
gtk_window_set_default_size(m_window, m_geometry.width, m_geometry.height);
......@@ -307,16 +292,13 @@ void WhiskerMenu::Window::hide()
// Hide window
gtk_widget_hide(GTK_WIDGET(m_window));
// Reset mouse cursor by forcing default page to hide
gtk_widget_hide(m_default_page->get_widget());
// Switch back to default page
show_default_page();
}
//-----------------------------------------------------------------------------
void WhiskerMenu::Window::show(GtkWidget* parent, bool horizontal)
void WhiskerMenu::Window::show(const Position position)
{
// Handle showing tooltips
if (wm_settings->launcher_show_tooltip)
......@@ -344,13 +326,16 @@ void WhiskerMenu::Window::show(GtkWidget* parent, bool horizontal)
m_recent->enforce_item_count();
// Make sure applications list is current; does nothing unless list has changed
m_applications->load_applications();
// Focus search entry
gtk_widget_grab_focus(GTK_WIDGET(m_search_entry));
// Reset mouse cursor by forcing default page to hide
gtk_widget_show(m_default_page->get_widget());
if (m_applications->load_applications())
{
set_loaded();
}
else
{
m_plugin->set_loaded(false);
gtk_stack_set_visible_child_name(m_window_stack, "load");
gtk_spinner_start(m_window_load_spinner);
}
// Update default page
if (wm_settings->display_recent && (m_default_page == m_favorites))
......@@ -377,10 +362,11 @@ void WhiskerMenu::Window::show(GtkWidget* parent, bool horizontal)
GdkScreen* screen = NULL;
int parent_x = 0, parent_y = 0, parent_w = 0, parent_h = 0;
if (parent != NULL)
if (position != PositionAtCursor)
{
// Wait up to half a second for auto-hidden panels to be shown
clock_t end = clock() + (CLOCKS_PER_SEC / 2);
GtkWidget* parent = m_plugin->get_button();
GtkWindow* parent_window = GTK_WINDOW(gtk_widget_get_toplevel(parent));
gtk_window_get_position(parent_window, &parent_x, &parent_y);
while ((parent_x == -9999) && (parent_y == -9999) && (clock() < end))
......@@ -406,25 +392,15 @@ void WhiskerMenu::Window::show(GtkWidget* parent, bool horizontal)
else
{
GdkDisplay* display = gdk_display_get_default();
#if GTK_CHECK_VERSION(3,20,0)
GdkSeat* seat = gdk_display_get_default_seat(display);
GdkDevice* device = gdk_seat_get_pointer(seat);
#else
GdkDeviceManager* device_manager = gdk_display_get_device_manager(display);
GdkDevice* device = gdk_device_manager_get_client_pointer(device_manager);
#endif
gdk_device_get_position(device, &screen, &parent_x, &parent_y);
}
// Fetch screen geomtry
GdkRectangle monitor;
#if GTK_CHECK_VERSION(3,22,0)
GdkMonitor* monitor_gdk = gdk_display_get_monitor_at_point(gdk_display_get_default(), parent_x, parent_y);
gdk_monitor_get_geometry(monitor_gdk, &monitor);
#else
int monitor_num = gdk_screen_get_monitor_at_point(screen, parent_x, parent_y);
gdk_screen_get_monitor_geometry(screen, monitor_num, &monitor);
#endif
// Prevent window from being larger than screen
if (m_geometry.width > monitor.width)
......@@ -441,7 +417,7 @@ void WhiskerMenu::Window::show(GtkWidget* parent, bool horizontal)
// Find window position
bool layout_left = ((2 * (parent_x - monitor.x)) + parent_w) < monitor.width;
bool layout_bottom = ((2 * (parent_y - monitor.y)) + (parent_h / 2)) > monitor.height;
if (horizontal)
if (position != PositionVertical)
{
m_geometry.x = layout_left ? parent_x : (parent_x + parent_w - m_geometry.width);
m_geometry.y = layout_bottom ? (parent_y - m_geometry.height) : (parent_y + parent_h);
......@@ -519,13 +495,13 @@ void WhiskerMenu::Window::show(GtkWidget* parent, bool horizontal)
if ((layout_left && !wm_settings->position_categories_alternate)
|| (!layout_left && wm_settings->position_categories_alternate))
{
gtk_box_reorder_child(m_contents_box, GTK_WIDGET(m_panels_box), 1);
gtk_box_reorder_child(m_contents_box, GTK_WIDGET(m_sidebar), 2);
gtk_box_reorder_child(m_contents_box, GTK_WIDGET(m_panels_stack), 0);
gtk_box_reorder_child(m_contents_box, GTK_WIDGET(m_sidebar), 1);
}
else
{
gtk_box_reorder_child(m_contents_box, GTK_WIDGET(m_panels_box), 2);
gtk_box_reorder_child(m_contents_box, GTK_WIDGET(m_sidebar), 1);
gtk_box_reorder_child(m_contents_box, GTK_WIDGET(m_panels_stack), 1);
gtk_box_reorder_child(m_contents_box, GTK_WIDGET(m_sidebar), 0);
}
if (layout_left != m_layout_left)
{
......@@ -603,26 +579,38 @@ void WhiskerMenu::Window::show(GtkWidget* parent, bool horizontal)
if (m_layout_bottom && m_layout_search_alternate)
{
gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_title_box), 0);
gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_contents_box), 1);
gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_contents_stack), 1);
gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_search_box), 2);
m_search_cover = GTK_STACK_TRANSITION_TYPE_OVER_UP;
m_search_uncover = GTK_STACK_TRANSITION_TYPE_UNDER_DOWN;
}
else if (m_layout_search_alternate)
{
gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_title_box), 2);
gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_contents_box), 1);
gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_contents_stack), 1);
gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_search_box), 0);
m_search_cover = GTK_STACK_TRANSITION_TYPE_OVER_DOWN;
m_search_uncover = GTK_STACK_TRANSITION_TYPE_UNDER_UP;
}
else if (m_layout_bottom)
{
gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_title_box), 0);
gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_search_box), 1);
gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_contents_box), 2);
gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_contents_stack), 2);
m_search_cover = GTK_STACK_TRANSITION_TYPE_OVER_DOWN;
m_search_uncover = GTK_STACK_TRANSITION_TYPE_UNDER_UP;
}
else
{
gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_title_box), 2);
gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_search_box), 1);
gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_contents_box), 0);
gtk_box_reorder_child(m_vbox, GTK_WIDGET(m_contents_stack), 0);
m_search_cover = GTK_STACK_TRANSITION_TYPE_OVER_UP;
m_search_uncover = GTK_STACK_TRANSITION_TYPE_UNDER_DOWN;
}
}
......@@ -654,7 +642,7 @@ void WhiskerMenu::Window::save()
void WhiskerMenu::Window::on_context_menu_destroyed()
{
grab_pointer(gtk_widget_get_window(GTK_WIDGET(m_window)), gtk_get_current_event_time());
grab_pointer(GTK_WIDGET(m_window));
}
//-----------------------------------------------------------------------------
......@@ -667,7 +655,6 @@ void WhiskerMenu::Window::set_categories(const std::vector<SectionButton*>& cate
gtk_box_pack_start(m_sidebar_buttons, GTK_WIDGET((*i)->get_button()), false, false, 0);
g_signal_connect_slot<GtkToggleButton*>((*i)->get_button(), "toggled", &Window::category_toggled, this);
}
gtk_widget_show_all(GTK_WIDGET(m_sidebar_buttons));
show_default_page();
}
......@@ -687,6 +674,21 @@ void WhiskerMenu::Window::set_items()
//-----------------------------------------------------------------------------
void WhiskerMenu::Window::set_loaded()
{
// Hide loading spinner
gtk_spinner_stop(m_window_load_spinner);
gtk_stack_set_visible_child_name(m_window_stack, "contents");
// Focus search entry
gtk_widget_grab_focus(GTK_WIDGET(m_search_entry));
// Show panel button
m_plugin->set_loaded(true);
}
//-----------------------------------------------------------------------------
void WhiskerMenu::Window::unset_items()
{
m_search_results->unset_menu_items();
......@@ -706,7 +708,7 @@ gboolean WhiskerMenu::Window::on_enter_notify_event(GtkWidget*, GdkEvent* event)
return false;
}
grab_pointer(gtk_widget_get_window(GTK_WIDGET(m_window)), crossing_event->time);
grab_pointer(GTK_WIDGET(m_window));
return false;
}
......@@ -722,7 +724,7 @@ gboolean WhiskerMenu::Window::on_leave_notify_event(GtkWidget*, GdkEvent* event)
return false;
}
grab_pointer(gtk_widget_get_window(GTK_WIDGET(m_window)), crossing_event->time);
grab_pointer(GTK_WIDGET(m_window));
return false;
}
......@@ -757,7 +759,7 @@ gboolean WhiskerMenu::Window::on_key_press_event(GtkWidget* widget, GdkEvent* ev
}
Page* page = NULL;
if (gtk_widget_get_visible(m_search_results->get_widget()))
if (gtk_stack_get_visible_child(m_contents_stack) == m_search_results->get_widget())
{
page = m_search_results;
}
......@@ -827,7 +829,7 @@ gboolean WhiskerMenu::Window::on_map_event(GtkWidget*, GdkEvent*)
gtk_window_set_keep_above(m_window, true);
// Track mouse clicks outside of menu
grab_pointer(gtk_widget_get_window(GTK_WIDGET(m_window)), gtk_get_current_event_time());
grab_pointer(GTK_WIDGET(m_window));
// Focus search entry
gtk_widget_grab_focus(GTK_WIDGET(m_search_entry));
......@@ -921,9 +923,7 @@ gboolean WhiskerMenu::Window::on_draw_event(GtkWidget* widget, cairo_t* cr)
void WhiskerMenu::Window::favorites_toggled()
{
m_favorites->reset_selection();
gtk_widget_hide(m_recent->get_widget());
gtk_widget_hide(m_applications->get_widget());
gtk_widget_show_all(m_favorites->get_widget());
gtk_stack_set_visible_child_name(m_panels_stack, "favorites");
gtk_widget_grab_focus(GTK_WIDGET(m_search_entry));
}
......@@ -932,9 +932,7 @@ void WhiskerMenu::Window::favorites_toggled()
void WhiskerMenu::Window::recent_toggled()
{
m_recent->reset_selection();
gtk_widget_hide(m_favorites->get_widget());
gtk_widget_hide(m_applications->get_widget());
gtk_widget_show_all(m_recent->get_widget());
gtk_stack_set_visible_child_name(m_panels_stack, "recent");
gtk_widget_grab_focus(GTK_WIDGET(m_search_entry));
}
......@@ -943,9 +941,7 @@ void WhiskerMenu::Window::recent_toggled()
void WhiskerMenu::Window::category_toggled()
{
m_applications->reset_selection();
gtk_widget_hide(m_favorites->get_widget());
gtk_widget_hide(m_recent->get_widget());
gtk_widget_show_all(m_applications->get_widget());
gtk_stack_set_visible_child_name(m_panels_stack, "applications");
gtk_widget_grab_focus(GTK_WIDGET(m_search_entry));
}
......@@ -992,16 +988,12 @@ void WhiskerMenu::Window::search()
if (visible)
{
// Show search results
gtk_widget_hide(GTK_WIDGET(m_sidebar));
gtk_widget_hide(GTK_WIDGET(m_panels_box));
gtk_widget_show(m_search_results->get_widget());
gtk_stack_set_visible_child_full(m_contents_stack, "search", m_search_cover);
}
else
{
// Show active panel
gtk_widget_hide(m_search_results->get_widget());
gtk_widget_show(GTK_WIDGET(m_panels_box));
gtk_widget_show(GTK_WIDGET(m_sidebar));
gtk_stack_set_visible_child_full(m_contents_stack, "contents", m_search_uncover);
}
// Apply filter
......
......@@ -28,6 +28,7 @@ namespace WhiskerMenu
class ApplicationsPage;
class FavoritesPage;
class Page;
class Plugin;
class ProfilePicture;
class ResizerWidget;
class RecentPage;
......@@ -37,9 +38,16 @@ class SectionButton;
class Window
{
public:
explicit Window();
explicit Window(Plugin* plugin);
~Window();
enum Position
{
PositionHorizontal = GTK_ORIENTATION_HORIZONTAL,
PositionVertical = GTK_ORIENTATION_VERTICAL,
PositionAtCursor
};
GtkWidget* get_widget() const
{
return GTK_WIDGET(m_window);
......@@ -66,11 +74,12 @@ public:
}
void hide();
void show(GtkWidget* parent, bool horizontal);
void show(const Position position);
void save();
void on_context_menu_destroyed();
void set_categories(const std::vector<SectionButton*>& categories);
void set_items();
void set_loaded();
void unset_items();
private:
......@@ -92,14 +101,23 @@ private:
void search();
private:
Plugin* m_plugin;
GtkWindow* m_window;
GtkStack* m_window_stack;
GtkSpinner* m_window_load_spinner;
GtkBox* m_vbox;
GtkBox* m_title_box;
GtkBox* m_commands_box;
GtkBox* m_search_box;
GtkStack* m_contents_stack;
GtkBox* m_contents_box;
GtkBox* m_panels_box;
GtkStack* m_panels_stack;
GtkStackTransitionType m_search_cover;
GtkStackTransitionType m_search_uncover;
ProfilePicture* m_profilepic;
GtkLabel* m_username;
......
# Amharic translation of xfce4-whiskermenu-plugin.
# Copyright (C) 2017 Graeme Gott
# Copyright (C) 2018 Graeme Gott
# This file is distributed under the same license as the xfce4-whiskermenu-plugin package.
#
# Translators:
# samson <sambelet@yahoo.com>, 2016-2017
# samson <sambelet@yahoo.com>, 2016-2018
msgid ""
msgstr ""
"Project-Id-Version: Whisker Menu\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-04-07 08:16-0400\n"
"PO-Revision-Date: 2017-11-20 00:25+0000\n"
"POT-Creation-Date: 2018-05-21 07:22-0400\n"
"PO-Revision-Date: 2018-05-01 14:33+0000\n"
"Last-Translator: samson <sambelet@yahoo.com>\n"
"Language-Team: Amharic (http://www.transifex.com/gottcode/xfce4-whiskermenu-"
"plugin/language/am/)\n"
......@@ -19,19 +19,19 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: ../panel-plugin/configuration-dialog.cpp:818
#: ../panel-plugin/configuration-dialog.cpp:823
msgid "Add action"
msgstr "ተግባር መጨመሪያ"
#: ../panel-plugin/page.cpp:257
#: ../panel-plugin/page.cpp:258
msgid "Add to Desktop"
msgstr "ወደ ዴስክቶፕ መጨመሪያ"
#: ../panel-plugin/page.cpp:241
#: ../panel-plugin/page.cpp:242
msgid "Add to Favorites"
msgstr "ወደ የምወደው መጨመሪያ"
#: ../panel-plugin/page.cpp:261
#: ../panel-plugin/page.cpp:262
msgid "Add to Panel"
msgstr "ወደ ክፍል መጨመሪያ"
......@@ -43,15 +43,15 @@ msgstr "ሁሉንም"
msgid "All _Settings"
msgstr "ሁሉንም _ማሰናጃዎች "
#: ../panel-plugin/plugin.cpp:445
#: ../panel-plugin/plugin.cpp:402
msgid "Alternate application launcher for Xfce"
msgstr "አማራጭ መተግበሪያ ማስጀመሪያ ለ Xfce"
#: ../panel-plugin/configuration-dialog.cpp:719
#: ../panel-plugin/configuration-dialog.cpp:724
msgid "Amount of _items:"
msgstr "የ _እቃዎች መጠን:"
#: ../panel-plugin/plugin.cpp:258
#: ../panel-plugin/plugin.cpp:207
msgid "Applications"
msgstr "መተግበሪያዎች"
......@@ -63,7 +63,7 @@ msgstr "የ መደብ ግልጽነ_ት: "
msgid "Browse the file system to choose a custom command."
msgstr "የ ፋይል ስርአት መቃኛ የ ትእዛዝ ማስተካከያ ለ መምረጥ"
#: ../panel-plugin/configuration-dialog.cpp:876
#: ../panel-plugin/configuration-dialog.cpp:881
msgid "C_ommand:"
msgstr "ት_እዛዝ:"
......@@ -75,11 +75,11 @@ msgstr "የ ምድ_ብ ምልክት መጠን:"
msgid "Clear Recently Used"
msgstr "በ ቅርብ የተጠቀሙትን ማጽጃ"
#: ../panel-plugin/plugin.cpp:446
#: ../panel-plugin/plugin.cpp:403
msgid "Copyright © 2013-2018 Graeme Gott"
msgstr "Copyright © 2013-2018 Graeme Gott"
#: ../panel-plugin/configuration-dialog.cpp:846
#: ../panel-plugin/configuration-dialog.cpp:851
msgid "Details"
msgstr "ዝርዝሮች"
......@@ -87,11 +87,11 @@ msgstr "ዝርዝሮች"
msgid "Di_splay:"
msgstr "ማሳ_ያ:"
#: ../panel-plugin/configuration-dialog.cpp:736
#: ../panel-plugin/configuration-dialog.cpp:741
msgid "Display by _default"
msgstr "በ _ነባር ማሳያ"
#: ../panel-plugin/page.cpp:268
#: ../panel-plugin/page.cpp:269
msgid "Edit Application..."
msgstr "መተግበሪያ ማረሚያ..."
......@@ -129,7 +129,7 @@ msgstr "የ ማሰናጃ አስተዳዳሪ መክፈት አልተቻለም"
msgid "Failed to switch users."
msgstr "ተጠቃሚ መቀየር አልተቻለም"
#: ../panel-plugin/window.cpp:162
#: ../panel-plugin/window.cpp:150
msgid "Favorites"
msgstr "የምወደቸው"
......@@ -141,9 +141,9 @@ msgstr "ምልክት"
msgid "Icon and title"
msgstr "ምልክት እና አርእስት"
#: ../panel-plugin/configuration-dialog.cpp:730
msgid "Ignore _favorites"
msgstr "_የምወዳቸውን መተው"
#: ../panel-plugin/configuration-dialog.cpp:735
msgid "Include _favorites"
msgstr "_የምወዳቸውን ማካተቻ"
#: ../panel-plugin/configuration-dialog.cpp:623
msgid "Ite_m icon size:"
......@@ -166,15 +166,15 @@ msgid "Man Pages"
msgstr "ማን ገጾች"
#: ../panel-plugin/configuration-dialog.cpp:587
#: ../panel-plugin/configuration-dialog.cpp:679
#: ../panel-plugin/configuration-dialog.cpp:684
msgid "Menu"
msgstr "ዝርዝር"
#: ../panel-plugin/configuration-dialog.cpp:851
#: ../panel-plugin/configuration-dialog.cpp:856
msgid "Nam_e:"
msgstr "ስ_ም:"
#: ../panel-plugin/configuration-dialog.cpp:796
#: ../panel-plugin/configuration-dialog.cpp:801
msgid "Name"
msgstr "ስም"
......@@ -194,27 +194,27 @@ msgstr "URI መክፈቻ"
msgid "Panel Button"
msgstr "የ ክፍል ቁልፍ"
#: ../panel-plugin/configuration-dialog.cpp:801
#: ../panel-plugin/configuration-dialog.cpp:806
msgid "Pattern"
msgstr "ድግግሞሽ"
#: ../panel-plugin/configuration-dialog.cpp:690
#: ../panel-plugin/configuration-dialog.cpp:695
msgid "Position _search entry next to panel button"
msgstr "የ _መፈለጊያ ቦታ ማስገቢያ ከ ክፍል ቁልፍ አጠገብ "
#: ../panel-plugin/configuration-dialog.cpp:703
#: ../panel-plugin/configuration-dialog.cpp:708
msgid "Position cate_gories next to panel button"
msgstr "የ ምድ_ቦች ቦታ ከ ክፍል ቁልፍ አጠገብ "
#: ../panel-plugin/configuration-dialog.cpp:696
#: ../panel-plugin/configuration-dialog.cpp:701
msgid "Position commands next to search _entry"
msgstr "የ ትእዛዝ ቦታ ከ መፈለጊያ አጠገብ _ማስገቢያ"
#: ../panel-plugin/configuration-dialog.cpp:714 ../panel-plugin/window.cpp:168
#: ../panel-plugin/configuration-dialog.cpp:719 ../panel-plugin/window.cpp:156
msgid "Recently Used"
msgstr "በቅርብ የተጠቀሙት"
#: ../panel-plugin/page.cpp:249
#: ../panel-plugin/page.cpp:250
msgid "Remove From Favorites"
msgstr "ከምወዳቸው ውስጥ ማስወገጃ"
......@@ -223,7 +223,7 @@ msgstr "ከምወዳቸው ውስጥ ማስወገጃ"
msgid "Remove action \"%s\"?"
msgstr "ተግባር ማስወገጃ \"%s\"?"
#: ../panel-plugin/configuration-dialog.cpp:827
#: ../panel-plugin/configuration-dialog.cpp:832
msgid "Remove selected action"
msgstr "የ ተመረጠውን ተግባር ማስወገጃ"
......@@ -296,7 +296,7 @@ msgstr "መለያ በ ፊደል ቅደም ተከተል A-Z"
msgid "Switch _Users"
msgstr "_ተጠቃሚ መቀየሪያ"
#: ../panel-plugin/configuration-dialog.cpp:684
#: ../panel-plugin/configuration-dialog.cpp:689
msgid "Switch categories by _hovering"
msgstr "ምድቦች በ _ማንሳፈፍ መቀየሪያ"
......@@ -308,15 +308,15 @@ msgstr "ተግባሩ በቋሚነት ይጠፋል"
msgid "Title"
msgstr "አርእስት"
#: ../panel-plugin/page.cpp:372
#: ../panel-plugin/page.cpp:334
msgid "Unable to add launcher to desktop."
msgstr "ወደ ዴስክቶፕ ማስጀመሪያ መጨመር አልተቻለም"
#: ../panel-plugin/page.cpp:411 ../panel-plugin/page.cpp:420
#: ../panel-plugin/page.cpp:373 ../panel-plugin/page.cpp:382
msgid "Unable to add launcher to panel."
msgstr "ወደ ክፍል ማስጀመሪያ መጨመር አልተቻለም"
#: ../panel-plugin/page.cpp:449
#: ../panel-plugin/page.cpp:411
msgid "Unable to edit launcher."
msgstr "ማስጀመሪያ ማረም አልተቻለም"
......@@ -396,11 +396,11 @@ msgstr "መመልከቻ መቆለፊያ"
msgid "_OK"
msgstr "_እሺ"
#: ../panel-plugin/configuration-dialog.cpp:864
#: ../panel-plugin/configuration-dialog.cpp:869
msgid "_Pattern:"
msgstr "_ድግግሞሽ:"
#: ../panel-plugin/configuration-dialog.cpp:888
#: ../panel-plugin/configuration-dialog.cpp:893
msgid "_Regular expression"
msgstr "_መደበኛ አገላለጽ"
......@@ -408,6 +408,6 @@ msgstr "_መደበኛ አገላለጽ"
msgid "_Title:"
msgstr "_አርእስት: "
#: ../panel-plugin/plugin.cpp:450
#: ../panel-plugin/plugin.cpp:407
msgid "translator-credits"
msgstr "ምስጋና-ለ ተርጓሚዎች"
......@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Whisker Menu\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-04-07 08:16-0400\n"
"POT-Creation-Date: 2018-05-21 07:22-0400\n"
"PO-Revision-Date: 2017-03-03 15:49+0000\n"
"Last-Translator: محمدأمين الصامت <mohamedamin.samet@gmail.com>\n"
"Language-Team: Arabic (http://www.transifex.com/gottcode/xfce4-whiskermenu-"
......@@ -21,19 +21,19 @@ msgstr ""
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#: ../panel-plugin/configuration-dialog.cpp:818
#: ../panel-plugin/configuration-dialog.cpp:823
msgid "Add action"
msgstr "أضف إجراء"
#: ../panel-plugin/page.cpp:257
#: ../panel-plugin/page.cpp:258
msgid "Add to Desktop"
msgstr "أضف إلى سطح المكتب"
#: ../panel-plugin/page.cpp:241
#: ../panel-plugin/page.cpp:242
msgid "Add to Favorites"
msgstr "أضف إلى المفضلات"
#: ../panel-plugin/page.cpp:261
#: ../panel-plugin/page.cpp:262
msgid "Add to Panel"
msgstr "أضف إلى الشريط"
......@@ -45,15 +45,15 @@ msgstr "كل"
msgid "All _Settings"
msgstr "كل الإعدا_دات"
#: ../panel-plugin/plugin.cpp:445
#: ../panel-plugin/plugin.cpp:402
msgid "Alternate application launcher for Xfce"
msgstr ""
#: ../panel-plugin/configuration-dialog.cpp:719
#: ../panel-plugin/configuration-dialog.cpp:724
msgid "Amount of _items:"
msgstr ""
#: ../panel-plugin/plugin.cpp:258
#: ../panel-plugin/plugin.cpp:207
msgid "Applications"
msgstr "التطبيقات"
......@@ -65,7 +65,7 @@ msgstr ""
msgid "Browse the file system to choose a custom command."
msgstr "تصفح نظام الملفات لإختيار أمر مخصص."
#: ../panel-plugin/configuration-dialog.cpp:876
#: ../panel-plugin/configuration-dialog.cpp:881
msgid "C_ommand:"
msgstr "أ_مر:"
......@@ -77,11 +77,11 @@ msgstr "_حجم أيقونة الصنف:"
msgid "Clear Recently Used"
msgstr "محو المستعملة حديثا"
#: ../panel-plugin/plugin.cpp:446
#: ../panel-plugin/plugin.cpp:403
msgid "Copyright © 2013-2018 Graeme Gott"
msgstr ""
#: ../panel-plugin/configuration-dialog.cpp:846
#: ../panel-plugin/configuration-dialog.cpp:851
msgid "Details"
msgstr "تفاصيل"
......@@ -89,11 +89,11 @@ msgstr "تفاصيل"
msgid "Di_splay:"
msgstr "عر_ض:"
#: ../panel-plugin/configuration-dialog.cpp:736
#: ../panel-plugin/configuration-dialog.cpp:741
msgid "Display by _default"
msgstr ""
#: ../panel-plugin/page.cpp:268
#: ../panel-plugin/page.cpp:269
msgid "Edit Application..."
msgstr ""
......@@ -131,7 +131,7 @@ msgstr "فشل فتح مدير الإعدادات."
msgid "Failed to switch users."
msgstr "فشل تبديل المستخدم."
#: ../panel-plugin/window.cpp:162
#: ../panel-plugin/window.cpp:150
msgid "Favorites"
msgstr "مفضلات"
......@@ -143,8 +143,9 @@ msgstr "أيقونة"
msgid "Icon and title"
msgstr "أيقونة و عنوان"
#: ../panel-plugin/configuration-dialog.cpp:730
msgid "Ignore _favorites"
#: ../panel-plugin/configuration-dialog.cpp:735
#, fuzzy
msgid "Include _favorites"
msgstr "تجاها المفضلات"
#: ../panel-plugin/configuration-dialog.cpp:623
......@@ -168,15 +169,15 @@ msgid "Man Pages"
msgstr "صفحات الدليل"
#: ../panel-plugin/configuration-dialog.cpp:587
#: ../panel-plugin/configuration-dialog.cpp:679
#: ../panel-plugin/configuration-dialog.cpp:684
msgid "Menu"
msgstr "قائمة"
#: ../panel-plugin/configuration-dialog.cpp:851
#: ../panel-plugin/configuration-dialog.cpp:856
msgid "Nam_e:"
msgstr "_إسم:"
#: ../panel-plugin/configuration-dialog.cpp:796
#: ../panel-plugin/configuration-dialog.cpp:801
msgid "Name"
msgstr "إسم"
......@@ -196,27 +197,27 @@ msgstr ""
msgid "Panel Button"
msgstr ""
#: ../panel-plugin/configuration-dialog.cpp:801
#: ../panel-plugin/configuration-dialog.cpp:806
msgid "Pattern"
msgstr ""
#: ../panel-plugin/configuration-dialog.cpp:690
#: ../panel-plugin/configuration-dialog.cpp:695
msgid "Position _search entry next to panel button"
msgstr "موضع مربع البحث يلي زر الشريط"
#: ../panel-plugin/configuration-dialog.cpp:703
#: ../panel-plugin/configuration-dialog.cpp:708
msgid "Position cate_gories next to panel button"
msgstr ""
#: ../panel-plugin/configuration-dialog.cpp:696
#: ../panel-plugin/configuration-dialog.cpp:701
msgid "Position commands next to search _entry"
msgstr "موضع الأوامر يلي مربع البحث"
#: ../panel-plugin/configuration-dialog.cpp:714 ../panel-plugin/window.cpp:168
#: ../panel-plugin/configuration-dialog.cpp:719 ../panel-plugin/window.cpp:156
msgid "Recently Used"
msgstr "مستعملة حديثا"
#: ../panel-plugin/page.cpp:249
#: ../panel-plugin/page.cpp:250
msgid "Remove From Favorites"
msgstr "حذف من المفضلات"
......@@ -225,7 +226,7 @@ msgstr "حذف من المفضلات"
msgid "Remove action \"%s\"?"
msgstr "حذف الإجراء \"%s\"?"
#: ../panel-plugin/configuration-dialog.cpp:827
#: ../panel-plugin/configuration-dialog.cpp:832
msgid "Remove selected action"
msgstr "حذف"
......@@ -298,7 +299,7 @@ msgstr "رتب أبجديا ي-أ"
msgid "Switch _Users"
msgstr "تغيير المستخدم"
#: ../panel-plugin/configuration-dialog.cpp:684
#: ../panel-plugin/configuration-dialog.cpp:689
msgid "Switch categories by _hovering"
msgstr "تبديل الأصناف ح_سب الترفيف"
......@@ -310,15 +311,15 @@ msgstr "الإجراء سيمسح نهائيا"
msgid "Title"
msgstr "عنوان"
#: ../panel-plugin/page.cpp:372
#: ../panel-plugin/page.cpp:334
msgid "Unable to add launcher to desktop."
msgstr "عاجز عن إضافة المطلقة إلى سطح المكتب."
#: ../panel-plugin/page.cpp:411 ../panel-plugin/page.cpp:420
#: ../panel-plugin/page.cpp:373 ../panel-plugin/page.cpp:382
msgid "Unable to add launcher to panel."
msgstr "عاجز عن إضافة المطلقة إلى الشريط."
#: ../panel-plugin/page.cpp:449
#: ../panel-plugin/page.cpp:411
msgid "Unable to edit launcher."
msgstr ""
......@@ -398,11 +399,11 @@ msgstr "قفل الشاشة"
msgid "_OK"
msgstr "_موافق"
#: ../panel-plugin/configuration-dialog.cpp:864
#: ../panel-plugin/configuration-dialog.cpp:869
msgid "_Pattern:"
msgstr ""
#: ../panel-plugin/configuration-dialog.cpp:888
#: ../panel-plugin/configuration-dialog.cpp:893
msgid "_Regular expression"
msgstr ""
......@@ -410,6 +411,6 @@ msgstr ""
msgid "_Title:"
msgstr "عن_وان:"
#: ../panel-plugin/plugin.cpp:450
#: ../panel-plugin/plugin.cpp:407
msgid "translator-credits"
msgstr ""
......@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Whisker Menu\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-04-07 08:16-0400\n"
"POT-Creation-Date: 2018-05-21 07:22-0400\n"
"PO-Revision-Date: 2016-09-20 23:37+0000\n"
"Last-Translator: enolp <enolp@softastur.org>\n"
"Language-Team: Asturian (http://www.transifex.com/gottcode/xfce4-whiskermenu-"
......@@ -21,19 +21,19 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../panel-plugin/configuration-dialog.cpp:818
#: ../panel-plugin/configuration-dialog.cpp:823
msgid "Add action"
msgstr "Amestar aición"
#: ../panel-plugin/page.cpp:257
#: ../panel-plugin/page.cpp:258
msgid "Add to Desktop"
msgstr "Amestar al escritoriu"
#: ../panel-plugin/page.cpp:241
#: ../panel-plugin/page.cpp:242
msgid "Add to Favorites"
msgstr "Amestar a favoritos"
#: ../panel-plugin/page.cpp:261
#: ../panel-plugin/page.cpp:262
msgid "Add to Panel"
msgstr "Amestar al panel"
......@@ -45,15 +45,15 @@ msgstr "Too"
msgid "All _Settings"
msgstr "Tolos axuste_s"
#: ../panel-plugin/plugin.cpp:445
#: ../panel-plugin/plugin.cpp:402
msgid "Alternate application launcher for Xfce"
msgstr "Llanzador d'aplicaciones alternativu pa Xfce"
#: ../panel-plugin/configuration-dialog.cpp:719
#: ../panel-plugin/configuration-dialog.cpp:724
msgid "Amount of _items:"
msgstr "Cantidá d'_elementos:"
#: ../panel-plugin/plugin.cpp:258
#: ../panel-plugin/plugin.cpp:207
msgid "Applications"
msgstr "Aplicaciones"
......@@ -65,7 +65,7 @@ msgstr "_Opacidá del fondu:"
msgid "Browse the file system to choose a custom command."
msgstr "Restolar pel sistema de ficheros o esbillar un comandu personalizáu."
#: ../panel-plugin/configuration-dialog.cpp:876
#: ../panel-plugin/configuration-dialog.cpp:881
msgid "C_ommand:"
msgstr "C_omandu:"
......@@ -77,11 +77,11 @@ msgstr "Tamañ_u d'iconu d'estaya:"
msgid "Clear Recently Used"
msgstr "Llimpiar Usáo apocayá"
#: ../panel-plugin/plugin.cpp:446
#: ../panel-plugin/plugin.cpp:403
msgid "Copyright © 2013-2018 Graeme Gott"
msgstr "Copyright © 2013-2018 Graeme Gott"
#: ../panel-plugin/configuration-dialog.cpp:846
#: ../panel-plugin/configuration-dialog.cpp:851
msgid "Details"
msgstr "Detalles"
......@@ -89,11 +89,11 @@ msgstr "Detalles"
msgid "Di_splay:"
msgstr "Pa_ntalla:"
#: ../panel-plugin/configuration-dialog.cpp:736
#: ../panel-plugin/configuration-dialog.cpp:741
msgid "Display by _default"
msgstr "Amosar por _defeutu"
#: ../panel-plugin/page.cpp:268
#: ../panel-plugin/page.cpp:269
#, fuzzy
msgid "Edit Application..."
msgstr "_Editar aplicaciones"
......@@ -132,7 +132,7 @@ msgstr "Fallu al abrir l'alministrador d'axustes."
msgid "Failed to switch users."
msgstr "Fallu al cambear d'usuarios."
#: ../panel-plugin/window.cpp:162
#: ../panel-plugin/window.cpp:150
msgid "Favorites"
msgstr "Favoritos"
......@@ -144,8 +144,9 @@ msgstr "Iconu"
msgid "Icon and title"
msgstr "Iconu y títulu"
#: ../panel-plugin/configuration-dialog.cpp:730
msgid "Ignore _favorites"
#: ../panel-plugin/configuration-dialog.cpp:735
#, fuzzy
msgid "Include _favorites"
msgstr "Inorar _favoritos"
#: ../panel-plugin/configuration-dialog.cpp:623
......@@ -169,15 +170,15 @@ msgid "Man Pages"
msgstr "Páxines man"
#: ../panel-plugin/configuration-dialog.cpp:587
#: ../panel-plugin/configuration-dialog.cpp:679
#: ../panel-plugin/configuration-dialog.cpp:684
msgid "Menu"
msgstr "Menú"
#: ../panel-plugin/configuration-dialog.cpp:851
#: ../panel-plugin/configuration-dialog.cpp:856
msgid "Nam_e:"
msgstr "Nom_e:"
#: ../panel-plugin/configuration-dialog.cpp:796
#: ../panel-plugin/configuration-dialog.cpp:801
msgid "Name"
msgstr "Nome"
......@@ -197,27 +198,27 @@ msgstr "Abrir URI"
msgid "Panel Button"
msgstr "Botón del panel"
#: ../panel-plugin/configuration-dialog.cpp:801
#: ../panel-plugin/configuration-dialog.cpp:806
msgid "Pattern"
msgstr "Patrón"
#: ../panel-plugin/configuration-dialog.cpp:690
#: ../panel-plugin/configuration-dialog.cpp:695
msgid "Position _search entry next to panel button"
msgstr "Allugar el cuadru de _gueta co'l botón del panel"
#: ../panel-plugin/configuration-dialog.cpp:703
#: ../panel-plugin/configuration-dialog.cpp:708
msgid "Position cate_gories next to panel button"
msgstr ""
#: ../panel-plugin/configuration-dialog.cpp:696
#: ../panel-plugin/configuration-dialog.cpp:701
msgid "Position commands next to search _entry"
msgstr "Allugar los comandos co la caxa de gueta"
#: ../panel-plugin/configuration-dialog.cpp:714 ../panel-plugin/window.cpp:168
#: ../panel-plugin/configuration-dialog.cpp:719 ../panel-plugin/window.cpp:156
msgid "Recently Used"
msgstr "Usáu apocayá"
#: ../panel-plugin/page.cpp:249
#: ../panel-plugin/page.cpp:250
msgid "Remove From Favorites"
msgstr "Desaniciar de favoritos"
......@@ -226,7 +227,7 @@ msgstr "Desaniciar de favoritos"
msgid "Remove action \"%s\"?"
msgstr "¿Desaniciar aición \"%s\"?"
#: ../panel-plugin/configuration-dialog.cpp:827
#: ../panel-plugin/configuration-dialog.cpp:832
msgid "Remove selected action"
msgstr "Desaniciar aición esbillada"
......@@ -299,7 +300,7 @@ msgstr "Ordenar alfabéticamente Z-A"
msgid "Switch _Users"
msgstr "Cambear _usuarios"
#: ../panel-plugin/configuration-dialog.cpp:684
#: ../panel-plugin/configuration-dialog.cpp:689
msgid "Switch categories by _hovering"
msgstr "Camudar ente estayes _apuntando col mur"
......@@ -311,15 +312,15 @@ msgstr "L'aición desanciaráse dafechu."
msgid "Title"
msgstr "Títulu"
#: ../panel-plugin/page.cpp:372
#: ../panel-plugin/page.cpp:334
msgid "Unable to add launcher to desktop."
msgstr "Nun pue amestase'l llanzador al escritoriu."
#: ../panel-plugin/page.cpp:411 ../panel-plugin/page.cpp:420
#: ../panel-plugin/page.cpp:373 ../panel-plugin/page.cpp:382
msgid "Unable to add launcher to panel."
msgstr "Nun pue amestase'l llanzador al panel."
#: ../panel-plugin/page.cpp:449
#: ../panel-plugin/page.cpp:411
#, fuzzy
msgid "Unable to edit launcher."
msgstr "Nun pue amestase'l llanzador al panel."
......@@ -400,11 +401,11 @@ msgstr "_Bloquiar pantalla"
msgid "_OK"
msgstr "_Aceutar"
#: ../panel-plugin/configuration-dialog.cpp:864
#: ../panel-plugin/configuration-dialog.cpp:869
msgid "_Pattern:"
msgstr "_Patrón:"
#: ../panel-plugin/configuration-dialog.cpp:888
#: ../panel-plugin/configuration-dialog.cpp:893
msgid "_Regular expression"
msgstr "Espresión _regular"
......@@ -412,6 +413,6 @@ msgstr "Espresión _regular"
msgid "_Title:"
msgstr "_Títulu:"
#: ../panel-plugin/plugin.cpp:450
#: ../panel-plugin/plugin.cpp:407
msgid "translator-credits"
msgstr "Softastur <alministradores@softastur.org>"
# Belarusian translation of xfce4-whiskermenu-plugin.
# Copyright (C) 2018 Graeme Gott
# This file is distributed under the same license as the xfce4-whiskermenu-plugin package.
#
# Translators:
# Zmicer Turok <zmicerturok@gmail.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Whisker Menu\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-21 07:22-0400\n"
"PO-Revision-Date: 2018-05-21 10:04+0000\n"
"Last-Translator: Zmicer Turok <zmicerturok@gmail.com>\n"
"Language-Team: Belarusian (http://www.transifex.com/gottcode/xfce4-"
"whiskermenu-plugin/language/be/)\n"
"Language: be\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
"%100>=11 && n%100<=14)? 2 : 3);\n"
#: ../panel-plugin/configuration-dialog.cpp:823
msgid "Add action"
msgstr "Дадаць дзеянне"
#: ../panel-plugin/page.cpp:258
msgid "Add to Desktop"
msgstr "Дадаць на працоўны стол"
#: ../panel-plugin/page.cpp:242
msgid "Add to Favorites"
msgstr "Дадаць ва ўпадабанае"
#: ../panel-plugin/page.cpp:262
msgid "Add to Panel"
msgstr "Дадаць на панэль"
#: ../panel-plugin/category.cpp:61
msgid "All"
msgstr "Усе"
#: ../panel-plugin/settings.cpp:119
msgid "All _Settings"
msgstr "Усе _налады"
#: ../panel-plugin/plugin.cpp:402
msgid "Alternate application launcher for Xfce"
msgstr "Альтэрнатыўнае меню запуску праграм для Xfce"
#: ../panel-plugin/configuration-dialog.cpp:724
msgid "Amount of _items:"
msgstr "Колькасць _элементаў:"
#: ../panel-plugin/plugin.cpp:207
msgid "Applications"
msgstr "Праграмы"
#: ../panel-plugin/configuration-dialog.cpp:654
msgid "Background opacit_y:"
msgstr "Празрыстасць фону"
#: ../panel-plugin/command-edit.cpp:49
msgid "Browse the file system to choose a custom command."
msgstr "Аглядзець файлавую сістэму для выбару адвольнага загаду."
#: ../panel-plugin/configuration-dialog.cpp:881
msgid "C_ommand:"
msgstr "За_гад:"
#: ../panel-plugin/configuration-dialog.cpp:639
msgid "Categ_ory icon size:"
msgstr "Памер значка _катэгорыі:"
#: ../panel-plugin/recent-page.cpp:173
msgid "Clear Recently Used"
msgstr "Ачысціць гісторыю"
#: ../panel-plugin/plugin.cpp:403
msgid "Copyright © 2013-2018 Graeme Gott"
msgstr "Copyright © 2013-2018 Graeme Gott"
#: ../panel-plugin/configuration-dialog.cpp:851
msgid "Details"
msgstr "Падрабязнасці"
#: ../panel-plugin/configuration-dialog.cpp:534
msgid "Di_splay:"
msgstr "Ад_люстроўваць:"
#: ../panel-plugin/configuration-dialog.cpp:741
msgid "Display by _default"
msgstr "Прадвызначана _адлюстроўваць"
#: ../panel-plugin/page.cpp:269
msgid "Edit Application..."
msgstr "Рэдагаваць праграму..."
#: ../panel-plugin/settings.cpp:124
msgid "Edit _Profile"
msgstr "Рэдагаваць _профіль"
#: ../panel-plugin/settings.cpp:124
msgid "Failed to edit profile."
msgstr "Адрэдагаваць профіль не атрымалася."
#: ../panel-plugin/launcher.cpp:288 ../panel-plugin/launcher.cpp:362
#: ../panel-plugin/run-action.cpp:41 ../panel-plugin/search-action.cpp:188
#, c-format
msgid "Failed to execute command \"%s\"."
msgstr "Не атрымалася запусціць загад \"%s\"."
#: ../panel-plugin/settings.cpp:123
msgid "Failed to launch menu editor."
msgstr "Не атрымалася запусціць рэдактар меню."
#: ../panel-plugin/settings.cpp:120
msgid "Failed to lock screen."
msgstr "Не атрымалася заблакаваць экран."
#: ../panel-plugin/settings.cpp:122
msgid "Failed to log out."
msgstr "Не атрымалася выйсці."
#: ../panel-plugin/settings.cpp:119
msgid "Failed to open settings manager."
msgstr "Не атрымалася адкрыць кіраўніка налад."
#: ../panel-plugin/settings.cpp:121
msgid "Failed to switch users."
msgstr "Не атрымалася змяніць карыстальніка."
#: ../panel-plugin/window.cpp:150
msgid "Favorites"
msgstr "Упадабанае"
#: ../panel-plugin/configuration-dialog.cpp:539
msgid "Icon"
msgstr "Значок"
#: ../panel-plugin/configuration-dialog.cpp:541
msgid "Icon and title"
msgstr "Значок і загаловак"
#: ../panel-plugin/configuration-dialog.cpp:735
msgid "Include _favorites"
msgstr "Уключаць _упадабанае"
#: ../panel-plugin/configuration-dialog.cpp:623
msgid "Ite_m icon size:"
msgstr "Па_мер значка элемента:"
#: ../panel-plugin/icon-size.cpp:54
msgid "Large"
msgstr "Буйны"
#: ../panel-plugin/icon-size.cpp:55
msgid "Larger"
msgstr "Вялікі"
#: ../panel-plugin/settings.cpp:122
msgid "Log _Out"
msgstr "Выйсці"
#: ../panel-plugin/settings.cpp:126
msgid "Man Pages"
msgstr "Старонкі man"
#: ../panel-plugin/configuration-dialog.cpp:587
#: ../panel-plugin/configuration-dialog.cpp:684
msgid "Menu"
msgstr "Меню"
#: ../panel-plugin/configuration-dialog.cpp:856
msgid "Nam_e:"
msgstr "Наз_ва:"
#: ../panel-plugin/configuration-dialog.cpp:801
msgid "Name"
msgstr "Назва"
#: ../panel-plugin/icon-size.cpp:49
msgid "None"
msgstr "Няма"
#: ../panel-plugin/icon-size.cpp:53
msgid "Normal"
msgstr "Звычайны"
#: ../panel-plugin/settings.cpp:130
msgid "Open URI"
msgstr "Адкрыць URI"
#: ../panel-plugin/configuration-dialog.cpp:529
msgid "Panel Button"
msgstr "Кнопка на панэлі"
#: ../panel-plugin/configuration-dialog.cpp:806
msgid "Pattern"
msgstr "Шаблон"
#: ../panel-plugin/configuration-dialog.cpp:695
msgid "Position _search entry next to panel button"
msgstr "Радок по_шуку каля панэлі"
#: ../panel-plugin/configuration-dialog.cpp:708
msgid "Position cate_gories next to panel button"
msgstr "Катэгорыя пасля кнопак панэлі"
#: ../panel-plugin/configuration-dialog.cpp:701
msgid "Position commands next to search _entry"
msgstr "Кнопкі загадаў побач з радком пошуку"
#: ../panel-plugin/configuration-dialog.cpp:719 ../panel-plugin/window.cpp:156
msgid "Recently Used"
msgstr "Нядаўнія"
#: ../panel-plugin/page.cpp:250
msgid "Remove From Favorites"
msgstr "Выдаліць з упадабанага"
#: ../panel-plugin/configuration-dialog.cpp:433
#, c-format
msgid "Remove action \"%s\"?"
msgstr "Выдаліць дзеянне \"%s\"?"
#: ../panel-plugin/configuration-dialog.cpp:832
msgid "Remove selected action"
msgstr "Выдаліць абранае дзеянне"
#: ../panel-plugin/run-action.cpp:71
#, c-format
msgid "Run %s"
msgstr "Запусціць %s"
#: ../panel-plugin/settings.cpp:129
msgid "Run in Terminal"
msgstr "Запусціць у тэрмінале"
#: ../panel-plugin/configuration-dialog.cpp:86
msgid "Search Actio_ns"
msgstr "Дзея_нні пошуку"
#: ../panel-plugin/search-action.cpp:259
msgid "Search Action"
msgstr "Дзеянне пошуку"
#: ../panel-plugin/configuration-dialog.cpp:119
msgid "Select An Icon"
msgstr "Абраць значок"
#: ../panel-plugin/command-edit.cpp:64
msgid "Select Command"
msgstr "Абраць загад"
#: ../panel-plugin/whiskermenu.desktop.in.h:2
msgid "Show a menu to easily access installed applications"
msgstr "Адлюстроўвае меню для зручнага доступу да ўсталяваных праграм"
#: ../panel-plugin/configuration-dialog.cpp:605
msgid "Show application _descriptions"
msgstr "Адлюстроўваць апісанне праграм"
#: ../panel-plugin/configuration-dialog.cpp:611
msgid "Show application too_ltips"
msgstr "Адлюстроўваць выплыўныя апавяшчэнні для прагам"
#: ../panel-plugin/configuration-dialog.cpp:598
msgid "Show cate_gory names"
msgstr "Адлюстроўваць назвы катэ_горый"
#: ../panel-plugin/configuration-dialog.cpp:592
msgid "Show generic application _names"
msgstr "Адлюстроўваць агульныя назвы _прагам"
#: ../panel-plugin/configuration-dialog.cpp:617
msgid "Show menu hie_rarchy"
msgstr "Адлюстроўваць іерархію меню"
#: ../panel-plugin/icon-size.cpp:52
msgid "Small"
msgstr "Маленькі"
#: ../panel-plugin/icon-size.cpp:51
msgid "Smaller"
msgstr "Вельмі маленькі"
#: ../panel-plugin/favorites-page.cpp:147
msgid "Sort Alphabetically A-Z"
msgstr "Упарадкаванне па алфавіце А-Я"
#: ../panel-plugin/favorites-page.cpp:153
msgid "Sort Alphabetically Z-A"
msgstr "Упарадкаванне па алфавіце Я-А"
#: ../panel-plugin/settings.cpp:121
msgid "Switch _Users"
msgstr "Змяніць _карыстальніка"
#: ../panel-plugin/configuration-dialog.cpp:689
msgid "Switch categories by _hovering"
msgstr "Пераключаць катэгорыі пры навядзенні курсора мышы"
#: ../panel-plugin/configuration-dialog.cpp:432
msgid "The action will be deleted permanently."
msgstr "Дзеянне будзе назаўсёды выдалена."
#: ../panel-plugin/configuration-dialog.cpp:540
msgid "Title"
msgstr "Загаловак"
#: ../panel-plugin/page.cpp:334
msgid "Unable to add launcher to desktop."
msgstr "Немагчыма дадаць запускальнік на працоўны стол."
#: ../panel-plugin/page.cpp:373 ../panel-plugin/page.cpp:382
msgid "Unable to add launcher to panel."
msgstr "Немагчыма дадаць запускальнік на панэль."
#: ../panel-plugin/page.cpp:411
msgid "Unable to edit launcher."
msgstr "Немагчыма змяніць запускальнік."
#: ../panel-plugin/configuration-dialog.cpp:493
#, c-format
msgid "Unable to open the following url: %s"
msgstr "Немагчыма адкрыць спасылку: %s"
#: ../panel-plugin/configuration-dialog.cpp:574
msgid "Use a single _panel row"
msgstr "Выкарыстоўваць адзін _радок на панэлі:"
#: ../panel-plugin/icon-size.cpp:56
msgid "Very Large"
msgstr "Вельмі вялікі"
#: ../panel-plugin/icon-size.cpp:50
msgid "Very Small"
msgstr "Вельмі малы"
#: ../panel-plugin/settings.cpp:127
msgid "Web Search"
msgstr "Пошук у сеціве"
#: ../panel-plugin/configuration-dialog.cpp:70
#: ../panel-plugin/whiskermenu.desktop.in.h:1
msgid "Whisker Menu"
msgstr "Меню Whisker"
#: ../panel-plugin/settings.cpp:128
msgid "Wikipedia"
msgstr "Вікіпедыя"
#: ../panel-plugin/configuration-dialog.cpp:83
msgid "_Appearance"
msgstr "_Выгляд"
#: ../panel-plugin/configuration-dialog.cpp:84
msgid "_Behavior"
msgstr "_Паводзіны"
#: ../panel-plugin/command-edit.cpp:67
#: ../panel-plugin/configuration-dialog.cpp:121
msgid "_Cancel"
msgstr "_Скасаваць"
#: ../panel-plugin/configuration-dialog.cpp:74
msgid "_Close"
msgstr "_Закрыць"
#: ../panel-plugin/configuration-dialog.cpp:85
msgid "_Commands"
msgstr "_Загады"
#: ../panel-plugin/configuration-dialog.cpp:431
msgid "_Delete"
msgstr "_Выдаліць"
#: ../panel-plugin/settings.cpp:123
msgid "_Edit Applications"
msgstr "_Рэдагаваць праграмы"
#: ../panel-plugin/configuration-dialog.cpp:73
msgid "_Help"
msgstr "_Даведка"
#: ../panel-plugin/configuration-dialog.cpp:560
msgid "_Icon:"
msgstr "_Значок"
#: ../panel-plugin/settings.cpp:120
msgid "_Lock Screen"
msgstr "_Заблакаваць экран"
#: ../panel-plugin/command-edit.cpp:68
#: ../panel-plugin/configuration-dialog.cpp:122
msgid "_OK"
msgstr "_Добра"
#: ../panel-plugin/configuration-dialog.cpp:869
msgid "_Pattern:"
msgstr "_Шаблон:"
#: ../panel-plugin/configuration-dialog.cpp:893
msgid "_Regular expression"
msgstr "_Рэгулярны выраз"
#: ../panel-plugin/configuration-dialog.cpp:549
msgid "_Title:"
msgstr "_Загаловак:"
#: ../panel-plugin/plugin.cpp:407
msgid "translator-credits"
msgstr "Zmicer Turok <zmicerturok@gmail.com>"