summaryrefslogtreecommitdiffstats
BranchCommit messageAuthorAge
masterSet up i586 to i686 mediumThierry Vignaud2 months
topic/maat_color(available_ftp_http_downloaders) Set wget as default downloader (mga#24362)Nicolas Lécureuil14 months
topic/kernel-orphansWIP4CPAN: 8.127.1, err 8.128.1 after Martin Whitaker changesThierry Vignaud20 months
topic/colorUpdate Hebrew translation from TxYuri Chornoivan3 years
user/pterjan/ignorearchAdd --ignorearch to urpmi.addmedia --distribPascal Terjan4 years
distro/mga68.110.2Martin Whitaker5 years
distro/mga78.118.2Martin Whitaker5 years
distro/mga58.06.1Thierry Vignaud8 years
distro/mga26.48.5Colin Guthrie11 years
distro/mga1Changing all DOS-like .po files to UNIX-like files.Rémi Verschelde11 years
topic/6.146.14.17 versionAntoine Ginies14 years
topic/rpm5dudf: add missing calls to dudf_exitChristophe Fergeau14 years
topic/6.32remove bogus entry from NEWS fileChristophe Fergeau14 years
topic/6.256.25.7Christophe Fergeau14 years
topic/4.10.14Fix help in all versions as this is an old errorNicolas Lécureuil15 years
topic/4.9.21Fix help in all versions as this is an old errorNicolas Lécureuil15 years
topic/4.xFix help in all versions as this is an old errorNicolas Lécureuil15 years
topic/5.19Fix help in all versions as this is an old errorNicolas Lécureuil15 years
topic/6.25@2580136.25.5Thierry Vignaud15 years
topic/urpmi-4_6_24-3mdk4.6.24-3mdkRafael Garcia-Suarez19 years
 
TagDownloadAuthorAge
8.131urpmi-8.131.tar  urpmi-8.131.tar.gz  urpmi-8.131.tar.bz2  urpmi-8.131.tar.xz  urpmi-8.131.zip  Thierry Vignaud16 months
8.130urpmi-8.130.tar  urpmi-8.130.tar.gz  urpmi-8.130.tar.bz2  urpmi-8.130.tar.xz  urpmi-8.130.zip  Martin Whitaker19 months
f823ad67ca12e41ea022f4269b34fcc1fc094db3urpmi-f823ad67ca12e41ea022f4269b34fcc1fc094db3.tar  urpmi-f823ad67ca12e41ea022f4269b34fcc1fc094db3.tar.gz  urpmi-f823ad67ca12e41ea022f4269b34fcc1fc094db3.tar.bz2  urpmi-f823ad67ca12e41ea022f4269b34fcc1fc094db3.tar.xz  urpmi-f823ad67ca12e41ea022f4269b34fcc1fc094db3.zip  Martin Whitaker19 months
8.129urpmi-8.129.tar  urpmi-8.129.tar.gz  urpmi-8.129.tar.bz2  urpmi-8.129.tar.xz  urpmi-8.129.zip  Martin Whitaker19 months
8.128urpmi-8.128.tar  urpmi-8.128.tar.gz  urpmi-8.128.tar.bz2  urpmi-8.128.tar.xz  urpmi-8.128.zip  Martin Whitaker21 months
8.127urpmi-8.127.tar  urpmi-8.127.tar.gz  urpmi-8.127.tar.bz2  urpmi-8.127.tar.xz  urpmi-8.127.zip  Thierry Vignaud3 years
8.126urpmi-8.126.tar  urpmi-8.126.tar.gz  urpmi-8.126.tar.bz2  urpmi-8.126.tar.xz  urpmi-8.126.zip  Thierry Vignaud3 years
8.125urpmi-8.125.tar  urpmi-8.125.tar.gz  urpmi-8.125.tar.bz2  urpmi-8.125.tar.xz  urpmi-8.125.zip  Thomas Backlund3 years
8.124urpmi-8.124.tar  urpmi-8.124.tar.gz  urpmi-8.124.tar.bz2  urpmi-8.124.tar.xz  urpmi-8.124.zip  Thierry Vignaud4 years
8.123urpmi-8.123.tar  urpmi-8.123.tar.gz  urpmi-8.123.tar.bz2  urpmi-8.123.tar.xz  urpmi-8.123.zip  Thierry Vignaud4 years
8.122urpmi-8.122.tar  urpmi-8.122.tar.gz  urpmi-8.122.tar.bz2  urpmi-8.122.tar.xz  urpmi-8.122.zip  Thierry Vignaud4 years
8.121urpmi-8.121.tar  urpmi-8.121.tar.gz  urpmi-8.121.tar.bz2  urpmi-8.121.tar.xz  urpmi-8.121.zip  Thierry Vignaud4 years
8.110.2urpmi-8.110.2.tar  urpmi-8.110.2.tar.gz  urpmi-8.110.2.tar.bz2  urpmi-8.110.2.tar.xz  urpmi-8.110.2.zip  Martin Whitaker5 years
8.120urpmi-8.120.tar  urpmi-8.120.tar.gz  urpmi-8.120.tar.bz2  urpmi-8.120.tar.xz  urpmi-8.120.zip  Martin Whitaker5 years
8.118.2urpmi-8.118.2.tar  urpmi-8.118.2.tar.gz  urpmi-8.118.2.tar.bz2  urpmi-8.118.2.tar.xz  urpmi-8.118.2.zip  Martin Whitaker5 years
8.118.1urpmi-8.118.1.tar  urpmi-8.118.1.tar.gz  urpmi-8.118.1.tar.bz2  urpmi-8.118.1.tar.xz  urpmi-8.118.1.zip  Martin Whitaker5 years
8.110.1urpmi-8.110.1.tar  urpmi-8.110.1.tar.gz  urpmi-8.110.1.tar.bz2  urpmi-8.110.1.tar.xz  urpmi-8.110.1.zip  Martin Whitaker5 years
8.119urpmi-8.119.tar  urpmi-8.119.tar.gz  urpmi-8.119.tar.bz2  urpmi-8.119.tar.xz  urpmi-8.119.zip  Martin Whitaker5 years
8.118urpmi-8.118.tar  urpmi-8.118.tar.gz  urpmi-8.118.tar.bz2  urpmi-8.118.tar.xz  urpmi-8.118.zip  Martin Whitaker5 years
8.117urpmi-8.117.tar  urpmi-8.117.tar.gz  urpmi-8.117.tar.bz2  urpmi-8.117.tar.xz  urpmi-8.117.zip  Martin Whitaker5 years
8.116urpmi-8.116.tar  urpmi-8.116.tar.gz  urpmi-8.116.tar.bz2  urpmi-8.116.tar.xz  urpmi-8.116.zip  Martin Whitaker5 years
8.115urpmi-8.115.tar  urpmi-8.115.tar.gz  urpmi-8.115.tar.bz2  urpmi-8.115.tar.xz  urpmi-8.115.zip  Thierry Vignaud5 years
8.114urpmi-8.114.tar  urpmi-8.114.tar.gz  urpmi-8.114.tar.bz2  urpmi-8.114.tar.xz  urpmi-8.114.zip  Thierry Vignaud6 years
8.113urpmi-8.113.tar  urpmi-8.113.tar.gz  urpmi-8.113.tar.bz2  urpmi-8.113.tar.xz  urpmi-8.113.zip  Thierry Vignaud6 years
8.112urpmi-8.112.tar  urpmi-8.112.tar.gz  urpmi-8.112.tar.bz2  urpmi-8.112.tar.xz  urpmi-8.112.zip  Thierry Vignaud6 years
8.111urpmi-8.111.tar  urpmi-8.111.tar.gz  urpmi-8.111.tar.bz2  urpmi-8.111.tar.xz  urpmi-8.111.zip  Thierry Vignaud7 years
8.110urpmi-8.110.tar  urpmi-8.110.tar.gz  urpmi-8.110.tar.bz2  urpmi-8.110.tar.xz  urpmi-8.110.zip  Rémi Verschelde7 years
8.109urpmi-8.109.tar  urpmi-8.109.tar.gz  urpmi-8.109.tar.bz2  urpmi-8.109.tar.xz  urpmi-8.109.zip  Rémi Verschelde7 years
8.108urpmi-8.108.tar  urpmi-8.108.tar.gz  urpmi-8.108.tar.bz2  urpmi-8.108.tar.xz  urpmi-8.108.zip  Thierry Vignaud7 years
8.107urpmi-8.107.tar  urpmi-8.107.tar.gz  urpmi-8.107.tar.bz2  urpmi-8.107.tar.xz  urpmi-8.107.zip  Rémi Verschelde7 years
8.106urpmi-8.106.tar  urpmi-8.106.tar.gz  urpmi-8.106.tar.bz2  urpmi-8.106.tar.xz  urpmi-8.106.zip  Thierry Vignaud8 years
8.105urpmi-8.105.tar  urpmi-8.105.tar.gz  urpmi-8.105.tar.bz2  urpmi-8.105.tar.xz  urpmi-8.105.zip  Thierry Vignaud8 years
8.104urpmi-8.104.tar  urpmi-8.104.tar.gz  urpmi-8.104.tar.bz2  urpmi-8.104.tar.xz  urpmi-8.104.zip  Thierry Vignaud8 years
8.103urpmi-8.103.tar  urpmi-8.103.tar.gz  urpmi-8.103.tar.bz2  urpmi-8.103.tar.xz  urpmi-8.103.zip  Thierry Vignaud8 years
8.06.1urpmi-8.06.1.tar  urpmi-8.06.1.tar.gz  urpmi-8.06.1.tar.bz2  urpmi-8.06.1.tar.xz  urpmi-8.06.1.zip  Thierry Vignaud8 years
8.102urpmi-8.102.tar  urpmi-8.102.tar.gz  urpmi-8.102.tar.bz2  urpmi-8.102.tar.xz  urpmi-8.102.zip  Thierry Vignaud8 years
8.101urpmi-8.101.tar  urpmi-8.101.tar.gz  urpmi-8.101.tar.bz2  urpmi-8.101.tar.xz  urpmi-8.101.zip  Thierry Vignaud9 years
8.10urpmi-8.10.tar  urpmi-8.10.tar.gz  urpmi-8.10.tar.bz2  urpmi-8.10.tar.xz  urpmi-8.10.zip  Thierry Vignaud9 years
8.09urpmi-8.09.tar  urpmi-8.09.tar.gz  urpmi-8.09.tar.bz2  urpmi-8.09.tar.xz  urpmi-8.09.zip  Thierry Vignaud9 years
8.08urpmi-8.08.tar  urpmi-8.08.tar.gz  urpmi-8.08.tar.bz2  urpmi-8.08.tar.xz  urpmi-8.08.zip  Thierry Vignaud9 years
8.07urpmi-8.07.tar  urpmi-8.07.tar.gz  urpmi-8.07.tar.bz2  urpmi-8.07.tar.xz  urpmi-8.07.zip  Thierry Vignaud9 years
8.06urpmi-8.06.tar  urpmi-8.06.tar.gz  urpmi-8.06.tar.bz2  urpmi-8.06.tar.xz  urpmi-8.06.zip  Thierry Vignaud9 years
8.05urpmi-8.05.tar  urpmi-8.05.tar.gz  urpmi-8.05.tar.bz2  urpmi-8.05.tar.xz  urpmi-8.05.zip  Thierry Vignaud9 years
8.04urpmi-8.04.tar  urpmi-8.04.tar.gz  urpmi-8.04.tar.bz2  urpmi-8.04.tar.xz  urpmi-8.04.zip  Thierry Vignaud9 years
8.03urpmi-8.03.tar  urpmi-8.03.tar.gz  urpmi-8.03.tar.bz2  urpmi-8.03.tar.xz  urpmi-8.03.zip  Thierry Vignaud10 years
8.02urpmi-8.02.tar  urpmi-8.02.tar.gz  urpmi-8.02.tar.bz2  urpmi-8.02.tar.xz  urpmi-8.02.zip  Thierry Vignaud10 years
8.01urpmi-8.01.tar  urpmi-8.01.tar.gz  urpmi-8.01.tar.bz2  urpmi-8.01.tar.xz  urpmi-8.01.zip  Thierry Vignaud10 years
8.00urpmi-8.00.tar  urpmi-8.00.tar.gz  urpmi-8.00.tar.bz2  urpmi-8.00.tar.xz  urpmi-8.00.zip  Thierry Vignaud10 years
7.32urpmi-7.32.tar  urpmi-7.32.tar.gz  urpmi-7.32.tar.bz2  urpmi-7.32.tar.xz  urpmi-7.32.zip  Thierry Vignaud10 years
7.31urpmi-7.31.tar  urpmi-7.31.tar.gz  urpmi-7.31.tar.bz2  urpmi-7.31.tar.xz  urpmi-7.31.zip  Thierry Vignaud11 years
7.30urpmi-7.30.tar  urpmi-7.30.tar.gz  urpmi-7.30.tar.bz2  urpmi-7.30.tar.xz  urpmi-7.30.zip  Thierry Vignaud11 years
7.29urpmi-7.29.tar  urpmi-7.29.tar.gz  urpmi-7.29.tar.bz2  urpmi-7.29.tar.xz  urpmi-7.29.zip  Thierry Vignaud11 years
7.28urpmi-7.28.tar  urpmi-7.28.tar.gz  urpmi-7.28.tar.bz2  urpmi-7.28.tar.xz  urpmi-7.28.zip  Thierry Vignaud11 years
7.27.5urpmi-7.27.5.tar  urpmi-7.27.5.tar.gz  urpmi-7.27.5.tar.bz2  urpmi-7.27.5.tar.xz  urpmi-7.27.5.zip  Colin Guthrie11 years
7.27.4urpmi-7.27.4.tar  urpmi-7.27.4.tar.gz  urpmi-7.27.4.tar.bz2  urpmi-7.27.4.tar.xz  urpmi-7.27.4.zip  Thierry Vignaud11 years
7.27.3urpmi-7.27.3.tar  urpmi-7.27.3.tar.gz  urpmi-7.27.3.tar.bz2  urpmi-7.27.3.tar.xz  urpmi-7.27.3.zip  Thierry Vignaud11 years
7.27.2urpmi-7.27.2.tar  urpmi-7.27.2.tar.gz  urpmi-7.27.2.tar.bz2  urpmi-7.27.2.tar.xz  urpmi-7.27.2.zip  Thierry Vignaud11 years
6.48.5urpmi-6.48.5.tar  urpmi-6.48.5.tar.gz  urpmi-6.48.5.tar.bz2  urpmi-6.48.5.tar.xz  urpmi-6.48.5.zip  Colin Guthrie11 years
7.27.1urpmi-7.27.1.tar  urpmi-7.27.1.tar.gz  urpmi-7.27.1.tar.bz2  urpmi-7.27.1.tar.xz  urpmi-7.27.1.zip  Thierry Vignaud11 years
7.27urpmi-7.27.tar  urpmi-7.27.tar.gz  urpmi-7.27.tar.bz2  urpmi-7.27.tar.xz  urpmi-7.27.zip  Thierry Vignaud11 years
7.26urpmi-7.26.tar  urpmi-7.26.tar.gz  urpmi-7.26.tar.bz2  urpmi-7.26.tar.xz  urpmi-7.26.zip  Thierry Vignaud11 years
7.25urpmi-7.25.tar  urpmi-7.25.tar.gz  urpmi-7.25.tar.bz2  urpmi-7.25.tar.xz  urpmi-7.25.zip  Thierry Vignaud11 years
7.24urpmi-7.24.tar  urpmi-7.24.tar.gz  urpmi-7.24.tar.bz2  urpmi-7.24.tar.xz  urpmi-7.24.zip  Thierry Vignaud11 years
6.48.4urpmi-6.48.4.tar  urpmi-6.48.4.tar.gz  urpmi-6.48.4.tar.bz2  urpmi-6.48.4.tar.xz  urpmi-6.48.4.zip  Thierry Vignaud11 years
7.23urpmi-7.23.tar  urpmi-7.23.tar.gz  urpmi-7.23.tar.bz2  urpmi-7.23.tar.xz  urpmi-7.23.zip  Thierry Vignaud11 years
7.22urpmi-7.22.tar  urpmi-7.22.tar.gz  urpmi-7.22.tar.bz2  urpmi-7.22.tar.xz  urpmi-7.22.zip  Thierry Vignaud11 years
7.21urpmi-7.21.tar  urpmi-7.21.tar.gz  urpmi-7.21.tar.bz2  urpmi-7.21.tar.xz  urpmi-7.21.zip  Thierry Vignaud11 years
7.20urpmi-7.20.tar  urpmi-7.20.tar.gz  urpmi-7.20.tar.bz2  urpmi-7.20.tar.xz  urpmi-7.20.zip  Thierry Vignaud11 years
7.19urpmi-7.19.tar  urpmi-7.19.tar.gz  urpmi-7.19.tar.bz2  urpmi-7.19.tar.xz  urpmi-7.19.zip  Thierry Vignaud12 years
7.18urpmi-7.18.tar  urpmi-7.18.tar.gz  urpmi-7.18.tar.bz2  urpmi-7.18.tar.xz  urpmi-7.18.zip  Thierry Vignaud12 years
7.17urpmi-7.17.tar  urpmi-7.17.tar.gz  urpmi-7.17.tar.bz2  urpmi-7.17.tar.xz  urpmi-7.17.zip  Thierry Vignaud12 years
7.16urpmi-7.16.tar  urpmi-7.16.tar.gz  urpmi-7.16.tar.bz2  urpmi-7.16.tar.xz  urpmi-7.16.zip  Thierry Vignaud12 years
7.15.2urpmi-7.15.2.tar  urpmi-7.15.2.tar.gz  urpmi-7.15.2.tar.bz2  urpmi-7.15.2.tar.xz  urpmi-7.15.2.zip  Thomas Backlund12 years
7.15.1urpmi-7.15.1.tar  urpmi-7.15.1.tar.gz  urpmi-7.15.1.tar.bz2  urpmi-7.15.1.tar.xz  urpmi-7.15.1.zip  Thierry Vignaud12 years
7.15urpmi-7.15.tar  urpmi-7.15.tar.gz  urpmi-7.15.tar.bz2  urpmi-7.15.tar.xz  urpmi-7.15.zip  Thierry Vignaud12 years
7.14urpmi-7.14.tar  urpmi-7.14.tar.gz  urpmi-7.14.tar.bz2  urpmi-7.14.tar.xz  urpmi-7.14.zip  Thierry Vignaud12 years
7.13urpmi-7.13.tar  urpmi-7.13.tar.gz  urpmi-7.13.tar.bz2  urpmi-7.13.tar.xz  urpmi-7.13.zip  Thierry Vignaud12 years
7.12.1urpmi-7.12.1.tar  urpmi-7.12.1.tar.gz  urpmi-7.12.1.tar.bz2  urpmi-7.12.1.tar.xz  urpmi-7.12.1.zip  Thierry Vignaud12 years
7.12urpmi-7.12.tar  urpmi-7.12.tar.gz  urpmi-7.12.tar.bz2  urpmi-7.12.tar.xz  urpmi-7.12.zip  Thierry Vignaud12 years
7.11.1urpmi-7.11.1.tar  urpmi-7.11.1.tar.gz  urpmi-7.11.1.tar.bz2  urpmi-7.11.1.tar.xz  urpmi-7.11.1.zip  Thierry Vignaud12 years
7.11urpmi-7.11.tar  urpmi-7.11.tar.gz  urpmi-7.11.tar.bz2  urpmi-7.11.tar.xz  urpmi-7.11.zip  Thierry Vignaud12 years
7.10urpmi-7.10.tar  urpmi-7.10.tar.gz  urpmi-7.10.tar.bz2  urpmi-7.10.tar.xz  urpmi-7.10.zip  Thierry Vignaud12 years
7.9urpmi-7.9.tar  urpmi-7.9.tar.gz  urpmi-7.9.tar.bz2  urpmi-7.9.tar.xz  urpmi-7.9.zip  Thierry Vignaud12 years
7.8.3urpmi-7.8.3.tar  urpmi-7.8.3.tar.gz  urpmi-7.8.3.tar.bz2  urpmi-7.8.3.tar.xz  urpmi-7.8.3.zip  Thierry Vignaud12 years
7.8.1urpmi-7.8.1.tar  urpmi-7.8.1.tar.gz  urpmi-7.8.1.tar.bz2  urpmi-7.8.1.tar.xz  urpmi-7.8.1.zip  Thierry Vignaud12 years
7.8.2urpmi-7.8.2.tar  urpmi-7.8.2.tar.gz  urpmi-7.8.2.tar.bz2  urpmi-7.8.2.tar.xz  urpmi-7.8.2.zip  Thierry Vignaud12 years
7.8urpmi-7.8.tar  urpmi-7.8.tar.gz  urpmi-7.8.tar.bz2  urpmi-7.8.tar.xz  urpmi-7.8.zip  Thierry Vignaud12 years
7.7urpmi-7.7.tar  urpmi-7.7.tar.gz  urpmi-7.7.tar.bz2  urpmi-7.7.tar.xz  urpmi-7.7.zip  Thierry Vignaud12 years
7.6urpmi-7.6.tar  urpmi-7.6.tar.gz  urpmi-7.6.tar.bz2  urpmi-7.6.tar.xz  urpmi-7.6.zip  Thierry Vignaud12 years
7.5urpmi-7.5.tar  urpmi-7.5.tar.gz  urpmi-7.5.tar.bz2  urpmi-7.5.tar.xz  urpmi-7.5.zip  Thierry Vignaud12 years
7.4urpmi-7.4.tar  urpmi-7.4.tar.gz  urpmi-7.4.tar.bz2  urpmi-7.4.tar.xz  urpmi-7.4.zip  Thierry Vignaud12 years
6.48.3urpmi-6.48.3.tar  urpmi-6.48.3.tar.gz  urpmi-6.48.3.tar.bz2  urpmi-6.48.3.tar.xz  urpmi-6.48.3.zip  Pascal Terjan12 years
7.3urpmi-7.3.tar  urpmi-7.3.tar.gz  urpmi-7.3.tar.bz2  urpmi-7.3.tar.xz  urpmi-7.3.zip  Pascal Terjan12 years
6.48.2urpmi-6.48.2.tar  urpmi-6.48.2.tar.gz  urpmi-6.48.2.tar.bz2  urpmi-6.48.2.tar.xz  urpmi-6.48.2.zip  Thierry Vignaud12 years
7.2urpmi-7.2.tar  urpmi-7.2.tar.gz  urpmi-7.2.tar.bz2  urpmi-7.2.tar.xz  urpmi-7.2.zip  Thierry Vignaud12 years
7.1urpmi-7.1.tar  urpmi-7.1.tar.gz  urpmi-7.1.tar.bz2  urpmi-7.1.tar.xz  urpmi-7.1.zip  Thierry Vignaud12 years
7.0urpmi-7.0.tar  urpmi-7.0.tar.gz  urpmi-7.0.tar.bz2  urpmi-7.0.tar.xz  urpmi-7.0.zip  Thierry Vignaud12 years
6.48.1urpmi-6.48.1.tar  urpmi-6.48.1.tar.gz  urpmi-6.48.1.tar.bz2  urpmi-6.48.1.tar.xz  urpmi-6.48.1.zip  Thierry Vignaud12 years
6.48urpmi-6.48.tar  urpmi-6.48.tar.gz  urpmi-6.48.tar.bz2  urpmi-6.48.tar.xz  urpmi-6.48.zip  Thierry Vignaud12 years
6.40.3urpmi-6.40.3.tar  urpmi-6.40.3.tar.gz  urpmi-6.40.3.tar.bz2  urpmi-6.40.3.tar.xz  urpmi-6.40.3.zip  Thierry Vignaud12 years
6.40.2urpmi-6.40.2.tar  urpmi-6.40.2.tar.gz  urpmi-6.40.2.tar.bz2  urpmi-6.40.2.tar.xz  urpmi-6.40.2.zip  Thierry Vignaud12 years
6.47urpmi-6.47.tar  urpmi-6.47.tar.gz  urpmi-6.47.tar.bz2  urpmi-6.47.tar.xz  urpmi-6.47.zip  Guillaume Rousse12 years
6.46urpmi-6.46.tar  urpmi-6.46.tar.gz  urpmi-6.46.tar.bz2  urpmi-6.46.tar.xz  urpmi-6.46.zip  Thierry Vignaud12 years
6.40.1urpmi-6.40.1.tar  urpmi-6.40.1.tar.gz  urpmi-6.40.1.tar.bz2  urpmi-6.40.1.tar.xz  urpmi-6.40.1.zip  Thierry Vignaud12 years
6.45urpmi-6.45.tar  urpmi-6.45.tar.gz  urpmi-6.45.tar.bz2  urpmi-6.45.tar.xz  urpmi-6.45.zip  Thierry Vignaud12 years
6.44urpmi-6.44.tar  urpmi-6.44.tar.gz  urpmi-6.44.tar.bz2  urpmi-6.44.tar.xz  urpmi-6.44.zip  Thierry Vignaud13 years
6.43.1urpmi-6.43.1.tar  urpmi-6.43.1.tar.gz  urpmi-6.43.1.tar.bz2  urpmi-6.43.1.tar.xz  urpmi-6.43.1.zip  Thierry Vignaud13 years
6.43urpmi-6.43.tar  urpmi-6.43.tar.gz  urpmi-6.43.tar.bz2  urpmi-6.43.tar.xz  urpmi-6.43.zip  Thierry Vignaud13 years
6.42urpmi-6.42.tar  urpmi-6.42.tar.gz  urpmi-6.42.tar.bz2  urpmi-6.42.tar.xz  urpmi-6.42.zip  Thierry Vignaud13 years
6.41urpmi-6.41.tar  urpmi-6.41.tar.gz  urpmi-6.41.tar.bz2  urpmi-6.41.tar.xz  urpmi-6.41.zip  Thierry Vignaud13 years
6.40urpmi-6.40.tar  urpmi-6.40.tar.gz  urpmi-6.40.tar.bz2  urpmi-6.40.tar.xz  urpmi-6.40.zip  Thierry Vignaud13 years
6.39urpmi-6.39.tar  urpmi-6.39.tar.gz  urpmi-6.39.tar.bz2  urpmi-6.39.tar.xz  urpmi-6.39.zip  Eugeni Dodonov14 years
6.38urpmi-6.38.tar  urpmi-6.38.tar.gz  urpmi-6.38.tar.bz2  urpmi-6.38.tar.xz  urpmi-6.38.zip  Olivier Blin14 years
6.37urpmi-6.37.tar  urpmi-6.37.tar.gz  urpmi-6.37.tar.bz2  urpmi-6.37.tar.xz  urpmi-6.37.zip  Eugeni Dodonov14 years
6.36urpmi-6.36.tar  urpmi-6.36.tar.gz  urpmi-6.36.tar.bz2  urpmi-6.36.tar.xz  urpmi-6.36.zip  Christophe Fergeau14 years
6.35urpmi-6.35.tar  urpmi-6.35.tar.gz  urpmi-6.35.tar.bz2  urpmi-6.35.tar.xz  urpmi-6.35.zip  Christophe Fergeau14 years
6.34urpmi-6.34.tar  urpmi-6.34.tar.gz  urpmi-6.34.tar.bz2  urpmi-6.34.tar.xz  urpmi-6.34.zip  Thierry Vignaud15 years
6.33urpmi-6.33.tar  urpmi-6.33.tar.gz  urpmi-6.33.tar.bz2  urpmi-6.33.tar.xz  urpmi-6.33.zip  Christophe Fergeau15 years
6.32urpmi-6.32.tar  urpmi-6.32.tar.gz  urpmi-6.32.tar.bz2  urpmi-6.32.tar.xz  urpmi-6.32.zip  Christophe Fergeau15 years
6.31urpmi-6.31.tar  urpmi-6.31.tar.gz  urpmi-6.31.tar.bz2  urpmi-6.31.tar.xz  urpmi-6.31.zip  Christophe Fergeau15 years
6.30.1urpmi-6.30.1.tar  urpmi-6.30.1.tar.gz  urpmi-6.30.1.tar.bz2  urpmi-6.30.1.tar.xz  urpmi-6.30.1.zip  Christophe Fergeau15 years
6.30urpmi-6.30.tar  urpmi-6.30.tar.gz  urpmi-6.30.tar.bz2  urpmi-6.30.tar.xz  urpmi-6.30.zip  Christophe Fergeau15 years
6.29urpmi-6.29.tar  urpmi-6.29.tar.gz  urpmi-6.29.tar.bz2  urpmi-6.29.tar.xz  urpmi-6.29.zip  Christophe Fergeau15 years
6.28.1urpmi-6.28.1.tar  urpmi-6.28.1.tar.gz  urpmi-6.28.1.tar.bz2  urpmi-6.28.1.tar.xz  urpmi-6.28.1.zip  Christophe Fergeau15 years
6.28urpmi-6.28.tar  urpmi-6.28.tar.gz  urpmi-6.28.tar.bz2  urpmi-6.28.tar.xz  urpmi-6.28.zip  Christophe Fergeau15 years
6.27.1urpmi-6.27.1.tar  urpmi-6.27.1.tar.gz  urpmi-6.27.1.tar.bz2  urpmi-6.27.1.tar.xz  urpmi-6.27.1.zip  Christophe Fergeau15 years
6.27urpmi-6.27.tar  urpmi-6.27.tar.gz  urpmi-6.27.tar.bz2  urpmi-6.27.tar.xz  urpmi-6.27.zip  Thierry Vignaud15 years
6.26.1urpmi-6.26.1.tar  urpmi-6.26.1.tar.gz  urpmi-6.26.1.tar.bz2  urpmi-6.26.1.tar.xz  urpmi-6.26.1.zip  Christophe Fergeau15 years
6.26urpmi-6.26.tar  urpmi-6.26.tar.gz  urpmi-6.26.tar.bz2  urpmi-6.26.tar.xz  urpmi-6.26.zip  Christophe Fergeau15 years
6.25.5urpmi-6.25.5.tar  urpmi-6.25.5.tar.gz  urpmi-6.25.5.tar.bz2  urpmi-6.25.5.tar.xz  urpmi-6.25.5.zip  Thierry Vignaud15 years
6.25.4urpmi-6.25.4.tar  urpmi-6.25.4.tar.gz  urpmi-6.25.4.tar.bz2  urpmi-6.25.4.tar.xz  urpmi-6.25.4.zip  Christophe Fergeau15 years
6.25.3urpmi-6.25.3.tar  urpmi-6.25.3.tar.gz  urpmi-6.25.3.tar.bz2  urpmi-6.25.3.tar.xz  urpmi-6.25.3.zip  Pascal Terjan15 years
6.25.2urpmi-6.25.2.tar  urpmi-6.25.2.tar.gz  urpmi-6.25.2.tar.bz2  urpmi-6.25.2.tar.xz  urpmi-6.25.2.zip  Thierry Vignaud15 years
6.25.1urpmi-6.25.1.tar  urpmi-6.25.1.tar.gz  urpmi-6.25.1.tar.bz2  urpmi-6.25.1.tar.xz  urpmi-6.25.1.zip  Thierry Vignaud15 years
6.25urpmi-6.25.tar  urpmi-6.25.tar.gz  urpmi-6.25.tar.bz2  urpmi-6.25.tar.xz  urpmi-6.25.zip  Thierry Vignaud15 years
6.24urpmi-6.24.tar  urpmi-6.24.tar.gz  urpmi-6.24.tar.bz2  urpmi-6.24.tar.xz  urpmi-6.24.zip  Christophe Fergeau15 years
6.23urpmi-6.23.tar  urpmi-6.23.tar.gz  urpmi-6.23.tar.bz2  urpmi-6.23.tar.xz  urpmi-6.23.zip  Christophe Fergeau15 years
6.22.4urpmi-6.22.4.tar  urpmi-6.22.4.tar.gz  urpmi-6.22.4.tar.bz2  urpmi-6.22.4.tar.xz  urpmi-6.22.4.zip  Thierry Vignaud15 years
6.22.3urpmi-6.22.3.tar  urpmi-6.22.3.tar.gz  urpmi-6.22.3.tar.bz2  urpmi-6.22.3.tar.xz  urpmi-6.22.3.zip  Thierry Vignaud15 years
6.22.2urpmi-6.22.2.tar  urpmi-6.22.2.tar.gz  urpmi-6.22.2.tar.bz2  urpmi-6.22.2.tar.xz  urpmi-6.22.2.zip  Thierry Vignaud15 years
6.22.1urpmi-6.22.1.tar  urpmi-6.22.1.tar.gz  urpmi-6.22.1.tar.bz2  urpmi-6.22.1.tar.xz  urpmi-6.22.1.zip  Thierry Vignaud15 years
6.22urpmi-6.22.tar  urpmi-6.22.tar.gz  urpmi-6.22.tar.bz2  urpmi-6.22.tar.xz  urpmi-6.22.zip  Thierry Vignaud15 years
6.21urpmi-6.21.tar  urpmi-6.21.tar.gz  urpmi-6.21.tar.bz2  urpmi-6.21.tar.xz  urpmi-6.21.zip  Christophe Fergeau16 years
6.20urpmi-6.20.tar  urpmi-6.20.tar.gz  urpmi-6.20.tar.bz2  urpmi-6.20.tar.xz  urpmi-6.20.zip  Christophe Fergeau16 years
6.19urpmi-6.19.tar  urpmi-6.19.tar.gz  urpmi-6.19.tar.bz2  urpmi-6.19.tar.xz  urpmi-6.19.zip  Pascal Rigaux16 years
6.18urpmi-6.18.tar  urpmi-6.18.tar.gz  urpmi-6.18.tar.bz2  urpmi-6.18.tar.xz  urpmi-6.18.zip  Pascal Rigaux16 years
6.17urpmi-6.17.tar  urpmi-6.17.tar.gz  urpmi-6.17.tar.bz2  urpmi-6.17.tar.xz  urpmi-6.17.zip  Pascal Rigaux16 years
6.16urpmi-6.16.tar  urpmi-6.16.tar.gz  urpmi-6.16.tar.bz2  urpmi-6.16.tar.xz  urpmi-6.16.zip  Pascal Rigaux16 years
6.15urpmi-6.15.tar  urpmi-6.15.tar.gz  urpmi-6.15.tar.bz2  urpmi-6.15.tar.xz  urpmi-6.15.zip  Thierry Vignaud16 years
6.14urpmi-6.14.tar  urpmi-6.14.tar.gz  urpmi-6.14.tar.bz2  urpmi-6.14.tar.xz  urpmi-6.14.zip  Pascal Rigaux16 years
6.13urpmi-6.13.tar  urpmi-6.13.tar.gz  urpmi-6.13.tar.bz2  urpmi-6.13.tar.xz  urpmi-6.13.zip  Pascal Rigaux16 years
6.12urpmi-6.12.tar  urpmi-6.12.tar.gz  urpmi-6.12.tar.bz2  urpmi-6.12.tar.xz  urpmi-6.12.zip  Thierry Vignaud16 years
6.11urpmi-6.11.tar  urpmi-6.11.tar.gz  urpmi-6.11.tar.bz2  urpmi-6.11.tar.xz  urpmi-6.11.zip  Pascal Rigaux16 years
6.10urpmi-6.10.tar  urpmi-6.10.tar.gz  urpmi-6.10.tar.bz2  urpmi-6.10.tar.xz  urpmi-6.10.zip  Thierry Vignaud16 years
6.9urpmi-6.9.tar  urpmi-6.9.tar.gz  urpmi-6.9.tar.bz2  urpmi-6.9.tar.xz  urpmi-6.9.zip  Pascal Rigaux16 years
6.8urpmi-6.8.tar  urpmi-6.8.tar.gz  urpmi-6.8.tar.bz2  urpmi-6.8.tar.xz  urpmi-6.8.zip  Pascal Rigaux16 years
6.7urpmi-6.7.tar  urpmi-6.7.tar.gz  urpmi-6.7.tar.bz2  urpmi-6.7.tar.xz  urpmi-6.7.zip  Pascal Rigaux16 years
6.6urpmi-6.6.tar  urpmi-6.6.tar.gz  urpmi-6.6.tar.bz2  urpmi-6.6.tar.xz  urpmi-6.6.zip  Pascal Rigaux16 years
6.5urpmi-6.5.tar  urpmi-6.5.tar.gz  urpmi-6.5.tar.bz2  urpmi-6.5.tar.xz  urpmi-6.5.zip  Pascal Rigaux16 years
6.4urpmi-6.4.tar  urpmi-6.4.tar.gz  urpmi-6.4.tar.bz2  urpmi-6.4.tar.xz  urpmi-6.4.zip  Thierry Vignaud16 years
6.3urpmi-6.3.tar  urpmi-6.3.tar.gz  urpmi-6.3.tar.bz2  urpmi-6.3.tar.xz  urpmi-6.3.zip  Thierry Vignaud16 years
6.2urpmi-6.2.tar  urpmi-6.2.tar.gz  urpmi-6.2.tar.bz2  urpmi-6.2.tar.xz  urpmi-6.2.zip  Thierry Vignaud16 years
6.1urpmi-6.1.tar  urpmi-6.1.tar.gz  urpmi-6.1.tar.bz2  urpmi-6.1.tar.xz  urpmi-6.1.zip  Pascal Rigaux16 years
6.0urpmi-6.0.tar  urpmi-6.0.tar.gz  urpmi-6.0.tar.bz2  urpmi-6.0.tar.xz  urpmi-6.0.zip  Pascal Rigaux16 years
5.20urpmi-5.20.tar  urpmi-5.20.tar.gz  urpmi-5.20.tar.bz2  urpmi-5.20.tar.xz  urpmi-5.20.zip  Pascal Rigaux16 years
4.8.28urpmi-4.8.28.tar  urpmi-4.8.28.tar.gz  urpmi-4.8.28.tar.bz2  urpmi-4.8.28.tar.xz  urpmi-4.8.28.zip  Rafael Garcia-Suarez18 years
4.8.26urpmi-4.8.26.tar  urpmi-4.8.26.tar.gz  urpmi-4.8.26.tar.bz2  urpmi-4.8.26.tar.xz  urpmi-4.8.26.zip  Rafael Garcia-Suarez18 years
4.8.25urpmi-4.8.25.tar  urpmi-4.8.25.tar.gz  urpmi-4.8.25.tar.bz2  urpmi-4.8.25.tar.xz  urpmi-4.8.25.zip  Rafael Garcia-Suarez18 years
4.8.23urpmi-4.8.23.tar  urpmi-4.8.23.tar.gz  urpmi-4.8.23.tar.bz2  urpmi-4.8.23.tar.xz  urpmi-4.8.23.zip  Rafael Garcia-Suarez18 years
4.8.22urpmi-4.8.22.tar  urpmi-4.8.22.tar.gz  urpmi-4.8.22.tar.bz2  urpmi-4.8.22.tar.xz  urpmi-4.8.22.zip  Rafael Garcia-Suarez18 years
4.8.21urpmi-4.8.21.tar  urpmi-4.8.21.tar.gz  urpmi-4.8.21.tar.bz2  urpmi-4.8.21.tar.xz  urpmi-4.8.21.zip  Rafael Garcia-Suarez18 years
v4_8_19urpmi-4_8_19.tar  urpmi-4_8_19.tar.gz  urpmi-4_8_19.tar.bz2  urpmi-4_8_19.tar.xz  urpmi-4_8_19.zip  Mystery Man18 years
v4_8_18urpmi-4_8_18.tar  urpmi-4_8_18.tar.gz  urpmi-4_8_18.tar.bz2  urpmi-4_8_18.tar.xz  urpmi-4_8_18.zip  Mystery Man18 years
v4_8_17urpmi-4_8_17.tar  urpmi-4_8_17.tar.gz  urpmi-4_8_17.tar.bz2  urpmi-4_8_17.tar.xz  urpmi-4_8_17.zip  Mystery Man18 years
v4_8_16urpmi-4_8_16.tar  urpmi-4_8_16.tar.gz  urpmi-4_8_16.tar.bz2  urpmi-4_8_16.tar.xz  urpmi-4_8_16.zip  Mystery Man18 years
v4_8_15urpmi-4_8_15.tar  urpmi-4_8_15.tar.gz  urpmi-4_8_15.tar.bz2  urpmi-4_8_15.tar.xz  urpmi-4_8_15.zip  Mystery Man18 years
v4_8_12urpmi-4_8_12.tar  urpmi-4_8_12.tar.gz  urpmi-4_8_12.tar.bz2  urpmi-4_8_12.tar.xz  urpmi-4_8_12.zip  Mystery Man18 years
v4_8_11urpmi-4_8_11.tar  urpmi-4_8_11.tar.gz  urpmi-4_8_11.tar.bz2  urpmi-4_8_11.tar.xz  urpmi-4_8_11.zip  Mystery Man19 years
v4_8_10urpmi-4_8_10.tar  urpmi-4_8_10.tar.gz  urpmi-4_8_10.tar.bz2  urpmi-4_8_10.tar.xz  urpmi-4_8_10.zip  Mystery Man19 years
vpost_9_0_stableurpmi-vpost_9_0_stable.tar  urpmi-vpost_9_0_stable.tar.gz  urpmi-vpost_9_0_stable.tar.bz2  urpmi-vpost_9_0_stable.tar.xz  urpmi-vpost_9_0_stable.zip  Mystery Man22 years
v8_2_fixedurpmi-8_2_fixed.tar  urpmi-8_2_fixed.tar.gz  urpmi-8_2_fixed.tar.bz2  urpmi-8_2_fixed.tar.xz  urpmi-8_2_fixed.zip  Mystery Man22 years
v8_1urpmi-8_1.tar  urpmi-8_1.tar.gz  urpmi-8_1.tar.bz2  urpmi-8_1.tar.xz  urpmi-8_1.zip  Mystery Man23 years
v8_0urpmi-8_0.tar  urpmi-8_0.tar.gz  urpmi-8_0.tar.bz2  urpmi-8_0.tar.xz  urpmi-8_0.zip  Mystery Man23 years
Odyssey-rc1urpmi-Odyssey-rc1.tar  urpmi-Odyssey-rc1.tar.gz  urpmi-Odyssey-rc1.tar.bz2  urpmi-Odyssey-rc1.tar.xz  urpmi-Odyssey-rc1.zip  Mystery Man24 years
odysseyurpmi-odyssey.tar  urpmi-odyssey.tar.gz  urpmi-odyssey.tar.bz2  urpmi-odyssey.tar.xz  urpmi-odyssey.zip  Mystery Man24 years
pt">->{box_allow_grow} || 0, $scroll); } else { my $new_label = sub { my ($txt) = @_; ref($txt) ? $txt : gtknew('WrappedLabel', text_markup => $txt, # workaround infamous 6 years old gnome bug #101968: width => mygtk3::get_label_width()); }; gtkpack__($box, if_($::isWizard, gtknew('Label', height => 10)), (map { my $w = $new_label->($_); $::isWizard ? gtknew('HBox', children_tight => [ gtknew('Label', width => 20), $w ]) : $w; } @l), if_($::isWizard, gtknew('Label', height => 15)), ); } } sub _create_dialog { my ($title, $o_options) = @_; my $options = $o_options || {}; #- keep compatibility with "transient" now called "transient_for" $options->{transient_for} = delete $options->{transient} if $options->{transient}; gtknew('Dialog', title => $title, position_policy => 'center-on-parent', # center-on-parent does not work modal => 1, if_(!$::isInstall, icon_no_error => wm_icon()), %$options, allow_unknown_options => 1, ); } # drakfloppy / drakfont / harddrake2 / mcc sub create_dialog { my ($title, $label, $o_options) = @_; my $ret = 0; $o_options ||= {}; $o_options->{transient_for} = $::main_window if !$o_options->{transient_for} && $::main_window; my $dialog = gtkset_border_width(_create_dialog($title, $o_options), 10); $dialog->set_border_width(10); my $text = ref($label) ? $label : $o_options->{use_markup} ? gtknew('WrappedLabel', text_markup => $label) : gtknew('WrappedLabel', text => $label); gtkpack($dialog->get_child, gtknew('HBox', children => [ if_($o_options->{stock}, 0, Gtk3::Image->new_from_stock($o_options->{stock} || '', 'dialog'), 0, gtknew('Label', text => " "), ), 1, $o_options->{scroll} ? create_scrolled_window($text, [ 'never', 'automatic' ]) : $text, ]), ); if ($o_options->{cancel}) { $dialog->get_action_area->pack_start( gtknew('Button', text => N("Cancel"), clicked => sub { $ret = 0; $dialog->destroy; Gtk3->main_quit }, can_default => 1), 1, 1, 0); } my $button = gtknew('Button', text => N("Ok"), can_default => 1, clicked => sub { $ret = 1; $dialog->destroy; Gtk3->main_quit }); $dialog->get_action_area->pack_start($button, 1, 1, 0); $button->grab_default; $dialog->show_all; Gtk3->main; $ret; } sub info_dialog { my ($title, $label, $o_options) = @_; $o_options ||= { }; add2hash_($o_options, { stock => 'gtk-dialog-info' }); create_dialog($title, $label, $o_options); } sub warn_dialog { my ($title, $label, $o_options) = @_; $o_options ||= { }; add2hash_($o_options, { stock => 'gtk-dialog-warning', cancel => 1 }); create_dialog($title, $label, $o_options); } sub err_dialog { my ($title, $label, $o_options) = @_; $o_options ||= { }; add2hash_($o_options, { stock => 'gtk-dialog-error' }); create_dialog($title, $label, $o_options); } sub create_hbox { gtknew('HButtonBox', layout => $_[0]) } sub create_vbox { gtknew('VButtonBox', layout => $_[0]) } sub create_menu { my $title = shift; my $w = Gtk3::MenuItem->new($title); $w->set_submenu(gtkshow(gtkappend(Gtk3::Menu->new, @_))); $w; } sub create_notebook { my $book = gtknew('Notebook'); while (@_) { my ($page, $title) = splice(@_, 0, 2); gtkappend_page($book, $page, $title); } $book; } sub create_packtable { my ($options, @l) = @_; my $w = Gtk3::Table->new(0, 0, $options->{homogeneous} || 0); add2hash_($options, { xpadding => 5, ypadding => 0 }); each_index { my ($i, $l) = ($::i, $_); each_index { my $j = $::i; if ($_) { ref $_ or $_ = gtknew('WrappedLabel', text => $_); $j != $#$l && !$options->{mcc} ? $w->attach($_, $j, $j + 1, $i, $i + 1, 'fill', 'fill', $options->{xpadding}, $options->{ypadding}) : $w->attach($_, $j, $j + 1, $i, $i + 1, ['expand', 'fill'], ref($_) eq 'Gtk3::ScrolledWindow' || $_->get_data('must_grow') ? ['expand', 'fill'] : [], 0, 0); $_->show; } } @$l; } @l; $w->set_col_spacings($options->{col_spacings} || 0); $w->set_row_spacings($options->{row_spacings} || 0); gtkset_border_width($w, $::isInstall ? 3 : 10); } my $wm_is_kde; sub create_okcancel { my ($w, $o_ok, $o_cancel, $_o_spread, @other) = @_; # @other is a list of extra buttons (usually help (eg: XFdrake/drakx caller) or advanced (eg: interactive caller) button) # extra buttons have the following structure [ label, handler, is_first, pack_right ] local $::isWizard = $::isWizard && !$w->{pop_it}; my $cancel; if (defined $o_cancel || defined $o_ok) { $cancel = $o_cancel; } elsif (!$::Wizard_no_previous) { $cancel = $::isWizard ? N("Previous") : N("Cancel"); } my $ok = defined $o_ok ? $o_ok : $::isWizard ? ($::Wizard_finished ? N("Finish") : N("Next")) : N("Ok"); my $bok = $ok && ($w->{ok} = gtknew('Button', text => $ok, clicked => $w->{ok_clicked} || sub { $w->{retval} = 1; Gtk3->main_quit })); my $bprev; if ($cancel) { $bprev = $w->{cancel} = gtknew('Button', text => $cancel, clicked => $w->{cancel_clicked} || sub { log::l("default cancel_clicked"); undef $w->{retval}; Gtk3->main_quit }); } $w->{wizcancel} = gtknew('Button', text => ($::Wizard_skip ? N("Skip") : N("Cancel")), clicked => sub { die 'wizcancel' }) if $::isWizard && !$::isInstall && !$::Wizard_no_cancel; if (!defined $wm_is_kde) { require any; my $wm = any::running_window_manager(); $wm_is_kde = !$::isInstall && (member($wm, qw(kwin compiz)) && fuzzy_pidofs(qr/\bkde-window-decorator\b/)) || 0; } my $f = sub { $w->{buttons}{$_[0][0]} = ref($_[0][0]) =~ /Gtk3::Button/ ? $_[0][0] : gtknew('Button', text => $_[0][0], clicked => $_[0][1]) }; my @left = ((map { $f->($_) } grep { $_->[2] && !$_->[3] } @other), map { $f->($_) } grep { !$_->[2] && !$_->[3] } @other); my @right = ((map { $f->($_) } grep { $_->[2] && $_->[3] } @other), map { $f->($_) } grep { !$_->[2] && $_->[3] } @other); # we put space to group buttons in two packs (but if there's only one when not in wizard mode) # but in the installer where all windows run in wizard mode because of design even when not in a wizard step $bprev = gtknew('Label') if !$cancel && $::Wizard_no_previous && !@left && !@right; if ($::isWizard || $w->{pop_it}) { # wizard mode: order is cancel/left_extras/white/right_extras/prev/next unshift @left, $w->{wizcancel} if $w->{wizcancel}; push @right, $bprev, $bok; } else { # normal mode: cancel/ok button follow GNOME's HIG unshift @left, ($wm_is_kde ? $bok : $bprev); push @left, gtknew('Label') if $ok && $cancel; # space buttons but if there's only one button push @right, ($wm_is_kde ? $bprev : $bok); } gtknew('VBox', spacing => 5, children_loose => [ gtknew('HBox', height => 5), gtknew('HSeparator'), gtknew('HBox', children_loose => [ map { gtknew('HButtonBox', spacing => 5, layout => $_->[1], children_loose => [ map { $_->set_can_default(to_bool($::isWizard)); $_; } grep { $_ } @{$_->[0]} ]); } ([ \@left, 'start' ], [ \@right, 'end' ], ) ]), ]); } sub _setup_paned { my ($paned, $child1, $child2, %options) = @_; foreach ([ 'resize1', 0 ], [ 'shrink1', 1 ], [ 'resize2', 1 ], [ 'shrink2', 1 ]) { $options{$_->[0]} = $_->[1] unless defined($options{$_->[0]}); } $paned->pack1(gtkshow($child1), $options{resize1}, $options{shrink1}); $paned->pack2(gtkshow($child2), $options{resize2}, $options{shrink2}); gtkshow($paned); } sub create_vpaned { _setup_paned(Gtk3::VPaned->new, @_); } sub create_hpaned { _setup_paned(Gtk3::HPaned->new, @_); } sub gtkcreate_frame { my ($label) = @_; gtknew('Frame', text => $label, border_width => 5); } =back =head1 Helpers Functions that do typical operations on widgets, that you may need in several places of your programs. =over =cut sub _find_imgfile { my ($name) = @_; if ($name =~ m|/| && -f $name) { $name; } else { foreach my $path (icon_paths()) { foreach ('', '.png', '.xpm') { my $file = "$path/$name$_"; -f $file and return $file; } } } } =item gtkcreate_img($file, $o_size) use it if you want to display an icon/image in your app =cut sub gtkcreate_img { my ($file, $o_size) = @_; gtknew('Image', file => $file, if_($o_size, size => $o_size)); } =item gtkcreate_pixbuf($file, $o_size) use it if you want to draw an image onto a drawingarea =cut sub gtkcreate_pixbuf { my ($file, $o_size) = @_; gtknew('Pixbuf', file => $file, if_($o_size, size => $o_size)); } sub gtktext_append { gtktext_insert(@_, append => 1) } sub may_set_icon { my ($w, $name) = @_; if (my $f = $name && _find_imgfile($name)) { $w->set_icon(gtkcreate_pixbuf($f)); } } sub gtktext_insert { &mygtk3::_text_insert } sub icon_paths { &mygtk3::_icon_paths } sub add_icon_path { &mygtk3::add_icon_path } sub set_main_window_size { my ($o) = @_; mygtk3::set_main_window_size($o->{rwindow}); } =item gtkfontinfo($widget) extracts interesting font metrics for a given widget =cut sub gtkfontinfo { my ($widget) = @_; my $context = $widget->get_pango_context; my $metrics = $context->get_metrics($context->get_font_description, $context->get_language); my %fontinfo; foreach (qw(ascent descent approximate_char_width approximate_digit_width)) { no strict; my $func = "get_$_"; $fontinfo{$_} = Pango::units_to_double($metrics->$func); } %fontinfo; } sub gtkoverride_font { my ($w, $arg) = @_; $w->override_font(ref($arg) ? $arg : Pango::FontDescription->from_string($arg)); $w; } sub gtkset_property { my ($w, $property, $value) = @_; $w->set_property($property, $value); $w; } sub set_back_pixmap { my ($w) = @_; return if !$w->get_realized; my $window = $w->get_window; my $pixmap = $w->{back_pixmap} ||= Gtk3::Gdk::Pixmap->new($window, 1, 2, $window->get_depth); my $style = $w->get_style; $pixmap->draw_points($style->bg_gc('normal'), 0, 0); $pixmap->draw_points($style->base_gc('normal'), 0, 1); $window->set_back_pixmap($pixmap); } sub add2notebook { my ($n, $title, $book) = @_; $n->append_page($book, gtkshow(gtknew('Label', text => $title))); $book->show; } sub string_size { my ($widget, $text) = @_; my $layout = $widget->create_pango_layout($text); my @size = $layout->get_pixel_size; @size; } sub string_width { my ($widget, $text) = @_; my ($width, undef) = string_size($widget, $text); $width; } my ($def_step_title); sub set_default_step_items { $def_step_title = translate($_[0]); } sub get_default_step_items { ($def_step_title) } =back =head1 Toplevel window creation helper =over =item new($type, $title, %opts) Use the 'new' function as a method constructor and then 'main' on it to launch the main loop. Use $o->{retval} to indicate that the window needs to terminate. Set $::isWizard to have a wizard appearance. Set $::isEmbedded and $::XID so that the window will plug. =cut sub new { my ($type, $title, %opts) = @_; my $o = bless { %opts }, $type; while (my $e = shift @tempory::objects) { $e->destroy } my $icon = find { _find_imgfile($_) } $::isInstall ? 'empty-banner' : $opts{icon}; my $banner_title = $opts{banner_title}; $o->{transient} ||= $::main_window if $::main_window && !$opts{do_not_track_main_window}; my $window = gtknew( 'MagicWindow', title => $title || '', pop_it => $o->{pop_it}, $::isInstall ? (banner => gtknew('Install_Title', text => $title || get_default_step_items())) : (), $::isStandalone && $banner_title && $icon ? (banner => Gtk3::Banner->new($icon, $banner_title)) : (), width => $opts{width}, height => $opts{height}, default_width => $opts{default_width}, default_height => $opts{default_height}, modal => (!$o->{pop_it} && !$::isInstall) && ($opts{modal} || $grab || $o->{grab}) || $o->{modal}, no_Window_Manager => exists $opts{no_Window_Manager} ? $opts{no_Window_Manager} : !$::isStandalone, if_(!$::isInstall, icon_no_error => wm_icon()), if_($o->{transient}, transient_for => $o->{transient}), ); mygtk3::register_main_window($window->{real_window}) if !$opts{do_not_track_main_window}; $window->set_border_width(10) if !$window->{pop_it} && !$::noborderWhenEmbedded; $o->{rwindow} = $o->{window} = $window; $o->{real_window} = $window->{real_window}; $o->{pop_it} = $window->{pop_it}; $o; } sub main { my ($o, $o_completed, $o_canceled) = @_; gtkset_mousecursor_normal(); $o->show; mygtk3::main($o->{rwindow}, sub { $o->{retval} ? !$o_completed || $o_completed->() : !$o_canceled || $o_canceled->() }); $o->{retval}; } sub show($) { my ($o) = @_; $o->{rwindow}->show; } sub destroy($) { my ($o) = @_; $o->{rwindow}->destroy; flush(); } sub DESTROY { goto &destroy } sub sync { my ($o) = @_; show($o); flush(); } sub flush() { gtkflush() } sub shrink_topwindow { my ($o) = @_; $o->{real_window}->resize(1, 1); } sub exit { gtkset_mousecursor_normal(); #- for restoring a normal in any case flush(); if ($::isStandalone) { require standalone; standalone::__exit($_[1]); #- workaround } else { c::_exit($_[1]); #- workaround } } #- in case "exit" above was not called by the program END { &exit() } =back =head1 Ask functions Full UI managed functions that will return to you the value that the user chose. =over =cut sub ask_warn { my $w = ugtk3->new(shift @_, grab => 1); $w->_ask_warn(@_); main($w) } sub ask_yesorno { my $w = ugtk3->new(shift @_, grab => 1); $w->_ask_okcancel(@_, N("Yes"), N("No")); main($w) } sub ask_okcancel { my $w = ugtk3->new(shift @_, grab => 1); $w->_ask_okcancel(@_, N("Is this correct?"), N("Ok"), N("Cancel")); main($w) } sub ask_from_entry { my $w = ugtk3->new(shift @_, grab => 1); $w->_ask_from_entry(@_); main($w) } sub ask_dir { my $w = ugtk3->new(shift @_, grab => 1); $w->_ask_dir(@_); main($w) } sub _ask_from_entry($$@) { my ($o, @msgs) = @_; my $entry = gtknew('Entry'); my $f = sub { $o->{retval} = $entry->get_text; Gtk3->main_quit }; $o->{ok_clicked} = $f; $o->{cancel_clicked} = sub { undef $o->{retval}; Gtk3->main_quit }; gtkadd($o->{window}, gtkpack($o->create_box_with_title(@msgs), gtksignal_connect($entry, 'activate' => $f), ($o->{hide_buttons} ? () : create_okcancel($o))), ); $entry->grab_focus; } sub _ask_warn($@) { my ($o, @msgs) = @_; gtkadd($o->{window}, gtkpack($o->create_box_with_title(@msgs), my $w = gtknew('Button', text => N("Ok"), clicked => sub { Gtk3->main_quit }), ), ); $w->grab_focus; } sub _ask_okcancel($@) { my ($o, @msgs) = @_; my ($ok, $cancel) = splice @msgs, -2; gtkadd($o->{window}, gtkpack(create_box_with_title($o, @msgs), create_okcancel($o, $ok, $cancel), ) ); $o->{ok}->grab_focus; } sub create_file_selector { my (%opts) = @_; my $w = ugtk3->new(delete $opts{title}, modal => 1); my ($message, $save, $want_a_dir) = (delete $opts{message}, delete $opts{save}, delete $opts{want_a_dir}); my $action = $want_a_dir ? ($save ? 'create_folder' : 'select_folder') : ($save ? 'save' : 'open'); add2hash(\%opts, { width => 480, height => 250 }); gtkadd($w->{window}, gtkpack_(create_box_with_title($w, $message), 1, $w->{chooser} = gtknew('FileChooser', action => $action, %opts), 0, create_okcancel($w), )); $w->{chooser}->signal_connect(file_activated => sub { $w->{ok}->clicked }); $w; } sub file_selected_check { my ($save, $want_a_dir, $file) = @_;