-my $keypad = Gtk2::Table->new(4, 3, 1);
-$keypad->set_row_spacings(2);
-$keypad->set_col_spacings(2);
-my %key = ();
-my $n = 0;
-foreach my $i (1, 2, 3, 4, 5, 6, 7, 8, 9, '*', 0, '#') {
- $key{$i} = Gtk2::Button->new(" ${i} ");
- $key{$i}->signal_connect(clicked => \&KeyPressed, $i);
- $keypad->attach_defaults($key{$i}, (($n)%3), (($n)%3)+1, int(($n)/3), int((($n)/3)+1));
- $key{$i}->show();
- $n++;
-}
-$keypad->show();
-
-my $fkeys = Gtk2::Table->new(6, 2, 1);
-$fkeys->set_row_spacings(2);
-$fkeys->set_col_spacings(2);
-$n = 0;
-foreach my $i qw(_Redial S_ettings Director_y Hel_p Men_u snom _ _ _Conference _Transfer H_old _DND) {
- if ($i ne '_') {
- $key{$i} = Gtk2::Button->new("${i}");
- $key{$i}->signal_connect(clicked => \&KeyPressed, $i);
- $fkeys->attach_defaults($key{$i}, (($n)%2), (($n)%2)+1, int(($n)/2), int((($n)/2)+1));
- $key{$i}->show();
- }
- $n++;
-}
-$fkeys->show();
-
-my $pkeys = Gtk2::Table->new(6, 2, 1);
-$pkeys->set_row_spacings(2);
-$pkeys->set_col_spacings(2);
-$n = 0;
-foreach my $i qw(P7 P1 P8 P2 P9 P3 P10 P4 P11 P5 P12 P6) {
- $key{$i} = Gtk2::Button->new("${i}");
- $key{$i}->signal_connect(clicked => \&KeyPressed, $i);
- $pkeys->attach_defaults($key{$i}, (($n+1)%2), (($n+1)%2)+1, int($n/2), int($n/2)+1);
- $key{$i}->show();
- $n++;
-}
-$pkeys->show();
-
-my $softkeys = Gtk2::Table->new(1, 4);
-$softkeys->set_col_spacings(6);
-$n = 0;
-foreach my $i qw(F1 F2 F3 F4) {
- $key{$i} = Gtk2::Button->new("${i}");
- $key{$i}->signal_connect(clicked => \&KeyPressed, $i);
- $softkeys->attach_defaults($key{$i}, $n, $n+1, 0, 1);
- $key{$i}->show();
- $n++;
-}
-$softkeys->show();
-
-my $navi = Gtk2::Table->new(3, 5);
-$n = 0;
-foreach my $i qw(_ _ ^ _ _ X < _ > OK _ _ V _ _) {
- if ( $i ne '_' ) {
- $key{$i} = Gtk2::Button->new("${i}");
- $key{$i}->signal_connect(clicked => \&KeyPressed, $i);
- $navi->attach_defaults($key{$i}, (($n)%5), (($n)%5)+1, int(($n)/5), int((($n)/5)+1));
- $key{$i}->show();
- }
- $n++;
-}
-$navi->show();
-
-my $output = Gtk2::Table->new(2, 3);
-$output->set_row_spacings(2);
-$output->set_col_spacings(2);
-$n = 0;
-foreach my $i qw(- + _ _Mute _Speaker _Headset) {
- if ( $i ne '_' ) {
- $key{$i} = Gtk2::Button->new("${i}");
- $key{$i}->signal_connect(clicked => \&KeyPressed, $i);
- $output->attach_defaults($key{$i}, (($n)%3), (($n)%3)+1, int(($n)/3), int((($n)/3)+1));
- $key{$i}->show();
- }
- $n++;
-}
-$output->show();
-
-my $special= Gtk2::Table->new(1, 2);
-$special->set_col_spacings(2);
-$n = 0;
-foreach my $i qw(Record Retrieve) {
- $key{$i} = Gtk2::Button->new("${i}");
- $key{$i}->signal_connect(clicked => \&KeyPressed, $i);
- $special->attach_defaults($key{$i}, $n, $n+1, 0, 1);
- $key{$i}->show();
- $n++;
-}
-$special->show();
+my $keypad = gen_table(4, 3, TRUE, 2, 2, [1, 2, 3, 4, 5, 6, 7, 8, 9, '*', 0, '#']);
+
+my $fkeys = gen_table(6, 2, TRUE, 2, 2,
+ ['_Redial', 'S_ettings', 'Director_y', 'Hel_p', 'Men_u', 'snom', '_', '_',
+ '_Conference', '_Transfer', 'H_old', '_DND']);
+
+my $pkeys = gen_table(6, 2, TRUE, 2, 2, ['P1', 'P7', 'P2', 'P8', 'P3', 'P9', 'P4',
+ 'P10', 'P5', 'P11', 'P6', 'P12']);
+
+my $softkeys = gen_table(1, 4, FALSE, 0, 6, ['F1', 'F2', 'F3', 'F4']);
+
+$g_arrows{up} = Gtk2::Arrow->new('up', 'none');
+$g_arrows{up}->show();
+$g_arrows{down} = Gtk2::Arrow->new('down', 'none');
+$g_arrows{down}->show();
+$g_arrows{left} = Gtk2::Arrow->new('left', 'none');
+$g_arrows{left}->show();
+$g_arrows{right} = Gtk2::Arrow->new('right', 'none');
+$g_arrows{right}->show();
+
+my $navi = gen_table(3, 5, FALSE, 0, 0,
+ ['_', '_', 'ARROWSup', '_', '_', 'X', 'ARROWSleft', '_', 'ARROWSright', 'OK', '_', '_', 'ARROWSdown', '_', '_']);
+
+my $output = gen_table(2, 3, FALSE, 2, 2, ['-', '+', '_', '_Mute', '_Speaker', '_Headset']);
+
+my $special = gen_table(1, 2, FALSE, 0, 2, ['Record', 'Retrieve']);