# �vers�ttning av drakwizard-sv-sv.po till svenska
# �vers�ttning av drakwizard-sv.po till svenska
# Drakwizard wizard's Portable Object Template file
# Copyright (C) 2002 Free Software Foundation, Inc.
#
# NOTE: sometimes "\q" appear in msgid around a word; the \q sequences
# are for quote marks; put them in the translation too; or put proper
# quotation marks for your language.
# Mattias Newzella <newzella@linux.nu>, 2002.
#
#
msgid ""
msgstr ""
"Project-Id-Version: drakwizard-sv\n"
"POT-Creation-Date: 2002-09-12 23:31+0200\n"
"PO-Revision-Date: 2002-09-14 21:08+0000\n"
"Last-Translator: Mattias Newzella <newzella@linux.nu>\n"
"Language-Team: svenska <sv@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.0beta2\n"

#: ../client_wizard/client.wiz_.c:1
msgid ""
"A client of your local network is a machine connected to the network having "
"its own name and IP number."
msgstr ""
"En klient p� ditt lokala n�tverk �r en dator ansluten till n�tverket som har "
"ett eget namn och IP-nummer."

#: ../client_wizard/client.wiz_.c:2 ../dns_wizard/dns.wiz_.c:2
msgid "This is not a valid address... press next to continue"
msgstr "Detta �r inte en giltig adress, klicka p� N�sta f�r att forts�tta"

#: ../client_wizard/client.wiz_.c:3
msgid ""
"Press next if you want to change the already existing value, or back to "
"correct your choice."
msgstr ""
"Klicka p� N�sta om du vill �ndra befintligt v�rde, eller Tillbaka f�r att "
"korrigera ditt val."

#: ../client_wizard/client.wiz_.c:4 ../db_wizard/db.wiz_.c:1
#: ../dhcp_wizard/dhcp.wiz_.c:3 ../dns_wizard/dns.wiz_.c:4
#: ../firewall_wizard/firewall.wiz_.c:4 ../ftp_wizard/ftp.wiz_.c:2
#: ../news_wizard/news.wiz_.c:4 ../nfs_wizard/nfs.wiz_.c:2
#: ../postfix_wizard/postfix.wiz_.c:2 ../proxy_wizard/proxy.wiz_.c:36
#: ../samba_wizard/samba.wiz_.c:21 ../server_wizard/server.wiz_.c:30
#: ../web_wizard/web.wiz_.c:4
msgid "Congratulations"
msgstr "Gratulerar"

#: ../client_wizard/client.wiz_.c:5
msgid "DNS Client Wizard"
msgstr "Klientguide f�r DNS"

#: ../client_wizard/client.wiz_.c:6
msgid ""
"The wizard collected the following parameters needed to add a client to your "
"network:"
msgstr ""
"Guiden samlade in f�ljande parametrar som beh�vs f�r att l�gga till en "
"klient till n�tverket:"

#: ../client_wizard/client.wiz_.c:7 ../dhcp_wizard/dhcp.wiz_.c:8
#: ../dns_wizard/dns.wiz_.c:6
msgid "System error, no configuration done"
msgstr "Systemfel, ingen konfiguration utf�rd"

#: ../client_wizard/client.wiz_.c:8
msgid "Client name"
msgstr "Klientnamn"

#: ../client_wizard/client.wiz_.c:9
msgid "Adding a new client to your network"
msgstr "L�gger till en ny klient till n�tverket"

#: ../client_wizard/client.wiz_.c:10 ../dhcp_wizard/dhcp.wiz_.c:9
#: ../dns_wizard/dns.wiz_.c:7 ../firewall_wizard/firewall.wiz_.c:8
#: ../ftp_wizard/ftp.wiz_.c:4 ../news_wizard/news.wiz_.c:8
#: ../proxy_wizard/proxy.wiz_.c:11 ../samba_wizard/samba.wiz_.c:5
#: ../server_wizard/server.wiz_.c:8 ../web_wizard/web.wiz_.c:8
msgid "Configure"
msgstr "Konfigurera"

#: ../client_wizard/client.wiz_.c:11
msgid "Client identification:"
msgstr "Klientidentifiering:"

#: ../client_wizard/client.wiz_.c:12
msgid "(you don't need to type the domain after the name)"
msgstr "(du beh�ver inte ange dom�nen efter namnet)"

#: ../client_wizard/client.wiz_.c:13
msgid ""
"If you choose to configure now, you will automatically continue with the "
"Client configuration"
msgstr ""
"Om du v�ljer att konfigurera nu kommer du automatiskt att forts�tta med "
"konfigurationen av klienten"

#: ../client_wizard/client.wiz_.c:14
msgid ""
"The server will use the informations you enter here to make the name of the "
"client available to other machines into your network."
msgstr ""
"Servern kommer att anv�nda informationen du anger h�r f�r att g�ra namnet p� "
"klienten tillg�ngligt f�r alla andra datorer i ditt n�tverk."

#: ../client_wizard/client.wiz_.c:15
msgid "You have entered a machine name or an IP number already used."
msgstr "Du har angett ett datornamn eller en IP-adress som redan anv�nds."

#: ../client_wizard/client.wiz_.c:16
msgid "The wizard successfully added the client."
msgstr "Guiden lyckades med att l�gga till klienten."

#: ../client_wizard/client.wiz_.c:17
msgid "Name of the machine:"
msgstr "Datorns namn:"

#: ../client_wizard/client.wiz_.c:18 ../db_wizard/db.wiz_.c:9
#: ../dhcp_wizard/dhcp.wiz_.c:12 ../dns_wizard/dns.wiz_.c:12
#: ../ftp_wizard/ftp.wiz_.c:7 ../proxy_wizard/proxy.wiz_.c:17
#: ../samba_wizard/samba.wiz_.c:7 ../server_wizard/server.wiz_.c:13
#: ../web_wizard/web.wiz_.c:11
msgid "OK"
msgstr "OK"

#: ../client_wizard/client.wiz_.c:19
msgid ""
"Your client on the network will be identified by name, as in clientname."
"company.net. Every machine on the network must have a (unique) IP address, "
"in the usual dotted syntax."
msgstr ""
"Din klient p� n�tverket kommer att bli identifierad genom namn, som t ex "
"klientnamn.f�retag.se. Varje dator p� n�tverket m�ste ha en unik IP-adress i "
"den vanliga punktsyntaxen."

#: ../client_wizard/client.wiz_.c:20
msgid ""
"Note that the given IP number and client name should be unique in the "
"network."
msgstr ""
"Observera att angivet IP-nummer och klientnamn m�ste vara unika i n�tverket."

#: ../client_wizard/client.wiz_.c:21
msgid "IP number of the machine:"
msgstr "Datorns IP-nummer:"

#: ../client_wizard/client.wiz_.c:22 ../db_wizard/db.wiz_.c:18
#: ../dhcp_wizard/dhcp.wiz_.c:15 ../dns_wizard/dns.wiz_.c:19
#: ../firewall_wizard/firewall.wiz_.c:19 ../ftp_wizard/ftp.wiz_.c:14
#: ../news_wizard/news.wiz_.c:20 ../nfs_wizard/nfs.wiz_.c:4
#: ../postfix_wizard/postfix.wiz_.c:16 ../proxy_wizard/proxy.wiz_.c:48
#: ../samba_wizard/samba.wiz_.c:33 ../server_wizard/server.wiz_.c:49
#: ../time_wizard/time.wiz_.c:53 ../web_wizard/web.wiz_.c:20
msgid "Quit"
msgstr "Avsluta"

#: ../client_wizard/client.wiz_.c:23 ../db_wizard/db.wiz_.c:19
#: ../postfix_wizard/postfix.wiz_.c:17 ../proxy_wizard/proxy.wiz_.c:47
#: ../samba_wizard/samba.wiz_.c:32
msgid "Network not configured yet"
msgstr "N�tverk inte konfigurerat �nnu"

#: ../client_wizard/client.wiz_.c:24
msgid "This wizard will help you in adding a new client in your local DNS."
msgstr ""
"Den h�r guiden hj�lper dig att l�gga till en ny klient i din lokala DNS."

#: ../client_wizard/client.wiz_.c:25
msgid ""
"To accept these values, and add your client, click the Next button or use "
"the Back button to correct them."
msgstr ""
"F�r att acceptera dessa v�rden och f�r att l�gga till din klient, klicka p� "
"N�sta eller anv�nd Tillbaka f�r att korrigera dem."

#: ../client_wizard/client.wiz_.c:26
msgid "Press next to begin, or Cancel to leave this wizard."
msgstr "Klicka p� N�sta f�r att b�rja eller Avbryt f�r att avsluta guiden."

#: ../client_wizard/client.wiz_.c:27 ../db_wizard/db.wiz_.c:23
#: ../postfix_wizard/postfix.wiz_.c:25 ../proxy_wizard/proxy.wiz_.c:52
#: ../samba_wizard/samba.wiz_.c:36
msgid ""
"Press next to configure these parameters now, or Cancel to exit this wizard."
msgstr ""
"Klicka p� N�sta f�r att konfigurera dessa v�rden nu, eller Avbryt f�r att "
"avsluta guiden."

#: ../client_wizard/client.wiz_.c:28 ../dns_wizard/dns.wiz_.c:21
msgid "You need to be root to run this wizard"
msgstr "Du m�ste vara root f�r att k�ra den h�r guiden"

#: ../client_wizard/client.wiz_.c:29
msgid "Client IP:"
msgstr "Klient-IP:"

#: ../client_wizard/client.wiz_.c:30 ../db_wizard/db.wiz_.c:24
#: ../postfix_wizard/postfix.wiz_.c:27 ../proxy_wizard/proxy.wiz_.c:31
#: ../samba_wizard/samba.wiz_.c:17
msgid ""
"You have to configure the basic network parameters before launching this "
"wizard."
msgstr ""
"Du m�ste konfigurera de grundl�ggande n�tverksparametrarna innan du startar "
"den h�r guiden."

#: ../client_wizard/client.wiz_.c:31 ../dns_wizard/dns.wiz_.c:24
#: ../postfix_wizard/postfix.wiz_.c:29 ../proxy_wizard/proxy.wiz_.c:55
msgid "Warning:"
msgstr "Varning:"

#: ../db_wizard/db.wiz_.c:2
msgid "Configuration Wizard"
msgstr "Konfigurationsguide"

#: ../db_wizard/db.wiz_.c:3
msgid "MySQL Database Server"
msgstr "MySQL-databasserver"

#: ../db_wizard/db.wiz_.c:4
msgid "Please enter a username and password to add a user"
msgstr "Ange ett anv�ndarnamn och ett l�senord f�r att l�gga till en anv�ndare"

#: ../db_wizard/db.wiz_.c:5
msgid "User addition"
msgstr "L�gg till anv�ndare"

#: ../db_wizard/db.wiz_.c:6
msgid ""
"To accept this value, and configure your server, click on \\qConfirm\\q or "
"use the Back button to correct them."
msgstr ""
"F�r att acceptera detta v�rde och f�r att konfigurera servern, klicka p� "
"\\qBekr�fta\\q eller anv�nd Tillbaka f�r att korrigera dem."

#: ../db_wizard/db.wiz_.c:7
msgid "The wizard successfully configured your MySQL Database Server"
msgstr "Guiden lyckades med att konfigurera MySQL-databasservern"

#: ../db_wizard/db.wiz_.c:8
msgid "Database Server"
msgstr "Databasserver"

#: ../db_wizard/db.wiz_.c:10
msgid "Root Password:"
msgstr "Root-l�senord:"

#: ../db_wizard/db.wiz_.c:11
msgid "Confirm"
msgstr "Bekr�fta"

#: ../db_wizard/db.wiz_.c:12 ../ftp_wizard/ftp.wiz_.c:8
#: ../web_wizard/web.wiz_.c:14
msgid "Sorry, you must be root to do this..."
msgstr "Tyv�rr, du m�ste vara root f�r att g�ra det h�r."

#: ../db_wizard/db.wiz_.c:13
msgid "Password:"
msgstr "L�senord:"

#: ../db_wizard/db.wiz_.c:14
msgid ""
"If you choose to configure now, you will automatically continue with the "
"MySQL Database configuration"
msgstr ""
"Om du v�ljer att konfigurera nu kommer du automatiskt att forts�tta med "
"konfigurationen av MySQL-databasen"

#: ../db_wizard/db.wiz_.c:15
msgid ""
"This wizard will help you configuring the MySQL Database Server for your "
"network."
msgstr ""
"Den h�r guiden hj�lper dig att konfigurera MySQL-databasservern f�r ditt "
"n�tverk."

#: ../db_wizard/db.wiz_.c:16
msgid "Username:"
msgstr "Anv�ndarnamn:"

#: ../db_wizard/db.wiz_.c:17
msgid "Note: This user will have all permissions"
msgstr "Observera: Den h�r anv�ndaren kommer att ha alla beh�righeter"

#: ../db_wizard/db.wiz_.c:20
msgid "Add"
msgstr "L�gg till"

#: ../db_wizard/db.wiz_.c:21
msgid "Please type a password for the root user:"
msgstr "Ange ett l�senord f�r anv�ndaren root:"

#: ../db_wizard/db.wiz_.c:22
msgid "Configuring the MySQL Database Server"
msgstr "Konfigurerar MySQL-databasservern"

#: ../db_wizard/db.wiz_.c:25
msgid "To run your server, you first need to specify a root password"
msgstr "F�r att k�ra servern m�ste du f�rst ange ett root-l�senord"

#: ../db_wizard/db.wiz_.c:26
msgid "MySQL Database wizard"
msgstr "Guide f�r MySQL-databas"

#: ../db_wizard/db.wiz_.c:27
msgid ""
"The wizard collected the following parameters needed to configure your MySQL "
"Database Server"
msgstr ""
"Guiden samlade in f�ljande parametrar som beh�vs f�r att konfigurera MySQL-"
"databasservern"

#: ../dhcp_wizard/dhcp.wiz_.c:1 ../dns_wizard/dns.wiz_.c:1
#: ../server_wizard/server.wiz_.c:1
msgid "IP addresses are a dotted list of four numbers smaller than 256."
msgstr "IP-adresser �r en lista i form av fyra nummer mindre �n 256."

#: ../dhcp_wizard/dhcp.wiz_.c:2
msgid ""
"Select the range of addresses assigned to the workstations by the DHCP "
"service; unless you have special needs, you can safely accept the proposed "
"values."
msgstr ""
"V�lj adressomf�nget som ska tilldelas arbetsstationer av DHCP-tj�nsten.Om du "
"inte har speciella behov kan du acceptera de f�rvalda v�rdena."

#: ../dhcp_wizard/dhcp.wiz_.c:4
msgid "Highest IP Address:"
msgstr "H�gsta IP-adress:"

#: ../dhcp_wizard/dhcp.wiz_.c:5
msgid "Range of addresses used by dhcp"
msgstr "Adressomf�ng som anv�nds av DHCP"

#: ../dhcp_wizard/dhcp.wiz_.c:6 ../dns_wizard/dns.wiz_.c:5
#: ../firewall_wizard/firewall.wiz_.c:6 ../ftp_wizard/ftp.wiz_.c:3
#: ../news_wizard/news.wiz_.c:7 ../postfix_wizard/postfix.wiz_.c:4
#: ../proxy_wizard/proxy.wiz_.c:37 ../samba_wizard/samba.wiz_.c:22
#: ../server_wizard/server.wiz_.c:33 ../web_wizard/web.wiz_.c:7
msgid ""
"To accept these values, and configure your server, click the Next button or "
"use the Back button to correct them."
msgstr ""
"F�r att acceptera dessa v�rden och f�r att konfigurera servern, klicka p� "
"N�sta eller anv�nd Tillbaka f�r att korrigera dem."

#: ../dhcp_wizard/dhcp.wiz_.c:7
msgid ""
"DHCP is a service that automatically assigns networking addresses to your "
"workstations."
msgstr ""
"DHCP �r en tj�nst som automatiskt tilldelar n�tverksadresser till "
"arbetsstationer."

#: ../dhcp_wizard/dhcp.wiz_.c:10 ../news_wizard/news.wiz_.c:11
#: ../samba_wizard/samba.wiz_.c:25 ../server_wizard/server.wiz_.c:36
msgid "Fix it"
msgstr "Fixa det"

#: ../dhcp_wizard/dhcp.wiz_.c:11
msgid "The wizard successfully configured the DHCP services of your server."
msgstr "Guiden lyckades med att konfigurera DHCP-tj�nsterna p� servern."

#: ../dhcp_wizard/dhcp.wiz_.c:13
msgid "This wizard will help you configuring the DHCP services of your server."
msgstr "Den h�r guiden hj�lper dig att konfigurera DHCP-tj�nsterna p� servern."

#: ../dhcp_wizard/dhcp.wiz_.c:14 ../ftp_wizard/ftp.wiz_.c:10
#: ../web_wizard/web.wiz_.c:16
msgid "Warning\\nYou are in dhcp, server may not work with your configuration."
msgstr ""
"Varning\\nDu �r i DHCP, servern kanske inte fungerar med din konfiguration."

#: ../dhcp_wizard/dhcp.wiz_.c:16
msgid ""
"The wizard collected the following parameters needed to configure your DHCP "
"service:"
msgstr ""
"Guiden samlade in f�ljande parametrar som beh�vs f�r att konfigurera DHCP-"
"tj�nsten:"

#: ../dhcp_wizard/dhcp.wiz_.c:17
msgid "Lowest IP Address:"
msgstr "L�gsta IP-adress:"

#: ../dhcp_wizard/dhcp.wiz_.c:18
msgid "DHCP Configuration Wizard"
msgstr "Konfigurationsguide f�r DHCP"

#: ../dhcp_wizard/dhcp.wiz_.c:19
msgid "The IP range specified is not correct"
msgstr "IP-omf�nget som specificerats �r inte korrekt"

#: ../dhcp_wizard/dhcp.wiz_.c:20
msgid "DHCP Wizard"
msgstr "Guide f�r DHCP"

#: ../dhcp_wizard/dhcp.wiz_.c:21
msgid "Configuring the DHCP Server"
msgstr "Konfigurerar DHCP-servern"

#: ../dns_wizard/dns.wiz_.c:3
msgid "DNS Wizard"
msgstr "Guide f�r DNS"

#: ../dns_wizard/dns.wiz_.c:8
msgid ""
"The wizard collected the following parameters needed to configure your DNS "
"service:"
msgstr ""
"Guiden samlade in f�ljande parametrar som beh�vs f�r att konfigurera DNS-"
"tj�nsten:"

#: ../dns_wizard/dns.wiz_.c:9
msgid "Configuring the DNS Server"
msgstr "Konfigurerar DNS-servern"

#: ../dns_wizard/dns.wiz_.c:10
msgid "Secondary DNS Address:"
msgstr "Sekund�r DNS-adress:"

#: ../dns_wizard/dns.wiz_.c:11
msgid "DNS Server Addresses"
msgstr "DNS-serveradresser"

#: ../dns_wizard/dns.wiz_.c:13
msgid ""
"This wizard will help you configuring the DNS services of your server. This "
"configuration will provide a local DNS service for local computers names, "
"with non-local requests forwarded to an outside DNS."
msgstr ""
"Den h�r guiden hj�lper dig att konfigurera DNS-tj�nsterna p� servern. Den "
"h�r konfigurationen tillhandah�ller en lokal DNS-tj�nst f�r lokala "
"datornamn. Icke-lokala f�rfr�gningar vidarebefordras till en DNS p� utsidan."

#: ../dns_wizard/dns.wiz_.c:14
msgid ""
"DNS will allow your network to communicate with the Internet using standard "
"internet host names.  In order to configure DNS, you must provide the IP "
"address of primary and secondary DNS server; usually this address are given "
"by your Internet provider."
msgstr ""
"DNS l�ter ditt n�tverk kommunicera med Internet med hj�lp av datornamn som "
"�r standard p� Internet. F�r att konfigurera DNS m�ste du tillhandah�lla IP-"
"adressen f�r den prim�ra och sekund�ra DNS-servern. Dessa adresser f�r du "
"vanligtvis fr�n din Internetleverant�r."

#: ../dns_wizard/dns.wiz_.c:15
msgid "You have entered an empty address for the DNS server."
msgstr "Du har angett en tom adress f�r DNS-servern."

#: ../dns_wizard/dns.wiz_.c:16
msgid "Press next to leave these values empty, or back to enter a value."
msgstr ""
"Klicka p� N�sta f�r att l�mna dessa v�rden tomma eller Tillbaka f�r att ange "
"ett v�rde."

#: ../dns_wizard/dns.wiz_.c:17
msgid "DNS Configuration Wizard"
msgstr "Konfigurationsguide f�r DNS"

#: ../dns_wizard/dns.wiz_.c:18
msgid "Primary DNS Address:"
msgstr "Prim�r DNS-adress:"

#: ../dns_wizard/dns.wiz_.c:20
msgid ""
"Your setting could be accepted, but you will not be able to identify machine "
"names outside your local network."
msgstr ""
"Inst�llningarna kan accepteras men du kommer inte att kunna identifiera "
"datornamn utanf�r ditt lokala n�tverk."

#: ../dns_wizard/dns.wiz_.c:22
msgid ""
"DNS (Domain Name Server) is the service that puts in correspondence a "
"machine with an internet host name."
msgstr ""

#: ../dns_wizard/dns.wiz_.c:23
msgid "The wizard successfully configured the DNS services of your server."
msgstr "Guiden lyckades med att konfigurera DNS-tj�nsterna p� servern."

#: ../drakwizard.pl_.c:63
msgid "Drakwizard wizard selection"
msgstr "Val av guide"

#: ../drakwizard.pl_.c:64
msgid "Please select a wizard"
msgstr "V�lj en guide"

#: ../drakwizard.pl_.c:101
#, c-format
msgid ""
"%s is not installed\n"
"Click \"Next\" to install or \"Cancel\" to quit"
msgstr ""
"%s �r inte installerad.\n"
"Klicka p� \"N�sta\" f�r att installera eller \"Avbryt\" f�r att avsluta"

#: ../firewall_wizard/firewall.wiz_.c:1
msgid "Device"
msgstr "Enhet"

#: ../firewall_wizard/firewall.wiz_.c:2
msgid "Strong - no outside visibility, users limited to web"
msgstr "H�g - inget syns fr�n utsidan, anv�ndare begr�nsade till webb"

#: ../firewall_wizard/firewall.wiz_.c:3 ../news_wizard/news.wiz_.c:2
#: ../proxy_wizard/proxy.wiz_.c:7 ../samba_wizard/samba.wiz_.c:1
msgid "Something terrible happened"
msgstr "N�got hemskt h�nde"

#: ../firewall_wizard/firewall.wiz_.c:5
msgid "Firewall Configuration Wizard"
msgstr "Konfigurationsguide f�r brandv�gg"

#: ../firewall_wizard/firewall.wiz_.c:7
msgid "Internet Network Device:"
msgstr "N�tverksenhet f�r Internet:"

#: ../firewall_wizard/firewall.wiz_.c:9 ../samba_wizard/samba.wiz_.c:24
#: ../server_wizard/server.wiz_.c:35
msgid "Fix It"
msgstr "Fixa det"

#: ../firewall_wizard/firewall.wiz_.c:10
msgid "Protection Level:"
msgstr "Skyddsniv�:"

#: ../firewall_wizard/firewall.wiz_.c:11
msgid "Firewall wizard"
msgstr "Guide f�r brandv�gg"

#: ../firewall_wizard/firewall.wiz_.c:12
msgid "The wizard successfully configured your server firewall."
msgstr "Guiden lyckades med att konfigurera serverbrandv�ggen."

#: ../firewall_wizard/firewall.wiz_.c:13
msgid "Medium - web, ftp and ssh shown to outside"
msgstr "Medium - webb, FTP och SSH visas f�r utsidan"

#: ../firewall_wizard/firewall.wiz_.c:14
msgid "Protection Level"
msgstr "Skyddsniv�"

#: ../firewall_wizard/firewall.wiz_.c:15 ../news_wizard/news.wiz_.c:14
#: ../proxy_wizard/proxy.wiz_.c:41 ../samba_wizard/samba.wiz_.c:27
#: ../server_wizard/server.wiz_.c:43
msgid "Exit"
msgstr "Avsluta"

#: ../firewall_wizard/firewall.wiz_.c:16
msgid "The device name is not correct"
msgstr "Enhetsnamnet �r inte korrekt"

#: ../firewall_wizard/firewall.wiz_.c:17
msgid ""
"The firewall needs to know how your server is connected to Internet; choose "
"the device you are using for the external connection."
msgstr ""
"Brandv�ggen beh�ver veta hur servern �r ansluten till Internet. V�lj enheten "
"du anv�nder f�r den externa anslutningen."

#: ../firewall_wizard/firewall.wiz_.c:18
msgid ""
"The firewall protects your internal network from unauthorized accesses from "
"the Internet."
msgstr ""
"Brandv�ggen skyddar ditt interna n�tverk mot otill�tna n�tverksinbrott."

#: ../firewall_wizard/firewall.wiz_.c:20
msgid "Configuring the Firewall"
msgstr "Konfigurerar brandv�ggen"

#: ../firewall_wizard/firewall.wiz_.c:21
msgid "None - No protection"
msgstr "Ingen - Inget skydd"

#: ../firewall_wizard/firewall.wiz_.c:22
msgid "This wizard will help you configuring your server firewall."
msgstr "Den h�r guiden hj�lper dig att konfigurera serverbrandv�ggen."

#: ../firewall_wizard/firewall.wiz_.c:23
msgid "Low - Light filtering, standard services available"
msgstr "L�g - L�tt filtrering, standardtj�nster tillg�ngliga"

#: ../firewall_wizard/firewall.wiz_.c:24
msgid "Firewall Network Device"
msgstr "N�tverksenhet f�r brandv�gg"

#: ../firewall_wizard/firewall.wiz_.c:25
msgid ""
"The wizard collected the following parameters needed to configure your "
"firewall:"
msgstr ""
"Guiden samlade in f�ljande parametrar som beh�vs f�r att konfigurera "
"brandv�ggen:"

#: ../firewall_wizard/firewall.wiz_.c:26
msgid ""
"The firewall can be configured to offer different levels of protection; "
"choose the level that corresponds to your needs.  If you don't know, the "
"Medium level is usually the most appropriate."
msgstr ""
"Brandv�ggen kan konfigureras s� att den erbjuder olika niv�er av skydd, v�lj "
"den niv� som passar dina behov. Om du inte vet s� �r vanligtvis mediumniv�n "
"ett bra val."

#: ../ftp_wizard/ftp.wiz_.c:1
msgid "Select the kind of FTP service you want to activate:"
msgstr "V�lj vilken form av FTP-tj�nst du vill aktivera:"

#: ../ftp_wizard/ftp.wiz_.c:5
msgid "Internet FTP Server:"
msgstr "FTP-server f�r Internet:"

#: ../ftp_wizard/ftp.wiz_.c:6
msgid ""
"Your server can act as an FTP Server toward your internal network (intranet) "
"and as an FTP Server for the Internet."
msgstr ""
"Servern kan upptr�da som en FTP-server mot ditt interna n�tverk (Intran�t) "
"och som en FTP-server f�r Internet."

#: ../ftp_wizard/ftp.wiz_.c:9
msgid "The wizard successfully configured your Intranet/Internet FTP Server"
msgstr "Guiden lyckades med att konfigurera FTP-servern f�r Intran�t/Internet"

#: ../ftp_wizard/ftp.wiz_.c:11
msgid "Enable the FTP Server for the Intranet"
msgstr "Aktivera FTP-servern f�r Intran�tet"

#: ../ftp_wizard/ftp.wiz_.c:12
msgid "FTP wizard"
msgstr "Guide f�r FTP"

#: ../ftp_wizard/ftp.wiz_.c:13
msgid ""
"The wizard collected the following parameters needed to configure your FTP "
"Server"
msgstr ""
"Guiden samlade in f�ljande parametrar som beh�vs f�r att konfigurera FTP-"
"servern"

#: ../ftp_wizard/ftp.wiz_.c:15
msgid "This wizard will help you configuring the FTP Server for your network."
msgstr ""
"Den h�r guiden hj�lper dig att konfigurera en FTP-server f�r ditt n�tverk."

#: ../ftp_wizard/ftp.wiz_.c:16
msgid "Enable the FTP Server for the Internet"
msgstr "Aktivera FTP-servern f�r Internet"

#: ../ftp_wizard/ftp.wiz_.c:17
msgid "FTP Server Configuration Wizard"
msgstr "Konfigurationsguide f�r FTP-server"

#: ../ftp_wizard/ftp.wiz_.c:18
msgid "Intranet FTP Server:"
msgstr "FTP-server f�r Intran�t:"

#: ../ftp_wizard/ftp.wiz_.c:19
msgid "Configuring the FTP Server"
msgstr "Konfigurerar FTP-servern"

#: ../ftp_wizard/ftp.wiz_.c:20
msgid "Don't check any box if you don't want to activate your FTP Server."
msgstr "Markera ingen ruta om du inte vill aktivera FTP-servern."

#: ../ftp_wizard/ftp.wiz_.c:21
msgid "FTP Server"
msgstr "FTP-server"

#: ../news_wizard/news.wiz_.c:1
msgid "News Server Name:"
msgstr "Namn p� diskussionsgruppserver:"

#: ../news_wizard/news.wiz_.c:3
msgid "Welcome to the News Wizard"
msgstr "V�lkommen till guiden f�r diskussionsgrupper"

#: ../news_wizard/news.wiz_.c:5
msgid "Polling Period (Hours):"
msgstr "Periodisk kontroll (timmar):"

#: ../news_wizard/news.wiz_.c:6
msgid "News Server"
msgstr "Diskussionsgruppserver"

#: ../news_wizard/news.wiz_.c:9
msgid ""
"Your server will regularly poll the News Server for obtaning the latest "
"Internet News; the polling period set the interval between two consecutive "
"polling."
msgstr ""

#: ../news_wizard/news.wiz_.c:10
msgid "The news server name is not correct"
msgstr "Namnet p� diskussionsgruppservern �r felaktigt"

#: ../news_wizard/news.wiz_.c:12
msgid "Polling Interval:"
msgstr "Intervall f�r periodisk kontroll:"

#: ../news_wizard/news.wiz_.c:13
msgid ""
"Internet host names must be in the form \\qhost.domain.domaintype\\q; for "
"example, if your provider is \\qprovider.com\\q, the internet news server is "
"usually \\qnews.provider.com\\q."
msgstr ""
"Internetdatornamn m�ste vara i formen \\qdator.dom�n.dom�ntyp\\q. Om din "
"leverant�r �r \\qleverant�r.se\\q, �r diskussionsgruppsservern vanligtvis "
"\\qnews.leverant�r.se\\q."

#: ../news_wizard/news.wiz_.c:15
msgid "Polling Period"
msgstr "Periodisk kontroll"

#: ../news_wizard/news.wiz_.c:16
msgid ""
"Depending on the kind of internet connection you have, an appropriate "
"polling period can change between 6 and 24 hours."
msgstr ""

#: ../news_wizard/news.wiz_.c:17
msgid "The polling period is not correct"
msgstr "Den periodiska kontrollen �r felaktig"

#: ../news_wizard/news.wiz_.c:18
msgid "News Server:"
msgstr "Diskussionsgruppserver:"

#: ../news_wizard/news.wiz_.c:19
msgid ""
"The news server name is the name of the host providing the Internet news to "
"your network; the name is usually provided by your provider."
msgstr ""
"Namnet p� diskussionsgruppservern �r namnet p� datorn som tillhandah�ller "
"diskussionsgrupper f�r ditt n�tverk. Namnet tillhandah�lls vanligen av din "
"leverant�r."

#: ../news_wizard/news.wiz_.c:21
msgid ""
"The wizard collected the following parameters needed to configure your "
"Internet News Service:"
msgstr ""
"Guiden samlade in f�ljande parametrar som beh�vs f�r att konfigurera "
"diskussionsgruppstj�nsten:"

#: ../news_wizard/news.wiz_.c:22
msgid ""
"This wizard will help you configuring the Internet News services for your "
"network."
msgstr ""
"Den h�r guiden hj�lper dig att konfigurera diskussionsgruppstj�nsten f�r "
"ditt n�tverk."

#: ../news_wizard/news.wiz_.c:23
msgid "Configuring the Internet News"
msgstr "Konfigurerar diskussionsgrupper"

#: ../news_wizard/news.wiz_.c:24
msgid ""
"The wizard successfully configured your Internet News service of your server."
msgstr ""
"Guiden lyckades med att konfigurera diskussionsgruppstj�nsterna p� servern."

#: ../news_wizard/news.wiz_.c:25
msgid "News Wizard"
msgstr "Guide f�r diskussionsgrupper"

#: ../nfs_wizard/nfs.wiz_.c:1
msgid "This wizard will help you configuring the NFS Server for your network."
msgstr ""
"Den h�r guiden hj�lper dig att konfigurera en NFS-server f�r ditt n�tverk."

#: ../nfs_wizard/nfs.wiz_.c:3
msgid "NFS Server Configuration Wizard"
msgstr "Konfigurationsguide f�r NFS-server"

#: ../nfs_wizard/nfs.wiz_.c:5
msgid "NFS Server"
msgstr "NFS-server"

#: ../nfs_wizard/nfs.wiz_.c:6
msgid "The wizard successfully configured your NFS Server"
msgstr "Guiden lyckades med att konfigurera NFS-servern."

#: ../nfs_wizard/nfs.wiz_.c:7
msgid "Directory:"
msgstr "Katalog:"

#: ../nfs_wizard/nfs.wiz_.c:8
msgid "NFS Wizard"
msgstr "Guide f�r NFS"

#: ../postfix_wizard/postfix.wiz_.c:1
msgid "Do It"
msgstr "G�r det"

#: ../postfix_wizard/postfix.wiz_.c:3
msgid ""
"You can select the kind of address that outgoing mail will show in the "
"\\qFrom:\\q and \\qReply-to\\q field."
msgstr ""
"Du kan v�lja vilken typ av adress som utg�ende post ska visa i f�lten "
"\\qFr�n:\\q och \\qSvara till\\q."

#: ../postfix_wizard/postfix.wiz_.c:5
msgid "Configuring the Internet Mail"
msgstr "Konfigurerar e-post f�r Internet"

#: ../postfix_wizard/postfix.wiz_.c:6
msgid "Postfix wizard"
msgstr "Guide f�r Postfix"

#: ../postfix_wizard/postfix.wiz_.c:7
msgid ""
"Your server will send the outgoing through a mail gateway, that will take "
"care of the final delivery."
msgstr ""
"Din server skickar den utg�ende posten genom en e-post-gateway som tar hand "
"om den slutgiltiga leveransen."

#: ../postfix_wizard/postfix.wiz_.c:8
msgid ""
"This wizard will help you configuring the Internet Mail services for your "
"network."
msgstr ""
"Den h�r guiden hj�lper dig att konfigurera tj�nsterna f�r Internet-e-post "
"f�r ditt n�tverket."

#: ../postfix_wizard/postfix.wiz_.c:9
msgid "Outgoing Mail Address"
msgstr "Utg�ende e-postadress"

#: ../postfix_wizard/postfix.wiz_.c:10
msgid ""
"This should be chosen consistently with the address you use for incoming "
"mail."
msgstr ""
"Detta b�r v�ljas konsekvent med adressen du anv�nder f�r inkommande e-post."

#: ../postfix_wizard/postfix.wiz_.c:11
msgid "There seems to be a problem... go ask to the big black man downstairs"
msgstr "Det verkar vara ett problem, fr�ga administrat�ren."

#: ../postfix_wizard/postfix.wiz_.c:12
msgid "Masquerade not good!"
msgstr "Maskering �r inte bra."

#: ../postfix_wizard/postfix.wiz_.c:13
msgid ""
"If you choose to configure now, you will automatically continue with the "
"POSTFIX configuration"
msgstr ""
"Om du v�ljer att konfigurera nu kommer du automatiskt att forts�tta med "
"konfigurationen av Postfix"

#: ../postfix_wizard/postfix.wiz_.c:14
msgid "Form of the Address"
msgstr "Adressens form"

#: ../postfix_wizard/postfix.wiz_.c:15
msgid ""
"Internet host names must be in the form \\qhost.domain.domaintype\\q; for "
"example, if your provider is \\qprovider.com\\q, the internet mail server is "
"usually \\qsmtp.provider.com\\q."
msgstr ""
"Internetdatornamn m�ste vara i formen \\qdator.dom�n.dom�ntyp\\q. Om din "
"leverant�r �r \\qleverant�r.se\\q, �r e-postservern f�r Internet vanligtvis "
"\\qsmtp.leverant�r.se\\q."

#: ../postfix_wizard/postfix.wiz_.c:18
msgid "Internet Mail Configuration Wizard"
msgstr "Konfigurationsguide f�r Internet-e-post"

#: ../postfix_wizard/postfix.wiz_.c:19
msgid ""
"The wizard collected the following parameters needed to configure your "
"Internet Mail Service:"
msgstr ""
"Guiden samlade in f�ljande parametrar som beh�vs f�r att konfigurera e-"
"posttj�nsten f�r Internet"

#: ../postfix_wizard/postfix.wiz_.c:20
msgid "Mail Address:"
msgstr "E-postadress:"

#: ../postfix_wizard/postfix.wiz_.c:21
msgid "You entered an empty address for the mail gateway."
msgstr "Du angav en tom adress f�r e-post-gateway."

#: ../postfix_wizard/postfix.wiz_.c:22
msgid ""
"The wizard successfully configured your Internet Mail service of your server."
msgstr ""
"Guiden lyckades med att konfigurera tj�nsterna f�r Internet-e-post p� "
"servern."

#: ../postfix_wizard/postfix.wiz_.c:23
msgid "Hmmm"
msgstr "Hmmm"

#: ../postfix_wizard/postfix.wiz_.c:24
msgid "Internet Mail Gateway"
msgstr "Gateway f�r Internet-e-post"

#: ../postfix_wizard/postfix.wiz_.c:26
msgid "Mail Server Name:"
msgstr "Namn p� e-postserver:"

#: ../postfix_wizard/postfix.wiz_.c:28
msgid ""
"Your choice can be accepted, but this will not allow you to send mail "
"outside your local network. Press next to continue, or back to enter a value."
msgstr ""
"Valet kan accepteras men det kommer inte l�ta dig skicka e-post utanf�r ditt "
"lokala n�tverk. Klicka p� N�sta f�r att forts�tta eller Tillbaka f�r att "
"ange ett v�rde."

#: ../proxy_wizard/proxy.wiz_.c:1
msgid "/etc/services:"
msgstr "/etc/services:"

#: ../proxy_wizard/proxy.wiz_.c:2
msgid ""
"Memory Cache is the amount of RAM dedicated to cache memory operations (note "
"that actual memory usage of the whole squid process is bigger)."
msgstr ""
"Minnescache �r m�ngden RAM som dedikeras till att cacha minnesoperationer "
"(observera att den verkliga minnesanv�ndningen f�r hela Squid-processen �r "
"st�rre)."

#: ../proxy_wizard/proxy.wiz_.c:3
msgid "Proxy port:"
msgstr "Proxy-port:"

#: ../proxy_wizard/proxy.wiz_.c:4
msgid "The wizard successfully configured your proxy server."
msgstr "Guiden lyckades med att konfigurera proxy-servern."

#: ../proxy_wizard/proxy.wiz_.c:5
msgid "You have entered a port that may be useful for this service:"
msgstr "Du har angett en port som kan vara anv�ndbar f�r den h�r tj�nsten:"

#: ../proxy_wizard/proxy.wiz_.c:6
msgid ""
"Choose the level that suits your needs. If you don't know,the Local Network "
"level is usually the most appropriate. Beware that the All level may be not "
"secure."
msgstr ""
"V�lj niv�n som passar dina behov. Om du inte vet s� brukar niv�n Lokalt "
"n�tverk r�cka bra. Observera att niv�n Alla kanske inte �r s�ker."

#: ../proxy_wizard/proxy.wiz_.c:8
msgid "Cache hierarchy"
msgstr "Cachehierarki"

#: ../proxy_wizard/proxy.wiz_.c:9
msgid ""
"Squid is a web caching proxy server, it allows faster web access for your "
"local network."
msgstr ""
"Squid �r en webbcachande proxy-server. Den till�ter snabbare webb�tkomst f�r "
"ditt lokala n�tverk."

#: ../proxy_wizard/proxy.wiz_.c:10
msgid "Define an upper level proxy"
msgstr "Definiera en proxy f�r �vre niv�"

#: ../proxy_wizard/proxy.wiz_.c:12
msgid "All - No access restriction"
msgstr "Alla - Inga �tkomstbegr�nsningar"

#: ../proxy_wizard/proxy.wiz_.c:13
msgid ""
"Access will be allowed for hosts on the network. Here is the information "
"found about your current local network, you can modify it if needed."
msgstr ""
"�tkomst kommer att till�tas f�r datorer p� n�tverket. H�r �r informationen "
"som hittades om ditt aktuella lokala n�tverk. Du kan �ndra det om det beh�vs."

#: ../proxy_wizard/proxy.wiz_.c:14
msgid "Access Control"
msgstr "�tkomstkontroll"

#: ../proxy_wizard/proxy.wiz_.c:15
msgid "Disk space (MB):"
msgstr "Diskutrymme (MB):"

#: ../proxy_wizard/proxy.wiz_.c:16
msgid "Upper level proxy hostname:"
msgstr "Datornamn f�r �vre niv�-proxy:"

#: ../proxy_wizard/proxy.wiz_.c:18
msgid ""
"Disk Cache is the amount of disk space that can be used for caching on disk."
msgstr ""
"Diskcache �r m�ngden diskutrymme som kan anv�ndas f�r cachening p� disk."

#: ../proxy_wizard/proxy.wiz_.c:19
msgid "Local Network - access for local network (recommended)"
msgstr "Lokalt n�tverk - �tkomst f�r lokalt n�tverk (rekommenderas)"

#: ../proxy_wizard/proxy.wiz_.c:20
msgid "Configuring the Proxy"
msgstr "Konfigurerar proxy"

#: ../proxy_wizard/proxy.wiz_.c:21
msgid ""
"Proxy port value sets what port the proxy server will listen on for http "
"requests. Default is 3128, other common value can be 8080, the port value "
"need to be greater than 1024."
msgstr ""
"V�rdet f�r proxy-port st�ller in vilken port proxy-servern ska lyssna p� "
"efter HTTP-f�rfr�gningar. Standard �r 3128, ett annat vanligt v�rde �r 8080. "
"Portv�rdet m�ste vara st�rre �n 1024."

#: ../proxy_wizard/proxy.wiz_.c:22
msgid "Squid wizard"
msgstr "Guide f�r Squid"

#: ../proxy_wizard/proxy.wiz_.c:23
msgid "Port:"
msgstr "Port:"

#: ../proxy_wizard/proxy.wiz_.c:24
msgid "Filesystem            Size  Used Avail Use% Mounted on"
msgstr "Filsystem            Storlek  Anv�nt Tillg�ng. Anv�nd% Monterad p�"

#: ../proxy_wizard/proxy.wiz_.c:25 ../samba_wizard/samba.wiz_.c:12
#: ../server_wizard/server.wiz_.c:22
msgid "This Wizard need to run as root"
msgstr "Den guiden m�ste k�ras som root"

#: ../proxy_wizard/proxy.wiz_.c:26
msgid ""
"You can safely select \\qNo upper level proxy\\q if you don't need this "
"feature."
msgstr ""
"Du kan s�kert v�lja \\qIngen proxy f�r �vre niv�\\q om du inte beh�ver den "
"funktionen."

#: ../proxy_wizard/proxy.wiz_.c:27
msgid "Memory cache (MB):"
msgstr "Minnescache (MB):"

#: ../proxy_wizard/proxy.wiz_.c:28
msgid "Access Control:"
msgstr "�tkomstkontroll:"

#: ../proxy_wizard/proxy.wiz_.c:29
msgid ""
"If you choose to configure now, you will automatically continue with the "
"Proxy configuration."
msgstr ""
"Om du v�ljer att konfigurera nu kommer du automatiskt att forts�tta med "
"konfigurationen av proxy."

#: ../proxy_wizard/proxy.wiz_.c:30
msgid "Proxy Port"
msgstr "Proxy-port"

#: ../proxy_wizard/proxy.wiz_.c:32
msgid "Press back to change the value."
msgstr "Klicka p� Tillbaka f�r att �ndra v�rdet."

#: ../proxy_wizard/proxy.wiz_.c:33
msgid ""
"Enter the qualified hostname (like \\qcache.domain.net\\q) and the port of "
"the proxy to use."
msgstr ""
"Ange hela datornamnet (t ex \\qcache.dom�n.se\\q) och porten f�r proxyn som "
"ska anv�ndas."

#: ../proxy_wizard/proxy.wiz_.c:34
msgid "No upper level proxy (recommended)"
msgstr "Ingen proxy f�r �vre niv� (rekommenderas)"

#: ../proxy_wizard/proxy.wiz_.c:35
msgid "You must choose a port greater than 1024 and lower than 65535"
msgstr "Du m�ste v�lja en port h�gre �n 1024 och l�gre �n 65535"

#: ../proxy_wizard/proxy.wiz_.c:38
msgid "Proxy Cache Size"
msgstr "Cachestorlek f�r proxy"

#: ../proxy_wizard/proxy.wiz_.c:39
msgid ""
"Press Next if you want to keep this value, or Back to correct your choice."
msgstr ""
"Klicka p� N�sta f�r att beh�lla det h�r v�rdet eller Tillbaka f�r att "
"korrigera ditt val."

#: ../proxy_wizard/proxy.wiz_.c:40
msgid "Localhost - access restricted to this server only"
msgstr ""
"Lokal dator (Localhost) - �tkomst begr�nsad till endast den h�r servern"

#: ../proxy_wizard/proxy.wiz_.c:42
msgid ""
"You can use either a numeric format like \\q192.168.1.0/255.255.255.0\\q or "
"a text format like \\q.domain.net\\q"
msgstr ""
"Du kan antingen anv�nda ett nummerformat som \\q192.168.1.0/255.255.255.0\\q "
"eller ett textformat som \\q.dom�n.se\\q"

#: ../proxy_wizard/proxy.wiz_.c:43
msgid "Proxy Configuration Wizard"
msgstr "Konfigurationsguide f�r proxy"

#: ../proxy_wizard/proxy.wiz_.c:44
msgid "Authorised network:"
msgstr ""

#: ../proxy_wizard/proxy.wiz_.c:45
msgid "Grant access on local network"
msgstr "Ge �tkomst p� lokalt n�tverk"

#: ../proxy_wizard/proxy.wiz_.c:46
msgid ""
"As an option, Squid can be configured in proxy cascading. You can add a new "
"upper level proxy by specifying its hostname and port."
msgstr ""
"Som ett alternativ kan Squid konfigureras i proxy-kaskadning. Du kan l�gga "
"till en ny �vre niv�-proxy genom att specificera dess datornamn och port."

#: ../proxy_wizard/proxy.wiz_.c:49
msgid ""
"The wizard collected the following parameters needed to configure your proxy:"
msgstr ""
"Guiden samlade in f�ljande parametrar som beh�vs f�r att konfigurera proxyn:"

#: ../proxy_wizard/proxy.wiz_.c:50
msgid "The proxy can be configured to use different access control levels."
msgstr "Proxy kan konfigureras till att anv�nda olika �tkomstkontrollniv�er."

#: ../proxy_wizard/proxy.wiz_.c:51
msgid "Upper level proxy port:"
msgstr "Proxy-port f�r �vre niv�:"

#: ../proxy_wizard/proxy.wiz_.c:53
msgid "This wizard will help you configuring your proxy server."
msgstr "Den h�r guiden hj�lper dig att konfigurera proxy-servern."

#: ../proxy_wizard/proxy.wiz_.c:54
msgid "For information, here is /var/spool/squid space on disk:"
msgstr "F�r information: h�r �r /var/spool/squid-utrymmet p� disk:"

#: ../samba_wizard/samba.wiz_.c:2
msgid "Workgroup:"
msgstr "Arbetsgrupp:"

#: ../samba_wizard/samba.wiz_.c:3
msgid ""
"If you choose to configure now, you will automatically continue with the "
"SAMBA configuration"
msgstr ""
"Om du v�ljer att konfigurera nu kommer du automatiskt att forts�tta med "
"konfigurationen av Samba"

#: ../samba_wizard/samba.wiz_.c:4
msgid "The Server Banner is incorrect"
msgstr "Serverrubriken �r felaktig"

#: ../samba_wizard/samba.wiz_.c:6
msgid ""
"This wizard will help you configuring the Samba services of your server."
msgstr "Den h�r guiden hj�lper dig att konfigurera Samba-tj�nster p� servern."

#: ../samba_wizard/samba.wiz_.c:8
msgid "Enabled Samba Services"
msgstr "Aktiverade Samba-tj�nster"

#: ../samba_wizard/samba.wiz_.c:9
msgid ""
"The wizard collected the following parameters needed to configure Samba."
msgstr ""
"Guiden samlade in f�ljande parametrar som beh�vs f�r att konfigurera Samba."

#: ../samba_wizard/samba.wiz_.c:10
msgid "Enable /home/samba/public sharing area"
msgstr "Aktivera utdelningsomr�det /home/samba/public"

#: ../samba_wizard/samba.wiz_.c:11
msgid "Banner:"
msgstr "Rubrik:"

#: ../samba_wizard/samba.wiz_.c:13
msgid "Workgroup"
msgstr "Arbetsgrupp"

#: ../samba_wizard/samba.wiz_.c:14
msgid ""
"The banner is the way this server will be described in the Windows "
"workstations."
msgstr ""
"Rubriken �r s�ttet som den h�r servern kommer att beskrivas f�r Windows-"
"arbetsstationer."

#: ../samba_wizard/samba.wiz_.c:15
msgid "File Sharing:"
msgstr "Filutdelning:"

#: ../samba_wizard/samba.wiz_.c:16
msgid ""
"You have selected to allow user access their home directories via samba but "
"you/they must use smbpasswd to set a password."
msgstr ""
"Du har valt att till�ta anv�ndare komma �t sina hemkataloger via Samba men "
"du/dem m�ste anv�nda smbpasswd f�r att ange ett l�senord."

#: ../samba_wizard/samba.wiz_.c:18
msgid ""
"Samba allows your server to behave as a file and print server for "
"workstations running non-Linux systems."
msgstr ""
"Samba l�ter din server upptr�da som en fil- och skrivarserver f�r "
"arbetsstationer som k�r icke-Linux-system."

#: ../samba_wizard/samba.wiz_.c:19
msgid "Configuring Samba"
msgstr "Konfigurerar Samba"

#: ../samba_wizard/samba.wiz_.c:20
msgid "Server Banner."
msgstr "Serverrubrik."

#: ../samba_wizard/samba.wiz_.c:23
msgid "The Workgroup is wrong"
msgstr "Arbetsgruppen �r fel"

#: ../samba_wizard/samba.wiz_.c:26
msgid ""
"Samba can provide a common file sharing area to your Windows workstation, "
"and can also provide printer sharing for the printers connected to your "
"server."
msgstr ""
"Samba kan tillhandah�lla ett allm�nt filutdelningsomr�de f�r dina Windows-"
"arbetsstationer och kan ocks� dela ut skrivarna som �r anslutna till servern."

#: ../samba_wizard/samba.wiz_.c:28
msgid "Samba need to know the Windows Workgroup it will serve."
msgstr "Samba beh�ver k�nna till vilken Windows-arbetsgrupp den ska tj�na."

#: ../samba_wizard/samba.wiz_.c:29
msgid "The wizard successfully configured your Samba server."
msgstr "Guiden lyckades med att konfigurera Samba-servern."

#: ../samba_wizard/samba.wiz_.c:30
msgid "Server Banner:"
msgstr "Serverrubrik:"

#: ../samba_wizard/samba.wiz_.c:31
msgid "Print Server:"
msgstr "Skrivarserver:"

#: ../samba_wizard/samba.wiz_.c:34
msgid "Samba wizard"
msgstr "Guide f�r Samba"

#: ../samba_wizard/samba.wiz_.c:35
msgid "Samba Configuration Wizard"
msgstr "Konfigurationsguide f�r Samba"

#: ../samba_wizard/samba.wiz_.c:37
msgid "Enable Server Printer Sharing"
msgstr "Aktivera utdelning av serverskrivare"

#: ../samba_wizard/samba.wiz_.c:38
msgid "Home:"
msgstr "Hem:"

#: ../samba_wizard/samba.wiz_.c:39
msgid "Make homes directory availables for theirs owners"
msgstr "G�r hemkataloger tillg�ngliga f�r sina �gare"

#: ../server_wizard/server.wiz_.c:2
msgid ""
"Choose the network device (usually a card) the server should use to connect "
"to your network. It's the device for the local network, probably not the "
"same device used for internet access."
msgstr ""
"V�lj n�tverksenheten (vanligtvis ett kort) som servern ska anv�nda f�r att "
"ansluta till ditt n�tverk. Det �r enheten f�r det lokala n�tverket och "
"antagligen inte samma enhet som anv�nds f�r Internet�tkomst."

#: ../server_wizard/server.wiz_.c:3
msgid "The Server IP address is incorrect"
msgstr "Serverns IP-adress �r felaktig"

#: ../server_wizard/server.wiz_.c:4
msgid "Gateway device:"
msgstr "Gateway-enhet:"

#: ../server_wizard/server.wiz_.c:5
msgid "Server Wizard"
msgstr "Serverguide"

#: ../server_wizard/server.wiz_.c:6
msgid ""
"Network addresses are a list of four numbers smaller than 256, separated by "
"dots; the last number of the list must be zero."
msgstr ""
"N�tverksadresser �r en lista �ver fyra nummer mindre �n 256, �tskilda med "
"punkter. Det sista numret i listan m�ste vara noll."

#: ../server_wizard/server.wiz_.c:7
msgid "net device"
msgstr "n�tenhet"

#: ../server_wizard/server.wiz_.c:9
msgid ""
"So, it's very probable that domain name and IP adresses for this local "
"network are DIFFERENT from the server \\qexternal\\q connection."
msgstr ""
"Det �r mycket m�jligt att dom�nnamnet och IP-adressen f�r det h�r lokala "
"n�tverket SKILJER sig fr�n serverns \\qexterna\\q anslutning."

#: ../server_wizard/server.wiz_.c:10
msgid ""
"You should not run any other applications while running this wizard and at "
"the end of the wizard you should exit your session and redo the login."
msgstr ""
"Du b�r inte k�ra n�gra andra program medan du k�r den h�r guiden. N�r du har "
"slutf�rt guiden b�r du avsluta din session och logga in igen."

#: ../server_wizard/server.wiz_.c:11
msgid ""
"Here is your current value for the external gateway (value specified during "
"the initial installation). The device (network card or modem) should be "
"different from the one used for the internal network."
msgstr ""
"H�r aktuellt v�rde f�r extern gateway (v�rde som specificerades under den "
"initiala installationen). Enheten (n�tverkskort eller modem) b�r skilja sig "
"fr�n den som anv�nds f�r det interna n�tverket."

#: ../server_wizard/server.wiz_.c:12
msgid ""
"As regards these wizards, your computer is seen as a server managing his own "
"local network (C class network)."
msgstr ""
"De h�r guiderna ser din dator som en server som hanterar sitt eget lokala "
"n�tverk (C-klassn�tverk)."

#: ../server_wizard/server.wiz_.c:14
msgid "Device:"
msgstr "Enhet:"

#: ../server_wizard/server.wiz_.c:15
msgid "Warning"
msgstr "Varning"

#: ../server_wizard/server.wiz_.c:16
msgid "This page compute the domainname; it should be invisible"
msgstr "Den h�r sidan ber�knar dom�nnamnet; det ska vara osynligt"

#: ../server_wizard/server.wiz_.c:17
msgid "Server Address:"
msgstr "Serveradress:"

#: ../server_wizard/server.wiz_.c:18
msgid "Computed domain Name"
msgstr "Ber�knat dom�nnamn"

#: ../server_wizard/server.wiz_.c:19
msgid "Host Name"
msgstr "V�rddatornamn"

#: ../server_wizard/server.wiz_.c:20
msgid "This page compute the default server address; should be invisible."
msgstr "Den h�r sidan ber�knar standardserveradressen; ska vara osynlig."

#: ../server_wizard/server.wiz_.c:21
msgid "Basic Network Configuration Wizard"
msgstr "Guide f�r grundl�ggande n�tverkskonfiguration"

#: ../server_wizard/server.wiz_.c:23
msgid "The host name is not correct"
msgstr "V�rddatornamnet �r felaktigt"

#: ../server_wizard/server.wiz_.c:24
msgid ""
"Host names must be in the form \\qhost.domain.domaintype\\q; if your server "
"will be an Internet server, the domain name should be the name registered "
"with your provider. If you will only have intranet any valid name is OK, "
"like \\qcompany.net\\q."
msgstr ""
"Datornamn m�ste vara i formen \\qdator.dom�n.dom�ntyp\\q. Om din server ska "
"vara en Internetserver, ska dom�nnamnet vara det namn som �r registrerat hos "
"din leverant�r. Om du endast ska ha ett Intran�t kan du anv�nda vilket namn "
"du vill, t ex \\qf�retag.net\\q."

#: ../server_wizard/server.wiz_.c:25
msgid "External gateway"
msgstr "Extern gateway"

#: ../server_wizard/server.wiz_.c:26
msgid ""
"The network address is a number identifying your network; the proposed value "
"is designed for a configuration not connected to Internet, or connected "
"using IP masquerading; unless you know what you are doing, accept the "
"default value."
msgstr ""
"N�tverksadressen �r ett nummer som identifierar ditt n�tverk. Det f�rvalda "
"v�rdet �r konstruerat f�r en konfiguration som inte �r ansluten till "
"Internet eller ansluten med IP-maskering. Om du inte vet vad du g�r, beh�ll "
"standardv�rdet."

#: ../server_wizard/server.wiz_.c:27
msgid ""
"This wizard will help you configuring the basic networking services of your "
"server."
msgstr ""
"Den h�r guiden hj�lper dig att konfigurera de grundl�ggande "
"n�tverkstj�nsterna p� servern."

#: ../server_wizard/server.wiz_.c:28
msgid "This wizard will set the basic networking parameter of your server."
msgstr ""
"Den h�r guiden st�ller in de grundl�ggande n�tverksparametrarna p� servern."

#: ../server_wizard/server.wiz_.c:29
msgid "Note about networking"
msgstr "Notis om n�tverk"

#: ../server_wizard/server.wiz_.c:31
msgid ""
"Note: the gateway IP address should be non empty if you want an access to "
"outside world."
msgstr ""
"Observera: Gateway-IP-adressen ska inte vara tom om du vill ha �tkomst till "
"omv�rlden."

#: ../server_wizard/server.wiz_.c:32
msgid "Wizard Error."
msgstr "Fel p� guiden."

#: ../server_wizard/server.wiz_.c:34
msgid ""
"Devices are presented with the Linux name and, if known, with the card "
"description."
msgstr ""
"Enheter presenteras med Linux-namnet och, om k�nt, kortets beskrivning."

#: ../server_wizard/server.wiz_.c:37
msgid "Network Address:"
msgstr "N�tverksadress:"

#: ../server_wizard/server.wiz_.c:38
msgid "Configuring your network"
msgstr "Konfigurerar n�tverket"

#: ../server_wizard/server.wiz_.c:39
msgid "Gateway IP:"
msgstr "Gateway-IP:"

#: ../server_wizard/server.wiz_.c:40
msgid ""
"The hostname is the name under which your server will be known from the "
"other workstations in your network and maybe on the Internet (depending of "
"your upstream configuration)."
msgstr ""

#: ../server_wizard/server.wiz_.c:41
msgid "Host Name:"
msgstr "V�rddatornamn:"

#: ../server_wizard/server.wiz_.c:42
msgid ""
"The wizard collected the following parameters needed to configure your "
"network"
msgstr ""
"Guiden samlade in f�ljande parametrar som beh�vs f�r att konfigurera "
"n�tverket"

#: ../server_wizard/server.wiz_.c:44
msgid ""
"External connection is a network from which the computer is client (Internet "
"or upstream network), connected using another network card or a modem."
msgstr ""

#: ../server_wizard/server.wiz_.c:45
msgid ""
"(you can change here these values if you know exactly what you're doing)"
msgstr "(h�r kan du �ndra dessa v�rden om du vet vad du g�r)"

#: ../server_wizard/server.wiz_.c:46
msgid ""
"The server IP address is a number identifing your server in your network; "
"the proposed value designed for a private network , with no internet "
"visibility, or connected using IP masquerading; unless you know what you are "
"doing, accept the default value."
msgstr ""
"Serverns IP-adress �r ett nummer som identifierar servern i ditt n�tverk. "
"Det f�rvalda v�rdet �r konstruerat f�r ett privat n�tverk, som inte �r "
"anslutet till Internet eller anslutet med IP-maskering. Om du inte vet vad "
"du g�r, beh�ll standardv�rdet."

#: ../server_wizard/server.wiz_.c:47
msgid "Server Name:"
msgstr "Servernamn:"

#: ../server_wizard/server.wiz_.c:48
msgid "The network address is wrong"
msgstr "N�tverksadressen �r fel"

#: ../server_wizard/server.wiz_.c:50
msgid "Server Address"
msgstr "Serveradress"

#: ../server_wizard/server.wiz_.c:51
msgid ""
"The wizard successfully configured the basic networking services of your "
"server."
msgstr ""
"Guiden lyckades med att konfigurera de grundl�ggande n�tverkstj�nsterna p� "
"servern."

#: ../server_wizard/server.wiz_.c:52
msgid "Network Device"
msgstr "N�tverksenhet"

#: ../server_wizard/server.wiz_.c:53
msgid "IP net address:"
msgstr "IP-n�tadress:"

#: ../server_wizard/server.wiz_.c:54
msgid "Network Address"
msgstr "N�tverksadress"

#: ../server_wizard/server.wiz_.c:55
msgid "Server IP address:"
msgstr "Serverns IP-adress:"

#: ../time_wizard/time.wiz_.c:1
msgid "University of Adelaide, South Australia"
msgstr "University of Adelaide, s�dra Australien"

#: ../time_wizard/time.wiz_.c:2
msgid "Press next to start the time servers test."
msgstr "Klicka p� N�sta f�r att starta testet av tidsservrarna."

#: ../time_wizard/time.wiz_.c:3
msgid "Time Servers"
msgstr "Tidsservrar"

#: ../time_wizard/time.wiz_.c:4
msgid "Secondary Time Server:"
msgstr "Sekund�r tidsserver:"

#: ../time_wizard/time.wiz_.c:5
msgid "Thus your server will be the local time server for your network."
msgstr "D�rf�r kommer din server att vara lokal tidsserver f�r ditt n�tverk."

#: ../time_wizard/time.wiz_.c:6
msgid ""
"You can set the time of your machine in two ways: Locally means that the "
"setting will simply set the system clock, without synchronizing with the "
"external world."
msgstr ""
"Du kan st�lla in tiden p� din dator p� tv� s�tt: Lokalt betyder att "
"inst�llningen st�ller in systemklockan utan att synkronisera med den externa "
"v�rlden."

#: ../time_wizard/time.wiz_.c:7
msgid ""
"If you use a time server, your machine will ask from that server the correct "
"time."
msgstr ""
"Om du anv�nder en tidsserver kommer din dator att fr�ga den servern efter "
"den korrekta tiden."

#: ../time_wizard/time.wiz_.c:8
msgid "Your server can now act as a time server for your local network."
msgstr "Servern kan nu agera som en tidsserver f�r ditt lokala n�tverk."

#: ../time_wizard/time.wiz_.c:9
msgid "Scientific Center in Chernogolovka, Moscow region, Russia"
msgstr ""

#: ../time_wizard/time.wiz_.c:10
msgid "Baylor College of Medicine, Houston, Tx"
msgstr "Baylor College of Medicine, Houston, Texas"

#: ../time_wizard/time.wiz_.c:11
msgid "Choose a time zone:"
msgstr "V�lj en tidszon:"

#: ../time_wizard/time.wiz_.c:12
msgid "press next to begin, or cancel to leave this wizard"
msgstr "klicka p� N�sta f�r att b�rja eller Avbryt f�r att avsluta guiden"

#: ../time_wizard/time.wiz_.c:13
msgid "LAAS/CNRS, Toulouse, France"
msgstr "LAAS/CNRS, Toulouse, Frankrike"

#: ../time_wizard/time.wiz_.c:14
msgid "SCI, Universite de Limoges, France"
msgstr "SCI, Universite de Limoges, Frankrike"

#: ../time_wizard/time.wiz_.c:15
msgid "MIT Information Systems, Cambridge, MA"
msgstr "MIT Information Systems, Cambridge, MA"

#: ../time_wizard/time.wiz_.c:16
msgid "Select a primary and secondary server from the list."
msgstr "V�lj en prim�r och en sekund�r server fr�n listan."

#: ../time_wizard/time.wiz_.c:17
msgid "(please, choose servers in your geographical area)"
msgstr "(v�lj servrar i ditt geografiska omr�de)"

#: ../time_wizard/time.wiz_.c:18
msgid "Loria, Nancy, France"
msgstr "Loria, Nancy, Frankrike"

#: ../time_wizard/time.wiz_.c:19
msgid "Canadian Meteorological Centre, Dorval, Quebec, Canada"
msgstr "Canadian Meteorological Centre, Dorval, Quebec, Kanada"

#: ../time_wizard/time.wiz_.c:20
msgid "National Research Council of Canada, Ottawa, Ontario, Canada"
msgstr "National Research Council of Canada, Ottawa, Ontario, Kanada"

#: ../time_wizard/time.wiz_.c:21
msgid "University of Manchester, Manchester, England"
msgstr "Universitetet i Manchester, Manchester, England"

#: ../time_wizard/time.wiz_.c:22
#, fuzzy
msgid "- no outside network"
msgstr "Notis om n�tverk"

#: ../time_wizard/time.wiz_.c:23
msgid ""
"If the time server is not immediately available (network or other reason), "
"you will wait about 30 seconds."
msgstr ""
"Om tidsservern inte �r omedelbart tillg�nglig (n�tverk eller annan orsak), "
"kommer du att f� v�nta ca 30 sekunder."

#: ../time_wizard/time.wiz_.c:24
msgid "Testing the time servers availability"
msgstr "Testar tidsservrarnas tillg�nglighet"

#: ../time_wizard/time.wiz_.c:25
msgid "Internet time setting (external time server)"
msgstr "Tidsinst�llning via Internet (extern tidsserver)"

#: ../time_wizard/time.wiz_.c:26
msgid "University of Oslo, Norway"
msgstr "Universitetet i Oslo, Norge"

#: ../time_wizard/time.wiz_.c:27
msgid "University of Regina, Regina, Saskatchewan, Canada"
msgstr "Universitetet i Regina, Regina, Saskatchewan, Kanada"

#: ../time_wizard/time.wiz_.c:28
msgid "Computer Science Department, University of Wisconsin-Madison"
msgstr ""

#: ../time_wizard/time.wiz_.c:29
msgid "Trinity College, Dublin, Ireland"
msgstr "Trinity College, Dublin, Irland"

#: ../time_wizard/time.wiz_.c:30
msgid "The time servers are not responding. The causes could be:"
msgstr "Tidsservrarna svarar inte. Orsakerna kan vara:"

#: ../time_wizard/time.wiz_.c:31
msgid "Which kind of setting would you like to do?"
msgstr "Vilken typ av inst�llning vill du g�ra?"

#: ../time_wizard/time.wiz_.c:32
msgid "Type of setting"
msgstr "Typ av inst�llning"

#: ../time_wizard/time.wiz_.c:33
msgid "Swiss Fed. Inst. of Technology"
msgstr ""

#: ../time_wizard/time.wiz_.c:34
msgid "CRIUC, Universite de Caen, France"
msgstr "CRIUC, Universite de Caen, Frankrike"

#: ../time_wizard/time.wiz_.c:35
msgid "CISM, Lyon, France"
msgstr "CISM, Lyon, Frankrike"

#: ../time_wizard/time.wiz_.c:36
msgid "WARNING"
msgstr "VARNING"

#: ../time_wizard/time.wiz_.c:37
msgid "Inet, Inc., Seoul, Korea"
msgstr "Inet, Inc., Seoul, Korea"

#: ../time_wizard/time.wiz_.c:38
msgid "Local time setting"
msgstr "Lokal tidsinst�llning"

#: ../time_wizard/time.wiz_.c:39
msgid "The Chinese University of Hong Kong"
msgstr ""

#: ../time_wizard/time.wiz_.c:40
msgid "University of Oklahoma, Norman, Oklahoma, USA"
msgstr "University of Oklahoma, Norman, Oklahoma, USA"

#: ../time_wizard/time.wiz_.c:41
msgid "- other reasons..."
msgstr "- andra orsaker..."

#: ../time_wizard/time.wiz_.c:42
msgid "- non existent time servers"
msgstr "- icke existerande tidsservrar"

#: ../time_wizard/time.wiz_.c:43
msgid "Time zone:"
msgstr "Tidszon:"

#: ../time_wizard/time.wiz_.c:44
msgid "Dept. Computer Science, Strathclyde University, Glasgow, Scotland"
msgstr "Dept. Computer Science, Strathclyde University, Glasgow, Skottland"

#: ../time_wizard/time.wiz_.c:45
msgid ""
"You can try again to contact time servers, or save configuration without "
"actually setting time."
msgstr ""
"Du kan f�rs�ka att kontakta tidsservrarna igen eller spara konfigurationen "
"utan att st�lla in tiden."

#: ../time_wizard/time.wiz_.c:46
msgid ""
"This wizard will help you to set the time of your server, either locally or "
"synchronized with an external time server."
msgstr ""
"Den h�r guiden hj�lper dig att st�lla in tiden p� din server, antingen "
"lokalt eller synkroniserat med en extern tidsserver."

#: ../time_wizard/time.wiz_.c:47
msgid "Penn State University, University Park, PA"
msgstr ""

#: ../time_wizard/time.wiz_.c:48
msgid "Primary Time Server:"
msgstr "Prim�r tidsserver:"

#: ../time_wizard/time.wiz_.c:49
msgid "Try again"
msgstr "F�rs�k igen"

#: ../time_wizard/time.wiz_.c:50
msgid "Washington State University Tri-Cities, Richland, Wa"
msgstr ""

#: ../time_wizard/time.wiz_.c:51
msgid "Time server configuration saved"
msgstr "Konfigurationsguide f�r tidsserver"

#: ../time_wizard/time.wiz_.c:52
msgid "CRI, Campus d'Orsay, Universite Paris Sud, France"
msgstr "CRI, Campus d'Orsay, Universite Paris Sud, Frankrike"

#: ../time_wizard/time.wiz_.c:54
msgid "Save config without test"
msgstr "Spara konfiguration utan test"

#: ../time_wizard/time.wiz_.c:55
msgid "Singapore"
msgstr "Singapore"

#: ../time_wizard/time.wiz_.c:56
msgid "Fukuoka university, Fukuoka, Japan"
msgstr "Fukuoka universitetet, Fukuoka, Japan"

#: ../time_wizard/time.wiz_.c:57
msgid "UNLV College of Engineering, Las Vegas, NV"
msgstr ""

#: ../time_wizard/time.wiz_.c:58
msgid "Altea (Alicante/SPAIN)"
msgstr "Altea (Alicante/Spanien)"

#: ../time_wizard/time.wiz_.c:59
msgid "Time wizard"
msgstr "Tidsguide"

#: ../web_wizard/web.wiz_.c:1
msgid ""
"Your server can act as a Web Server toward your internal network (intranet) "
"and as a Web Server for the Internet."
msgstr ""
"Servern kan upptr�da som en webbserver mot ditt interna n�tverk (intran�t) "
"och som en webbserver f�r Internet."

#: ../web_wizard/web.wiz_.c:2
msgid "Intranet Web Server:"
msgstr "Webbserver f�r Intran�t:"

#: ../web_wizard/web.wiz_.c:3
msgid "Select the kind of Web service you want to activate:"
msgstr "V�lj vilken form av webbtj�nst du vill aktivera:"

#: ../web_wizard/web.wiz_.c:5
msgid "Don't check any box if you don't want to activate your Web Server."
msgstr "Markera ingen ruta om du inte vill aktivera webbservern."

#: ../web_wizard/web.wiz_.c:6
msgid "The wizard successfully configured your Intranet/Internet Web Server"
msgstr "Guiden lyckades med att konfigurera Intran�t/Internet-webbservern"

#: ../web_wizard/web.wiz_.c:9
msgid ""
"The wizard collected the following parameters needed to configure your Web "
"Server"
msgstr ""
"Guiden samlade in f�ljande parametrar som beh�vs f�r att konfigurera "
"webbservern"

#: ../web_wizard/web.wiz_.c:10
msgid "Web wizard"
msgstr "Webbguide"

#: ../web_wizard/web.wiz_.c:12
msgid "Configuring the Web Server"
msgstr "Konfigurerar webbservern"

#: ../web_wizard/web.wiz_.c:13
msgid "Web Server Configuration Wizard"
msgstr "Konfigurationsguide f�r webbserver"

#: ../web_wizard/web.wiz_.c:15
msgid "Web Server"
msgstr "Webbserver"

#: ../web_wizard/web.wiz_.c:17
msgid "Enable the Web Server for the Intranet and for the Internet"
msgstr "Aktivera webbservern f�r Intran�t och Internet"

#: ../web_wizard/web.wiz_.c:18
msgid "Internet Web Server:"
msgstr "Webbserver f�r Internet:"

#: ../web_wizard/web.wiz_.c:19
msgid "This wizard will help you configuring the Web Server for your network."
msgstr ""
"Den h�r guiden hj�lper dig att konfigurera webbservern f�r ditt n�tverk."

#: ../web_wizard/web.wiz_.c:21
msgid "Enable the Web Server for the Intranet"
msgstr "Aktivera webbservern f�r Intran�tet"

msgid "Cancel"
msgstr "Avbryt"

msgid "Next ->"
msgstr "N�sta ->"

msgid "<- Previous"
msgstr "<- F�reg�ende"

msgid "enabled"
msgstr "aktiverad"

msgid "disabled"
msgstr "inaktiverad"
class="hl opt">=</span> <span class="hl kwc">shift</span><span class="hl opt">;</span>
    <span class="hl kwa">foreach</span> <span class="hl opt">(</span><span class="hl kwb">&#64;_</span><span class="hl opt">) {</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$l</span> <span class="hl opt">=</span> <span class="hl kwb">$_</span><span class="hl opt">;</span>
	<span class="hl kwc">ref</span> <span class="hl kwb">$l</span> <span class="hl kwc">or</span> <span class="hl kwb">$l</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>Label<span class="hl opt">(</span><span class="hl kwb">$l</span><span class="hl opt">);</span>
	<span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">append</span><span class="hl opt">(</span><span class="hl kwb">$l</span><span class="hl opt">);</span>
	<span class="hl kwb">$l</span><span class="hl opt">-&gt;</span><span class="hl kwd">show</span><span class="hl opt">;</span>
    <span class="hl opt">}</span>
    <span class="hl kwb">$w</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> gtkappenditems <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$w</span> <span class="hl opt">=</span> <span class="hl kwc">shift</span><span class="hl opt">;</span>
    <span class="hl kwb">$_</span><span class="hl opt">-&gt;</span><span class="hl kwd">show</span><span class="hl opt">()</span> <span class="hl kwa">foreach</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">append_items</span><span class="hl opt">(</span><span class="hl kwb">&#64;_</span><span class="hl opt">);</span>
    <span class="hl kwb">$w</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> gtkbuttonset <span class="hl opt">{</span>
    gtkdestroy<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]-&gt;</span><span class="hl kwd">child</span><span class="hl opt">);</span>
    gtkadd<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> gtkshow<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">1</span><span class="hl opt">]))</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> create_pixbutton <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$label, $pix, $reverse_order</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    gtkadd<span class="hl opt">(</span>new Gtk<span class="hl opt">::</span>Button<span class="hl opt">(),</span> gtkpack_<span class="hl opt">(</span>new Gtk<span class="hl opt">::</span>HBox<span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">),</span> <span class="hl num">1</span><span class="hl opt">,</span> <span class="hl str">&quot;&quot;</span><span class="hl opt">,</span> <span class="hl kwb">$reverse_order</span> ? <span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwb">$label, $pix</span> ? <span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwb">$pix</span><span class="hl opt">) : ()) : (</span><span class="hl kwb">$pix</span> ? <span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwb">$pix</span><span class="hl opt">) : (),</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwb">$label</span><span class="hl opt">),</span> <span class="hl num">1</span><span class="hl opt">,</span> <span class="hl str">&quot;&quot;</span><span class="hl opt">));</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> gtkentry <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$text</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$e</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>Entry<span class="hl opt">;</span>
    <span class="hl kwb">$e</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_text</span><span class="hl opt">(</span><span class="hl kwb">$text</span><span class="hl opt">);</span>
    <span class="hl kwb">$e</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> gtksetstyle <span class="hl opt">{</span> 
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$w, $s</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_style</span><span class="hl opt">(</span><span class="hl kwb">$s</span><span class="hl opt">);</span>
    <span class="hl kwb">$w</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> gtkcolor <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$r, $g, $b</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$color</span> <span class="hl opt">=</span> <span class="hl kwc">bless</span> <span class="hl opt">{</span> red <span class="hl opt">=&gt;</span> <span class="hl kwb">$r,</span> green <span class="hl opt">=&gt;</span> <span class="hl kwb">$g,</span> blue <span class="hl opt">=&gt;</span> <span class="hl kwb">$b</span> <span class="hl opt">},</span> <span class="hl str">&apos;Gtk::Gdk::Color&apos;</span><span class="hl opt">;</span>
    gtkroot<span class="hl opt">()-&gt;</span><span class="hl kwd">get_colormap</span><span class="hl opt">-&gt;</span><span class="hl kwd">color_alloc</span><span class="hl opt">(</span><span class="hl kwb">$color</span><span class="hl opt">);</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> gtkradio <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$def</span> <span class="hl opt">=</span> <span class="hl kwc">shift</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$radio</span><span class="hl opt">;</span>
    <span class="hl kwc">map</span> <span class="hl opt">{</span> <span class="hl kwb">$radio</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>RadioButton<span class="hl opt">(</span><span class="hl kwb">$_, $radio</span> ? <span class="hl kwb">$radio</span> <span class="hl opt">: ());</span>
	  <span class="hl kwb">$radio</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_active</span><span class="hl opt">(</span><span class="hl kwb">$_</span> <span class="hl kwc">eq</span> <span class="hl kwb">$def</span><span class="hl opt">);</span> <span class="hl kwb">$radio</span> <span class="hl opt">}</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> gtkroot <span class="hl opt">{</span>
    Gtk-<span class="hl opt">&gt;</span><span class="hl kwd">init</span><span class="hl opt">;</span>
    Gtk-<span class="hl opt">&gt;</span><span class="hl kwd">set_locale</span><span class="hl opt">;</span>
    Gtk<span class="hl opt">::</span>Gdk<span class="hl opt">::</span>Window-<span class="hl opt">&gt;</span><span class="hl kwd">new_foreign</span><span class="hl opt">(</span>Gtk<span class="hl opt">::</span>Gdk-<span class="hl opt">&gt;</span><span class="hl kwd">ROOT_WINDOW</span><span class="hl opt">);</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> gtkset_background <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$r, $g, $b</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$root</span> <span class="hl opt">=</span> gtkroot<span class="hl opt">();</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$gc</span> <span class="hl opt">=</span> Gtk<span class="hl opt">::</span>Gdk<span class="hl opt">::</span>GC-<span class="hl opt">&gt;</span><span class="hl kwd">new</span><span class="hl opt">(</span><span class="hl kwb">$root</span><span class="hl opt">);</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$color</span> <span class="hl opt">=</span> gtkcolor<span class="hl opt">(</span><span class="hl kwb">$r, $g, $b</span><span class="hl opt">);</span>
    <span class="hl kwb">$gc</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_foreground</span><span class="hl opt">(</span><span class="hl kwb">$color</span><span class="hl opt">);</span>
    <span class="hl kwb">$root</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_background</span><span class="hl opt">(</span><span class="hl kwb">$color</span><span class="hl opt">);</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$h, $w</span><span class="hl opt">) =</span> <span class="hl kwb">$root</span><span class="hl opt">-&gt;</span><span class="hl kwd">get_size</span><span class="hl opt">;</span>
    <span class="hl kwb">$root</span><span class="hl opt">-&gt;</span><span class="hl kwd">draw_rectangle</span><span class="hl opt">(</span><span class="hl kwb">$gc,</span> <span class="hl num">1</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwb">$w, $h</span><span class="hl opt">);</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> gtktext_insert <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$w, $t</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">freeze</span><span class="hl opt">;</span>
    <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">backward_delete</span><span class="hl opt">(</span><span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">get_length</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwc">ref</span><span class="hl opt">(</span><span class="hl kwb">$t</span><span class="hl opt">)</span> <span class="hl kwc">eq</span> <span class="hl str">&apos;ARRAY&apos;</span><span class="hl opt">) {</span>
	<span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">insert</span><span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">-&gt;[</span><span class="hl num">0</span><span class="hl opt">],</span> <span class="hl kwb">$_</span><span class="hl opt">-&gt;[</span><span class="hl num">1</span><span class="hl opt">],</span> <span class="hl kwb">$_</span><span class="hl opt">-&gt;[</span><span class="hl num">2</span><span class="hl opt">],</span> <span class="hl kwb">$_</span><span class="hl opt">-&gt;[</span><span class="hl num">3</span><span class="hl opt">])</span> <span class="hl kwa">foreach</span> <span class="hl kwb">&#64;$t</span><span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl kwa">else</span> <span class="hl opt">{</span>
	<span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">insert</span><span class="hl opt">(</span><span class="hl kwc">undef</span><span class="hl opt">,</span> <span class="hl kwc">undef</span><span class="hl opt">,</span> <span class="hl kwc">undef</span><span class="hl opt">,</span> <span class="hl kwb">$t</span><span class="hl opt">);</span> 
    <span class="hl opt">}</span>
    <span class="hl slc">#- DEPRECATED? needs \n otherwise in case of one line text the beginning is not shown (even with the vadj-&gt;set_value)</span>
    <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_word_wrap</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl slc">#-    $w-&gt;vadj-&gt;set_value(0);</span>
    <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">thaw</span><span class="hl opt">;</span>
    <span class="hl kwb">$w</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> gtkset_text <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$w, $s</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_text</span><span class="hl opt">(</span><span class="hl kwb">$s</span><span class="hl opt">);</span>
    <span class="hl kwb">$w</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> gtkcombo_setpopdown_strings <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$w</span> <span class="hl opt">=</span> <span class="hl kwc">shift</span><span class="hl opt">;</span>
    <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_popdown_strings</span><span class="hl opt">(</span><span class="hl kwb">&#64;_</span><span class="hl opt">);</span>
    <span class="hl kwb">$w</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> gtkappend_text <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$w, $s</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">append_text</span><span class="hl opt">(</span><span class="hl kwb">$s</span><span class="hl opt">);</span>
    <span class="hl kwb">$w</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> gtkprepend_text <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$w, $s</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">prepend_text</span><span class="hl opt">(</span><span class="hl kwb">$s</span><span class="hl opt">);</span>
    <span class="hl kwb">$w</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> gtkset_mousecursor <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$type, $w</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl opt">(</span><span class="hl kwb">$w</span> <span class="hl opt">||</span> gtkroot<span class="hl opt">())-&gt;</span><span class="hl kwd">set_cursor</span><span class="hl opt">(</span>Gtk<span class="hl opt">::</span>Gdk<span class="hl opt">::</span>Cursor-<span class="hl opt">&gt;</span><span class="hl kwd">new</span><span class="hl opt">(</span><span class="hl kwb">$type</span><span class="hl opt">));</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> gtksignal_connect <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$w</span> <span class="hl opt">=</span> <span class="hl kwc">shift</span><span class="hl opt">;</span>
    <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">signal_connect</span><span class="hl opt">(</span><span class="hl kwb">&#64;_</span><span class="hl opt">);</span>
    <span class="hl kwb">$w</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl slc">#-#######################</span>
<span class="hl slc"># create widgets wrappers</span>
<span class="hl slc">#-#######################</span>

<span class="hl kwa">sub</span> create_adjustment <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$val, $min, $max</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    new Gtk<span class="hl opt">::</span>Adjustment<span class="hl opt">(</span><span class="hl kwb">$val, $min, $max</span> <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">, (</span><span class="hl kwb">$max</span> <span class="hl opt">-</span> <span class="hl kwb">$min</span> <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">) /</span> <span class="hl num">10</span><span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">);</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> create_box_with_title <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$o</span> <span class="hl opt">=</span> <span class="hl kwc">shift</span><span class="hl opt">;</span>

    <span class="hl kwc">my</span> <span class="hl kwb">$nbline</span> <span class="hl opt">=</span> sum<span class="hl opt">(</span><span class="hl kwc">map</span> <span class="hl opt">{</span> round<span class="hl opt">(</span><span class="hl kwc">length</span><span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">)</span> <span class="hl kwd">/ 60 + 1/</span><span class="hl num">2</span><span class="hl opt">) }</span> <span class="hl kwc">map</span> <span class="hl opt">{</span> <span class="hl kwc">split</span> <span class="hl str">&quot;</span><span class="hl esc">\n</span><span class="hl str">&quot;</span> <span class="hl opt">}</span> <span class="hl kwb">&#64;_</span><span class="hl opt">);</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$box</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>VBox<span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">,</span><span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwa">return</span> <span class="hl kwb">$box</span> <span class="hl kwa">if</span> <span class="hl kwb">$nbline</span> <span class="hl opt">==</span> <span class="hl num">0</span><span class="hl opt">;</span>

    <span class="hl kwb">$o</span><span class="hl opt">-&gt;{</span>box_size<span class="hl opt">} =</span> n_line_size<span class="hl opt">(</span><span class="hl kwb">$nbline,</span> <span class="hl str">&apos;text&apos;</span><span class="hl opt">,</span> <span class="hl kwb">$box</span><span class="hl opt">);</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">&#64;_</span> <span class="hl opt">&lt;=</span> <span class="hl num">2</span> <span class="hl opt">&amp;&amp;</span> <span class="hl kwb">$nbline</span> <span class="hl opt">&gt;</span> <span class="hl num">4</span><span class="hl opt">) {</span>
	<span class="hl kwb">$o</span><span class="hl opt">-&gt;{</span>icon<span class="hl opt">} &amp;&amp; !$::</span>isWizard <span class="hl kwc">and</span> 
	  <span class="hl kwc">eval</span> <span class="hl opt">{</span> gtkpack__<span class="hl opt">(</span><span class="hl kwb">$box,</span> gtkset_border_width<span class="hl opt">(</span>gtkpack_<span class="hl opt">(</span>new Gtk<span class="hl opt">::</span>HBox<span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">,</span><span class="hl num">0</span><span class="hl opt">),</span> <span class="hl num">1</span><span class="hl opt">,</span> gtkpng<span class="hl opt">(</span><span class="hl kwb">$o</span><span class="hl opt">-&gt;{</span>icon<span class="hl opt">})),</span><span class="hl num">5</span><span class="hl opt">)) };</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$wanted</span> <span class="hl opt">=</span> <span class="hl kwb">$o</span><span class="hl opt">-&gt;{</span>box_size<span class="hl opt">};</span>
	<span class="hl kwb">$o</span><span class="hl opt">-&gt;{</span>box_size<span class="hl opt">} =</span> min<span class="hl opt">(</span><span class="hl num">200</span><span class="hl opt">,</span> <span class="hl kwb">$o</span><span class="hl opt">-&gt;{</span>box_size<span class="hl opt">});</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$has_scroll</span> <span class="hl opt">=</span> <span class="hl kwb">$o</span><span class="hl opt">-&gt;{</span>box_size<span class="hl opt">} &lt;</span> <span class="hl kwb">$wanted</span><span class="hl opt">;</span>

	<span class="hl kwc">my</span> <span class="hl kwb">$wtext</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>Text<span class="hl opt">;</span>
	<span class="hl kwb">$wtext</span><span class="hl opt">-&gt;</span><span class="hl kwd">can_focus</span><span class="hl opt">(</span><span class="hl kwb">$has_scroll</span><span class="hl opt">);</span>
	<span class="hl kwc">chomp</span><span class="hl opt">(</span><span class="hl kwc">my</span> <span class="hl kwb">$text</span> <span class="hl opt">=</span> <span class="hl kwc">join</span><span class="hl opt">(</span><span class="hl str">&quot;</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">,</span> <span class="hl kwb">&#64;_</span><span class="hl opt">));</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$scroll</span> <span class="hl opt">=</span> createScrolledWindow<span class="hl opt">(</span>gtktext_insert<span class="hl opt">(</span><span class="hl kwb">$wtext, $text</span><span class="hl opt">));</span>
	<span class="hl kwb">$scroll</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_usize</span><span class="hl opt">(</span><span class="hl num">400</span><span class="hl opt">,</span> <span class="hl kwb">$o</span><span class="hl opt">-&gt;{</span>box_size<span class="hl opt">});</span>
	gtkpack__<span class="hl opt">(</span><span class="hl kwb">$box, $scroll</span><span class="hl opt">);</span>
    <span class="hl opt">}</span> <span class="hl kwa">else</span> <span class="hl opt">{</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$a</span> <span class="hl opt">= !$::</span>no_separator<span class="hl opt">;</span>
	<span class="hl kwc">undef</span> <span class="hl opt">$::</span>no_separator<span class="hl opt">;</span>
	<span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$o</span><span class="hl opt">-&gt;{</span>icon<span class="hl opt">} &amp;&amp; !$::</span>isWizard<span class="hl opt">) {</span>
	    gtkpack__<span class="hl opt">(</span><span class="hl kwb">$box,</span>
		      gtkpack_<span class="hl opt">(</span>new Gtk<span class="hl opt">::</span>HBox<span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">,</span><span class="hl num">0</span><span class="hl opt">),</span>
			       <span class="hl num">0</span><span class="hl opt">,</span> gtkset_usize<span class="hl opt">(</span>new Gtk<span class="hl opt">::</span>VBox<span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">,</span><span class="hl num">0</span><span class="hl opt">),</span> <span class="hl num">15</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">),</span>
			       <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwc">eval</span> <span class="hl opt">{</span> gtkpng<span class="hl opt">(</span><span class="hl kwb">$o</span><span class="hl opt">-&gt;{</span>icon<span class="hl opt">}) },</span>
			       <span class="hl num">0</span><span class="hl opt">,</span> gtkset_usize<span class="hl opt">(</span>new Gtk<span class="hl opt">::</span>VBox<span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">,</span><span class="hl num">0</span><span class="hl opt">),</span> <span class="hl num">15</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">),</span>
			       <span class="hl num">1</span><span class="hl opt">,</span> gtkpack_<span class="hl opt">(</span><span class="hl kwb">$o</span><span class="hl opt">-&gt;{</span>box_title<span class="hl opt">} =</span> new Gtk<span class="hl opt">::</span>VBox<span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">,</span><span class="hl num">0</span><span class="hl opt">),</span>
					   <span class="hl num">1</span><span class="hl opt">,</span> new Gtk<span class="hl opt">::</span>HBox<span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">,</span><span class="hl num">0</span><span class="hl opt">),</span>
					   <span class="hl opt">(</span><span class="hl kwc">map</span> <span class="hl opt">{</span>
					       <span class="hl kwc">my</span> <span class="hl kwb">$w</span> <span class="hl opt">=</span> <span class="hl kwc">ref</span> <span class="hl kwb">$_</span> ? <span class="hl kwb">$_</span> <span class="hl opt">:</span> new Gtk<span class="hl opt">::</span>Label<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">);</span>
					       <span class="hl opt">$::</span>isWizard <span class="hl kwc">and</span> <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_justify</span><span class="hl opt">(</span><span class="hl str">&quot;left&quot;</span><span class="hl opt">);</span>
					       <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_name</span><span class="hl opt">(</span><span class="hl str">&quot;Title&quot;</span><span class="hl opt">);</span>
					       <span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwb">$w</span><span class="hl opt">);</span>
					   <span class="hl opt">}</span> <span class="hl kwc">map</span> <span class="hl opt">{</span> <span class="hl kwc">ref</span> <span class="hl kwb">$_</span> ? <span class="hl kwb">$_</span> <span class="hl opt">:</span> warp_text<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">) }</span> <span class="hl kwb">&#64;_</span><span class="hl opt">),</span>
					   <span class="hl num">1</span><span class="hl opt">,</span> new Gtk<span class="hl opt">::</span>HBox<span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">,</span><span class="hl num">0</span><span class="hl opt">),</span>
					  <span class="hl opt">)</span>
			      <span class="hl opt">),</span>
		      if_<span class="hl opt">(</span><span class="hl kwb">$a,</span> new Gtk<span class="hl opt">::</span>HSeparator<span class="hl opt">)</span>
		     <span class="hl opt">)</span>
	<span class="hl opt">}</span> <span class="hl kwa">else</span> <span class="hl opt">{</span>
	    gtkpack__<span class="hl opt">(</span><span class="hl kwb">$box,</span>
		      <span class="hl opt">(</span><span class="hl kwc">map</span> <span class="hl opt">{</span>
			  <span class="hl kwc">my</span> <span class="hl kwb">$w</span> <span class="hl opt">=</span> <span class="hl kwc">ref</span> <span class="hl kwb">$_</span> ? <span class="hl kwb">$_</span> <span class="hl opt">:</span> new Gtk<span class="hl opt">::</span>Label<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">);</span>
			  <span class="hl opt">$::</span>isWizard <span class="hl kwc">and</span> <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_justify</span><span class="hl opt">(</span><span class="hl str">&quot;left&quot;</span><span class="hl opt">);</span>
			  <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_name</span><span class="hl opt">(</span><span class="hl str">&quot;Title&quot;</span><span class="hl opt">);</span>
			  <span class="hl kwb">$w</span><span class="hl opt">;</span>
		      <span class="hl opt">}</span> <span class="hl kwc">map</span> <span class="hl opt">{</span> <span class="hl kwc">ref</span> <span class="hl kwb">$_</span> ? <span class="hl kwb">$_</span> <span class="hl opt">:</span> warp_text<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">) }</span> <span class="hl kwb">&#64;_</span><span class="hl opt">),</span>
		      if_<span class="hl opt">(</span><span class="hl kwb">$a,</span> new Gtk<span class="hl opt">::</span>HSeparator<span class="hl opt">)</span>
		     <span class="hl opt">)</span>
	<span class="hl opt">}</span>
    <span class="hl opt">}</span>
<span class="hl opt">}</span>

<span class="hl slc"># drakfloppy / logdrake</span>
<span class="hl kwa">sub</span> create_dialog <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$label, $c</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$ret</span> <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$dialog</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>Dialog<span class="hl opt">;</span>
    <span class="hl kwb">$dialog</span><span class="hl opt">-&gt;</span><span class="hl kwd">signal_connect</span> <span class="hl opt">(</span>delete_event <span class="hl opt">=&gt;</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span> Gtk-<span class="hl opt">&gt;</span><span class="hl kwd">main_quit</span><span class="hl opt">() });</span>
    <span class="hl kwb">$dialog</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_title</span><span class="hl opt">(</span>_<span class="hl opt">(</span><span class="hl str">&quot;logdrake&quot;</span><span class="hl opt">));</span>
    <span class="hl kwb">$dialog</span><span class="hl opt">-&gt;</span><span class="hl kwd">border_width</span><span class="hl opt">(</span><span class="hl num">10</span><span class="hl opt">);</span>
    <span class="hl kwb">$dialog</span><span class="hl opt">-&gt;</span><span class="hl kwd">vbox</span><span class="hl opt">-&gt;</span><span class="hl kwd">pack_start</span><span class="hl opt">(</span>new Gtk<span class="hl opt">::</span>Label<span class="hl opt">(</span><span class="hl kwb">$label</span><span class="hl opt">),</span><span class="hl num">1</span><span class="hl opt">,</span><span class="hl num">1</span><span class="hl opt">,</span><span class="hl num">0</span><span class="hl opt">);</span>

    <span class="hl kwc">my</span> <span class="hl kwb">$button</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>Button _<span class="hl opt">(</span><span class="hl str">&quot;OK&quot;</span><span class="hl opt">);</span>
    <span class="hl kwb">$button</span><span class="hl opt">-&gt;</span><span class="hl kwd">can_default</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
    <span class="hl kwb">$button</span><span class="hl opt">-&gt;</span><span class="hl kwd">signal_connect</span><span class="hl opt">(</span>clicked <span class="hl opt">=&gt;</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span> <span class="hl kwb">$ret</span> <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span> <span class="hl kwb">$dialog</span><span class="hl opt">-&gt;</span><span class="hl kwd">destroy</span><span class="hl opt">();</span> Gtk-<span class="hl opt">&gt;</span><span class="hl kwd">main_quit</span><span class="hl opt">() });</span>
    <span class="hl kwb">$dialog</span><span class="hl opt">-&gt;</span><span class="hl kwd">action_area</span><span class="hl opt">-&gt;</span><span class="hl kwd">pack_start</span><span class="hl opt">(</span><span class="hl kwb">$button,</span> <span class="hl num">1</span><span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwb">$button</span><span class="hl opt">-&gt;</span><span class="hl kwd">grab_default</span><span class="hl opt">;</span>

    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$c</span><span class="hl opt">) {</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$button2</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>Button _<span class="hl opt">(</span><span class="hl str">&quot;Cancel&quot;</span><span class="hl opt">);</span>
	<span class="hl kwb">$button2</span><span class="hl opt">-&gt;</span><span class="hl kwd">signal_connect</span><span class="hl opt">(</span>clicked <span class="hl opt">=&gt;</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span> <span class="hl kwb">$ret</span> <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> <span class="hl kwb">$dialog</span><span class="hl opt">-&gt;</span><span class="hl kwd">destroy</span><span class="hl opt">();</span> Gtk-<span class="hl opt">&gt;</span><span class="hl kwd">main_quit</span><span class="hl opt">() });</span>
	<span class="hl kwb">$button2</span><span class="hl opt">-&gt;</span><span class="hl kwd">can_default</span><span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">);</span>
	<span class="hl kwb">$dialog</span><span class="hl opt">-&gt;</span><span class="hl kwd">action_area</span><span class="hl opt">-&gt;</span><span class="hl kwd">pack_start</span><span class="hl opt">(</span><span class="hl kwb">$button2,</span> <span class="hl num">1</span><span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl opt">}</span>

    <span class="hl kwb">$dialog</span><span class="hl opt">-&gt;</span><span class="hl kwd">show_all</span><span class="hl opt">;</span>
    Gtk-<span class="hl opt">&gt;</span><span class="hl kwd">main</span><span class="hl opt">();</span>
    <span class="hl kwb">$ret</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl slc"># drakfloppy / logdrake</span>
<span class="hl kwa">sub</span> destroy_window <span class="hl opt">{</span>
	<span class="hl kwc">my</span><span class="hl opt">(</span><span class="hl kwb">$widget, $windowref, $w2</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
	<span class="hl kwb">$$windowref</span> <span class="hl opt">=</span> <span class="hl kwc">undef</span><span class="hl opt">;</span>
	<span class="hl kwb">$w2</span> <span class="hl opt">=</span> <span class="hl kwc">undef</span> <span class="hl kwa">if</span> <span class="hl kwc">defined</span> <span class="hl kwb">$w2</span><span class="hl opt">;</span>
	<span class="hl num">0</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> create_hbox <span class="hl opt">{</span> gtkset_layout<span class="hl opt">(</span>gtkset_border_width<span class="hl opt">(</span>new Gtk<span class="hl opt">::</span>HButtonBox<span class="hl opt">,</span> <span class="hl num">3</span><span class="hl opt">),</span> <span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">] ||</span> <span class="hl str">&apos;spread&apos;</span><span class="hl opt">) }</span>

<span class="hl kwa">sub</span> create_factory_menu_ <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$type, $name, $window, &#64;menu_items</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$widget</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>ItemFactory<span class="hl opt">(</span><span class="hl kwb">$type, $name,</span> <span class="hl kwc">my</span> <span class="hl kwb">$accel_group</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>AccelGroup<span class="hl opt">);</span>
    <span class="hl kwb">$widget</span><span class="hl opt">-&gt;</span><span class="hl kwd">create_items</span><span class="hl opt">(</span><span class="hl kwb">&#64;menu_items</span><span class="hl opt">);</span>
    <span class="hl kwb">$window</span><span class="hl opt">-&gt;</span><span class="hl kwd">add_accel_group</span><span class="hl opt">(</span><span class="hl kwb">$accel_group</span><span class="hl opt">);</span> <span class="hl slc">#$accel_group-&gt;attach($main_win);</span>
    <span class="hl kwb">$widget</span><span class="hl opt">-&gt;</span><span class="hl kwd">get_widget</span><span class="hl opt">(</span><span class="hl kwb">$name</span><span class="hl opt">);</span> <span class="hl slc"># return menu bar</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> create_factory_menu <span class="hl opt">{</span> create_factory_menu_<span class="hl opt">(</span><span class="hl str">&apos;Gtk::MenuBar&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;&lt;main&gt;&apos;</span><span class="hl opt">,</span> <span class="hl kwb">&#64;_</span><span class="hl opt">) }</span>

<span class="hl kwa">sub</span> create_menu <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$title</span> <span class="hl opt">=</span> <span class="hl kwc">shift</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$w</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>MenuItem<span class="hl opt">(</span><span class="hl kwb">$title</span><span class="hl opt">);</span>
    <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_submenu</span><span class="hl opt">(</span>gtkshow<span class="hl opt">(</span>gtkappend<span class="hl opt">(</span>new Gtk<span class="hl opt">::</span>Menu<span class="hl opt">,</span> <span class="hl kwb">&#64;_</span><span class="hl opt">)));</span>
    <span class="hl kwb">$w</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> create_notebook <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$n</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>Notebook<span class="hl opt">;</span>
    add2notebook<span class="hl opt">(</span><span class="hl kwb">$n,</span> <span class="hl kwc">splice</span><span class="hl opt">(</span><span class="hl kwb">&#64;_,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl num">2</span><span class="hl opt">))</span> <span class="hl kwa">while</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwb">$n</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> create_packtable <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$options, &#64;l</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$w</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>Table<span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwb">$options</span><span class="hl opt">-&gt;{</span>homogeneous<span class="hl opt">} ||</span> <span class="hl num">0</span><span class="hl opt">);</span>
    map_index <span class="hl opt">{</span>
	<span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$i, $l</span><span class="hl opt">) = (</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">],</span> <span class="hl kwb">$_</span><span class="hl opt">);</span>
	map_index <span class="hl opt">{</span>
	    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$j</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
	    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">) {</span>
		<span class="hl kwc">ref</span> <span class="hl kwb">$_</span> <span class="hl kwc">or</span> <span class="hl kwb">$_</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>Label<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">);</span>
		<span class="hl kwb">$j</span> <span class="hl opt">!=</span> <span class="hl kwb">$#$l</span> ?
		  <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">attach</span><span class="hl opt">(</span><span class="hl kwb">$_, $j, $j</span> <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">,</span> <span class="hl kwb">$i, $i</span> <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">,</span> <span class="hl str">&apos;fill&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;fill&apos;</span><span class="hl opt">,</span> <span class="hl num">5</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">) :</span>
		  <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">attach</span><span class="hl opt">(</span><span class="hl kwb">$_, $j, $j</span> <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">,</span> <span class="hl kwb">$i, $i</span> <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">|</span><span class="hl num">4</span><span class="hl opt">,</span> <span class="hl kwc">ref</span><span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">)</span> <span class="hl kwc">eq</span> <span class="hl str">&apos;Gtk::ScrolledWindow&apos;</span> ? <span class="hl num">1</span><span class="hl opt">|</span><span class="hl num">4</span> <span class="hl opt">:</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
		<span class="hl kwb">$_</span><span class="hl opt">-&gt;</span><span class="hl kwd">show</span><span class="hl opt">;</span>
	    <span class="hl opt">}</span>
	<span class="hl opt">}</span> <span class="hl kwb">&#64;$l</span><span class="hl opt">;</span>
    <span class="hl opt">}</span> <span class="hl kwb">&#64;l</span><span class="hl opt">;</span>
    <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_col_spacings</span><span class="hl opt">(</span><span class="hl kwb">$options</span><span class="hl opt">-&gt;{</span>col_spacings<span class="hl opt">} ||</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_row_spacings</span><span class="hl opt">(</span><span class="hl kwb">$options</span><span class="hl opt">-&gt;{</span>row_spacings<span class="hl opt">} ||</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwb">$w</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> createScrolledWindow <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$W, $policy</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$w</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>ScrolledWindow<span class="hl opt">(</span><span class="hl kwc">undef</span><span class="hl opt">,</span> <span class="hl kwc">undef</span><span class="hl opt">);</span>
    <span class="hl kwb">$policy</span> <span class="hl opt">||= [</span> <span class="hl str">&apos;automatic&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;automatic&apos;</span><span class="hl opt">];</span>
    <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_policy</span><span class="hl opt">(&#64;{</span><span class="hl kwb">$policy</span><span class="hl opt">});</span>
    member<span class="hl opt">(</span><span class="hl kwc">ref</span> <span class="hl kwb">$W,</span> <span class="hl str">qw(Gtk::CList Gtk::CTree Gtk::Text)</span><span class="hl opt">)</span> ?
      <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">add</span><span class="hl opt">(</span><span class="hl kwb">$W</span><span class="hl opt">) :</span>
      <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">add_with_viewport</span><span class="hl opt">(</span><span class="hl kwb">$W</span><span class="hl opt">);</span>
    <span class="hl kwb">$W</span><span class="hl opt">-&gt;</span><span class="hl kwd">can</span><span class="hl opt">(</span><span class="hl str">&quot;set_focus_vadjustment&quot;</span><span class="hl opt">)</span> <span class="hl kwc">and</span> <span class="hl kwb">$W</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_focus_vadjustment</span><span class="hl opt">(</span><span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">get_vadjustment</span><span class="hl opt">);</span>
    <span class="hl kwb">$W</span><span class="hl opt">-&gt;</span><span class="hl kwd">show</span><span class="hl opt">;</span>
    <span class="hl kwb">$w</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> create_treeitem <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$name</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$next_child, $left, $right, $up, $down</span><span class="hl opt">);</span>
    <span class="hl kwb">$next_child</span> <span class="hl opt">=</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span>
	<span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$c, $dir</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
	<span class="hl kwc">my</span> <span class="hl kwb">&#64;childs</span> <span class="hl opt">=</span> <span class="hl kwb">$c</span><span class="hl opt">-&gt;</span><span class="hl kwd">parent</span><span class="hl opt">-&gt;</span><span class="hl kwd">children</span><span class="hl opt">;</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$i</span><span class="hl opt">;</span> <span class="hl kwa">for</span> <span class="hl opt">(</span><span class="hl kwb">$i</span> <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span> <span class="hl kwb">$i</span> <span class="hl opt">&lt;</span> <span class="hl kwb">&#64;childs</span><span class="hl opt">;</span> <span class="hl kwb">$i++</span><span class="hl opt">) {</span> <span class="hl kwa">last if</span> <span class="hl kwb">$childs</span><span class="hl opt">[</span><span class="hl kwb">$i</span><span class="hl opt">] ==</span> <span class="hl kwb">$c</span> <span class="hl opt">||</span> <span class="hl kwb">$childs</span><span class="hl opt">[</span><span class="hl kwb">$i</span><span class="hl opt">]-&gt;</span><span class="hl kwd">subtree</span> <span class="hl opt">==</span> <span class="hl kwb">$c</span> <span class="hl opt">}</span>
	<span class="hl kwb">$i</span> <span class="hl opt">+=</span> <span class="hl kwb">$dir</span><span class="hl opt">;</span>
	<span class="hl num">0</span> <span class="hl opt">&lt;=</span> <span class="hl kwb">$i</span> <span class="hl opt">&amp;&amp;</span> <span class="hl kwb">$i</span> <span class="hl opt">&lt;</span> <span class="hl kwb">&#64;childs</span> ? <span class="hl kwb">$childs</span><span class="hl opt">[</span><span class="hl kwb">$i</span><span class="hl opt">] :</span> <span class="hl kwc">undef</span><span class="hl opt">;</span>
    <span class="hl opt">};</span>
    <span class="hl kwb">$left</span> <span class="hl opt">=</span> <span class="hl kwa">sub</span> <span class="hl opt">{ &amp;</span><span class="hl kwb">$next_child</span><span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">]-&gt;</span><span class="hl kwd">parent</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">) };</span>
    <span class="hl kwb">$right</span> <span class="hl opt">=</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span> <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$c</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span> <span class="hl kwb">$c</span><span class="hl opt">-&gt;</span><span class="hl kwd">subtree</span> <span class="hl kwc">and</span> <span class="hl kwb">$c</span><span class="hl opt">-&gt;</span><span class="hl kwd">expand</span><span class="hl opt">,</span> <span class="hl kwa">return</span> <span class="hl opt">(</span><span class="hl kwb">$c</span><span class="hl opt">-&gt;</span><span class="hl kwd">subtree</span><span class="hl opt">-&gt;</span><span class="hl kwd">children</span><span class="hl opt">)[</span><span class="hl num">0</span><span class="hl opt">];</span> <span class="hl kwb">$c</span> <span class="hl opt">};</span>
    <span class="hl kwb">$down</span> <span class="hl opt">=</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span>
	<span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$c</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
	<span class="hl kwa">return</span> <span class="hl opt">&amp;</span><span class="hl kwb">$right</span><span class="hl opt">(</span><span class="hl kwb">$c</span><span class="hl opt">)</span> <span class="hl kwa">if</span> <span class="hl kwc">ref</span> <span class="hl kwb">$c</span> <span class="hl kwc">eq</span> <span class="hl str">&quot;Gtk::TreeItem&quot;</span> <span class="hl opt">&amp;&amp;</span> <span class="hl kwb">$c</span><span class="hl opt">-&gt;</span><span class="hl kwd">subtree</span> <span class="hl opt">&amp;&amp;</span> <span class="hl kwb">$c</span><span class="hl opt">-&gt;</span><span class="hl kwd">expanded</span><span class="hl opt">;</span>
	<span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwc">my</span> <span class="hl kwb">$n</span> <span class="hl opt">= &amp;</span><span class="hl kwb">$next_child</span><span class="hl opt">(</span><span class="hl kwb">$c,</span> <span class="hl num">1</span><span class="hl opt">)) {</span>
	    <span class="hl kwb">$n</span><span class="hl opt">;</span>
	<span class="hl opt">}</span> <span class="hl kwa">else</span> <span class="hl opt">{</span>
	    <span class="hl kwa">return if</span> <span class="hl kwc">ref</span> <span class="hl kwb">$c</span><span class="hl opt">-&gt;</span><span class="hl kwd">parent</span> <span class="hl kwc">ne</span> <span class="hl str">&apos;Gtk::Tree&apos;</span><span class="hl opt">;</span>	
	    <span class="hl opt">&amp;</span><span class="hl kwb">$down</span><span class="hl opt">(</span><span class="hl kwb">$c</span><span class="hl opt">-&gt;</span><span class="hl kwd">parent</span><span class="hl opt">);</span>
	<span class="hl opt">}</span>
    <span class="hl opt">};</span>
    <span class="hl kwb">$up</span> <span class="hl opt">=</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span>
	<span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$c</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
	<span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwc">my</span> <span class="hl kwb">$n</span> <span class="hl opt">= &amp;</span><span class="hl kwb">$next_child</span><span class="hl opt">(</span><span class="hl kwb">$c,</span> <span class="hl opt">-</span><span class="hl num">1</span><span class="hl opt">)) {</span>
	    <span class="hl kwb">$n</span> <span class="hl opt">= (</span><span class="hl kwb">$n</span><span class="hl opt">-&gt;</span><span class="hl kwd">subtree</span><span class="hl opt">-&gt;</span><span class="hl kwd">children</span><span class="hl opt">)[-</span><span class="hl num">1</span><span class="hl opt">]</span> <span class="hl kwa">while</span> <span class="hl kwc">ref</span> <span class="hl kwb">$n</span> <span class="hl kwc">eq</span> <span class="hl str">&quot;Gtk::TreeItem&quot;</span> <span class="hl opt">&amp;&amp;</span> <span class="hl kwb">$n</span><span class="hl opt">-&gt;</span><span class="hl kwd">subtree</span> <span class="hl opt">&amp;&amp;</span> <span class="hl kwb">$n</span><span class="hl opt">-&gt;</span><span class="hl kwd">expanded</span><span class="hl opt">;</span>
	    <span class="hl kwb">$n</span><span class="hl opt">;</span>
	<span class="hl opt">}</span> <span class="hl kwa">else</span> <span class="hl opt">{</span>
	    <span class="hl kwa">return if</span> <span class="hl kwc">ref</span> <span class="hl kwb">$c</span><span class="hl opt">-&gt;</span><span class="hl kwd">parent</span> <span class="hl kwc">ne</span> <span class="hl str">&apos;Gtk::Tree&apos;</span><span class="hl opt">;</span>	
	    <span class="hl opt">&amp;</span><span class="hl kwb">$left</span><span class="hl opt">(</span><span class="hl kwb">$c</span><span class="hl opt">);</span>
	<span class="hl opt">}</span>
    <span class="hl opt">};</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$w</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>TreeItem<span class="hl opt">(</span><span class="hl kwb">$name</span><span class="hl opt">);</span>
    <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">signal_connect</span><span class="hl opt">(</span>key_press_event <span class="hl opt">=&gt;</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span>
        <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwc">undef</span><span class="hl opt">,</span> <span class="hl kwb">$e</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
        <span class="hl kwc">local</span> <span class="hl kwb">$_</span> <span class="hl opt">=</span> <span class="hl kwc">chr</span> <span class="hl opt">(</span><span class="hl kwb">$e</span><span class="hl opt">-&gt;{</span>keyval<span class="hl opt">});</span>

	<span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$e</span><span class="hl opt">-&gt;{</span>keyval<span class="hl opt">} &gt;</span> <span class="hl num">0x100</span><span class="hl opt">) {</span>
	    <span class="hl kwc">my</span> <span class="hl kwb">$n</span><span class="hl opt">;</span>
	    <span class="hl kwb">$n</span> <span class="hl opt">= &amp;</span><span class="hl kwb">$left</span><span class="hl opt">(</span><span class="hl kwb">$w</span><span class="hl opt">)</span>  <span class="hl kwa">if</span> <span class="hl kwd">/[Q\xb4\x96]/</span><span class="hl opt">;</span>
	    <span class="hl kwb">$n</span> <span class="hl opt">= &amp;</span><span class="hl kwb">$right</span><span class="hl opt">(</span><span class="hl kwb">$w</span><span class="hl opt">)</span> <span class="hl kwa">if</span> <span class="hl kwd">/[S\xb6\x98]/</span><span class="hl opt">;</span>
	    <span class="hl kwb">$n</span> <span class="hl opt">= &amp;</span><span class="hl kwb">$up</span><span class="hl opt">(</span><span class="hl kwb">$w</span><span class="hl opt">)</span>    <span class="hl kwa">if</span> <span class="hl kwd">/[R\xb8\x97]/</span><span class="hl opt">;</span>
	    <span class="hl kwb">$n</span> <span class="hl opt">= &amp;</span><span class="hl kwb">$down</span><span class="hl opt">(</span><span class="hl kwb">$w</span><span class="hl opt">)</span>  <span class="hl kwa">if</span> <span class="hl kwd">/[T\xb2\x99]/</span><span class="hl opt">;</span>
	    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$n</span><span class="hl opt">) {</span>
		<span class="hl kwb">$n</span><span class="hl opt">-&gt;</span><span class="hl kwd">focus</span><span class="hl opt">(</span><span class="hl str">&apos;up&apos;</span><span class="hl opt">);</span>
		<span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">signal_emit_stop</span><span class="hl opt">(</span><span class="hl str">&quot;key_press_event&quot;</span><span class="hl opt">);</span> 
	    <span class="hl opt">}</span>
	    <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">expand</span> <span class="hl kwa">if</span> <span class="hl kwd">/[+\xab]/</span><span class="hl opt">;</span>
	    <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">collapse</span> <span class="hl kwa">if</span> <span class="hl kwd">/[-\xad]/</span><span class="hl opt">;</span>
	    <span class="hl kwa">do</span> <span class="hl opt">{</span> 
		<span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">expanded</span> ? <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">collapse</span> <span class="hl opt">:</span> <span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">expand</span><span class="hl opt">;</span> 
		<span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">signal_emit_stop</span><span class="hl opt">(</span><span class="hl str">&quot;key_press_event&quot;</span><span class="hl opt">);</span> 
	    <span class="hl opt">}</span> <span class="hl kwa">if</span> <span class="hl kwd">/[\r\x8d]/</span><span class="hl opt">;</span>
	<span class="hl opt">}</span>
        <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl opt">});</span>
    <span class="hl kwb">$w</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> create_vbox <span class="hl opt">{</span> gtkset_layout<span class="hl opt">(</span>new Gtk<span class="hl opt">::</span>VButtonBox<span class="hl opt">,</span> <span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">] ||</span> <span class="hl str">&apos;spread&apos;</span><span class="hl opt">) }</span>

<span class="hl slc">#-#######################</span>
<span class="hl slc"># public gtk routines</span>
<span class="hl slc">#-#######################</span>

<span class="hl kwa">sub</span> add2notebook <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$n, $title, $book</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$w1, $w2</span><span class="hl opt">) =</span> <span class="hl kwc">map</span> <span class="hl opt">{</span> new Gtk<span class="hl opt">::</span>Label<span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">) }</span> <span class="hl kwb">$title, $title</span><span class="hl opt">;</span>
    <span class="hl kwb">$book</span><span class="hl opt">-&gt;{</span>widget_title<span class="hl opt">} =</span> <span class="hl kwb">$w1</span><span class="hl opt">;</span>
    <span class="hl kwb">$n</span><span class="hl opt">-&gt;</span><span class="hl kwd">append_page_menu</span><span class="hl opt">(</span><span class="hl kwb">$book, $w1, $w2</span><span class="hl opt">);</span>
    <span class="hl kwb">$book</span><span class="hl opt">-&gt;</span><span class="hl kwd">show</span><span class="hl opt">;</span>
    <span class="hl kwb">$w1</span><span class="hl opt">-&gt;</span><span class="hl kwd">show</span><span class="hl opt">;</span>
    <span class="hl kwb">$w2</span><span class="hl opt">-&gt;</span><span class="hl kwd">show</span><span class="hl opt">;</span>
<span class="hl opt">}</span>


<span class="hl kwa">sub</span> tree_set_icon <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$node, $label, $icon</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$hbox</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>HBox<span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">,</span><span class="hl num">0</span><span class="hl opt">);</span>
    gtkpack__<span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">,</span> <span class="hl kwb">$hbox,</span> gtkshow<span class="hl opt">(</span>gtkpng<span class="hl opt">(</span><span class="hl kwb">$icon</span><span class="hl opt">)),</span> gtkshow<span class="hl opt">(</span>new Gtk<span class="hl opt">::</span>Label<span class="hl opt">(</span><span class="hl kwb">$label</span><span class="hl opt">)));</span>
    gtkadd<span class="hl opt">(</span><span class="hl kwb">$node,</span> gtkshow<span class="hl opt">(</span><span class="hl kwb">$hbox</span><span class="hl opt">));</span>
<span class="hl opt">}</span>


<span class="hl kwa">sub</span> ctree_set_icon <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$tree, $node, $icon_pixmap, $icon_mask</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>

    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$text, $spacing,</span> <span class="hl kwc">undef</span><span class="hl opt">,</span> <span class="hl kwc">undef</span><span class="hl opt">,</span> <span class="hl kwc">undef</span><span class="hl opt">,</span> <span class="hl kwc">undef</span><span class="hl opt">,</span> <span class="hl kwb">$isleaf, $expanded</span><span class="hl opt">) =</span> <span class="hl kwb">$tree</span><span class="hl opt">-&gt;</span><span class="hl kwd">get_node_info</span><span class="hl opt">(</span><span class="hl kwb">$node</span><span class="hl opt">);</span>
    <span class="hl kwb">$tree</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_node_info</span><span class="hl opt">(</span><span class="hl kwb">$node, $text, $spacing, $icon_pixmap, $icon_mask, $icon_pixmap, $icon_mask, $isleaf, $expanded</span><span class="hl opt">);</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> get_text_coord <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$text, $widget4style, $max_width, $max_height, $can_be_greater, $can_be_smaller, $centeredx, $centeredy, $wrap_char</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwb">$wrap_char</span> <span class="hl opt">||=</span> <span class="hl str">&apos; &apos;</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$idx</span> <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$real_width</span> <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$real_height</span> <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">&#64;lines</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">&#64;widths</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">&#64;heights</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$height_elem</span> <span class="hl opt">=</span> <span class="hl kwb">$widget4style</span><span class="hl opt">-&gt;</span><span class="hl kwd">style</span><span class="hl opt">-&gt;</span><span class="hl kwd">font</span><span class="hl opt">-&gt;</span><span class="hl kwd">ascent</span> <span class="hl opt">+</span> <span class="hl kwb">$widget4style</span><span class="hl opt">-&gt;</span><span class="hl kwd">style</span><span class="hl opt">-&gt;</span><span class="hl kwd">font</span><span class="hl opt">-&gt;</span><span class="hl kwd">descent</span><span class="hl opt">;</span>
    <span class="hl kwb">$heights</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">] =</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$max_width2</span> <span class="hl opt">=</span> <span class="hl kwb">$max_width</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$height</span> <span class="hl opt">=</span> <span class="hl kwb">$heights</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">] =</span> <span class="hl kwb">$height_elem</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$width</span> <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$flag</span> <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">&#64;t</span> <span class="hl opt">=</span> <span class="hl kwc">split</span><span class="hl opt">(</span><span class="hl kwb">$wrap_char, $text</span><span class="hl opt">);</span>
    <span class="hl kwc">my</span> <span class="hl kwb">&#64;t2</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span> <span class="hl opt">($::</span>isInstall <span class="hl opt">&amp;&amp; $::</span>o-<span class="hl opt">&gt;{</span>lang<span class="hl opt">} =~</span> <span class="hl kwd">/ja|zh/</span><span class="hl opt">) {</span>
	<span class="hl kwb">&#64;t</span> <span class="hl opt">=</span> <span class="hl kwc">map</span> <span class="hl opt">{</span> <span class="hl kwb">$_</span> <span class="hl opt">.</span> <span class="hl kwb">$wrap_char</span> <span class="hl opt">}</span> <span class="hl kwb">&#64;t</span><span class="hl opt">;</span>
	<span class="hl kwb">$wrap_char</span> <span class="hl opt">=</span> <span class="hl str">&apos;&apos;</span><span class="hl opt">;</span>
	<span class="hl kwa">foreach</span> <span class="hl opt">(</span><span class="hl kwb">&#64;t</span><span class="hl opt">) {</span>
	    <span class="hl kwc">my</span> <span class="hl kwb">&#64;c</span> <span class="hl opt">=</span> <span class="hl kwc">split</span><span class="hl opt">(</span><span class="hl str">&apos;&apos;</span><span class="hl opt">);</span>
	    <span class="hl kwc">my</span> <span class="hl kwb">$i</span> <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
	    <span class="hl kwc">my</span> <span class="hl kwb">$el</span> <span class="hl opt">=</span> <span class="hl str">&apos;&apos;</span><span class="hl opt">;</span>
	    <span class="hl kwa">while</span> <span class="hl opt">(</span><span class="hl num">1</span><span class="hl opt">) {</span>
		<span class="hl kwb">$i</span> <span class="hl opt">&gt;=</span> <span class="hl kwb">&#64;c</span> <span class="hl kwc">and</span> <span class="hl kwa">last</span><span class="hl opt">;</span>
		<span class="hl kwb">$el</span> <span class="hl opt">.=</span> <span class="hl kwb">$c</span><span class="hl opt">[</span><span class="hl kwb">$i</span><span class="hl opt">];</span>
		<span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwc">ord</span><span class="hl opt">(</span><span class="hl kwb">$c</span><span class="hl opt">[</span><span class="hl kwb">$i</span><span class="hl opt">]) &gt;=</span> <span class="hl num">128</span><span class="hl opt">) {</span> <span class="hl kwb">$el</span> <span class="hl opt">.=</span> <span class="hl kwb">$c</span><span class="hl opt">[</span><span class="hl kwb">$i+1</span><span class="hl opt">];</span> <span class="hl kwb">$i++</span><span class="hl opt">;</span> <span class="hl kwc">push</span> <span class="hl kwb">&#64;t2, $el</span><span class="hl opt">;</span> <span class="hl kwb">$el</span> <span class="hl opt">=</span> <span class="hl str">&apos;&apos;</span> <span class="hl opt">}</span>
		<span class="hl kwb">$i++</span><span class="hl opt">;</span>
	    <span class="hl opt">}</span>
	    <span class="hl kwb">$el</span> <span class="hl kwc">ne</span> <span class="hl str">&apos;&apos;</span> <span class="hl kwc">and push</span> <span class="hl kwb">&#64;t2, $el</span><span class="hl opt">;</span>
	<span class="hl opt">}</span>
    <span class="hl opt">}</span> <span class="hl kwa">else</span> <span class="hl opt">{</span>
	<span class="hl kwb">&#64;t2</span> <span class="hl opt">=</span> <span class="hl kwb">&#64;t</span><span class="hl opt">;</span>
    <span class="hl opt">}</span>
    <span class="hl kwa">foreach</span> <span class="hl opt">(</span><span class="hl kwb">&#64;t2</span><span class="hl opt">) {</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$l</span> <span class="hl opt">=</span> <span class="hl kwb">$widget4style</span><span class="hl opt">-&gt;</span><span class="hl kwd">style</span><span class="hl opt">-&gt;</span><span class="hl kwd">font</span><span class="hl opt">-&gt;</span><span class="hl kwd">string_width</span><span class="hl opt">(</span><span class="hl kwb">$_</span> <span class="hl opt">. (!</span><span class="hl kwb">$flag</span> ? <span class="hl kwb">$wrap_char</span> <span class="hl opt">:</span> <span class="hl str">&apos;&apos;</span><span class="hl opt">));</span>
	<span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$width</span> <span class="hl opt">+</span> <span class="hl kwb">$l</span> <span class="hl opt">&gt;</span> <span class="hl kwb">$max_width2</span> <span class="hl opt">&amp;&amp; !</span><span class="hl kwb">$flag</span><span class="hl opt">) {</span>
	    <span class="hl kwb">$flag</span> <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
	    <span class="hl kwb">$height</span> <span class="hl opt">+=</span> <span class="hl kwb">$height_elem</span> <span class="hl opt">+</span> <span class="hl num">1</span><span class="hl opt">;</span>
	    <span class="hl kwb">$heights</span><span class="hl opt">[</span><span class="hl kwb">$idx+1</span><span class="hl opt">] =</span> <span class="hl kwb">$height</span><span class="hl opt">;</span>
	    <span class="hl kwb">$widths</span><span class="hl opt">[</span><span class="hl kwb">$idx</span><span class="hl opt">] =</span> <span class="hl kwb">$centeredx</span> <span class="hl opt">&amp;&amp; !</span><span class="hl kwb">$can_be_smaller</span> ? <span class="hl opt">(</span>max<span class="hl opt">(</span><span class="hl kwb">$max_width2</span><span class="hl opt">-</span><span class="hl kwb">$width,</span> <span class="hl num">0</span><span class="hl opt">))/</span><span class="hl num">2</span> <span class="hl opt">:</span> <span class="hl num">0</span><span class="hl opt">;</span>
	    <span class="hl kwb">$width</span> <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
	    <span class="hl kwb">$idx++</span><span class="hl opt">;</span>
	<span class="hl opt">}</span>
	<span class="hl kwb">$lines</span><span class="hl opt">[</span><span class="hl kwb">$idx</span><span class="hl opt">] =</span> <span class="hl kwb">$flag</span> ? <span class="hl kwb">$_</span> <span class="hl opt">:</span> <span class="hl kwb">$lines</span><span class="hl opt">[</span><span class="hl kwb">$idx</span><span class="hl opt">] .</span> <span class="hl kwb">$wrap_char</span> <span class="hl opt">.</span> <span class="hl kwb">$_</span><span class="hl opt">;</span>
	<span class="hl kwb">$width</span> <span class="hl opt">+=</span> <span class="hl kwb">$l</span><span class="hl opt">;</span>
	<span class="hl kwb">$flag</span> <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
	<span class="hl kwb">$l</span> <span class="hl opt">&lt;=</span> <span class="hl kwb">$max_width2</span> <span class="hl kwc">or</span> <span class="hl kwb">$max_width2</span> <span class="hl opt">=</span> <span class="hl kwb">$l</span><span class="hl opt">;</span>
	<span class="hl kwb">$width</span> <span class="hl opt">&lt;=</span> <span class="hl kwb">$real_width</span> <span class="hl kwc">or</span> <span class="hl kwb">$real_width</span> <span class="hl opt">=</span> <span class="hl kwb">$width</span><span class="hl opt">;</span>
    <span class="hl opt">}</span>
    <span class="hl kwb">$height</span> <span class="hl opt">+=</span> <span class="hl kwb">$height_elem</span><span class="hl opt">;</span>
    <span class="hl kwb">$widths</span><span class="hl opt">[</span><span class="hl kwb">$idx</span><span class="hl opt">] =</span> <span class="hl kwb">$centeredx</span> <span class="hl opt">&amp;&amp; !</span><span class="hl kwb">$can_be_smaller</span> ? <span class="hl opt">(</span>max<span class="hl opt">(</span><span class="hl kwb">$max_width2</span><span class="hl opt">-</span><span class="hl kwb">$width,</span> <span class="hl num">0</span><span class="hl opt">))/</span><span class="hl num">2</span> <span class="hl opt">:</span> <span class="hl num">0</span><span class="hl opt">;</span>

    <span class="hl kwb">$height</span> <span class="hl opt">&lt;</span> <span class="hl kwb">$real_height</span> <span class="hl kwc">or</span> <span class="hl kwb">$real_height</span> <span class="hl opt">=</span> <span class="hl kwb">$height</span><span class="hl opt">;</span>
    <span class="hl kwb">$width</span> <span class="hl opt">=</span> <span class="hl kwb">$max_width</span><span class="hl opt">;</span>
    <span class="hl kwb">$height</span> <span class="hl opt">=</span> <span class="hl kwb">$max_height</span><span class="hl opt">;</span>
    <span class="hl kwb">$real_width</span> <span class="hl opt">&lt;</span> <span class="hl kwb">$max_width</span> <span class="hl opt">&amp;&amp;</span> <span class="hl kwb">$can_be_smaller</span> <span class="hl kwc">and</span> <span class="hl kwb">$width</span> <span class="hl opt">=</span> <span class="hl kwb">$real_width</span><span class="hl opt">;</span>
    <span class="hl kwb">$real_width</span> <span class="hl opt">&gt;</span> <span class="hl kwb">$max_width</span> <span class="hl opt">&amp;&amp;</span> <span class="hl kwb">$can_be_greater</span> <span class="hl kwc">and</span> <span class="hl kwb">$width</span> <span class="hl opt">=</span> <span class="hl kwb">$real_width</span><span class="hl opt">;</span>
    <span class="hl kwb">$real_height</span> <span class="hl opt">&lt;</span> <span class="hl kwb">$max_height</span> <span class="hl opt">&amp;&amp;</span> <span class="hl kwb">$can_be_smaller</span> <span class="hl kwc">and</span> <span class="hl kwb">$height</span> <span class="hl opt">=</span> <span class="hl kwb">$real_height</span><span class="hl opt">;</span>
    <span class="hl kwb">$real_height</span> <span class="hl opt">&gt;</span> <span class="hl kwb">$max_height</span> <span class="hl opt">&amp;&amp;</span> <span class="hl kwb">$can_be_greater</span> <span class="hl kwc">and</span> <span class="hl kwb">$height</span> <span class="hl opt">=</span> <span class="hl kwb">$real_height</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$centeredy</span><span class="hl opt">) {</span>
 	<span class="hl kwc">my</span> <span class="hl kwb">$dh</span> <span class="hl opt">= (</span><span class="hl kwb">$height</span><span class="hl opt">-</span><span class="hl kwb">$real_height</span><span class="hl opt">)</span><span class="hl kwd">/2 + ($height_elem)/</span><span class="hl num">2</span><span class="hl opt">;</span>
 	<span class="hl kwb">&#64;heights</span> <span class="hl opt">=</span> <span class="hl kwc">map</span> <span class="hl opt">{</span> <span class="hl kwb">$_</span> <span class="hl opt">+</span> <span class="hl kwb">$dh</span> <span class="hl opt">}</span> <span class="hl kwb">&#64;heights</span><span class="hl opt">;</span>
    <span class="hl opt">}</span>
    <span class="hl opt">(</span><span class="hl kwb">$width, $height,</span> \<span class="hl kwb">&#64;lines,</span> \<span class="hl kwb">&#64;widths,</span> \<span class="hl kwb">&#64;heights</span><span class="hl opt">)</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> gtkicons_labels_widget <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$args, $w, $widget_for_font, $background,  $back_pixbuf, $x_back, $y_back, $x_round,</span>
	<span class="hl kwb">$y_round, $x_back2, $y_back2, $icon_width, $icon_height, $exec_func, $exec_hash</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>

    <span class="hl kwc">my</span> <span class="hl kwb">&#64;tab</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$i</span> <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$cursor_hand</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>Gdk<span class="hl opt">::</span>Cursor <span class="hl num">60</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$cursor_normal</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>Gdk<span class="hl opt">::</span>Cursor <span class="hl num">68</span><span class="hl opt">;</span>
	<span class="hl kwc">my</span> <span class="hl kwb">&#64;args</span> <span class="hl opt">=</span> <span class="hl kwb">&#64;$args</span><span class="hl opt">;</span>
    <span class="hl kwa">foreach</span> <span class="hl opt">(</span><span class="hl kwb">&#64;args</span><span class="hl opt">) {</span>
	<span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$label, $tag</span><span class="hl opt">) = (</span><span class="hl kwb">$_</span><span class="hl opt">-&gt;[</span><span class="hl num">0</span><span class="hl opt">],</span> <span class="hl kwb">$_</span><span class="hl opt">-&gt;[</span><span class="hl num">1</span><span class="hl opt">]);</span>
	<span class="hl kwc">die</span> <span class="hl str">&quot;</span><span class="hl ipl">$label</span> <span class="hl str">&apos;s icon is missing&quot;</span> <span class="hl kwa">unless</span> <span class="hl kwb">$exec_hash</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$label</span><span class="hl opt">};</span>
	<span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$dbl_area, $pix, $width, $height</span><span class="hl opt">);</span> <span class="hl slc"># initialized in call back</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$darea</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>DrawingArea<span class="hl opt">;</span>
	<span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$icon,</span> <span class="hl kwc">undef</span><span class="hl opt">) =</span> gtkcreate_png<span class="hl opt">(</span><span class="hl kwb">$tag</span><span class="hl opt">);</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$pixbuf</span> <span class="hl opt">=</span> compose_with_back<span class="hl opt">(</span><span class="hl kwb">$tag, $back_pixbuf</span><span class="hl opt">);</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$pixbuf_h</span> <span class="hl opt">=</span> compose_with_back<span class="hl opt">(</span><span class="hl kwb">$tag, $back_pixbuf,</span> <span class="hl num">170</span><span class="hl opt">);</span>

	<span class="hl kwc">my</span> <span class="hl kwb">$draw</span> <span class="hl opt">=</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span>
	    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$widget, $event</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
	    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$dx, $dy</span><span class="hl opt">) = (</span><span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">allocation</span><span class="hl opt">-&gt;[</span><span class="hl num">2</span><span class="hl opt">],</span> <span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">allocation</span><span class="hl opt">-&gt;[</span><span class="hl num">3</span><span class="hl opt">]);</span>
	    <span class="hl kwc">my</span> <span class="hl kwb">$state</span> <span class="hl opt">=</span> <span class="hl kwb">$darea</span><span class="hl opt">-&gt;{</span><span class="hl kwc">state</span><span class="hl opt">};</span>
	    <span class="hl kwa">if</span> <span class="hl opt">(!</span><span class="hl kwc">defined</span><span class="hl opt">(</span><span class="hl kwb">$dbl_area</span><span class="hl opt">)) {</span>
		   <span class="hl opt">(</span><span class="hl kwb">$pix, $width, $height</span><span class="hl opt">) =</span> create_pix_text<span class="hl opt">(</span><span class="hl kwb">$darea, $label, $widget_for_font</span><span class="hl opt">-&gt;</span><span class="hl kwd">style</span><span class="hl opt">-&gt;</span><span class="hl kwd">font</span><span class="hl opt">,</span> <span class="hl kwb">$x_round,</span> <span class="hl num">1</span><span class="hl opt">,</span>
										  <span class="hl num">1</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">, [</span><span class="hl kwb">$background, $background</span><span class="hl opt">],</span> <span class="hl kwb">$x_back2, $y_back2,</span> <span class="hl num">1</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
		   <span class="hl opt">(</span><span class="hl kwb">$dx, $dy</span><span class="hl opt">) = (</span>max<span class="hl opt">(</span><span class="hl kwb">$width, $x_round</span><span class="hl opt">),</span> <span class="hl kwb">$y_round</span> <span class="hl opt">+</span> <span class="hl kwb">$height</span><span class="hl opt">);</span>
		   <span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_usize</span><span class="hl opt">(</span><span class="hl kwb">$dx, $dy</span><span class="hl opt">);</span>
		   <span class="hl kwb">$dbl_area</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>Gdk<span class="hl opt">::</span>Pixmap<span class="hl opt">(</span><span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">window</span><span class="hl opt">,</span> max<span class="hl opt">(</span><span class="hl kwb">$width, $x_round</span><span class="hl opt">),</span> <span class="hl kwb">$y_round</span> <span class="hl opt">+</span> <span class="hl kwb">$height</span><span class="hl opt">);</span>
	    <span class="hl opt">}</span>
	    <span class="hl slc"># Redraw if state change (selected &lt;=&gt; not selected)</span>
	    <span class="hl kwa">if</span> <span class="hl opt">(!</span><span class="hl kwb">$dbl_area</span><span class="hl opt">-&gt;{</span><span class="hl kwc">state</span><span class="hl opt">} ||</span> <span class="hl kwb">$state</span> <span class="hl opt">!=</span> <span class="hl kwb">$dbl_area</span><span class="hl opt">-&gt;{</span><span class="hl kwc">state</span><span class="hl opt">}) {</span>
		   <span class="hl kwb">$dbl_area</span><span class="hl opt">-&gt;{</span><span class="hl kwc">state</span><span class="hl opt">} =</span> <span class="hl kwb">$state</span><span class="hl opt">;</span>
		   fill_tiled<span class="hl opt">(</span><span class="hl kwb">$darea, $dbl_area, $background, $x_back2, $y_back2, $dx, $dy</span><span class="hl opt">);</span>
		   <span class="hl opt">(</span><span class="hl kwb">$state</span> ? <span class="hl kwb">$pixbuf_h</span> <span class="hl opt">:</span> <span class="hl kwb">$pixbuf</span><span class="hl opt">)</span>
			  <span class="hl opt">-&gt;</span><span class="hl kwd">render_to_drawable</span><span class="hl opt">(</span><span class="hl kwb">$dbl_area, $darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">style</span><span class="hl opt">-&gt;</span><span class="hl kwd">fg_gc</span><span class="hl opt">(</span><span class="hl str">&apos;normal&apos;</span><span class="hl opt">),</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span>
							   <span class="hl kwb">$pixbuf</span><span class="hl opt">-&gt;</span><span class="hl kwd">get_width</span><span class="hl opt">,</span> <span class="hl kwb">$pixbuf</span><span class="hl opt">-&gt;</span><span class="hl kwd">get_height</span><span class="hl opt">,</span> <span class="hl str">&apos;normal&apos;</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
		   <span class="hl kwb">$dbl_area</span><span class="hl opt">-&gt;</span><span class="hl kwd">draw_pixmap</span><span class="hl opt">(</span><span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">style</span><span class="hl opt">-&gt;</span><span class="hl kwd">bg_gc</span><span class="hl opt">(</span><span class="hl str">&apos;normal&apos;</span><span class="hl opt">), (</span><span class="hl kwb">$state</span> ? <span class="hl kwb">$pix</span><span class="hl opt">-&gt;[</span><span class="hl num">1</span><span class="hl opt">] :</span> <span class="hl kwb">$pix</span><span class="hl opt">-&gt;[</span><span class="hl num">0</span><span class="hl opt">]),</span>
							 <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">, (</span><span class="hl kwb">$dx</span> <span class="hl opt">-</span> <span class="hl kwb">$width</span><span class="hl opt">)/</span><span class="hl num">2</span><span class="hl opt">,</span> <span class="hl kwb">$y_round, $width, $height</span><span class="hl opt">);</span>
	    <span class="hl opt">}</span>
	    <span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">window</span><span class="hl opt">-&gt;</span><span class="hl kwd">draw_pixmap</span><span class="hl opt">(</span><span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">style</span><span class="hl opt">-&gt;</span><span class="hl kwd">bg_gc</span><span class="hl opt">(</span><span class="hl str">&apos;normal&apos;</span><span class="hl opt">),</span> <span class="hl kwb">$dbl_area,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwb">$dx, $dy</span><span class="hl opt">);</span>
	    <span class="hl opt">(</span><span class="hl kwb">$darea</span><span class="hl opt">-&gt;{</span>dx<span class="hl opt">},</span> <span class="hl kwb">$darea</span><span class="hl opt">-&gt;{</span>dy<span class="hl opt">}) = (</span><span class="hl kwb">$dx, $dy</span><span class="hl opt">);</span>

	<span class="hl opt">};</span>
	<span class="hl kwb">$darea</span><span class="hl opt">-&gt;{</span><span class="hl kwc">state</span><span class="hl opt">} =</span> <span class="hl num">0</span><span class="hl opt">;</span>
	<span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">signal_connect</span><span class="hl opt">(</span>expose_event <span class="hl opt">=&gt;</span> <span class="hl kwb">$draw</span><span class="hl opt">);</span>
	<span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_events</span><span class="hl opt">([</span><span class="hl str">&apos;exposure_mask&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;enter_notify_mask&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;leave_notify_mask&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;button_press_mask&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;button_release_mask&apos;</span> <span class="hl opt">]);</span>
	<span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">signal_connect</span><span class="hl opt">(</span>enter_notify_event <span class="hl opt">=&gt;</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span>
				    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$darea</span><span class="hl opt">-&gt;{</span><span class="hl kwc">state</span><span class="hl opt">} ==</span> <span class="hl num">0</span><span class="hl opt">) {</span>
					<span class="hl kwb">$darea</span><span class="hl opt">-&gt;{</span><span class="hl kwc">state</span><span class="hl opt">} =</span> <span class="hl num">1</span><span class="hl opt">;</span>
					<span class="hl opt">&amp;</span><span class="hl kwb">$draw</span><span class="hl opt">(</span><span class="hl kwb">&#64;_</span><span class="hl opt">);</span>
				    <span class="hl opt">}</span>
				<span class="hl opt">});</span>
	<span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">signal_connect</span><span class="hl opt">(</span>leave_notify_event <span class="hl opt">=&gt;</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span>
				    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$darea</span><span class="hl opt">-&gt;{</span><span class="hl kwc">state</span><span class="hl opt">} ==</span> <span class="hl num">1</span><span class="hl opt">) {</span>
					<span class="hl kwb">$darea</span><span class="hl opt">-&gt;{</span><span class="hl kwc">state</span><span class="hl opt">} =</span> <span class="hl num">0</span><span class="hl opt">;</span>
					<span class="hl opt">&amp;</span><span class="hl kwb">$draw</span><span class="hl opt">(</span><span class="hl kwb">&#64;_</span><span class="hl opt">);</span>
				    <span class="hl opt">}</span>
				<span class="hl opt">});</span>
	<span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">signal_connect</span><span class="hl opt">(</span>button_release_event <span class="hl opt">=&gt;</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span>
				    <span class="hl kwb">$darea</span><span class="hl opt">-&gt;{</span><span class="hl kwc">state</span><span class="hl opt">} =</span> <span class="hl num">0</span><span class="hl opt">;</span>
				    <span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">draw</span><span class="hl opt">(</span><span class="hl kwc">undef</span><span class="hl opt">);</span>
				    <span class="hl kwb">$exec_func</span><span class="hl opt">-&gt;(</span><span class="hl kwb">$tag, $exec_hash</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$label</span><span class="hl opt">});</span>
				<span class="hl opt">});</span>
	<span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">signal_connect</span><span class="hl opt">(</span>realize <span class="hl opt">=&gt;</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span> <span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">window</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_cursor</span><span class="hl opt">(</span><span class="hl kwb">$cursor_hand</span><span class="hl opt">) });</span>
	<span class="hl kwb">$tab</span><span class="hl opt">[</span><span class="hl kwb">$i</span><span class="hl opt">] =</span> <span class="hl kwb">$darea</span><span class="hl opt">;</span>
	<span class="hl kwb">$i++</span><span class="hl opt">;</span>
    <span class="hl opt">}</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$fixed</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>Fixed<span class="hl opt">;</span>
    <span class="hl kwa">foreach</span> <span class="hl opt">(</span><span class="hl kwb">&#64;tab</span><span class="hl opt">) {</span> <span class="hl kwb">$fixed</span><span class="hl opt">-&gt;</span><span class="hl kwd">put</span><span class="hl opt">(</span><span class="hl kwb">$_,</span> <span class="hl num">75</span><span class="hl opt">,</span> <span class="hl num">65</span><span class="hl opt">) }</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$is_resized</span> <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$w_ret</span> <span class="hl opt">=</span> createScrolledWindow<span class="hl opt">(</span><span class="hl kwb">$fixed,</span> <span class="hl opt">[</span><span class="hl str">&apos;automatic&apos;</span><span class="hl opt">,</span> <span class="hl str">&apos;automatic&apos;</span><span class="hl opt">]);</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$redraw_function</span><span class="hl opt">;</span>
    <span class="hl kwb">$redraw_function</span> <span class="hl opt">=</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span> 
	<span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$is_resized</span> <span class="hl opt">==</span> <span class="hl num">0</span><span class="hl opt">) {</span>
		<span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl num">3</span> <span class="hl opt">&lt;</span> <span class="hl kwb">$#args</span><span class="hl opt">) {</span>
			<span class="hl slc">#- Ugly hacks, don&apos;t touch! ########</span>
			<span class="hl kwc">my</span> <span class="hl kwb">$timeout1</span> <span class="hl opt">=</span> Gtk-<span class="hl opt">&gt;</span><span class="hl kwd">timeout_add</span><span class="hl opt">(</span><span class="hl num">100</span><span class="hl opt">,</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span>
					<span class="hl kwb">$fixed</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_usize</span><span class="hl opt">(</span><span class="hl kwb">$w_ret</span><span class="hl opt">-&gt;</span><span class="hl kwd">allocation</span><span class="hl opt">-&gt;[</span><span class="hl num">2</span><span class="hl opt">] -</span> <span class="hl num">22</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
					<span class="hl opt">&amp;</span><span class="hl kwb">$redraw_function</span><span class="hl opt">;</span>
					<span class="hl num">0</span>
			<span class="hl opt">});</span>
		<span class="hl opt">}</span>
		<span class="hl kwb">$is_resized</span> <span class="hl opt">=</span> <span class="hl num">1</span><span class="hl opt">;</span>
	<span class="hl opt">}</span>
	<span class="hl kwb">$fixed</span><span class="hl opt">-&gt;</span><span class="hl kwd">move</span><span class="hl opt">(</span><span class="hl kwb">&#64;$_</span><span class="hl opt">)</span> <span class="hl kwa">foreach</span> compute_icons<span class="hl opt">(</span><span class="hl kwb">$fixed</span><span class="hl opt">-&gt;</span><span class="hl kwd">allocation</span><span class="hl opt">-&gt;[</span><span class="hl num">2</span><span class="hl opt">]-</span><span class="hl num">22</span><span class="hl opt">,</span> <span class="hl kwb">$fixed</span><span class="hl opt">-&gt;</span><span class="hl kwd">allocation</span><span class="hl opt">-&gt;[</span><span class="hl num">3</span><span class="hl opt">],</span> <span class="hl num">40</span><span class="hl opt">,</span> <span class="hl num">15</span><span class="hl opt">,</span> <span class="hl num">20</span><span class="hl opt">,</span> <span class="hl kwb">&#64;tab</span><span class="hl opt">);</span>
    <span class="hl opt">};</span>
    <span class="hl kwb">$fixed</span><span class="hl opt">-&gt;</span><span class="hl kwd">signal_connect</span><span class="hl opt">(</span>expose_event <span class="hl opt">=&gt;</span> <span class="hl kwb">$redraw_function</span><span class="hl opt">);</span>
    <span class="hl kwb">$fixed</span><span class="hl opt">-&gt;</span><span class="hl kwd">signal_connect</span><span class="hl opt">(</span>realize <span class="hl opt">=&gt;</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span> <span class="hl kwb">$fixed</span><span class="hl opt">-&gt;</span><span class="hl kwd">window</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_back_pixmap</span><span class="hl opt">(</span><span class="hl kwb">$background,</span> <span class="hl num">0</span><span class="hl opt">) });</span>
    <span class="hl kwb">$fixed</span><span class="hl opt">-&gt;{</span>redraw_function<span class="hl opt">} =</span> <span class="hl kwb">$redraw_function</span><span class="hl opt">;</span>

    <span class="hl kwb">$w_ret</span><span class="hl opt">-&gt;</span><span class="hl kwd">vscrollbar</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_usize</span><span class="hl opt">(</span><span class="hl num">19</span><span class="hl opt">,</span> <span class="hl kwc">undef</span><span class="hl opt">);</span>
    gtkhide<span class="hl opt">(</span>gtkset_border_width<span class="hl opt">(</span><span class="hl kwb">$w_ret,</span> <span class="hl opt">-</span><span class="hl num">2</span><span class="hl opt">));</span> <span class="hl slc">#- ok, this is very very ugly...</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> n_line_size <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$nbline, $type, $widget</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$font</span> <span class="hl opt">=</span> <span class="hl kwb">$widget</span><span class="hl opt">-&gt;</span><span class="hl kwd">style</span><span class="hl opt">-&gt;</span><span class="hl kwd">font</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$spacing</span> <span class="hl opt">= ${{</span> text <span class="hl opt">=&gt;</span> <span class="hl num">0</span><span class="hl opt">,</span> various <span class="hl opt">=&gt;</span> <span class="hl num">17</span> <span class="hl opt">}}{</span><span class="hl kwb">$type</span><span class="hl opt">};</span>
    <span class="hl kwb">$nbline</span> <span class="hl opt">* (</span><span class="hl kwb">$font</span><span class="hl opt">-&gt;</span><span class="hl kwd">ascent</span> <span class="hl opt">+</span> <span class="hl kwb">$font</span><span class="hl opt">-&gt;</span><span class="hl kwd">descent</span> <span class="hl opt">+</span> <span class="hl kwb">$spacing</span><span class="hl opt">) +</span> <span class="hl num">8</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> write_on_pixmap <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$pixmap, $x_pos, $y_pos, &#64;text</span><span class="hl opt">)=</span><span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$gdkpixmap,</span> <span class="hl kwc">undef</span><span class="hl opt">) =</span> <span class="hl kwb">$pixmap</span><span class="hl opt">-&gt;</span><span class="hl kwd">get</span><span class="hl opt">();</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$width, $height</span><span class="hl opt">) = (</span><span class="hl num">440</span><span class="hl opt">,</span> <span class="hl num">250</span><span class="hl opt">);</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$gc</span> <span class="hl opt">=</span> Gtk<span class="hl opt">::</span>Gdk<span class="hl opt">::</span>GC-<span class="hl opt">&gt;</span><span class="hl kwd">new</span><span class="hl opt">(</span>gtkroot<span class="hl opt">());</span>
    <span class="hl kwb">$gc</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_foreground</span><span class="hl opt">(</span>gtkcolor<span class="hl opt">(</span><span class="hl num">8448</span><span class="hl opt">,</span> <span class="hl num">17664</span><span class="hl opt">,</span> <span class="hl num">40191</span><span class="hl opt">));</span> <span class="hl slc">#- in hex : 33, 69, 157</span>

    <span class="hl kwc">my</span> <span class="hl kwb">$darea</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>DrawingArea<span class="hl opt">();</span>
    <span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">size</span><span class="hl opt">(</span><span class="hl kwb">$width, $height</span><span class="hl opt">);</span>
    <span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_usize</span><span class="hl opt">(</span><span class="hl kwb">$width, $height</span><span class="hl opt">);</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$draw</span> <span class="hl opt">=</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$style</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>Style<span class="hl opt">;</span>
	<span class="hl slc">#- i18n : you can change the font.</span>
	<span class="hl kwb">$style</span><span class="hl opt">-&gt;</span><span class="hl kwd">font</span><span class="hl opt">(</span>Gtk<span class="hl opt">::</span>Gdk<span class="hl opt">::</span>Font-<span class="hl opt">&gt;</span><span class="hl kwd">fontset_load</span><span class="hl opt">(</span>_<span class="hl opt">(</span><span class="hl str">&quot;-adobe-times-bold-r-normal--17-*-100-100-p-*-iso8859-*,*-r-*&quot;</span><span class="hl opt">)));</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$y_pos2</span> <span class="hl opt">=</span> <span class="hl kwb">$y_pos</span><span class="hl opt">;</span>
  	<span class="hl kwa">foreach</span> <span class="hl opt">(</span><span class="hl kwb">&#64;text</span><span class="hl opt">) {</span>
  	    <span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">window</span><span class="hl opt">-&gt;</span><span class="hl kwd">draw_string</span><span class="hl opt">(</span><span class="hl kwb">$style</span><span class="hl opt">-&gt;</span><span class="hl kwd">font</span><span class="hl opt">,</span> <span class="hl kwb">$gc, $x_pos, $y_pos2, $_</span><span class="hl opt">);</span>
  	    <span class="hl kwb">$y_pos2</span> <span class="hl opt">+=</span> <span class="hl num">20</span><span class="hl opt">;</span>
  	<span class="hl opt">}</span>
    <span class="hl opt">};</span>
    <span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">signal_connect</span><span class="hl opt">(</span>expose_event <span class="hl opt">=&gt;</span> <span class="hl kwa">sub</span> <span class="hl opt">{</span> <span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">window</span><span class="hl opt">-&gt;</span><span class="hl kwd">draw_rectangle</span><span class="hl opt">(</span><span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">style</span><span class="hl opt">-&gt;</span><span class="hl kwd">white_gc</span><span class="hl opt">,</span> <span class="hl num">1</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl kwb">$width, $height</span><span class="hl opt">);</span>
						 <span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">window</span><span class="hl opt">-&gt;</span><span class="hl kwd">draw_pixmap</span>
						   <span class="hl opt">(</span><span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">style</span><span class="hl opt">-&gt;</span><span class="hl kwd">white_gc</span><span class="hl opt">,</span>
						    <span class="hl kwb">$gdkpixmap,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span>
						    <span class="hl opt">(</span><span class="hl kwb">$darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">allocation</span><span class="hl opt">-&gt;[</span><span class="hl num">2</span><span class="hl opt">]-</span><span class="hl kwb">$width</span><span class="hl opt">)</span><span class="hl kwd">/2, ($darea-&gt;allocation-&gt;[3]-$height)/</span><span class="hl num">2</span><span class="hl opt">,</span>
						    <span class="hl kwb">$width, $height</span><span class="hl opt">);</span>
						 <span class="hl opt">&amp;</span><span class="hl kwb">$draw</span><span class="hl opt">();</span>
					     <span class="hl opt">});</span>
    <span class="hl kwb">$darea</span><span class="hl opt">;</span>
<span class="hl opt">}</span>

<span class="hl slc">#-#######################</span>
<span class="hl slc"># kind of private gtk routines</span>
<span class="hl slc">#-#######################</span>

<span class="hl kwa">sub</span> create_pix_text <span class="hl opt">{</span>
    <span class="hl slc">#ref widget, txt, color_txt, [font], [width], [height], flag1, flag2, [ (background background_highlighted background_selecteded) backsize x y], centeredx, centeredy</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$w, $text, $font, $max_width, $max_height, $can_be_greater, $can_be_smaller, $backgrounds,  $x_back, $y_back, $centeredx, $centeredy</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$color_background</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$fake_darea</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>DrawingArea<span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$style</span> <span class="hl opt">=</span> <span class="hl kwb">$fake_darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">style</span><span class="hl opt">-&gt;</span><span class="hl kwd">copy</span><span class="hl opt">();</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwc">ref</span><span class="hl opt">(</span><span class="hl kwb">$font</span><span class="hl opt">)</span> <span class="hl kwc">eq</span> <span class="hl str">&apos;Gtk::Gdk::Font&apos;</span><span class="hl opt">) {</span>
	<span class="hl kwb">$style</span><span class="hl opt">-&gt;</span><span class="hl kwd">font</span><span class="hl opt">(</span><span class="hl kwb">$font</span><span class="hl opt">);</span>
    <span class="hl opt">}</span> <span class="hl kwa">else</span> <span class="hl opt">{</span>
	<span class="hl kwb">$font</span> <span class="hl kwc">and</span> <span class="hl kwb">$style</span><span class="hl opt">-&gt;</span><span class="hl kwd">font</span><span class="hl opt">(</span>Gtk<span class="hl opt">::</span>Gdk<span class="hl opt">::</span>Font-<span class="hl opt">&gt;</span><span class="hl kwd">fontset_load</span><span class="hl opt">(</span><span class="hl kwb">$font</span><span class="hl opt">));</span>
    <span class="hl opt">}</span>
    <span class="hl kwb">$fake_darea</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_style</span><span class="hl opt">(</span><span class="hl kwb">$style</span><span class="hl opt">);</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$width, $height, $lines, $widths, $heights</span><span class="hl opt">) =</span> get_text_coord <span class="hl opt">(</span>
        <span class="hl kwb">$text, $fake_darea, $max_width, $max_height, $can_be_greater, $can_be_smaller, $centeredx, $centeredy</span><span class="hl opt">);</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$pix</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$j</span> <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwa">foreach</span> <span class="hl opt">(</span><span class="hl kwb">&#64;$backgrounds</span><span class="hl opt">) {</span> 
	   <span class="hl kwb">$pix</span><span class="hl opt">-&gt;[</span><span class="hl kwb">$j</span><span class="hl opt">] =</span> new Gtk<span class="hl opt">::</span>Gdk<span class="hl opt">::</span>Pixmap<span class="hl opt">(</span><span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">window</span><span class="hl opt">,</span> <span class="hl kwb">$width, $height</span><span class="hl opt">);</span>
	   fill_tiled<span class="hl opt">(</span><span class="hl kwb">$w, $pix</span><span class="hl opt">-&gt;[</span><span class="hl kwb">$j</span><span class="hl opt">],</span> <span class="hl kwb">$backgrounds</span><span class="hl opt">-&gt;[</span><span class="hl kwb">$j</span><span class="hl opt">],</span> <span class="hl kwb">$x_back, $y_back, $width, $height</span><span class="hl opt">);</span>
	   <span class="hl kwb">$j++</span><span class="hl opt">;</span>
    <span class="hl opt">}</span>
    
    
    <span class="hl kwc">my</span> <span class="hl kwb">$color_text</span> <span class="hl opt">=</span> gtkcolor<span class="hl opt">(</span><span class="hl num">0</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">,</span> <span class="hl num">0</span><span class="hl opt">);</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$gc_text</span> <span class="hl opt">=</span> new Gtk<span class="hl opt">::</span>Gdk<span class="hl opt">::</span>GC<span class="hl opt">(</span><span class="hl kwb">$w</span><span class="hl opt">-&gt;</span><span class="hl kwd">window</span><span class="hl opt">);</span>
    <span class="hl kwb">$gc_text</span><span class="hl opt">-&gt;</span><span class="hl kwd">set_foreground</span><span class="hl opt">(</span><span class="hl kwb">$color_text</span><span class="hl opt">);</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$i</span> <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
    <span class="hl kwa">foreach</span> <span class="hl opt">(&#64;{</span><span class="hl kwb">$lines</span><span class="hl opt">}) {</span>
	<span class="hl kwb">$j</span> <span class="hl opt">=</span> <span class="hl num">0</span><span class="hl opt">;</span>
	<span class="hl kwa">foreach</span> <span class="hl kwc">my</span> <span class="hl kwb">$pix</span> <span class="hl opt">(</span><span class="hl kwb">&#64;$pix</span><span class="hl opt">) {</span> 
	  <span class="hl kwb">$pix</span><span class="hl opt">-&gt;</span><span class="hl kwd">draw_string</span><span class="hl opt">(</span><span class="hl kwb">$style</span><span class="hl opt">-&gt;</span><span class="hl kwd">font</span><span class="hl opt">,</span> <span class="hl kwb">$gc_text,</span> <span class="hl opt">${</span><span class="hl kwb">$widths</span><span class="hl opt">}[</span><span class="hl kwb">$i</span><span class="hl opt">], ${</span><span class="hl kwb">$heights</span><span class="hl opt">}[</span><span class="hl kwb">$i</span><span class="hl opt">],</span> <span class="hl kwb">$_</span><span class="hl opt">);</span>
	  <span class="hl kwb">$pix</span><span class="hl opt">-&gt;</span><span class="hl kwd">draw_string</span><span class="hl opt">(</span><span class="hl kwb">$style</span><span class="hl opt">-&gt;</span><span class="hl kwd">font</span><span class="hl opt">,</span> <span class="hl kwb">$gc_text,</span> <span class="hl opt">${</span><span class="hl kwb">$widths</span><span class="hl opt">}[</span><span class="hl kwb">$i</span><span class="hl opt">] +</span> <span class="hl num">1</span><span class="hl opt">, ${</span><span class="hl kwb">$heights</span><span class="hl opt">}[</span><span class="hl kwb">$i</span><span class="hl opt">],</span> <span class="hl kwb">$_</span><span class="hl opt">)</span> <span class="hl kwa">if</span> <span class="hl kwb">$j</span><span class="hl opt">;</span>
	  <span class="hl kwb">$j++</span><span class="hl opt">;</span>
	<span class="hl opt">}</span>
	<span class="hl kwb">$i++</span><span class="hl opt">;</span>
    <span class="hl opt">}</span>
    <span class="hl opt">(</span><span class="hl kwb">$pix, $width, $height</span><span class="hl opt">);</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> gtkctree_children <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$node</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">&#64;l</span><span class="hl opt">;</span>
    <span class="hl kwb">$node</span> <span class="hl kwc">or</span> <span class="hl kwa">return</span><span class="hl opt">;</span>
    <span class="hl kwa">for</span> <span class="hl opt">(</span><span class="hl kwc">my</span> <span class="hl kwb">$p</span> <span class="hl opt">=</span> <span class="hl kwb">$node</span><span class="hl opt">-&gt;</span><span class="hl kwd">row</span><span class="hl opt">-&gt;</span><span class="hl kwd">children</span><span class="hl opt">;</span> <span class="hl kwb">$p</span><span class="hl opt">;</span> <span class="hl kwb">$p</span> <span class="hl opt">=</span> <span class="hl kwb">$p</span><span class="hl opt">-&gt;</span><span class="hl kwd">row</span><span class="hl opt">-&gt;</span><span class="hl kwd">sibling</span><span class="hl opt">) {</span>
	<span class="hl kwc">push</span> <span class="hl kwb">&#64;l, $p</span><span class="hl opt">;</span>
    <span class="hl opt">}</span>
    <span class="hl kwb">&#64;l</span><span class="hl opt">;</span>
<span class="hl opt">}</span>




<span class="hl kwa">sub</span> gtkpowerpack <span class="hl opt">{</span>
    <span class="hl slc">#- Get Default Attributes (if any). 2 syntaxes allowed :</span>
    <span class="hl slc">#- gtkpowerpack( {expand =&gt; 1, fill =&gt; 0}, $box...) : the attributes are picked from a specified hash ref</span>
    <span class="hl slc">#- gtkpowerpack(1,0,1, $box, ...) : the attributes are picked from the non-ref list, in the order (expand, fill, padding, pack_end).</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$RefDefaultAttrs</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwc">ref</span><span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">])</span> <span class="hl kwc">eq</span> <span class="hl str">&apos;HASH&apos;</span><span class="hl opt">) {</span> <span class="hl kwb">$RefDefaultAttrs</span> <span class="hl opt">=</span> <span class="hl kwc">shift</span> <span class="hl opt">}</span>
    <span class="hl kwa">elsif</span> <span class="hl opt">(!</span><span class="hl kwc">ref</span><span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">])) {</span>
	<span class="hl kwb">$RefDefaultAttrs</span> <span class="hl opt">= {};</span>
	<span class="hl kwa">foreach</span> <span class="hl opt">(</span><span class="hl str">&quot;expand&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;fill&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;padding&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;pack_end&quot;</span><span class="hl opt">) {</span>
	    <span class="hl opt">!</span><span class="hl kwc">ref</span><span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">])</span> ? <span class="hl kwb">$RefDefaultAttrs</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">} =</span> <span class="hl kwc">shift</span> <span class="hl opt">:</span> <span class="hl kwa">last</span>
	<span class="hl opt">}</span>
    <span class="hl opt">}</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$box</span> <span class="hl opt">=</span> <span class="hl kwc">shift</span><span class="hl opt">;</span>

    <span class="hl kwa">while</span> <span class="hl opt">(</span><span class="hl kwb">&#64;_</span><span class="hl opt">) {</span>
	<span class="hl slc">#- Get attributes (if specified). 4 syntaxes allowed (default values are undef ie. false...) :</span>
	<span class="hl slc">#- gtkpowerpack({defaultattrs}, $box, $widget1, $widget2, ...) : the attrs are picked from the default ones (if they exist)</span>
	<span class="hl slc">#- gtkpowerpack($box, {fill=&gt;1, expand=&gt;0, ...}, $widget1, ...) : the attributes are picked from a specified hash ref</span>
	<span class="hl slc">#- gtkpowerpack($box, [1,0,1], $widget1, ...) : the attributes are picked from the array ref : (expand, fill, padding, pack_end).</span>
	<span class="hl slc">#- gtkpowerpack({attr=&gt;&apos;arg&apos;}, $box, 1, $widget1, 0, $widget2, etc...) : the &apos;arg&apos; value will tell gtkpowerpack to always read the </span>
	<span class="hl slc">#- attr value directly in the arg list (avoiding confusion between value 0 and Gtk::Label(&quot;0&quot;). That can simplify some writings but</span>
	<span class="hl slc">#- this arg(s) MUST then be present...</span>
	<span class="hl kwc">my</span> <span class="hl kwb">%attr</span><span class="hl opt">;</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$RefAttrs</span><span class="hl opt">;</span>
	<span class="hl kwc">ref</span><span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">])</span> <span class="hl kwc">eq</span> <span class="hl str">&apos;HASH&apos;</span> <span class="hl opt">||</span> <span class="hl kwc">ref</span><span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">])</span> <span class="hl kwc">eq</span> <span class="hl str">&apos;ARRAY&apos;</span> <span class="hl kwc">and</span> <span class="hl kwb">$RefAttrs</span> <span class="hl opt">=</span> <span class="hl kwc">shift</span><span class="hl opt">;</span>
	<span class="hl kwa">foreach</span> <span class="hl opt">(</span><span class="hl str">&quot;expand&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;fill&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;padding&quot;</span><span class="hl opt">,</span> <span class="hl str">&quot;pack_end&quot;</span><span class="hl opt">) {</span>
	    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$RefDefaultAttrs</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">}</span> <span class="hl kwc">eq</span> <span class="hl str">&apos;arg&apos;</span><span class="hl opt">) {</span>
		<span class="hl kwc">ref</span> <span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">])</span> <span class="hl kwc">and die</span> <span class="hl str">&quot;error in packing definition</span><span class="hl esc">\n</span><span class="hl str">&quot;</span><span class="hl opt">;</span>
		<span class="hl kwb">$attr</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">} =</span> <span class="hl kwc">shift</span><span class="hl opt">;</span>
		<span class="hl kwc">ref</span><span class="hl opt">(</span><span class="hl kwb">$RefAttrs</span><span class="hl opt">)</span> <span class="hl kwc">eq</span> <span class="hl str">&apos;ARRAY&apos;</span> <span class="hl kwc">and shift</span> <span class="hl kwb">&#64;$RefAttrs</span><span class="hl opt">;</span>
	    <span class="hl opt">}</span> <span class="hl kwa">elsif</span> <span class="hl opt">(</span><span class="hl kwc">ref</span><span class="hl opt">(</span><span class="hl kwb">$RefAttrs</span><span class="hl opt">)</span> <span class="hl kwc">eq</span> <span class="hl str">&apos;HASH&apos;</span> <span class="hl opt">&amp;&amp;</span> <span class="hl kwc">defined</span><span class="hl opt">(</span><span class="hl kwb">$RefAttrs</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">})) {</span>
		<span class="hl kwb">$attr</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">} =</span> <span class="hl kwb">$RefAttrs</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">};</span>
	    <span class="hl opt">}</span> <span class="hl kwa">elsif</span> <span class="hl opt">(</span><span class="hl kwc">ref</span><span class="hl opt">(</span><span class="hl kwb">$RefAttrs</span><span class="hl opt">)</span> <span class="hl kwc">eq</span> <span class="hl str">&apos;ARRAY&apos;</span><span class="hl opt">) {</span>
		<span class="hl kwb">$attr</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">} =</span> <span class="hl kwc">shift</span> <span class="hl kwb">&#64;$RefAttrs</span><span class="hl opt">;</span>
	    <span class="hl opt">}</span> <span class="hl kwa">elsif</span> <span class="hl opt">(</span><span class="hl kwc">defined</span><span class="hl opt">(</span><span class="hl kwb">$RefDefaultAttrs</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">})) {</span>
		<span class="hl kwb">$attr</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">} =</span> <span class="hl kwc">int</span> <span class="hl kwb">$RefDefaultAttrs</span><span class="hl opt">-&gt;{</span><span class="hl kwb">$_</span><span class="hl opt">};</span>
	    <span class="hl opt">}</span> <span class="hl kwa">else</span> <span class="hl opt">{</span>
		<span class="hl kwb">$attr</span><span class="hl opt">{</span><span class="hl kwb">$_</span><span class="hl opt">} =</span> <span class="hl num">0</span><span class="hl opt">;</span>
	    <span class="hl opt">}</span>
	<span class="hl opt">}</span>
	<span class="hl slc">#- Get and pack the widget (create it if necessary when it is a label...)</span>
	<span class="hl kwc">my</span> <span class="hl kwb">$widget</span> <span class="hl opt">=</span> <span class="hl kwc">ref</span><span class="hl opt">(</span><span class="hl kwb">$_</span><span class="hl opt">[</span><span class="hl num">0</span><span class="hl opt">])</span> ? <span class="hl kwc">shift</span> <span class="hl opt">:</span> new Gtk<span class="hl opt">::</span>Label<span class="hl opt">(</span><span class="hl kwc">shift</span><span class="hl opt">);</span>
	<span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$attr</span><span class="hl opt">{</span>pack_end<span class="hl opt">}) {</span> <span class="hl kwb">$box</span><span class="hl opt">-&gt;</span><span class="hl kwd">pack_end</span><span class="hl opt">(</span><span class="hl kwb">$widget, $attr</span><span class="hl opt">{</span>expand<span class="hl opt">},</span> <span class="hl kwb">$attr</span><span class="hl opt">{</span>fill<span class="hl opt">},</span> <span class="hl kwb">$attr</span><span class="hl opt">{</span>padding<span class="hl opt">})}</span>
	<span class="hl kwa">else</span> <span class="hl opt">{</span> <span class="hl kwb">$box</span><span class="hl opt">-&gt;</span><span class="hl kwd">pack_start</span><span class="hl opt">(</span><span class="hl kwb">$widget, $attr</span><span class="hl opt">{</span>expand<span class="hl opt">},</span> <span class="hl kwb">$attr</span><span class="hl opt">{</span>fill<span class="hl opt">},</span> <span class="hl kwb">$attr</span><span class="hl opt">{</span>padding<span class="hl opt">}) }</span>
	<span class="hl kwb">$widget</span><span class="hl opt">-&gt;</span><span class="hl kwd">show</span><span class="hl opt">;</span>
    <span class="hl opt">}</span>
    <span class="hl kwb">$box</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> gtkset_default_fontset <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$fontset</span><span class="hl opt">) =</span> <span class="hl kwb">&#64;_</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$style</span> <span class="hl opt">=</span> Gtk<span class="hl opt">::</span>Widget-<span class="hl opt">&gt;</span><span class="hl kwd">get_default_style</span><span class="hl opt">;</span>
    <span class="hl kwc">my</span> <span class="hl kwb">$f</span> <span class="hl opt">=</span> Gtk<span class="hl opt">::</span>Gdk<span class="hl opt">::</span>Font-<span class="hl opt">&gt;</span><span class="hl kwd">fontset_load</span><span class="hl opt">(</span><span class="hl kwb">$fontset</span><span class="hl opt">)</span> <span class="hl kwc">or die</span> <span class="hl str">&apos;&apos;</span><span class="hl opt">;</span>
    <span class="hl kwb">$style</span><span class="hl opt">-&gt;</span><span class="hl kwd">font</span><span class="hl opt">(</span><span class="hl kwb">$f</span><span class="hl opt">);</span>
    Gtk<span class="hl opt">::</span>Widget-<span class="hl opt">&gt;</span><span class="hl kwd">set_default_style</span><span class="hl opt">(</span><span class="hl kwb">$style</span><span class="hl opt">);</span>
<span class="hl opt">}</span>

<span class="hl kwa">sub</span> gtkcreate_imlib <span class="hl opt">{</span>
    <span class="hl kwc">my</span> <span class="hl opt">(</span><span class="hl kwb">$f</span><span class="hl opt">) =</span> <span class="hl kwc">shift</span><span class="hl opt">;</span>
    <span class="hl kwb">$f</span> <span class="hl opt">=~</span> m<span class="hl opt">|.</span>png<span class="hl opt">$|</span> <span class="hl kwc">or</span> <span class="hl kwb">$f</span> <span class="hl opt">=</span> <span class="hl str">&quot;</span><span class="hl ipl">$f</span><span class="hl str">.png&quot;</span><span class="hl opt">;</span>
    <span class="hl kwa">if</span> <span class="hl opt">(</span><span class="hl kwb">$f</span> <span class="hl opt">!~</span> <span class="hl kwd">/\//) { -e &quot;$_/</span>$f<span class="hl str">&quot; and</span> <span class="hl ipl">$f</span> <span class="hl str">= &quot;</span><span class="hl kwb">$_/$f</span><span class="hl str">&quot;, last foreach icon_paths() }</span>
<span class="hl str">    Gtk::Gdk::ImlibImage-&gt;load_image(</span><span class="hl ipl">$f</span><span class="hl str">);</span>
<span class="hl str">}</span>
<span class="hl str"></span>
<span class="hl str">sub gtkxpm { new Gtk::Pixmap(gtkcreate_xpm(</span><span class="hl ipl">&#64;_</span><span class="hl str">)) }</span>
<span class="hl str">sub gtkpng { new Gtk::Pixmap(gtkcreate_png(</span><span class="hl ipl">&#64;_</span><span class="hl str">)) }</span>
<span class="hl str">sub gtkcreate_xpm {</span>
<span class="hl str">    my (</span><span class="hl ipl">$f</span><span class="hl str">) =</span> <span class="hl ipl">&#64;_</span><span class="hl str">;</span>
<span class="hl str">    my</span> <span class="hl ipl">$rw</span> <span class="hl str">= gtkroot();</span>
<span class="hl str"></span>    <span class="hl ipl">$f</span> <span class="hl str">=~ m|.xpm$| or</span> <span class="hl ipl">$f</span> <span class="hl str">= &quot;</span><span class="hl kwb">$f</span><span class="hl opt">.</span>xpm<span class="hl str">&quot;;</span>
<span class="hl str">    if (</span><span class="hl ipl">$f</span> <span class="hl str">!~ /\//) { -e &quot;</span><span class="hl kwb">$_/$f</span><span class="hl str">&quot; and</span> <span class="hl ipl">$f</span> <span class="hl str">= &quot;</span><span class="hl kwb">$_/$f</span><span class="hl str">&quot;, last foreach icon_paths() }</span>
<span class="hl str">    my</span> <span class="hl ipl">&#64;l</span> <span class="hl str">= Gtk::Gdk::Pixmap-&gt;create_from_xpm(</span><span class="hl ipl">$rw,</span> <span class="hl str">new Gtk::Style-&gt;bg(&apos;normal&apos;),</span> <span class="hl ipl">$f</span><span class="hl str">) or die &quot;</span>gtkcreate_xpm<span class="hl opt">:</span> missing pixmap file <span class="hl kwb">$f</span><span class="hl str">&quot;;</span>
<span class="hl str"></span>    <span class="hl ipl">&#64;l</span><span class="hl str">;</span>
<span class="hl str">}</span>
<span class="hl str"></span>
<span class="hl str">sub gtkcreate_png_pixbuf {</span>
<span class="hl str">    my (</span><span class="hl ipl">$f</span><span class="hl str">) = shift;</span>
<span class="hl str">    die &apos;gdk-pixbuf library is not available&apos; unless (</span><span class="hl ipl">$use_pixbuf</span><span class="hl str">);</span>
<span class="hl str"></span>    <span class="hl ipl">$f</span> <span class="hl str">=~ /\.(png|jpg)</span><span class="hl ipl">$/</span> <span class="hl str">or</span> <span class="hl ipl">$f</span> <span class="hl str">.= &apos;.png&apos;;</span>
<span class="hl str">    if (</span><span class="hl ipl">$f</span> <span class="hl str">!~ /^\//) { -e &quot;</span><span class="hl kwb">$_/$f</span><span class="hl str">&quot; and</span> <span class="hl ipl">$f</span> <span class="hl str">= &quot;</span><span class="hl kwb">$_/$f</span><span class="hl str">&quot;, last foreach icon_paths() }</span>
<span class="hl str">    Gtk::Gdk::Pixbuf-&gt;new_from_file(</span><span class="hl ipl">$f</span><span class="hl str">) or die &quot;</span>gtkcreate_png<span class="hl opt">:</span> missing png file <span class="hl kwb">$f</span><span class="hl str">&quot;;</span>
<span class="hl str">}</span>
<span class="hl str"></span>
<span class="hl str">sub gtkcreate_png {</span>
<span class="hl str">    my (</span><span class="hl ipl">$f</span><span class="hl str">) = shift;</span>
<span class="hl str"></span>    <span class="hl ipl">$f</span> <span class="hl str">=~ /\.png</span><span class="hl ipl">$/</span> <span class="hl str">or</span> <span class="hl ipl">$f</span> <span class="hl str">.= &apos;.png&apos;;</span>
<span class="hl str">    if (</span><span class="hl ipl">$f</span> <span class="hl str">!~ /^\//) { -e &quot;</span><span class="hl kwb">$_/$f</span><span class="hl str">&quot; and</span> <span class="hl ipl">$f</span> <span class="hl str">= &quot;</span><span class="hl kwb">$_/$f</span><span class="hl str">&quot;, last foreach icon_paths() }</span>
<span class="hl str">    if (</span><span class="hl ipl">$use_imlib</span><span class="hl str">) {</span>
<span class="hl str">	my</span> <span class="hl ipl">$im</span> <span class="hl str">= Gtk::Gdk::ImlibImage-&gt;load_image(</span><span class="hl ipl">$f</span><span class="hl str">) or die &quot;</span>gtkcreate_png<span class="hl opt">:</span> missing png file <span class="hl kwb">$f</span><span class="hl str">&quot;;</span>
<span class="hl str"></span>	<span class="hl ipl">$im</span><span class="hl str">-&gt;render(</span><span class="hl ipl">$im</span><span class="hl str">-&gt;rgb_width,</span> <span class="hl ipl">$im</span><span class="hl str">-&gt;rgb_height);</span>
<span class="hl str">	return (</span><span class="hl ipl">$im</span><span class="hl str">-&gt;move_image(),</span> <span class="hl ipl">$im</span><span class="hl str">-&gt;move_mask);</span>
<span class="hl str">    } elsif (</span><span class="hl ipl">$use_pixbuf</span><span class="hl str">) {</span>
<span class="hl str">#	my</span> <span class="hl ipl">$pixbuf</span> <span class="hl str">= gtkcreate_png_pixbuf(</span><span class="hl ipl">$f</span><span class="hl str">);</span>
<span class="hl str">	my</span> <span class="hl ipl">$pixbuf</span> <span class="hl str">= Gtk::Gdk::Pixbuf-&gt;new_from_file(</span><span class="hl ipl">$f</span><span class="hl str">) or die &quot;</span>gtkcreate_png<span class="hl opt">:</span> missing png file <span class="hl kwb">$f</span><span class="hl str">&quot;;</span>
<span class="hl str">	my (</span><span class="hl ipl">$width,</span> <span class="hl str"></span><span class="hl ipl">$height</span><span class="hl str">) = (</span><span class="hl ipl">$pixbuf</span><span class="hl str">-&gt;get_width(),</span> <span class="hl ipl">$pixbuf</span><span class="hl str">-&gt;get_height);</span>
<span class="hl str">	my</span> <span class="hl ipl">$rw</span> <span class="hl str">= gtkroot();</span>
<span class="hl str">	my</span> <span class="hl ipl">$pix</span> <span class="hl str">= new Gtk::Gdk::Pixmap(</span><span class="hl ipl">$rw,</span> <span class="hl str"></span><span class="hl ipl">$width,</span> <span class="hl str"></span><span class="hl ipl">$height,</span> <span class="hl str">16);</span>
<span class="hl str"></span>	<span class="hl ipl">$pixbuf</span><span class="hl str">-&gt;render_to_drawable_alpha(</span><span class="hl ipl">$pix,</span> <span class="hl str">0, 0, 0, 0,</span> <span class="hl ipl">$width,</span> <span class="hl str"></span><span class="hl ipl">$height,</span> <span class="hl str">&apos;bilevel&apos;, 127, &apos;normal&apos;, 0, 0);</span>
<span class="hl str"> 	my</span> <span class="hl ipl">$bit</span> <span class="hl str">= new Gtk::Gdk::Bitmap(</span><span class="hl ipl">$rw,</span> <span class="hl str"></span><span class="hl ipl">$width,</span> <span class="hl str"></span><span class="hl ipl">$height,</span> <span class="hl str">1);</span>
<span class="hl str"></span> 	<span class="hl ipl">$pixbuf</span><span class="hl str">-&gt;render_threshold_alpha(</span><span class="hl ipl">$bit,</span> <span class="hl str">0, 0, 0, 0,</span> <span class="hl ipl">$width,</span> <span class="hl str"></span><span class="hl ipl">$height,</span> <span class="hl str">&apos;127&apos;);</span>
<span class="hl str">	return (</span><span class="hl ipl">$pix,</span> <span class="hl str"></span><span class="hl ipl">$bit</span><span class="hl str">);</span>
<span class="hl str">    } else {</span>
<span class="hl str">	die &quot;</span>gtkcreate_png<span class="hl opt">:</span> cannot find a suitable library <span class="hl kwa">for</span> rendering png <span class="hl opt">(</span>imlib1 <span class="hl kwc">or</span> gdk_pixbuf<span class="hl opt">)</span><span class="hl str">&quot;;</span>
<span class="hl str">    }</span>
<span class="hl str">}</span>
<span class="hl str"></span>
<span class="hl str">sub compose_pixbufs {</span>
<span class="hl str">    my (</span><span class="hl ipl">$pixbuf,</span> <span class="hl str"></span><span class="hl ipl">$back_pixbuf_unaltered,</span> <span class="hl str"></span><span class="hl ipl">$alpha_threshold</span><span class="hl str">) =</span> <span class="hl ipl">&#64;_</span><span class="hl str">;</span>
<span class="hl str"></span>    <span class="hl ipl">$alpha_threshold</span> <span class="hl str">= 255 unless</span> <span class="hl ipl">$alpha_threshold</span><span class="hl str">;</span>
<span class="hl str">    my (</span><span class="hl ipl">$width,</span> <span class="hl str"></span><span class="hl ipl">$height</span><span class="hl str">) = (</span><span class="hl ipl">$pixbuf</span><span class="hl str">-&gt;get_height,</span> <span class="hl ipl">$pixbuf</span><span class="hl str">-&gt;get_width);</span>
<span class="hl str">    my</span> <span class="hl ipl">$back_pixbuf</span> <span class="hl str">= Gtk::Gdk::Pixbuf-&gt;new(&apos;rgb&apos;, 0, 8,</span> <span class="hl ipl">$height,</span> <span class="hl str"></span><span class="hl ipl">$width</span><span class="hl str">);</span>
<span class="hl str"></span>
<span class="hl str"></span>    <span class="hl ipl">$back_pixbuf_unaltered</span><span class="hl str">-&gt;copy_area(0, 0,</span> <span class="hl ipl">$height,</span> <span class="hl str"></span><span class="hl ipl">$width,</span> <span class="hl str"></span><span class="hl ipl">$back_pixbuf,</span> <span class="hl str">0, 0);</span>
<span class="hl str"></span>    <span class="hl ipl">$pixbuf</span><span class="hl str">-&gt;composite(</span><span class="hl ipl">$back_pixbuf,</span> <span class="hl str">0, 0,</span> <span class="hl ipl">$width,</span> <span class="hl str"></span><span class="hl ipl">$height,</span> <span class="hl str">0, 0, 1, 1, &apos;nearest&apos;,</span> <span class="hl ipl">$alpha_threshold</span><span class="hl str">);</span>
<span class="hl str"></span>    <span class="hl ipl">$back_pixbuf</span><span class="hl str">;</span>
<span class="hl str">}</span>
<span class="hl str"></span>
<span class="hl str">sub compose_with_back {</span>
<span class="hl str">    my (</span><span class="hl ipl">$f,</span> <span class="hl str"></span><span class="hl ipl">$back_pixbuf_unaltered,</span> <span class="hl str"></span><span class="hl ipl">$alpha_threshold</span><span class="hl str">) =</span> <span class="hl ipl">&#64;_</span><span class="hl str">;</span>
<span class="hl str">    compose_pixbufs(gtkcreate_png_pixbuf(</span><span class="hl ipl">$f</span><span class="hl str">),</span> <span class="hl ipl">$back_pixbuf_unaltered,</span> <span class="hl str"></span><span class="hl ipl">$alpha_threshold</span><span class="hl str">);</span>
<span class="hl str">}</span>
<span class="hl str"></span>
<span class="hl str">sub xpm_d { my</span> <span class="hl ipl">$w</span> <span class="hl str">= shift; Gtk::Gdk::Pixmap-&gt;create_from_xpm_d(</span><span class="hl ipl">$w</span><span class="hl str">-&gt;window, undef,</span> <span class="hl ipl">&#64;_</span><span class="hl str">) }</span>
<span class="hl str"></span>
<span class="hl str">sub fill_tiled {</span>
<span class="hl str">    my (</span><span class="hl ipl">$w,</span> <span class="hl str"></span><span class="hl ipl">$pix,</span> <span class="hl str"></span><span class="hl ipl">$bitmap,</span> <span class="hl str"></span><span class="hl ipl">$x_back,</span> <span class="hl str"></span><span class="hl ipl">$y_back,</span> <span class="hl str"></span><span class="hl ipl">$width,</span> <span class="hl str"></span><span class="hl ipl">$height</span><span class="hl str">) =</span> <span class="hl ipl">&#64;_</span><span class="hl str">;</span>
<span class="hl str">    my (</span><span class="hl ipl">$x2,</span> <span class="hl str"></span><span class="hl ipl">$y2</span><span class="hl str">) = (0, 0);</span>
<span class="hl str">    while (1) {</span>
<span class="hl str"></span>	<span class="hl ipl">$x2</span> <span class="hl str">= 0;</span>
<span class="hl str">	while (1) {</span>
<span class="hl str"></span>	    <span class="hl ipl">$pix</span><span class="hl str">-&gt;draw_pixmap(</span><span class="hl ipl">$w</span><span class="hl str">-&gt;style-&gt;bg_gc(&apos;normal&apos;),</span>
<span class="hl str"></span>			      <span class="hl ipl">$bitmap,</span> <span class="hl str">0, 0,</span> <span class="hl ipl">$x2,</span> <span class="hl str"></span><span class="hl ipl">$y2,</span> <span class="hl str"></span><span class="hl ipl">$x_back,</span> <span class="hl str"></span><span class="hl ipl">$y_back</span><span class="hl str">);</span>
<span class="hl str"></span>	    <span class="hl ipl">$x2</span> <span class="hl str">+=</span> <span class="hl ipl">$x_back</span><span class="hl str">;</span>
<span class="hl str"></span>	    <span class="hl ipl">$x2</span> <span class="hl str">&gt;=</span> <span class="hl ipl">$width</span> <span class="hl str">and last;</span>
<span class="hl str">	}</span>
<span class="hl str"></span>	<span class="hl ipl">$y2</span> <span class="hl str">+=</span> <span class="hl ipl">$y_back</span><span class="hl str">;</span>
<span class="hl str"></span>	<span class="hl ipl">$y2</span> <span class="hl str">&gt;=</span> <span class="hl ipl">$height</span> <span class="hl str">and last;</span>
<span class="hl str">    }</span>
<span class="hl str">}</span>
<span class="hl str"></span>
<span class="hl str">sub compute_icons {</span>
<span class="hl str">    my (</span><span class="hl ipl">$fx,</span> <span class="hl str"></span><span class="hl ipl">$fy,</span> <span class="hl str"></span><span class="hl ipl">$decx,</span> <span class="hl str"></span><span class="hl ipl">$decy,</span> <span class="hl str"></span><span class="hl ipl">$interstice,</span> <span class="hl str"></span><span class="hl ipl">&#64;tab</span><span class="hl str">) =</span> <span class="hl ipl">&#64;_</span><span class="hl str">;</span>
<span class="hl str">    my</span> <span class="hl ipl">$nb</span> <span class="hl str">=</span> <span class="hl ipl">$#tab</span><span class="hl str">;</span>
<span class="hl str">    my</span> <span class="hl ipl">$nb_sav</span> <span class="hl str">=</span> <span class="hl ipl">$nb</span><span class="hl str">;</span>
<span class="hl str">    my</span> <span class="hl ipl">$index</span> <span class="hl str">= 0;</span>
<span class="hl str">    my</span> <span class="hl ipl">&#64;dx2</span><span class="hl str">;</span>
<span class="hl str">    my</span> <span class="hl ipl">&#64;dx</span><span class="hl str">;</span>
<span class="hl str">    my</span> <span class="hl ipl">&#64;dy</span><span class="hl str">;</span>
<span class="hl str">    my</span> <span class="hl ipl">$line_up</span> <span class="hl str">= 0;</span>
<span class="hl str">  bcl_init:</span>
<span class="hl str"></span>    <span class="hl ipl">&#64;dx2</span> <span class="hl str">= undef;</span>
<span class="hl str">  bcl:</span>
<span class="hl str"></span>    <span class="hl ipl">&#64;dx</span> <span class="hl str">= map{</span> <span class="hl ipl">$_</span><span class="hl str">-&gt;{dx} }</span> <span class="hl ipl">&#64;tab</span><span class="hl str">[</span><span class="hl ipl">$index</span><span class="hl str">..</span><span class="hl ipl">$index+$nb</span><span class="hl str">];</span>
<span class="hl str"></span>    <span class="hl ipl">$dy</span><span class="hl str">[</span><span class="hl ipl">$index</span><span class="hl str">] = max(map{</span> <span class="hl ipl">$_</span><span class="hl str">-&gt;{dy} }</span> <span class="hl ipl">&#64;tab</span><span class="hl str">[</span><span class="hl ipl">$index</span><span class="hl str">..</span><span class="hl ipl">$index+$nb</span><span class="hl str">]);</span>
<span class="hl str">    foreach (0..</span><span class="hl ipl">$#dx</span><span class="hl str">) {</span>
<span class="hl str">	if (</span><span class="hl ipl">$dx</span><span class="hl str">[</span><span class="hl ipl">$_</span><span class="hl str">] &gt;</span> <span class="hl ipl">$dx2</span><span class="hl str">[</span><span class="hl ipl">$_</span><span class="hl str">]) {</span> <span class="hl ipl">$dx2</span><span class="hl str">[</span><span class="hl ipl">$_</span><span class="hl str">] =</span> <span class="hl ipl">$dx</span><span class="hl str">[</span><span class="hl ipl">$_</span><span class="hl str">] } else {</span> <span class="hl ipl">$dx</span><span class="hl str">[</span><span class="hl ipl">$_</span><span class="hl str">] =</span> <span class="hl ipl">$dx2</span><span class="hl str">[</span><span class="hl ipl">$_</span><span class="hl str">] }</span>
<span class="hl str">    }</span>
<span class="hl str">    my</span> <span class="hl ipl">$line_size</span> <span class="hl str">= 0;</span>
<span class="hl str"></span>    <span class="hl ipl">$line_size</span> <span class="hl str">=</span> <span class="hl ipl">$decx</span> <span class="hl str">+ sum(</span><span class="hl ipl">&#64;dx2</span><span class="hl str">) +</span> <span class="hl ipl">$nb</span> <span class="hl str">*</span> <span class="hl ipl">$interstice</span><span class="hl str">;</span>
<span class="hl str">    if (</span><span class="hl ipl">$line_size</span> <span class="hl str">&gt;</span> <span class="hl ipl">$fx</span><span class="hl str">) {</span>
<span class="hl str"></span>	<span class="hl ipl">$index</span> <span class="hl str">= 0;</span> <span class="hl ipl">$nb</span><span class="hl str">--; goto bcl_init;</span>
<span class="hl str">    }</span>
<span class="hl str"></span>    <span class="hl ipl">$nb</span> <span class="hl str">and</span> <span class="hl ipl">$line_up</span> <span class="hl str">= (</span><span class="hl ipl">$fx</span><span class="hl str">-</span><span class="hl ipl">$line_size</span><span class="hl str">)/(</span><span class="hl ipl">$nb+2</span><span class="hl str">);</span>
<span class="hl str"></span>    <span class="hl ipl">$index</span> <span class="hl str">+=</span> <span class="hl ipl">$nb+1</span><span class="hl str">;</span>
<span class="hl str"></span>    <span class="hl ipl">$index</span> <span class="hl str">&lt;=</span> <span class="hl ipl">$#tab</span> <span class="hl str">and goto bcl;</span>
<span class="hl str">    my</span> <span class="hl ipl">&#64;ret</span><span class="hl str">;</span>
<span class="hl str">    my</span> <span class="hl ipl">$n</span> <span class="hl str">= 0;</span>
<span class="hl str">    my</span> <span class="hl ipl">$y</span> <span class="hl str">=</span> <span class="hl ipl">$decy</span><span class="hl str">;</span>
<span class="hl str">    my</span> <span class="hl ipl">$x</span> <span class="hl str">=</span> <span class="hl ipl">$decx/2</span> <span class="hl str">+</span> <span class="hl ipl">$line_up</span><span class="hl str">;</span>
<span class="hl str">    foreach (0..</span><span class="hl ipl">$nb_sav</span><span class="hl str">) {</span>
<span class="hl str"></span>	<span class="hl ipl">$ret</span><span class="hl str">[</span><span class="hl ipl">$_</span><span class="hl str">] = [</span><span class="hl ipl">$tab</span><span class="hl str">[</span><span class="hl ipl">$_</span><span class="hl str">],</span> <span class="hl ipl">$x,</span> <span class="hl str"></span><span class="hl ipl">$y</span><span class="hl str">];</span>
<span class="hl str"></span>	<span class="hl ipl">$x</span> <span class="hl str">+=</span> <span class="hl ipl">$dx2</span><span class="hl str">[</span><span class="hl ipl">$n</span><span class="hl str">] +</span> <span class="hl ipl">$interstice</span> <span class="hl str">+</span> <span class="hl ipl">$line_up</span><span class="hl str">;</span>
<span class="hl str"></span>	<span class="hl ipl">$n++</span><span class="hl str">;</span>
<span class="hl str">	if (</span><span class="hl ipl">$n</span> <span class="hl str">&gt;</span> <span class="hl ipl">$nb</span><span class="hl str">) {</span>
<span class="hl str"></span>	    <span class="hl ipl">$n</span> <span class="hl str">= 0;</span>
<span class="hl str"></span>	    <span class="hl ipl">$x</span> <span class="hl str">=</span> <span class="hl ipl">$decx/2</span> <span class="hl str">+</span> <span class="hl ipl">$line_up</span><span class="hl str">;</span>
<span class="hl str"></span>	    <span class="hl ipl">$y</span> <span class="hl str">+= int(</span><span class="hl ipl">$dy</span><span class="hl str">[</span><span class="hl ipl">$_</span><span class="hl str">-</span><span class="hl ipl">$nb</span><span class="hl str">]/5)*5 + 15;</span>
<span class="hl str">	}</span>
<span class="hl str">    }</span>
<span class="hl str"></span>    <span class="hl ipl">&#64;ret</span><span class="hl str">;</span>
<span class="hl str">}</span>
<span class="hl str"></span>
<span class="hl str">1;</span>
</code></pre></td></tr></table>
</div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.1</a> (<a href='https://git-scm.com/'>git 2.21.0</a>) at 2025-03-02 21:20:09 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>