aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorribet2010-06-07 15:29:05 +0000
committerribet2010-06-07 15:29:05 +0000
commita62ebdae26bc28e8a5a76fd989b1b76ee72c1ca5 (patch)
treebe59c39299477e154bb0b638ee994faf4bd3b628
parent8489ecd3e999606b663647a2596314a36f2fa2d2 (diff)
downloadmtc-a62ebdae26bc28e8a5a76fd989b1b76ee72c1ca5.zip
mtc-a62ebdae26bc28e8a5a76fd989b1b76ee72c1ca5.tar.gz
mtc-a62ebdae26bc28e8a5a76fd989b1b76ee72c1ca5.tar.bz2
mtc-a62ebdae26bc28e8a5a76fd989b1b76ee72c1ca5.tar.xz
Version adaptée pour squeeze
-rw-r--r--debian/changelog32
-rw-r--r--src/MTools/Adapters/WacomAdapter.pm199
2 files changed, 166 insertions, 65 deletions
diff --git a/debian/changelog b/debian/changelog
index fd9ee0e..b5afa7c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,35 @@
+mtools-perl (1.6.0-1) unstable; urgency=low
+
+ *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Animation MPath à faire avec le mode synchrone (voir commit 135)
+ * On peut désormais accéder aux objets zinc via une table de hash (optimisation de mfind).
+ * Correction d'un bug de getSelection lorsque la selection est vide.
+ * Modif permettant d'ignorer l'absence d'un fichier svg si la version compilée en zinc du fichier existe (permet entre autre de diffuser le code de l'application sans diffuser les svg).
+ * Utilisation de croak au lieu de die pour lever des exceptions permettant d'obtenir des messages d'erreurs plus explicites (info complementaire sur la pile d'appel).
+ * Petite modif de minstanciate permettant de passer des options de configuration (équivalent à un appel de mconfigure après le minstanciate).
+ * Ajout d'une fonction pour recuperer la curve du MReconizer.
+ * Ajout du comportement de visiblité de la multisélection (mconfigure (-visible => 0) désactive la mutlisélection).
+ * Emission d'évènements supplémentaires sur Button ButtonRelease et Button_Motion lorsque la valeur de la propriété visible est 0.
+ * Ajout de la possibilité de supprimer un élément du MFocuser.
+ * Traitement de la propriété visible du comportement MReconizer.
+ * Nouvelle fonction pour réinitialiser les bindings(MWritable MReconizer).
+ * Fonction d'éffacement de toutes les curves (MWritable).
+ * Ajout d'evts TOGGLE FORCE_PRESS FORCE_RELEASE dans MToggleBouton.
+ * Ajout du magnétisme dans le mover (option: magnetic, 0: aucun effet).
+ * Ajout option "executer" au plisten : si elle est non définie ou égale à 1 : même comportement qu'avant. Sinon on n'appelle pas la callback lors de l'abonnement au plisten.
+ * Ajout d'une fonctionnalité utile pour la reco d'écriture dans MWritable
+ * Ajout de la possibilité de passer en paramètre une fonction "translate" particulière dans le MMover.
+ * Nouveau widget pour créer un fond d'appli selon un style passé en paramètre : MControlBoard
+ * Nouveau widget pour créer une "belle" flêche : MArrow
+ * Correction d'un bug dans le plisten : un abonnement à un paramètre identique n'appelle plus l'ensemble des callbacks.
+ * Animations en utilisant un seul timer, toutes les animations sont maintenant synchrones pour de meilleures performances. Attention : il faut installer le dernier paquet tkanim.
+ * Correction dans MFlicker.
+ * Ajout de la méthode complete dans les annimations.
+ * Prise en compte de la variable DISPLAY
+ * Gestion des fontes avec la syntaxe fontconfig.
+ * Nouveaux messages ivy pour wacom adapter (passage en squeeze)
+
+ -- Philippe Ribet <ribet@cena.fr> Mon, 7 Jun 2010 17:31:00 +0200
+
mtools-perl (1.5.1-1) unstable; urgency=low
* Amélioration du positionnement des fontes XLFD
* Amélioration de la prise en compte des fontes XLFD
diff --git a/src/MTools/Adapters/WacomAdapter.pm b/src/MTools/Adapters/WacomAdapter.pm
index 204b97f..2f86c27 100644
--- a/src/MTools/Adapters/WacomAdapter.pm
+++ b/src/MTools/Adapters/WacomAdapter.pm
@@ -39,9 +39,11 @@ sub new {
bless $self, $class;
$self -> {__pointer_status} = 0;
$self -> {__ivy} = new MTools::MIvy ($adresse, $ivy_name);
- $self -> {__ivy} -> binding ('pad_event device_id='.$wacom_adresse.' button=(.*) status=(.*) time=(.*)', [\&wacom_event, $self, 'buttons']);
- $self -> {__ivy} -> binding ('slider_event device_id='.$wacom_adresse.' value=(.*) side=(.*) time=(.*)', [\&wacom_event, $self, 'sliders']);
- $self -> {__ivy} -> binding ('pointer_event device_id='.$wacom_adresse.' x=(.*) y=(.*) presure=(.*) tilt_x=(.*) tilt_y=(.*) wheel=(.*) predicted_x=(.*) predicted_y=(.*) type=(.*) serial_number=(.*) time=(.*)', [\&wacom_event, $self, 'pointers']);
+ #$self -> {__ivy} -> binding ('pad_event device_id='.$wacom_adresse.' button=(.*) status=(.*) time=(.*)', [\&wacom_event, $self, 'buttons']);
+ $self -> {__ivy} -> binding ('InputButtonEvent '.$wacom_adresse.' num=(.*) state=(.*) Abs_X=(.*) Abs_Y=(\S+) .*Abs_Wheel=(.*) Abs_Pressure=(\S+) .*Abs_Tilt_X=(.*) Abs_Tilt_Y=(.*) Abs_Tool_Type=(.*) unknown=(.*) time=(.*)',[\&wacom_event_buttons, $self]);
+ #$self -> {__ivy} -> binding ('slider_event device_id='.$wacom_adresse.' value=(.*) side=(.*) time=(.*)', [\&wacom_event, $self, 'sliders']);
+ #$self -> {__ivy} -> binding ('pointer_event device_id='.$wacom_adresse.' x=(.*) y=(.*) presure=(.*) tilt_x=(.*) tilt_y=(.*) wheel=(.*) predicted_x=(.*) predicted_y=(.*) type=(.*) serial_number=(.*) time=(.*)', [\&wacom_event, $self, 'pointers']);
+ $self -> {__ivy} -> binding ('InputMoveEvent '.$wacom_adresse.' Abs_X=(.*) Abs_Y=(\S+) .*Abs_Rotary_X=(.*) Abs_Rotary_Y=(\S+) .*Abs_Wheel=(.*) Abs_Pressure=(\S+) .*Abs_Tilt_X=(.*) Abs_Tilt_Y=(.*) Abs_Tool_Type=(.*) unknown=(.*) time=(.*)', [\&wacom_event_pointers, $self]);
return $self;
}
@@ -90,70 +92,137 @@ sub binding {
}
}
+################################################################################
+sub wacom_event_buttons {
+ my ($agent, $self, $num, $state, $x, $y, $wheel, $presure, $tilt_x, $tilt_y, $type, $serial_number, $time) = @_;
+ $self->compute_callbacks('buttons',{num => $num,
+ state => $state,
+ X => $x,
+ Y => $y,
+ wheel => $wheel,
+ presure => $presure,
+ tilt_x => $tilt_x,
+ tilt_y => $tilt_y,
+ type => $type,
+ serial_number => $serial_number,
+ time => $time});
+ print STDERR "\nwacom_event_buttons $num,$state\n\n";
+}
+
+################################################################################
+sub wacom_event_pointers {
+ my ($agent, $self, $x, $y, $rotary_x, $rotary_y, $wheel, $presure, $tilt_x, $tilt_y, $type, $serial_number, $time) = @_;
+ #if ($time == 0) {
+# $value = 'Release';
+# $self -> {__pointer_status} = 0;
+# }
+ #else {
+# if ($self -> {__pointer_status}) {
+# $value = 'Motion';
+# }
+# else {
+# $value = 'Press';
+# $self -> {__pointer_status} = 1;
+# }
+# }
+ $self->compute_callbacks('pointers',{num => '',
+ state => int $type,
+ X => $x,
+ Y => $y,
+ rotary_X => $rotary_x,
+ rotary_Y => $rotary_y,
+ wheel => $wheel,
+ presure => $presure,
+ tilt_x => $tilt_x,
+ tilt_y => $tilt_y,
+ type => $type,
+ serial_number => $serial_number,
+ time => $time});
+ print STDERR "\nwacom_event_pointers $type\n\n";
+}
+
+###############################################################################
sub wacom_event {
- my ($agent, $self, $type, $value, $status, $time, @others) = @_;
- my @callbacks = ();
- my @args = ();
- if ($type eq 'sliders')
- {
- my $nb = 0;
- if ($value != 0)
- {
- while ($value != 1)
- {
- $value = $value / 2;
- $nb ++;
- }
- $nb++;
- }
- $value = $nb;
- }
- if ($type eq 'pointers')
- {
- $status = $others [5];
- if ($status =~ /(.*)_(.*)_(.*)_(.*)/)
- {
- $status = $3;
- }
- elsif ($status =~ /(.*)_(.*)_(.*)/)
- {
- $status = $2;
- }
- if ($time == 0)
- {
- $value = 'Release';
- $self -> {__pointer_status} = 0;
- }
- else
- {
- if ($self -> {__pointer_status})
- {
- $value = 'Motion';
- }
- else
- {
- $value = 'Press';
- $self -> {__pointer_status} = 1;
- }
- }
- }
- if (defined $self -> {$type} -> {all})
- {
- push (@callbacks, @{$self -> {$type} -> {all}});
- }
- if (defined $self -> {$type} -> {$status} -> {all})
- {
- push (@callbacks, @{$self -> {$type} -> {$status} -> {all}});
- }
- if (defined $self -> {$type} -> {$status} -> {$value})
- {
- push (@callbacks, @{$self -> {$type} -> {$status} -> {$value}});
- }
- for (my $i = 0; $i < @callbacks; $i ++)
- {
- executer ($callbacks[$i], $value, $status, $type);
- }
+ my ($agent, $self, $type, $value, $status, $time, @others) = @_;
+ my @callbacks = ();
+ my @args = ();
+ if ($type eq 'sliders')
+ {
+ my $nb = 0;
+ if ($value != 0)
+ {
+ while ($value != 1)
+ {
+ $value = $value / 2;
+ $nb ++;
+ }
+ $nb++;
+ }
+ $value = $nb;
+ }
+ if ($type eq 'pointers')
+ {
+ $status = $others [5];
+ if ($status =~ /(.*)_(.*)_(.*)_(.*)/)
+ {
+ $status = $3;
+ }
+ elsif ($status =~ /(.*)_(.*)_(.*)/)
+ {
+ $status = $2;
+ }
+ if ($time == 0)
+ {
+ $value = 'Release';
+ $self -> {__pointer_status} = 0;
+ }
+ else
+ {
+ if ($self -> {__pointer_status})
+ {
+ $value = 'Motion';
+ }
+ else
+ {
+ $value = 'Press';
+ $self -> {__pointer_status} = 1;
+ }
+ }
+ }
+ if (defined $self -> {$type} -> {all})
+ {
+ push (@callbacks, @{$self -> {$type} -> {all}});
+ }
+ if (defined $self -> {$type} -> {$status} -> {all})
+ {
+ push (@callbacks, @{$self -> {$type} -> {$status} -> {all}});
+ }
+ if (defined $self -> {$type} -> {$status} -> {$value})
+ {
+ push (@callbacks, @{$self -> {$type} -> {$status} -> {$value}});
+ }
+ for (my $i = 0; $i < @callbacks; $i ++)
+ {
+ executer ($callbacks[$i], $value, $status, $type);
+ }
}
+###################################################################################
+sub compute_callbacks {
+ my ($self, $type, $fields) = @_;
+ my @callbacks = ();
+ if (defined $self -> {$type} -> {all}) {
+ push (@callbacks, @{$self -> {$type} -> {all}});
+ }
+ if (defined $self -> {$type} -> {$fields->{state}} -> {all}) {
+ push (@callbacks, @{$self -> {$type} -> {$fields->{state}} -> {all}});
+ }
+ if (defined $self -> {$type} -> {$fields->{state}} -> {$fields->{num}}) {
+ push (@callbacks, @{$self -> {$type} -> {$fields->{state}} -> {$fields->{num}}});
+ }
+ for (my $i = 0; $i < @callbacks; $i ++) {
+ executer ($callbacks[$i],$fields);
+ }
+}
1;