widgets: remove slider widget

parent 0e025862
......@@ -339,8 +339,6 @@ notificationwindow, blankwindow {
@import "widgets/mpris";
/* Volume widget */
@import "widgets/volume";
/* Slider widget */
@import "widgets/slider";
/* Backlight widget */
@import "widgets/backlight";
/* Quick Settings widget */
......
......@@ -331,8 +331,6 @@ config file to be able to detect config errors
optional: true ++
*quick-settings*++
optional: true ++
*slider*++
optional: true ++
#START pulse-audio
*volume*++
optional: true ++
......@@ -447,53 +445,6 @@ config file to be able to detect config errors
default: false ++
description: Whether to loop through the mpris carousel. ++
description: A widget that displays multiple music players. ++
*slider*++
type: object ++
css class: widget-slider ++
properties: ++
label: ++
type: string ++
optional: true ++
default: "slider" ++
description: Text displayed in front of the slider ++
cmd_setter: ++
type: string ++
optional: true ++
default: "" ++
description: command to set the value. Use $value to get ++
the current value. ++
cmd_getter: ++
type: string ++
optional: true ++
default: "" ++
description: command to get the actual value. ++
Use $value to get the current value. ++
min: ++
type: integer ++
optional: true ++
default: 0 ++
description: minimum value of the slider range ++
max: ++
type: integer ++
optional: true ++
default: 100 ++
description: maximum value of the slider range ++
min_limit: ++
type: integer ++
optional: true ++
default: 0 ++
description: limit minimum value of the slider ++
max_limit: ++
type: integer ++
optional: true ++
default: 100 ++
description: limit maximum value of the slider ++
value_scale: ++
type: integer ++
optional: true ++
default: 0 ++
description: scale small value, slider round digits ++
description: general slider control ++
#START pulse-audio
*volume*++
type: object ++
......
......@@ -4,7 +4,6 @@ src/controlCenter/widgets/title/title.vala
src/controlCenter/widgets/inhibitors/inhibitors.vala
src/controlCenter/widgets/volume/volume.vala
src/controlCenter/widgets/backlight/backlight.vala
src/controlCenter/widgets/slider/slider.vala
src/controlCenter/widgets/quickSettings/quickSettings.vala
src/controlCenter/widgets/quickSettings/tiles/dndTile.vala
src/controlCenter/widgets/quickSettings/tiles/darkModeTile.vala
......
......@@ -83,10 +83,6 @@ msgstr "Нет активного источника"
msgid "Brightness"
msgstr "Яркость"
#: src/controlCenter/widgets/slider/slider.vala:28
msgid "Slider"
msgstr "Ползунок"
#: src/controlCenter/widgets/powerProfiles/powerProfiles.vala:149
msgid "Performance"
msgstr "Производительность"
......
......@@ -81,10 +81,6 @@ msgstr ""
msgid "Brightness"
msgstr ""
#: src/controlCenter/widgets/slider/slider.vala:28
msgid "Slider"
msgstr ""
#: src/controlCenter/widgets/menubar/menubar.vala:264
msgid "Menu"
msgstr ""
......
......@@ -336,9 +336,6 @@
"^mpris(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
"$ref": "#/widgets/mpris"
},
"^slider(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
"$ref": "#/widgets/slider"
},
"^backlight(#[a-zA-Z0-9_-]{1,}){0,1}?$": {
"$ref": "#/widgets/backlight"
},
......@@ -412,53 +409,6 @@
}
}
},
"slider": {
"type": "object",
"description": "general slider control",
"additionalProperties": false,
"properties": {
"label": {
"type": "string",
"description": "Text displayed in front of the slider",
"default": "slider"
},
"cmd_setter": {
"type": "string",
"description": "command to set the value. Use $value to get the current value",
"default": ""
},
"cmd_getter": {
"type": "string",
"description": "command to get the actual value. Use $value to get the current value",
"default": ""
},
"min": {
"type": "integer",
"description": "minimum value of the slider range",
"default": 0
},
"max": {
"type": "integer",
"description": "maximum value of the slider range",
"default": 100
},
"min_limit": {
"type": "integer",
"description": "limit minimum value of the slider",
"default": 0
},
"max_limit": {
"type": "integer",
"description": "limit maximum value of the slider",
"default": 100
},
"value_scale": {
"type": "integer",
"default": 0,
"description": "scale small value, slider round digits"
}
}
},
"backlight": {
"type": "object",
"description": "Unified brightness control widget. Auto-detects display backlights (/sys/class/backlight), DDC/CI monitors, and keyboard backlights (/sys/class/leds/*kbd*).",
......
......@@ -28,9 +28,6 @@ namespace XimperShellNotificationCenter.Widgets {
case "quick-settings":
widget = new QuickSettings (suffix);
break;
case "slider":
widget = new Slider (suffix);
break;
#if HAVE_PULSE_AUDIO
case "volume":
widget = new Volume (suffix);
......
namespace XimperShellNotificationCenter.Widgets {
public class Slider : BaseWidget {
public override string widget_name {
get {
return "slider";
}
}
Gtk.Label label_widget = new Gtk.Label (null);
Gtk.Scale slider = new Gtk.Scale.with_range (Gtk.Orientation.HORIZONTAL, 0, 100, 1);
private double min_limit;
private double max_limit;
private double ?last_set;
private bool cmd_ing = false;
private string cmd_setter;
private string cmd_getter;
public Slider (string suffix) {
base (suffix);
int ?round_digits = 0;
Json.Object ?config = get_config (this);
if (config != null) {
string ?label = get_prop<string> (config, "label");
label_widget.set_label (label ?? _("Slider"));
cmd_setter = get_prop<string> (config, "cmd_setter") ?? "";
cmd_getter = get_prop<string> (config, "cmd_getter") ?? "";
int ?min = get_prop<int> (config, "min");
int ?max = get_prop<int> (config, "max");
int ?maxl = get_prop<int> (config, "max_limit");
int ?minl = get_prop<int> (config, "min_limit");
round_digits = get_prop<int> (config, "value_scale");
if (min == null) {
min = 0;
}
if (max == null) {
max = 100;
}
if (round_digits == null) {
round_digits = 0;
}
max_limit = maxl != null ?double.min (max, maxl) : max;
min_limit = minl != null ?double.max (min, minl) : min;
double scale = Math.pow (10, round_digits);
min_limit /= scale;
max_limit /= scale;
slider.set_range (min / scale, max / scale);
}
slider.set_draw_value (false);
slider.set_round_digits (round_digits);
slider.set_hexpand (true);
slider.set_halign (Gtk.Align.FILL);
slider.value_changed.connect (() => {
double value = slider.get_value ();
if (value > max_limit) {
value = max_limit;
}
if (value < min_limit) {
value = min_limit;
}
slider.set_value (value);
slider.tooltip_text = value.to_string ();
if (cmd_setter != "" && last_set != value) {
last_set = value;
queue_set.begin (value);
}
});
append (label_widget);
append (slider);
}
public string expand_cmd (string cmd, string regex, string value) {
try {
Regex _regx = new Regex (Regex.escape_string (regex));
return _regx.replace_literal (cmd, -1, 0, value);
} catch (Error e) {
warning ("failed to expand cmd: %s\n", e.message);
return cmd;
}
}
public async void queue_set (double value) {
if (cmd_ing) {
return;
}
cmd_ing = true;
var cmd = expand_cmd (cmd_setter, "$value", value.to_string ());
yield Functions.execute_command (cmd, {}, null);
cmd_ing = false;
// make sure the last_set is applied
if (value != last_set) {
yield queue_set (last_set);
}
}
public async void queue_get (int retry, out string value) {
if (cmd_ing) {
if (retry <= 0) {
value = "";
return;
}
yield queue_get (retry - 1, out value);
}
cmd_ing = true;
yield Functions.execute_command (cmd_getter, {}, out value);
cmd_ing = false;
}
public async void on_update () {
if (cmd_getter == "") {
return;
}
string value_str = "";
yield queue_get (4, out value_str);
double value = double.parse (value_str);
if (value <= max_limit && value >= min_limit) {
last_set = value;
slider.set_value (value);
}
}
public override void on_cc_visibility_change (bool value) {
if (value) {
on_update.begin ();
}
}
}
}
......@@ -38,8 +38,6 @@ widget_sources = [
'controlCenter/widgets/mpris/mpris.vala',
'controlCenter/widgets/mpris/interfaces.vala',
'controlCenter/widgets/mpris/mpris_player.vala',
# Widget: Slider
'controlCenter/widgets/slider/slider.vala',
# Widget: Backlight Slider
'controlCenter/widgets/backlight/backlight.vala',
'controlCenter/widgets/backlight/backlightUtil.vala',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment