'GTK+'에 해당되는 글 4건

  1. 2009.02.26 Perl 다이어리??
  2. 2008.12.11 Goo::Canvas
  3. 2008.10.07 Tutorial Availability & Introduction
  4. 2008.10.07 프로야구 순위 출력 (2)

Naver Perl Community & Study Cafe


2009.02.26 02:19

Perl 다이어리??

Perl 다이어리를 하나 만드려고


예전에 손을 땠던 gtk를 다시 잡고 있다.

다시 감잡는데만 꾀 많은 시간을 투자 한 듯...


체크박스를 출력할 때 처음부터 출력한 형태로 나오게 하고 싶었는데...

막상 어떻게 해야할지 감이 오질 않았다.


gtk2에 대한 스터디북을 보면 예제와 설명밖에 없어.. 

버튼에 대한 레퍼런스를 이리저리 찾던 중 


사실;; 봐도 깅가밍가해서.. 하나씩 테스트를 시도했다.

윽.. 의외로 간단...

$check_button->set_active (TRUE);

이 TRUE를 몰라서 헤메다니.. 하아;;



그리고 달력을 넣으려니...



Gtk2::Calendar->new;

이런것이 떡하니 버티고 있으니 하하하 좋다~ㅋㅋ



휴;; 하루동안 열심히 달렸더니 대략의 틀은 나왔음...;




왠지.. 이제까지 만들었던것을 

합쳐놓은 듯한...조잡한 느낌이 든다...


새로운 것이라곤 캘린더 뿐 ㅡ.ㅠ

URL을 지워야 되는데 쳇;;

일단 구글 프로젝트에 커밋!!



padre 정말 좋네요~^^


번역해 주신 keedi님 감사합니다^^
신고
Trackback 0 Comment 0
2008.12.11 11:06

Goo::Canvas


얼마전 cpan에서 테트리스게임을 구현한 코드를 발견하였다.

yewenbin이란 중국사람이 만들었는데 멋지다.



소스 코드를 다운받아서 분석하던 중 ( perl은 소스코드를 바로 확인할 수 있어 좋은듯 )

Goo::Canvas 라는 모듈을 발견하고 이게 뭘까?? cpan에서 검색해 보았다.

Goo::Canvas

Perl interface to the GooCanvas
Goo-Canvas-0.05 - 29 Mar 2008 - 叶文彬 


오옷!! Gtk+ 를 사용하여 자동으로 그림을 그려주는 모듈인데

재밌는 기능이 많은듯 +_+ 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
my $canvas = Goo::Canvas->new();
$canvas->set_size_request(450, 280); #Windows 크기와 동일하게 지정
$canvas->set_bounds(0, 0, 450, 280); #출력범위 설정

my $root = $canvas->get_root_item();
my $rect = Goo::Canvas::Rect->new(
$root, 20, 20, 180, 180, #처음 x(가로 좌표) , 처음 y (세로자표) , 가로넓이 , 세로 넓이 
        'line-width' => 2, # 테두리 두께
        'radius-x' => 0, #끝을 뭉퉁하게~
        'radius-y' => 0,
        'stroke-color' => 'blue', #테두리 색
        'fill-color' => 'skyblue' # rect를  채울 색 
);
rect->signal_connect('button-press-event', # 버튼이 눌러졌을때 이벤트
                          \&on_rect_button_press);


4각의 틀을 그려주고 그 틀에 이벤트를 넣는것,

글자 출력 및 회전(rotate) 기능까지 있어

yewenbin이 테트리스 및 지뢰찾기까지 

이 모듈을 사용하여 구현한 것을 확인 할 수 있었다.



테스트를 코드를 작성하던 중

좀 재밌게 응용할 수 없을까? 해서 

사각틀을 클릭하면 문자열이 프로펠러처럼

슝슝~ 돌아가는 프로그램을 작성해 보았다.

Glib::Timeout을 사용하면 알아서 작동을 후욱후욱...



신고
Trackback 1 Comment 0
2008.10.07 21:19

Tutorial Availability & Introduction


Chapter 1. Tutorial Availability

이 문서는 온라인에 있는 http://gtk2-perl.sourceforge.net/tutorial  를 참조하고 있다.

튜토리얼의 초기버전은 C interface 와 함께 작성되었다.

이 입문서는 SGML과 HTML로 GTK+ Release에 관한 소스 코드가  각각 분류되었다.

두개의 배포판중 당신에게 맞는 것 중 하나를 선택하여 쓰길 바란다.

이 튜토리얼의 패키지로  다운 받으려면  ftp://ftp.gtk.org/pub/gtk/tutorial 

여기는 여러가지 형식의 튜토리얼이 포함되어 있다.

이 패키지는 오프라인에서나 프린트 출력을 하는데 유용하게 사용될 것이다.

Chapter 2. Introduction

GTK ( GIMP ToolKit) 은  GUI를 만들기 위한 라이브러리이다.

그것은 LGPL 라이센스를 가지고 있다.

에잇!! 해석하다.... 젠장...


여기 소개가 자세하게 되어 있으니 소개 패스!

GTK2-perl은 GTK 2.x 버전이 바인딩 되었으며 다양한 라이브러리들을 포함하고 있는 모듈이다.

이 모듈은 gtk 를 만들기 쉽고 Gnom application을 자연스럽고, 펄스럽게 객체지향 문법을 사용하여 작성한다.


Chapter 3. Using GTK+ in Perl and This Tutorial

3장은 구조등이 나와있는데 일단 스킵하기로 하자. 중요한 내용들은 4장부터 시작이니 고고!!

시간날때 3장을 다시 번역~ ^^/
신고
Trackback 0 Comment 0
2008.10.07 16:00

프로야구 순위 출력

얼마전 해커쏜에 참여하여 간단한 프로그램을 하나 만들었다.
그 당시 a3r0님께 많은 도움을 받아서 그것을 바로 흡수!!
타자 및 투수의 정보까지 처리하는 루틴까지 만들었던 기억이 난다.

 

소개하자면 일명 Baseball::KBO
한국야구위원회
(http://www.koreabaseball.com/ ) 참고하여 만들어 졌으며

사이트의 정보들을 LWP::Simple 모듈을 이용하여 웹에서 해당 정보들을 얻어온

정규식을 이용해서 원하는 정보들을 찾아 저장하는 형식으로 코드를 작성하였다.

 

그 뒤 GTK문서를 보고 적당한 예제가 하나 있어 그 예제를 참고하여
GUI모드로 구현을 해보았다. 소스는 허접하지만...
누군가 더 나은 코드를 코멘트로 적어 줄까 싶어 공개한다.

블로그를 시작한지 글을 8건이나 썼는데... 아직 코맨트가 하나도 남겨지지 않았다. ㅠㅠ

#!/usr/bin/perl
=doc
This example shows one way to colorize rows in a SimpleList.
The basic approach is to add a color attribute to the columns
in the TreeView
(remember that a SimpleList is a TreeView), and store the color information in a hidden column in the model. Since the Glib type system will be used to fetch the color attribute, the hidden column must be of type Gtk2::Gdk::Color, which requires us to add a custom column type to SimpleList. =cut use strict; use warnings; use Glib qw/TRUE FALSE/; use Gtk2 -init; use Gtk2::SimpleList; use Encode qw(decode); use LWP::Simple; # in gtk+ 2.0.x, the cell renderers don't have the cell_background_gdk # property, so this test doesn't work right and spews messages. object # properties require no extra binding glue, so if you've upgraded to # gtk+ 2.2.x or newer after installing Gtk2-Perl, this test will magically # start to work. thus, this is one of those rare times when we need to # use the lower-case runtime version check. my $page; my $url = 'http://www.koreabaseball.com/record/standings.asp'; # 순위 $page = LWP::Simple::get($url); $page =~ m{<tr class="style26">(.*?)<tr>}s; #정규식을 사용하여 목록을 저장 my $menu = $1; my @menu = $menu =~ m{>(.*?)</td>}g; sub _d { decode("cp-949", shift) }; #한글 사용을 위한 decode



my
$msg = Gtk2->check_version (2,2,0); die "This example requires gtk+ 2.2.0, but we're linked against " . join (".", Gtk2->get_version_info)."\n" . "$msg\n" if $msg; # add a new hidden column that holds a Gtk2::Gdk::Color. Gtk2::SimpleList->add_column_type( 'color', type => 'Gtk2::Gdk::Color', renderer => 'Gtk2::CellRendererText', attr => 'hidden', ); #배열의 값들을 순서대로 넣어서 객체를 생성 my $slist = Gtk2::SimpleList->new ( _d($menu[0]) => 'int', _d($menu[1]) => 'text', _d($menu[2]) => 'text', _d($menu[3]) => 'text', _d($menu[4]) => 'text', _d($menu[5]) => 'text', _d($menu[6]) => 'text', _d($menu[7]) => 'text', _d($menu[8]) => 'text', _d($menu[9]) => 'text', _d($menu[10]) => 'text', 'row color' => 'color', ); # add a color attribute to each column, getting the color information # from the hidden column. # foreach my $col ($slist->get_columns) { foreach my $cell ($col->get_cell_renderers) { $col->add_attribute ($cell, cell_background_gdk => 11); }#여기서 객체의 수를 잘 명시 해 주어야 한다. 이걸 안해줘서 고생... ㅡ.ㅠ }
# now put some data into the list; note the data for the hidden column. # we'll leave a couple of rows uncolored.

# 정규식을 사용하여 값을 읽어와서 출력
$page =~ m{<table width="715" border="0" cellpadding="0" cellspacing="1" bgcolor="dcdcdc">(.*?)</table>}s; my $str = $1; my @array = $str =~ m{<tr class="style9" bgcolor="#f9f9f9">(.*?)</tr>}sg; my $x=0; foreach my $str2 (@array) { my @array2 = $str2 =~ m{>(.*?)</td>}g; my $y = 0; foreach my $str3 (@array2){ if($y==0){ ${$slist->{data}}[$x] = $x+1; }else{ ${$slist->{data}}[$x]->[$y] = _d($str3); }
         $y++;	
	if($y==11 && $x%2){
	${$slist->{data}}[$x]->[$y]	= Gtk2::Gdk::Color->new (0xFFFF, 0xFFFF, 0xCCCC)
	} #짝수에만 베이지 색을 넣었음
  }
  $x++;
}
# the rest is uninteresting. my $win = Gtk2::Window->new; $win->set_title (_d('프로야구 순위 ')); $win->set_border_width (6); $win->signal_connect (delete_event => sub { #종료를 눌렀을 때 다이알로그 표시 my ($button, $url) = @_; my $message = Gtk2::MessageDialog->new ($button->get_toplevel, [], 'info', 'ok', _d("Perl_Mania\n\n"). _d("한국 프로야구 순위 출력\n"). _d("http://www.koreabaseball.com 를 참고\n"). _d("\n"). "-by H0ney" ); $message->run; $message->destroy; Gtk2->main_quit }); $win->add ($slist); $win->show_all; Gtk2->main;


원문의 코드가 짤리기 때문에... 링크 : http://codepad.org/kZj8bjXn



롯데가 결국 3위로  정규시즌을 마감했다. 조금만 더 힘을내면 좋았을껄.. 하는 아쉬움이 크다.

이번에는 한국시리즈 가야지~ 롯데 아자아자!



이건.. 뭐... 알림창 한번 사용해 보고 싶었다...라고 생각해 주시길;;

별 의미는 없지만.. 그래도 이뻐서~

누구나 이런거 만들잖아욧!  >.<




덤으로... 콘솔용 EXE 파일도 배포(?)

인자값으로 도움말이나 투수 & 타자 & 모두 를 넣어 보시길..





낙타 아이콘 이쁘다는...
신고
Trackback 0 Comment 2