LINUX.ORG.RU

Сообщения parovoz

 

Другой календарь и гном новичка

Russian Fedora Remix 11

Gnome 2.28

Compiz+Emerald

Icons : Black-Gnome

Gtk: Gray-Flat

Увидев скриншот KozakUA. Поставил его творение себе, через пару недель было решено добавить в календарь разделители недель. Еще через пару решил сделать статичным текущий день недели, и чтобы остальные просто сдвигались.

Вот собственно код:

#!/usr/bin/perl
use Term::ANSIColor;
$time=scalar(localtime);
chomp($time);
#Wed Sep 9 16:22:46 2009
$time =~ /(\w*)\s(\w*)\s*(\d*)\s([\d:]*)\s(\d*)/;

$pointer = 0; 
$lim =0;
$left =@ARGV[1]; 
$right =@ARGV[2];

#$left = -1;
#$right = -1;

if ($1 eq 'Mon') {$pointer =$left+ 6;}
if ($1 eq 'Tue') {$pointer =$left+ 5;}
if ($1 eq 'Wed') {$pointer =$left+ 4;}
if ($1 eq 'Thu') {$pointer =$left+ 3;}
if ($1 eq 'Fri') {$pointer =$left+ 2;}
if ($1 eq 'Sat') {$pointer =$left+ 1;}
if ($1 eq 'Sun') {$pointer =$left+ 0;}

while ($pointer-7 > 0) {$pointer=$pointer-7;} 
  
if (($2 eq 'Jan' ) or ($2 eq 'March' ) or ($2 eq 'May' ) or ($2 eq 'July' ) or ($2 eq 'Aug' ) or ($2 eq 'Oct' ) or ($2 eq 'Dec' ))

	{$lim=31; $lim_low = 30; $lim_hi=30;}
else 
	{$lim=30; $lim_low = 31; $lim_hi=31;}

if ($2 eq 'Jan') 
	{
		$lim_low = 31; 
		if ($5 % 4) {$lim_hi= 28;}
		else {$lim_hi = 27;	}
	}
if ($2 eq 'Feb')	
	{
		if ($5 % 4) {$lim= 28;}
		else {$lim = 27;}		
	}
if  ($2 eq 'Dec')
	{
		$lim_hi = 31;
	}
if ($left==-1){ $left=$3-1;}
if ($right == -1){ $right = $lim - $3; 	}

for ($i=0;($left-$i>-1) and ($3-$i>0);$i++) {@arr[$left-$i]=$3-$i;  }
for ($i=0;($left-$3-$i)>-1;$i++) {@arr[$left-$3-$i]=$lim_low-$i;}

for ($i=1;($left+$i<$right+$left) and ($3+$i-1<$lim);$i++) {@arr[$left+$i]=$3+$i;}
for ($i=1;($left+$i+$lim-$3<$right+$left+1);$i++) {@arr[$left+$i+$lim-$3]=$i;}

if (@ARGV[0] == 1)
{ 
for($i=0;$i<($left);$i++)
{ 
	$p2=$i;
	if ($i==$pointer) {print "@arr[$i]| "; $pointer=$pointer+7; } 
	else {	print "@arr[$i] "; }
	 
	
}
}
if (@ARGV[0] == 2)
{
	 
	  {print "[$3]";}
}
if (@ARGV[0] == 3)
{
 
	if ($1 eq 'Mon') {$pointer =$left + 6;}
	if ($1 eq 'Tue') {$pointer =$left + 5;}
	if ($1 eq 'Wed') {$pointer =$left + 4;}
	if ($1 eq 'Thu') {$pointer =$left + 3;}
	if ($1 eq 'Fri') {$pointer =$left + 2;}
	if ($1 eq 'Sat') {$pointer =$left + 1;}
	if ($1 eq 'Sun') {$pointer =$left + 0;}

 
	for($i=$left+1;($i<$left+$right+1) ;$i++)
		{   if ($i==$pointer+1)		 { print "| @arr[$i]"; $pointer=$pointer+7;  }
			else { print " @arr[$i]"; }
			#print "@data[($3)..$i]";
		}
}

На скриншоте второй и третий параметр скрипта 15. Первый параметр позволяет установить количество дней до текущего, второй - количество дней после текущего. Запустив скрипт с параметрами x,-1, -1, получим оригинальный календарь с разделителями недель.

>>> Просмотр (1920x1080, 521 Kb)

 , , ,

parovoz
()

RSS подписка на новые темы