diff -Nru ukui-panel-1.1.2/applets/wncklet/org.ukui.panel.applet.workspace-switcher.gschema.xml.in ukui-panel-1.1.3/applets/wncklet/org.ukui.panel.applet.workspace-switcher.gschema.xml.in --- ukui-panel-1.1.2/applets/wncklet/org.ukui.panel.applet.workspace-switcher.gschema.xml.in 2017-12-14 07:17:37.000000000 +0000 +++ ukui-panel-1.1.3/applets/wncklet/org.ukui.panel.applet.workspace-switcher.gschema.xml.in 2018-03-19 03:33:15.000000000 +0000 @@ -11,7 +11,7 @@ If true, the workspace switcher will show all workspaces. Otherwise it will only show the current workspace. - 1 + 2 Rows in workspace switcher This key specifies how many rows (for horizontal layout) or columns (for vertical layout) the workspace switcher shows the workspaces in. This key is only relevant if the display_all_workspaces key is true. diff -Nru ukui-panel-1.1.2/applets/wncklet/window-list.c ukui-panel-1.1.3/applets/wncklet/window-list.c --- ukui-panel-1.1.2/applets/wncklet/window-list.c 2018-01-29 08:38:36.000000000 +0000 +++ ukui-panel-1.1.3/applets/wncklet/window-list.c 2018-04-02 00:51:57.000000000 +0000 @@ -5,6 +5,8 @@ * (C) 2001 Alexander Larsson * * Authors: Alexander Larsson + * Modified by: + * quankang * */ @@ -159,7 +161,7 @@ { "TasklistSystemMonitor", "utilities-system-monitor", - N_("_System Monitor"), + N_("_Monitor"), NULL, NULL, G_CALLBACK(call_system_monitor) @@ -372,14 +374,55 @@ return retval; } -gboolean window_list_applet_fill(UkuiPanelApplet* applet) +static void +window_list_applet_size_change_notify (GSettings *settings, + gchar *key, + UkuiPanelApplet *applet) { + int panel_size = g_settings_get_int (settings, "size"); + switch (panel_size) + { + case 40: + wnck_set_default_mini_icon_size (16); + break; + case 60: + wnck_set_default_mini_icon_size (32); + break; + case 80: + wnck_set_default_mini_icon_size (48); + break; + } +} + +gboolean window_list_applet_fill(UkuiPanelApplet* applet) +{ + GSettings *panel_settings = g_settings_new_with_path("org.ukui.panel.toplevel", "/org/ukui/panel/toplevels/bottom/"); + g_signal_connect (panel_settings, + "changed", + G_CALLBACK (window_list_applet_size_change_notify), + applet); + + int panel_size = g_settings_get_int (panel_settings, "size"); + switch (panel_size) + { + case 40: + wnck_set_default_mini_icon_size (16); + break; + case 60: + wnck_set_default_mini_icon_size (32); + break; + case 80: + wnck_set_default_mini_icon_size (48); + break; + } + + TasklistData* tasklist; GtkActionGroup* action_group; gchar* ui_path; #if GTK_CHECK_VERSION (3, 20, 0) GtkCssProvider *provider; - GdkScreen *screen; + GdkScreen *screen,*screen1; #endif tasklist = g_new0(TasklistData, 1); @@ -492,6 +535,13 @@ g_object_unref(action_group); + GtkStyleProvider *provider1 = NULL; + provider1 = gtk_css_provider_new (); + screen1 = gdk_screen_get_default (); + gtk_style_context_add_provider_for_screen (screen1, GTK_STYLE_PROVIDER (provider1), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + gtk_css_provider_load_from_file(provider1, g_file_new_for_path("/usr/share/ukui-panel/style/ukui-panel.css"), NULL); +// gtk_widget_set_name (GTK_WIDGET(tasklist->applet),"PanelApplet"); + gtk_widget_show(tasklist->applet); return TRUE; diff -Nru ukui-panel-1.1.2/applets/wncklet/window-list-menu.xml ukui-panel-1.1.3/applets/wncklet/window-list-menu.xml --- ukui-panel-1.1.2/applets/wncklet/window-list-menu.xml 2017-12-08 09:23:57.000000000 +0000 +++ ukui-panel-1.1.3/applets/wncklet/window-list-menu.xml 2018-03-30 03:38:46.000000000 +0000 @@ -1,6 +1,6 @@ - - + diff -Nru ukui-panel-1.1.2/applets/wncklet/workspace-switcher.c ukui-panel-1.1.3/applets/wncklet/workspace-switcher.c --- ukui-panel-1.1.2/applets/wncklet/workspace-switcher.c 2017-12-14 07:17:37.000000000 +0000 +++ ukui-panel-1.1.3/applets/wncklet/workspace-switcher.c 2018-03-19 03:33:15.000000000 +0000 @@ -450,6 +450,18 @@ pager); } +static void +panel_properties_dialog_toplevel_notify (GSettings *settings, + gchar *key, + PagerData *pager) +{ + gboolean hide_workspace = g_settings_get_boolean(settings, "hide-workspace"); + if (hide_workspace){ + gtk_widget_hide (pager->applet); + } else{ + gtk_widget_show (pager->applet); + } +} gboolean workspace_switcher_applet_fill(UkuiPanelApplet* applet) { @@ -551,9 +563,25 @@ action = gtk_action_group_get_action(action_group, "PagerPreferences"); gtk_action_set_visible(action, FALSE); } - g_object_unref(action_group); + char *path; + GSettings *settings; + path = g_strdup_printf ("%s/","/org/ukui/panel/toplevels/bottom"); + settings = g_settings_new_with_path ("org.ukui.panel.toplevel",path); + + gboolean hide_workspace = g_settings_get_boolean(settings, "hide-workspace"); + if (hide_workspace){ + gtk_widget_hide (pager->applet); + } else{ + gtk_widget_show (pager->applet); + } + + g_signal_connect (settings, + "changed", + G_CALLBACK (panel_properties_dialog_toplevel_notify), + pager); + return TRUE; } diff -Nru ukui-panel-1.1.2/data/org.ukui.panel.toplevel.gschema.xml.in ukui-panel-1.1.3/data/org.ukui.panel.toplevel.gschema.xml.in --- ukui-panel-1.1.2/data/org.ukui.panel.toplevel.gschema.xml.in 2017-12-14 07:17:37.000000000 +0000 +++ ukui-panel-1.1.3/data/org.ukui.panel.toplevel.gschema.xml.in 2018-04-02 03:45:19.000000000 +0000 @@ -10,6 +10,16 @@ X screen where the panel is displayed With a multi-screen setup, you may have panels on each individual screen. This key identifies the current screen the panel is displayed on. + + 0 + Show blank starting position + Windows-list get blank starting position + + + 0 + Number of new inserted launcher applets + Number of new inserted launcher applets + 0 Xinerama monitor where the panel is displayed @@ -60,6 +70,21 @@ Center panel on y-axis If true, the y and y_bottom keys are ignored and the panel is placed at the center of the y-axis of the screen. If the panel is resized it will remain at that position - i.e. the panel will grow on both sides. If false, the y and y_bottom keys specify the location of the panel. + + true + Taskbar background transparent + If true, the panel is transparent. + + + true + Lock the taskbar + If true, the panel is automatically locked. + + + true + Hide workspace + If true, the workspace is hidden. + false Automatically hide panel into corner diff -Nru ukui-panel-1.1.2/data/ukui.layout ukui-panel-1.1.3/data/ukui.layout --- ukui-panel-1.1.2/data/ukui.layout 2017-12-14 07:17:37.000000000 +0000 +++ ukui-panel-1.1.3/data/ukui.layout 2018-03-19 03:33:15.000000000 +0000 @@ -15,20 +15,28 @@ launcher-location=peony-browser.desktop toplevel-id=bottom position=51 -locked=true +locked=false [Object browser] object-type=launcher launcher-location=firefox.desktop position=52 toplevel-id=bottom -locked=true +locked=false [Object window-list] object-type=applet applet-iid=WnckletFactory::WindowListApplet toplevel-id=bottom -position=56 +position=70 +locked=true + +[Object workspace-switcher] +object-type=applet +applet-iid=WnckletFactory::WorkspaceSwitcherApplet +toplevel-id=bottom +position=11 +panel-right-stick=true locked=true [Object indicators] diff -Nru ukui-panel-1.1.2/debian/changelog ukui-panel-1.1.3/debian/changelog --- ukui-panel-1.1.2/debian/changelog 2018-01-29 08:29:23.000000000 +0000 +++ ukui-panel-1.1.3/debian/changelog 2018-04-01 07:54:53.000000000 +0000 @@ -1,3 +1,19 @@ +ukui-panel (1.1.3-0ubuntu1) bionic; urgency=medium + + * Fix the errors when click "Customize icons appear on the taskbar". + (LP: #1755663) + * Adjust the size of a new panel and other added icons. (LP: #1755690) + * Fix the errors when check the "Lock the launcher". (LP: #1755684) + * Get color value from ukui-blue theme and change the taskbar + background settings. + * Fix the error 'missing action Remove' + * Fix the error 'g_signal_handlers_block_matched' + * Fix the wrong icon size of window-list after resize panel. + * Fix the segment error when set the hide/show in settings. + * Remove some useless settings. + + -- handsome_feng Sun, 01 Apr 2018 15:54:53 +0800 + ukui-panel (1.1.2-0ubuntu1) bionic; urgency=medium * Initial release. (LP: #1738976) diff -Nru ukui-panel-1.1.2/debian/control ukui-panel-1.1.3/debian/control --- ukui-panel-1.1.2/debian/control 2018-01-29 08:29:23.000000000 +0000 +++ ukui-panel-1.1.3/debian/control 2018-04-01 07:54:53.000000000 +0000 @@ -35,6 +35,8 @@ yelp-tools, Standards-Version: 4.1.3 Homepage: http://www.ukui.org/ +Vcs-Git: https://github.com/ukui/ukui-panel.git +Vcs-Browser: https://github.com/ukui/ukui-panel Package: ukui-panel Architecture: any diff -Nru ukui-panel-1.1.2/debian/copyright ukui-panel-1.1.3/debian/copyright --- ukui-panel-1.1.2/debian/copyright 2018-01-29 08:29:23.000000000 +0000 +++ ukui-panel-1.1.3/debian/copyright 2018-04-01 07:54:53.000000000 +0000 @@ -1,4 +1,4 @@ -Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: ukui-panel Upstream-Contact: quankang Source: https://github.com/ukui/ukui-panel @@ -262,7 +262,8 @@ Files: applets/wncklet/window-list.c applets/wncklet/workspace-switcher.c Copyright: 2001, Alexander Larsson - 2001, Red Hat, Inc. + 2001, Red Hat, Inc. + 2017, Tianjin KYLIN Information Technology Co., Ltd. License: GPL-2+ Comment: Assuming license as found in COPYING file. @@ -515,6 +516,7 @@ ukui-panel/button-widget.h ukui-panel/drawer.h ukui-panel/ukui-desktop-item-edit.c + ukui-panel/ukui-panel.css ukui-panel/panel-marshal.list ukui-panel/panel-icon-names.h ukui-panel/panel-schemas.h diff -Nru ukui-panel-1.1.2/debian/rules ukui-panel-1.1.3/debian/rules --- ukui-panel-1.1.2/debian/rules 2018-01-29 08:29:23.000000000 +0000 +++ ukui-panel-1.1.3/debian/rules 2018-04-01 07:54:53.000000000 +0000 @@ -1,13 +1,11 @@ #!/usr/bin/make -f -DHFLAGS=--parallel - export DEB_BUILD_MAINT_OPTIONS = hardening=+all DPKG_EXPORT_BUILDFLAGS = 1 include /usr/share/dpkg/buildflags.mk %: - dh $@ $(DHFLAGS) --with gir --without autoreconf + dh $@ --with gir --without autoreconf override_dh_missing: dh_missing --fail-missing @@ -22,13 +20,10 @@ override_dh_auto_configure: # upstream tarball is without configure. autogen.sh will create it NOCONFIGURE=1 ./autogen.sh - dh_auto_configure $(DHFLAGS) -- \ + dh_auto_configure -- \ --disable-silent-rules \ --localstatedir=/var \ --libexecdir=/usr/lib/ukui-panel \ --disable-static \ --enable-introspection \ --enable-gtk-doc - -get-orig-source: - uscan --noconf --force-download --rename --download-current-version --destdir=.. diff -Nru ukui-panel-1.1.2/libukui-panel-applet/ukui-panel-applet.c ukui-panel-1.1.3/libukui-panel-applet/ukui-panel-applet.c --- ukui-panel-1.1.2/libukui-panel-applet/ukui-panel-applet.c 2017-12-14 07:17:37.000000000 +0000 +++ ukui-panel-1.1.3/libukui-panel-applet/ukui-panel-applet.c 2018-03-30 03:38:46.000000000 +0000 @@ -132,10 +132,10 @@ " \n" " \n" " \n" - " \n" - " \n" +// " \n" +// " \n" " \n" - " \n" +// " \n" " \n" "\n"; @@ -596,6 +596,7 @@ g_object_set (ukui_panel_applet_menu_get_action (applet, "Lock"), "visible", !locked_down, NULL); +/* g_object_set (ukui_panel_applet_menu_get_action (applet, "Move"), "sensitive", !locked, "visible", !locked_down, @@ -604,6 +605,7 @@ "sensitive", !locked, "visible", !locked_down, NULL); +*/ } static void @@ -868,7 +870,9 @@ guint button, guint32 time) { - GtkWidget *menu; + GtkWidget *menu; + int menu_x = 0; + int menu_y = 0; menu = gtk_ui_manager_get_widget (applet->priv->ui_manager, "/UkuiPanelAppletPopup"); @@ -884,11 +888,17 @@ context = gtk_widget_get_style_context (GTK_WIDGET(toplevel)); gtk_style_context_add_class(context,"gnome-panel-menu-bar"); gtk_style_context_add_class(context,"ukui-panel-menu-bar"); - gtk_menu_popup (GTK_MENU (menu), - NULL, NULL, - (GtkMenuPositionFunc) ukui_panel_applet_position_menu, - applet, - button, time); + + gdk_window_get_origin (gtk_widget_get_window (applet), + &menu_x, &menu_y); + + if (menu_x == 0){ + gtk_menu_popup (GTK_MENU (menu), + NULL, NULL, + (GtkMenuPositionFunc) ukui_panel_applet_position_menu, + applet, + button, time); + } } static gboolean @@ -1841,15 +1851,16 @@ applet->priv->panel_action_group = gtk_action_group_new ("PanelActions"); gtk_action_group_set_translation_domain (applet->priv->panel_action_group, GETTEXT_PACKAGE); +/* gtk_action_group_add_actions (applet->priv->panel_action_group, menu_entries, G_N_ELEMENTS (menu_entries), applet); +*/ gtk_action_group_add_toggle_actions (applet->priv->panel_action_group, menu_toggle_entries, G_N_ELEMENTS (menu_toggle_entries), applet); - applet->priv->ui_manager = gtk_ui_manager_new (); gtk_ui_manager_insert_action_group (applet->priv->ui_manager, applet->priv->panel_action_group, 1); diff -Nru ukui-panel-1.1.2/po/zh_CN.po ukui-panel-1.1.3/po/zh_CN.po --- ukui-panel-1.1.2/po/zh_CN.po 2018-01-29 08:38:36.000000000 +0000 +++ ukui-panel-1.1.3/po/zh_CN.po 2018-03-19 03:33:15.000000000 +0000 @@ -948,8 +948,9 @@ msgstr "您的窗口管理器不支持显示桌面按钮,或者您未运行桌面管理器。" #: ../applets/wncklet/window-list.c:171 -msgid "_System Monitor" -msgstr "系统监视器(_S)" +#: ../ukui-panel/panel-context-menu.c:343 +msgid "_Monitor" +msgstr "系统监视器(_M)" #: ../applets/wncklet/window-list.c:557 msgid "" @@ -2211,10 +2212,27 @@ msgid "_Add to Panel..." msgstr "添加到面板(_A)..." +#: ../ukui-panel/panel-context-menu.c:201 +msgid "Reset this panel?" +msgstr "重置当前面板?" + +#: ../ukui-panel/panel-context-menu.c:202 +msgid "When a panel is reset,all \n" + "custom settings are lost." +msgstr "当面板重置时,所有 \n自定义设置丢失。" + #: ../ukui-panel/panel-context-menu.c:206 msgid "_Delete This Panel" msgstr "删除该面板(_D)" +#: ../ukui-panel/panel-context-menu.c:215 +msgid "_Cancel" +msgstr "取消(_C)" + +#: ../ukui-panel/panel-context-menu.c:216 +msgid "_Reset Panel" +msgstr "重置该面板(_R)" + #: ../ukui-panel/panel-context-menu.c:221 msgid "_New Panel" msgstr "新建面板(_N)" @@ -2614,6 +2632,14 @@ msgid "Panel Settings" msgstr "任务栏设置" +#: ../ukui-panel/panel-settings-dialog.ui.h:11 +msgid "Taskbar background transparent" +msgstr "任务栏背景透明" + +#: ../ukui-panel/panel-settings-dialog.ui.h:12 +msgid "Hide workspace" +msgstr "隐藏工作区" + #: ../ukui-panel/panel-recent.c:78 ../ukui-panel/panel-recent.c:88 #, c-format msgid "Could not open recently used document \"%s\"" diff -Nru ukui-panel-1.1.2/ukui-panel/Makefile.am ukui-panel-1.1.3/ukui-panel/Makefile.am --- ukui-panel-1.1.2/ukui-panel/Makefile.am 2017-12-19 03:47:08.000000000 +0000 +++ ukui-panel-1.1.3/ukui-panel/Makefile.am 2018-03-30 03:38:46.000000000 +0000 @@ -236,6 +236,9 @@ desktop_in_files = ukui-panel.desktop.in desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) +styledir = $(datadir)/ukui-panel/style +style_DATA=ukui-panel.css + @INTLTOOL_DESKTOP_RULE@ EXTRA_DIST = \ diff -Nru ukui-panel-1.1.2/ukui-panel/panel-applet-frame.c ukui-panel-1.1.3/ukui-panel/panel-applet-frame.c --- ukui-panel-1.1.2/ukui-panel/panel-applet-frame.c 2017-12-14 07:17:37.000000000 +0000 +++ ukui-panel-1.1.3/ukui-panel/panel-applet-frame.c 2018-04-03 03:07:55.000000000 +0000 @@ -662,9 +662,40 @@ if (frame->priv->has_handle) { gint extra_size = HANDLE_SIZE + 1; gint i; + + GdkScreen* screen; + gint screen_width; + gint screen_height; + screen = gtk_window_get_screen(GTK_WINDOW(frame->priv->panel->toplevel)); + gdk_window_get_geometry (gdk_screen_get_root_window (screen), NULL, NULL, + &screen_width, &screen_height); + + char *path; + int value = 0; + GSettings *settings; + + path = g_strdup_printf ("%s/","/org/ukui/panel/toplevels/bottom"); + settings = g_settings_new_with_path ("org.ukui.panel.toplevel",path); + + if (g_settings_get_int(settings, "position") !=0){ + value=g_settings_get_int(settings, "position"); + } + for (i = 0; i < n_elements; i++) { - for (i = 0; i < n_elements; i++) size_hints[i] += extra_size; + + if (value <= 0){ + value = screen_width - 195 -200; + } + else { + if (size_hints[i] > value && value > 400) { + + value=value-180-g_settings_get_int(settings, "launcher-nums")*40; + size_hints[i] = value; + + } + } + } } /* It takes the ownership of size-hints array */ diff -Nru ukui-panel-1.1.2/ukui-panel/panel.c ukui-panel-1.1.3/ukui-panel/panel.c --- ukui-panel-1.1.2/ukui-panel/panel.c 2017-12-14 07:17:37.000000000 +0000 +++ ukui-panel-1.1.3/ukui-panel/panel.c 2018-03-28 06:16:09.000000000 +0000 @@ -1199,11 +1199,53 @@ NULL); } +GdkColor +get_border_color1 (char *color_name) +{ + GdkColor color; + + GObject *gs = (GObject *)gtk_settings_get_default (); + GValue color_scheme_value = G_VALUE_INIT; + g_value_init (&color_scheme_value, G_TYPE_STRING); + g_object_get_property (gs, "gtk-color-scheme", &color_scheme_value); + gchar *color_scheme = (char *)g_value_get_string (&color_scheme_value); + gchar color_spec[16] = { 0 }; + char *needle = strstr(color_scheme, color_name); + if (needle) { + while (1) { + if (color_spec[0] != '#') { + color_spec[0] = *needle; + needle++; + continue; + } + + if ((*needle >= 0x30 && *needle <= 0x39) || + (*needle >= 0x41 && *needle <= 0x46) || + (*needle >= 0x61 && *needle <= 0x66)) { + color_spec[strlen(color_spec)] = *needle; + needle++; + } else { + break; + } + } + gdk_color_parse (color_spec, &color); + } else { + gdk_color_parse ("#3B9DC5", &color); + } + + return color; +} + PanelData * panel_setup (PanelToplevel *toplevel) { - PanelWidget *panel_widget; - PanelData *pd; + PanelWidget *panel_widget; + PanelData *pd; + char *path; + GSettings *settings; + guint16 opacity; + char *color_str; + g_return_val_if_fail (PANEL_IS_TOPLEVEL (toplevel), NULL); @@ -1247,6 +1289,45 @@ g_signal_connect (toplevel, "destroy", G_CALLBACK (panel_destroy), pd); + GdkColor color; + GtkStyle *style = gtk_rc_get_style(pd->panel); + if (gtk_style_lookup_color (style,"panel_normal_bg_color",&color)){ + color_str=gdk_color_to_string(&color); + } else { + char *color; + GSettings *settings2; + settings2 = g_settings_new("org.mate.interface"); + color = g_settings_get_string(settings2, "gtk-theme"); + + if (!strcmp(color,"ukui-blue")){ + color_str="#15678f"; + }else{ + color_str="#15678f"; + } + } + g_settings_set_string (toplevel->background_settings, "color", color_str); + + + path = g_strdup_printf ("%s/","/org/ukui/panel/toplevels/bottom"); + settings = g_settings_new_with_path ("org.ukui.panel.toplevel",path); + gboolean transparent = g_settings_get_boolean(settings, "transparent"); + + if (transparent){ + PanelBackgroundType background_type = PANEL_BACK_NONE; + background_type = PANEL_BACK_COLOR; + panel_profile_set_background_type (toplevel, background_type); + + opacity = (80.000000 / 100) * 65535; + panel_profile_set_background_opacity (toplevel, opacity); + } else { + PanelBackgroundType background_type = PANEL_BACK_NONE; + background_type = PANEL_BACK_COLOR; + panel_profile_set_background_type (toplevel, background_type); + + opacity = (100.000000 / 100) * 65535; + panel_profile_set_background_opacity (toplevel, opacity); + } + return pd; } diff -Nru ukui-panel-1.1.2/ukui-panel/panel-context-menu.c ukui-panel-1.1.3/ukui-panel/panel-context-menu.c --- ukui-panel-1.1.2/ukui-panel/panel-context-menu.c 2018-01-29 08:40:10.000000000 +0000 +++ ukui-panel-1.1.3/ukui-panel/panel-context-menu.c 2018-03-19 03:33:15.000000000 +0000 @@ -53,6 +53,11 @@ #include "panel-icon-names.h" #include "panel-reset.h" +static const char* system_monitors[] = { + "ukui-system-monitor", + "gnome-system-monitor", +}; + static void panel_context_menu_show_help (GtkWidget *w, gpointer data) @@ -60,7 +65,27 @@ panel_show_help (gtk_widget_get_screen (w), "ukui-user-guide", "gospanel-1", NULL); } +static void +call_system_monitor (GtkWidget *menuitem) +{ + char *programpath; + int i; + for (i = 0; i < G_N_ELEMENTS(system_monitors); i += 1) + { + programpath = g_find_program_in_path(system_monitors[i]); + + if (programpath != NULL) + { + g_free(programpath); + + mate_gdk_spawn_command_line_on_screen(gtk_widget_get_screen(menuitem), + system_monitors[i], + NULL); + return; + } + } +} static void panel_context_menu_show_about_dialog (GtkWidget *menuitem) { @@ -242,7 +267,7 @@ g_signal_connect_swapped (menuitem, "activate", G_CALLBACK (panel_settings_dialog_present), panel_widget->toplevel); - +/* menuitem = gtk_image_menu_item_new_with_mnemonic (_("_Add to Panel...")); image = gtk_image_new_from_icon_name ("list-add", GTK_ICON_SIZE_MENU); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem), image); @@ -263,7 +288,7 @@ g_signal_connect_swapped (menuitem, "activate", G_CALLBACK (panel_properties_dialog_present), panel_widget->toplevel); - +*/ menuitem = gtk_image_menu_item_new_with_mnemonic (_("_Reset Panel")); image = gtk_image_new_from_stock (GTK_STOCK_REVERT_TO_SAVED, GTK_ICON_SIZE_MENU); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem), image); @@ -271,7 +296,7 @@ gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); g_signal_connect_swapped (menuitem, "activate", G_CALLBACK (query_panel_reset), panel_widget->toplevel); - +/* menuitem = gtk_image_menu_item_new_with_mnemonic (_("_Delete This Panel")); image = gtk_image_new_from_icon_name ("edit-delete", GTK_ICON_SIZE_MENU); @@ -299,6 +324,7 @@ panel_profile_id_lists_are_writable ()); add_menu_separator (menu); +*/ } GtkWidget * @@ -338,6 +364,16 @@ gtk_menu_shell_append (GTK_MENU_SHELL (retval), menuitem); g_signal_connect (menuitem, "activate", G_CALLBACK (panel_context_menu_show_help), NULL); +*/ + menuitem = gtk_image_menu_item_new_with_mnemonic (_("_Monitor")); + image = gtk_image_new_from_icon_name ("utilities-system-monitor", + GTK_ICON_SIZE_MENU); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem), image); + gtk_widget_show (menuitem); + gtk_menu_shell_append (GTK_MENU_SHELL (retval), menuitem); + g_signal_connect (menuitem, "activate", + G_CALLBACK (call_system_monitor), + NULL); menuitem = gtk_image_menu_item_new_with_mnemonic (_("A_bout Panels")); image = gtk_image_new_from_icon_name ("help-about", @@ -348,7 +384,6 @@ g_signal_connect (menuitem, "activate", G_CALLBACK (panel_context_menu_show_about_dialog), NULL); -*/ //FIXME: can we get rid of this? (needed by menu_get_panel()) g_object_set_data (G_OBJECT (retval), "menu_panel", panel); diff -Nru ukui-panel-1.1.2/ukui-panel/panel-settings-dialog.c ukui-panel-1.1.3/ukui-panel/panel-settings-dialog.c --- ukui-panel-1.1.2/ukui-panel/panel-settings-dialog.c 2018-01-29 08:38:36.000000000 +0000 +++ ukui-panel-1.1.3/ukui-panel/panel-settings-dialog.c 2018-03-20 07:23:42.000000000 +0000 @@ -81,6 +81,7 @@ GtkWidget *opacity_label; GtkWidget *opacity_legend; GtkWidget *lock_toggle; + GtkWidget *hide_workspace; GtkWidget *default_height_size_radio; GtkWidget *medium_height_size_radio; GtkWidget *large_height_size_radio; @@ -128,9 +129,9 @@ static OrientationComboItem orientation_items [] = { { NC_("Orientation", "Top"), PANEL_ORIENTATION_TOP }, - { NC_("Orientation", "Bottom"), PANEL_ORIENTATION_BOTTOM }, - { NC_("Orientation", "Left"), PANEL_ORIENTATION_LEFT }, - { NC_("Orientation", "Right"), PANEL_ORIENTATION_RIGHT } + { NC_("Orientation", "Bottom"), PANEL_ORIENTATION_BOTTOM } +// { NC_("Orientation", "Left"), PANEL_ORIENTATION_LEFT }, +// { NC_("Orientation", "Right"), PANEL_ORIENTATION_RIGHT } }; static void @@ -173,13 +174,38 @@ } } +static void +panel_settings_toggle_hide_workspace_toggle (PanelPropertiesDialog *dialog, + GtkToggleButton *toggle) +{ + char *path; + GSettings *settings; + path = g_strdup_printf ("%s/","/org/ukui/panel/toplevels/bottom"); + settings = g_settings_new_with_path ("org.ukui.panel.toplevel",path); + + if (gtk_toggle_button_get_active (toggle)) { + g_settings_set_boolean(settings, "hide-workspace",TRUE); + } + else { + g_settings_set_boolean(settings, "hide-workspace",FALSE); + } +} + +static void panel_settings_toggle_lock_toggle (PanelPropertiesDialog *dialog, GtkToggleButton *toggle) { + char *path; + GSettings *settings; + path = g_strdup_printf ("%s/","/org/ukui/panel/toplevels/bottom"); + settings = g_settings_new_with_path ("org.ukui.panel.toplevel",path); + if (gtk_toggle_button_get_active (toggle)) { + g_settings_set_boolean(settings, "lock-taskbar",TRUE); gtk_combo_box_set_button_sensitivity (dialog->orientation_combo, GTK_SENSITIVITY_OFF); } else { + g_settings_set_boolean(settings, "lock-taskbar",FALSE); gtk_combo_box_set_button_sensitivity (dialog->orientation_combo, GTK_SENSITIVITY_ON); } @@ -187,10 +213,53 @@ } static void +panel_properties_dialog_setup_hide_workspace (PanelPropertiesDialog *dialog, + GtkBuilder *gui) +{ + char *path; + GSettings *settings; + + dialog->hide_workspace = PANEL_GTK_BUILDER_GET (gui, "hide_workspace"); + path = g_strdup_printf ("%s/","/org/ukui/panel/toplevels/bottom"); + settings = g_settings_new_with_path ("org.ukui.panel.toplevel",path); + gboolean hide_workspace = g_settings_get_boolean(settings, "hide-workspace"); + + if (hide_workspace){ + gtk_toggle_button_set_active(dialog->hide_workspace,TRUE); + } else{ + gtk_toggle_button_set_active(dialog->hide_workspace,FALSE); + } + + g_signal_connect_swapped (dialog->hide_workspace, "toggled", + G_CALLBACK (panel_settings_toggle_hide_workspace_toggle), + dialog); +} + +static void panel_properties_dialog_setup_lock_toggle (PanelPropertiesDialog *dialog, GtkBuilder *gui) { + char *path; + GSettings *settings; + dialog->lock_toggle = PANEL_GTK_BUILDER_GET (gui, "lock_toggle"); + path = g_strdup_printf ("%s/","/org/ukui/panel/toplevels/bottom"); + settings = g_settings_new_with_path ("org.ukui.panel.toplevel",path); + gboolean lock_taskbar = g_settings_get_boolean(settings, "lock-taskbar"); + + if (lock_taskbar){ + gtk_toggle_button_set_active(dialog->lock_toggle,TRUE); + } else{ + gtk_toggle_button_set_active(dialog->lock_toggle,FALSE); + } + + if (gtk_toggle_button_get_active (dialog->lock_toggle)) { + gtk_combo_box_set_button_sensitivity (dialog->orientation_combo, GTK_SENSITIVITY_OFF); + } + else { + gtk_combo_box_set_button_sensitivity (dialog->orientation_combo, GTK_SENSITIVITY_ON); + } + g_signal_connect_swapped (dialog->lock_toggle, "toggled", G_CALLBACK (panel_settings_toggle_lock_toggle), dialog); @@ -465,15 +534,135 @@ } static void +panel_properties_dialog_upd_sensitivity (PanelPropertiesDialog *dialog, + PanelBackgroundType background_type) +{ + gtk_widget_set_sensitive (dialog->color_widgets, + background_type == PANEL_BACK_COLOR); + gtk_widget_set_sensitive (dialog->image_widgets, + background_type == PANEL_BACK_IMAGE); +} + +GdkColor +get_border_color (char *color_name) +{ + GdkColor color; + + GObject *gs = (GObject *)gtk_settings_get_default (); + GValue color_scheme_value = G_VALUE_INIT; + g_value_init (&color_scheme_value, G_TYPE_STRING); + g_object_get_property (gs, "gtk-color-scheme", &color_scheme_value); + gchar *color_scheme = (char *)g_value_get_string (&color_scheme_value); + gchar color_spec[16] = { 0 }; + char *needle = strstr(color_scheme, color_name); + if (needle) { + while (1) { + if (color_spec[0] != '#') { + color_spec[0] = *needle; + needle++; + continue; + } + + if ((*needle >= 0x30 && *needle <= 0x39) || + (*needle >= 0x41 && *needle <= 0x46) || + (*needle >= 0x61 && *needle <= 0x66)) { + color_spec[strlen(color_spec)] = *needle; + needle++; + } else { + break; + } + } + gdk_color_parse (color_spec, &color); + } else { + gdk_color_parse ("#3B9DC5", &color); + } + + return color; +} + + +static void +panel_settings_toggle_opacity_scale_toggle (PanelPropertiesDialog *dialog, + GtkToggleButton *toggle) +{ + guint16 opacity; + char *path; + GSettings *settings; + + path = g_strdup_printf ("%s/","/org/ukui/panel/toplevels/bottom"); + settings = g_settings_new_with_path ("org.ukui.panel.toplevel",path); + + if (gtk_toggle_button_get_active (toggle)){ + g_settings_set_boolean(settings, "transparent",TRUE); + PanelBackgroundType background_type = PANEL_BACK_NONE; + background_type = PANEL_BACK_COLOR; + panel_profile_set_background_type (dialog->toplevel, background_type); + + opacity = (80.000000 / 100) * 65535; + panel_profile_set_background_opacity (dialog->toplevel, opacity); + } else { + g_settings_set_boolean(settings, "transparent",FALSE); + PanelBackgroundType background_type = PANEL_BACK_NONE; + background_type = PANEL_BACK_COLOR; + panel_profile_set_background_type (dialog->toplevel, background_type); + + opacity = (100.000000 / 100) * 65535; + panel_profile_set_background_opacity (dialog->toplevel, opacity); + } +} + +static void panel_properties_dialog_setup_opacity_scale (PanelPropertiesDialog *dialog, GtkBuilder *gui) { - guint16 opacity; - gdouble percentage; + char *color_str; + char *path; + guint16 opacity; + GSettings *settings; + +// GdkColor color = get_border_color ("panel_normal_bg_color"); + GdkColor color; + GtkStyle *style=gtk_rc_get_style(dialog->toplevel); + gtk_style_lookup_color (style,"panel_normal_bg_color",&color); + + color_str=gdk_color_to_string(&color); + g_settings_set_string (dialog->toplevel->background_settings, "color", color_str); dialog->opacity_scale = PANEL_GTK_BUILDER_GET (gui, "opacity_scale"); g_return_if_fail (dialog->opacity_scale != NULL); - dialog->opacity_label = PANEL_GTK_BUILDER_GET (gui, "opacity_label"); + + + path = g_strdup_printf ("%s/","/org/ukui/panel/toplevels/bottom"); + settings = g_settings_new_with_path ("org.ukui.panel.toplevel",path); + gboolean transparent = g_settings_get_boolean(settings, "transparent"); + + if (transparent){ + gtk_toggle_button_set_active(dialog->opacity_scale,TRUE); + } else{ + gtk_toggle_button_set_active(dialog->opacity_scale,FALSE); + } + + if (gtk_toggle_button_get_active (dialog->opacity_scale)){ + PanelBackgroundType background_type = PANEL_BACK_NONE; + background_type = PANEL_BACK_COLOR; + panel_profile_set_background_type (dialog->toplevel, background_type); + + opacity = (80.000000 / 100) * 65535; + panel_profile_set_background_opacity (dialog->toplevel, opacity); + } else { + PanelBackgroundType background_type = PANEL_BACK_NONE; + background_type = PANEL_BACK_COLOR; + panel_profile_set_background_type (dialog->toplevel, background_type); + + opacity = (100.000000 / 100) * 65535; + panel_profile_set_background_opacity (dialog->toplevel, opacity); + } + + g_signal_connect_swapped (dialog->opacity_scale, "toggled", + G_CALLBACK (panel_settings_toggle_opacity_scale_toggle), + dialog); + +/* dialog->opacity_label = PANEL_GTK_BUILDER_GET (gui, "opacity_label"); g_return_if_fail (dialog->opacity_label != NULL); dialog->opacity_legend = PANEL_GTK_BUILDER_GET (gui, "opacity_legend"); g_return_if_fail (dialog->opacity_legend != NULL); @@ -494,16 +683,7 @@ gtk_widget_set_sensitive (dialog->opacity_legend, FALSE); gtk_widget_show (dialog->writability_warn_background); } -} - -static void -panel_properties_dialog_upd_sensitivity (PanelPropertiesDialog *dialog, - PanelBackgroundType background_type) -{ - gtk_widget_set_sensitive (dialog->color_widgets, - background_type == PANEL_BACK_COLOR); - gtk_widget_set_sensitive (dialog->image_widgets, - background_type == PANEL_BACK_IMAGE); +*/ } static void @@ -743,10 +923,10 @@ path1 = g_strdup_printf ("%s%d/", "/org/ukui/panel/indicator/tray", j); settings1 = g_settings_new_with_path ("org.ukui.panel.indicator.tray", path1); - g_signal_connect (settings1, - "changed::" "number", - G_CALLBACK (tray_widget_show_notify), - store); +// g_signal_connect (settings1, +// "changed::" "number", +// G_CALLBACK (tray_widget_show_notify), +// store); j++; } @@ -837,6 +1017,7 @@ GtkBuilder *gui; GError *error; PanelPropertiesDialog *panel_settings_dialog; + error = NULL; gui = gtk_builder_new (); gtk_builder_set_translation_domain (gui, GETTEXT_PACKAGE); gtk_builder_add_from_file (gui, @@ -1134,7 +1315,7 @@ if (!gdk_rgba_equal (&old_color, &new_color)) gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (dialog->color_button), - &new_color); + &new_color); } static void @@ -1289,6 +1470,7 @@ panel_properties_dialog_setup_hidebuttons_toggle (dialog, gui); panel_properties_dialog_setup_arrows_toggle (dialog, gui); panel_properties_dialog_setup_lock_toggle (dialog, gui); + panel_properties_dialog_setup_hide_workspace (dialog, gui); g_signal_connect_swapped (dialog->expand_toggle, "toggled", G_CALLBACK (panel_properties_dialog_setup_orientation_combo_sensitivty), dialog); diff -Nru ukui-panel-1.1.2/ukui-panel/panel-settings-dialog.ui ukui-panel-1.1.3/ukui-panel/panel-settings-dialog.ui --- ukui-panel-1.1.2/ukui-panel/panel-settings-dialog.ui 2017-12-19 03:47:08.000000000 +0000 +++ ukui-panel-1.1.3/ukui-panel/panel-settings-dialog.ui 2018-03-19 03:33:15.000000000 +0000 @@ -1,5 +1,5 @@ -