#! /usr/bin/perl use strict; my $txt; my $i = 0; my $barwidth = 25; my @data = ; &gen( $_, @data ) for 1..2; open( my $fh, ">", "xipergrid2.grid" ) || die; print $fh "; grid: xipergrid2\n; generated: " . localtime() . "\n\n[Groups]\nNumberOfGroups = $i\n\n"; print $fh $txt; sub gen { my( $m, @lines ) = @_; foreach my $line ( @lines ) { chomp( $line ); if( $line =~ m{^\s*$} || $line =~ m{^\s*#} ) { next } my( $t, $g ) = split( "=", $line ); my( $t_from, $t_to ) = split( "-", $t ); $t_to ||= $t_from; my( $t_from_x, $t_from_y ) = split( ",", $t_from ); my( $t_to_x, $t_to_y ) = split( ",", $t_to ); $t_to_x++ if $t_to_x ne '@'; $t_to_y++ if $t_to_y ne '@'; my( $g_dock ) = substr( $g, 0, 2 ); $g = substr( $g, 2 ); my( $g_width, $g_height ) = split( "x", $g ); $g_width = { 0=>"/6", 1=>"/3", 2=>"/2", 3=>"/3*2", 4=>"/6*5", 5=>"", 60=>"/10*6", 80=>"/5*4" }->{$g_width}; $g_height = { 0=>"/6", 1=>"/3", 2=>"/2", 3=>"/3*2", 4=>"/6*5", 5=>"", 60=>"/10*6", 80=>"/5*4" }->{$g_height}; print "trigger: from ($t_from_x,$t_from_y), to ($t_to_x,$t_to_y)\n"; print "grid: dock $g_dock, width $g_width, height $g_height\n"; print "\n"; $i++; $txt .= "[$i]\n"; #$txt .= "; $line\n"; if( $t_from_y eq '@' ) { $txt .= "TriggerTop = [Monitor${m}Top]+([Monitor${m}Height]/2)-$barwidth\n" } else { $txt .= "TriggerTop = [Monitor${m}Top]+([Monitor${m}Height]/14*$t_from_y)\n" } if( $t_to_y eq '@' ) { $txt .= "TriggerBottom = [Monitor${m}Top]+([Monitor${m}Height]/2)+$barwidth\n" } else { $txt .= "TriggerBottom = [Monitor${m}Top]+([Monitor${m}Height]/14*$t_to_y)\n" } if( $t_from_x eq '@' ) { $txt .= "TriggerLeft = [Monitor${m}Left]+([Monitor${m}Width]/2)-$barwidth\n" } else { $txt .= "TriggerLeft = [Monitor${m}Left]+([Monitor${m}Width]/14*$t_from_x)\n" } if( $t_to_x eq '@' ) { $txt .= "TriggerRight = [Monitor${m}Left]+([Monitor${m}Width]/2)+$barwidth\n" } else { $txt .= "TriggerRight = [Monitor${m}Left]+([Monitor${m}Width]/14*$t_to_x)\n" } if ( $g_dock =~ m{[clr]c} ) { $txt .= "GridTop = [Monitor${m}Top]+([Monitor${m}Height]/2)-(([Monitor${m}Height]$g_height)/2)\n" } elsif( $g_dock =~ m{t} ) { $txt .= "GridTop = [Monitor${m}Top]\n" } elsif( $g_dock =~ m{b} ) { $txt .= "GridTop = [Monitor${m}Bottom]-([Monitor${m}Height]$g_height)\n" } if ( $g_dock =~ m{[clr]c} ) { $txt .= "GridBottom = [Monitor${m}Top]+([Monitor${m}Height]/2)+(([Monitor${m}Height]$g_height)/2)\n" } elsif( $g_dock =~ m{t} ) { $txt .= "GridBottom = [Monitor${m}Top]+([Monitor${m}Height]$g_height)\n" } elsif( $g_dock =~ m{b} ) { $txt .= "GridBottom = [Monitor${m}Bottom]\n" } if ( $g_dock =~ m{[ctb]c} ) { $txt .= "GridLeft = [Monitor${m}Left]+([Monitor${m}Width]/2)-(([Monitor${m}Width]$g_width)/2)\n" } elsif( $g_dock =~ m{l} ) { $txt .= "GridLeft = [Monitor${m}Left]\n" } elsif( $g_dock =~ m{r} ) { $txt .= "GridLeft = [Monitor${m}Right]-([Monitor${m}Width]$g_width)\n" } if ( $g_dock =~ m{[ctb]c} ) { $txt .= "GridRight = [Monitor${m}Left]+([Monitor${m}Width]/2)+(([Monitor${m}Width]$g_width)/2)\n" } elsif( $g_dock =~ m{l} ) { $txt .= "GridRight = [Monitor${m}Left]+([Monitor${m}Width]$g_width)\n" } elsif( $g_dock =~ m{r} ) { $txt .= "GridRight = [Monitor${m}Right]\n" } $txt .= "\n"; } # end foreach line } # end gen() __DATA__ # syntax: trigger=grid # trigger: from_x,from_y[-to_x,to_y] # x is 0-13, y is 0-13, @ is centered # grid: dock,widthxheight # dock: t=top,b=bottom,l=left,r=right,c=center # tl, tr, br, bl tc, rc, bc, lc cc # width/height: # 0 = 15% # 1 = 1/3 screen # 2 = 1/2 screen # 3 = 2/3 screen # 4 = 85% # 5 = 1/1 screen # 9 = 4/5 screen # top center @,0=tc1x0 @,1=tc1x1 @,2=tc1x2 @,3=tc1x3 @,4=tc1x4 @,4-@,5.5=tc1x5 # bottom center @,13=bc1x0 @,12=bc1x1 @,11=bc1x2 @,10=bc1x3 @,9=bc1x4 @,7.5-@,9=bc1x5 # left center 0,@=lc0x1 1,@=lc1x1 2,@=lc2x1 3,@=lc3x1 4,@=lc4x1 4,@-5.5,@=lc5x1 # right center 13,@=rc0x1 12,@=rc1x1 11,@=rc2x1 10,@=rc3x1 9,@=rc4x1 7.5,@-9,@=rc5x1 # top left 0,0=tl0x0 1,0=tl1x0 2,0=tl2x0 3,0=tl3x0 4,0=tl4x0 0,1=tl0x1 1,1=tl1x1 2,1=tl2x1 3,1=tl3x1 4,1=tl4x1 0,2=tl0x2 1,2=tl1x2 2,2=tl2x2 3,2=tl3x2 4,2=tl4x2 0,3=tl0x3 1,3=tl1x3 2,3=tl2x3 3,3=tl3x3 4,3=tl4x3 0,4=tl0x4 1,4=tl1x4 2,4=tl2x4 3,4=tl3x4 4,4=tl4x4 # top 5,0-8,0=tl5x0 5,1-8,1=tl5x1 5,2-8,2=tl5x2 5,3-8,3=tl5x3 5,4-8,4=tl5x4 # top right 13,0=tr0x0 12,0=tr1x0 11,0=tr2x0 10,0=tr3x0 9,0=tr4x0 13,1=tr0x1 12,1=tr1x1 11,1=tr2x1 10,1=tr3x1 9,1=tr4x1 13,2=tr0x2 12,2=tr1x2 11,2=tr2x2 10,2=tr3x2 9,2=tr4x2 13,3=tr0x3 12,3=tr1x3 11,3=tr2x3 10,3=tr3x3 9,3=tr4x3 13,4=tr0x4 12,4=tr1x4 11,4=tr2x4 10,4=tr3x4 9,4=tr4x4 # right 13,5-13,8=tr0x5 12,5-12,8=tr1x5 11,5-11,8=tr2x5 10,5-10,8=tr3x5 9,5-9,8=tr4x5 # bottom right 13,13=br0x0 12,13=br1x0 11,13=br2x0 10,13=br3x0 9,13=br4x0 13,12=br0x1 12,12=br1x1 11,12=br2x1 10,12=br3x1 9,12=br4x1 13,11=br0x2 12,11=br1x2 11,11=br2x2 10,11=br3x2 9,11=br4x2 13,10=br0x3 12,10=br1x3 11,10=br2x3 10,10=br3x3 9,10=br4x3 13,9=br0x4 12,9=br1x4 11,9=br2x4 10,9=br3x4 9,9=br4x4 # bottom 5,13-8,13=br5x0 5,12-8,12=br5x1 5,11-8,11=br5x2 5,10-8,10=br5x3 5,9-8,9=br5x4 # bottom left 0,13=bl0x0 1,13=bl1x0 2,13=bl2x0 3,13=bl3x0 4,13=bl4x0 0,12=bl0x1 1,12=bl1x1 2,12=bl2x1 3,12=bl3x1 4,12=bl4x1 0,11=bl0x2 1,11=bl1x2 2,11=bl2x2 3,11=bl3x2 4,11=bl4x2 0,10=bl0x3 1,10=bl1x3 2,10=bl2x3 3,10=bl3x3 4,10=bl4x3 0,9=bl0x4 1,9=bl1x4 2,9=bl2x4 3,9=bl3x4 4,9=bl4x4 # left 0,5-0,8=bl0x5 1,5-1,8=bl1x5 2,5-2,8=bl2x5 3,5-3,8=bl3x5 4,5-4,8=bl4x5 # center 6.5,6.5-6.5,6.5=cc1x1 6,6-7,7=cc60x3 5.5,5.5-7.5,7.5=cc3x80 5,5-8,8=cc80x4