]> git.vpit.fr Git - perl/scripts/xchat.git/commitdiff
Factor the GUI commands into a new utility function
authorVincent Pit <vince@profvince.com>
Fri, 20 Nov 2015 14:19:28 +0000 (12:19 -0200)
committerVincent Pit <vince@profvince.com>
Fri, 20 Nov 2015 14:19:28 +0000 (12:19 -0200)
Xchat/XPI/Utils.pm
hl.pl
tools.pl

index 8fab3c469aae892395cf1ceec3f48bd49e1df141..cbd9494ae1cd5a158d34dc78a32a2196eadd7ff8 100644 (file)
@@ -23,6 +23,17 @@ sub dye_nick {
  return sprintf "\003%d%s", $rcolors[$col % @rcolors], $nick;
 }
 
+my %gui_commands = (
+ 'clear'     => [ 'COLOR 0' ],
+ 'highlight' => [ 'FLASH' => 'COLOR 3' ],
+);
+
+sub gui {
+ my $commands = $gui_commands{$_[0] || 'nope'};
+ die 'Invalid command' unless defined $commands;
+ command "GUI $_" for @$commands;
+}
+
 sub save_context {
  my $cur_cxt = get_context;
  bless \$cur_cxt, 'Xchat::XPI::Utils::ContextGuard';
@@ -73,6 +84,7 @@ use base qw<Exporter>;
 our @EXPORT         = ();
 our %EXPORT_TAGS    = ('funcs' => [ qw<
  dye_nick
+ gui
  save_context local_context
  called_from_script
 > ]);
diff --git a/hl.pl b/hl.pl
index 7e76ba2c6cfb0e654a0a4aff635c8fca84e9e6d3..0a9fa11984c0ea16ce1e882daef191c1b7463de0 100755 (executable)
--- a/hl.pl
+++ b/hl.pl
@@ -8,21 +8,16 @@ use Xchat qw<:all>;
 use lib get_info 'xchatdir';
 use Xchat::XPI;
 use Xchat::XPI::Events qw<filter>;
+use Xchat::XPI::Utils  qw<gui>;
 
 our $VERSION = '0.04';
 
 my $ph;
 
-sub guihl {
- command 'GUI FLASH';
- command 'GUI COLOR 3';
-}
-
-sub guiclear {
- command 'GUI COLOR 0';
-}
-
-hook_print 'Private Message to Dialog', sub { guihl; return EAT_NONE };
+hook_print 'Private Message to Dialog', sub {
+ gui 'highlight';
+ return EAT_NONE;
+};
 
 my %hl = (
  '#cpantesters' => [ qw<
@@ -59,7 +54,7 @@ for (keys %hl) {
 filter 'Channel Action' => sub {
  my $chan = lc get_info 'channel';
  if ($hl{$chan} and $_[1] =~ /$hl{$chan}/) {
-  guihl;
+  gui 'highlight';
   1;
  } else {
   0;
@@ -80,7 +75,7 @@ for (keys %skip) {
 filter 'Channel Action Hilight' => sub {
  my $chan = lc get_info 'channel';
  if ($skip{$chan} and $_[1] =~ /$skip{$chan}/) {
-  guiclear;
+  gui 'clear';
   1;
  } else {
   0;
index f7e5c4efc4c25ff7da85a1501cfbe568f9bb5dd8..f7b160648c10a9eefebcaccacb596e9ba06812ff 100755 (executable)
--- a/tools.pl
+++ b/tools.pl
@@ -10,7 +10,7 @@ use Xchat qw<:all>;
 
 use lib get_info 'xchatdir';
 use Xchat::XPI;
-use Xchat::XPI::Utils qw<save_context>;
+use Xchat::XPI::Utils qw<gui save_context>;
 
 use constant MAX_MATCHES => 10;
 
@@ -27,7 +27,7 @@ hook_command 'TC', sub {
  my $guard = save_context;
  for (get_list 'channels') {
   set_context $_->{context};
-  command 'GUI COLOR 0';
+  gui 'clear';
  }
  return EAT_ALL;
 }, {