65 bool include = pattern.has_prefix(
"+ ");
66 string clean_pattern = include ? pattern[2:pattern.length] : pattern;
68 var row =
new Gtk.ListBoxRow();
69 var outer =
new Gtk.Box(Gtk.Orientation.VERTICAL, 6);
70 outer.margin_start = 8;
73 outer.margin_bottom = 8;
76 var top =
new Gtk.Box(Gtk.Orientation.HORIZONTAL, 12);
79 var toggles =
new Gtk.Box(Gtk.Orientation.HORIZONTAL, 12);
82 var btn_include =
new Gtk.CheckButton.with_label(
"+");
83 var btn_exclude =
new Gtk.CheckButton.with_label(
"-");
84 btn_exclude.set_group(btn_include);
85 btn_include.active = include;
86 btn_exclude.active = !include;
87 toggles.append(btn_include);
88 toggles.append(btn_exclude);
90 var entry =
new Gtk.Entry();
92 entry.text = clean_pattern;
93 entry.placeholder_text =
_(
"Pattern");
99 var actions =
new Gtk.Box(Gtk.Orientation.HORIZONTAL, 6);
100 actions.halign = Gtk.Align.END;
101 outer.append(actions);
104 btn_up.tooltip_text =
_(
"Move up");
105 actions.append(btn_up);
108 btn_down.tooltip_text =
_(
"Move down");
109 actions.append(btn_down);
112 btn_remove.tooltip_text =
_(
"Remove");
113 actions.append(btn_remove);
115 btn_include.toggled.connect(()=>{
116 if (!btn_include.active){
return; }
121 btn_exclude.toggled.connect(()=>{
122 if (!btn_exclude.active){
return; }
127 entry.changed.connect(()=>{
131 btn_up.clicked.connect(()=>{
135 btn_down.clicked.connect(()=>{
139 btn_remove.clicked.connect(()=>{
143 row.set_data<
string>(
"pattern", pattern);
170 private void move_row(Gtk.ListBoxRow row,
int delta){
172 string? current = row.get_data<
string>(
"pattern");
173 if (current ==
null){
return; }
175 for (
int i = 0; i < patterns.size; i++){
176 if (patterns[i] == current){ index = i;
break; }
178 if (index < 0){
return; }
179 int target = index + delta;
180 if (target < 0 || target >= patterns.size){
return; }
181 string tmp = patterns[index];
182 patterns[index] = patterns[target];
183 patterns[target] = tmp;
224 var hbox =
new Gtk.Box(Gtk.Orientation.HORIZONTAL, 6);
227 var size_group =
new Gtk.SizeGroup(SizeGroupMode.HORIZONTAL);
228 var button = add_button(hbox,
_(
"Add"),
_(
"Add custom pattern"), size_group,
null);
229 button.clicked.connect(()=>{
231 _(
"Exclude Pattern"),
232 _(
"Enter the pattern to exclude (Ex: *.mp3, *.bak)"),
235 if ((pattern !=
null) && (pattern.strip().length > 0)){
243 button = add_button(hbox,
_(
"Add Files"),
_(
"Add files"), size_group,
null);
246 button = add_button(hbox,
_(
"Add Folders"),
_(
"Add directories"), size_group,
null);
249 button = add_button(hbox,
_(
"Remove"),
"", size_group,
null);
252 button = add_button(hbox,
_(
"Summary"),
"", size_group,
null);
253 button.clicked.connect(()=>{