pax_global_header00006660000000000000000000000064137431110060014506gustar00rootroot0000000000000052 comment=248f493cae59ee2369b2ff664ee598612c4eb5ab gwakeonlan-0.7.0/000077500000000000000000000000001374311100600136405ustar00rootroot00000000000000gwakeonlan-0.7.0/.gitignore000066400000000000000000000000761374311100600156330ustar00rootroot00000000000000/locale/ /.idea/ /build/ *.pyc *.glade~ po/gwakeonlan.pot.new gwakeonlan-0.7.0/.travis.yml000066400000000000000000000005661374311100600157600ustar00rootroot00000000000000os: linux language: python python: - "3.5" virtualenv: system_site_packages: true script: - python3 gwakeonlan.py --verbose --autotest addons: apt: packages: - python3-gi # GObject - gir1.2-gtk-3.0 # gi.repository.gtk python-xdg install: - pip install -r requirements_travis.txt services: - xvfb gwakeonlan-0.7.0/.tx/000077500000000000000000000000001374311100600143515ustar00rootroot00000000000000gwakeonlan-0.7.0/.tx/config000066400000000000000000000002321374311100600155360ustar00rootroot00000000000000[main] host = https://www.transifex.com [gwakeonlan.gwakeonlanpot] source_file = po/gwakeonlan.pot source_lang = en file_filter = po/.po type = PO gwakeonlan-0.7.0/LEGGIMI.md000066400000000000000000000025051374311100600152410ustar00rootroot00000000000000gWakeOnLAN [![Build Status](https://travis-ci.org/muflone/gwakeonlan.svg?branch=master)](https://travis-ci.org/muflone/gwakeonlan) ========== **Descrizione:** Accendi le tue macchine usando il Wake On LAN. **Copyright:** 2009-2020 Fabio Castelli (Muflone) **Licenza:** GPL-3+ **Codice sorgente:** https://github.com/muflone/gwakeonlan **Documentazione:** https://www.muflone.com/gwakeonlan **Traduzioni:** https://www.transifex.com/projects/p/gwakeonlan/ Requisiti di sistema -------------------- * Python 3.x (sviluppato e testato per Python 3.8.2) * Libreria XDG per Python 3 * Libreria GTK+ 3.0 per Python 3 * Libreria GObject per Python 3 * Libreria Distutils per Python 3 (generalmente fornita col pacchetto Python) Installazione ------------- E' disponibile uno script di installazione distutils per installare da sorgenti. Per installare nel tuo sistema utilizzare: cd /percorso/alla/cartella python3 setup.py install Per installare i files in un altro percorso invece del prefisso /usr standard usare: cd /percorso/alla/cartella python3 setup.py install --root NUOVO_PERCORSO Utilizzo -------- Se l'applicazione non è stata installata utilizzare: cd /path/to/folder python3 gwakeonlan.py Se l'applicazione è stata installata utilizzare semplicemente il comando gwakeonlan. gwakeonlan-0.7.0/README.md000066400000000000000000000023601374311100600151200ustar00rootroot00000000000000gWakeOnLAN [![Build Status](https://travis-ci.org/muflone/gwakeonlan.svg?branch=master)](https://travis-ci.org/muflone/gwakeonlan) ========== **Description:** Wake up your machines using Wake on LAN. **Copyright:** 2009-2020 Fabio Castelli (Muflone) **License:** GPL-3+ **Source code:** https://github.com/muflone/gwakeonlan **Documentation:** https://www.muflone.com/gwakeonlan **Translations:** https://www.transifex.com/projects/p/gwakeonlan/ System Requirements ------------------- * Python 3.x (developed and tested for Python 3.8.2) * XDG library for Python 3 * GTK+ 3.0 libraries for Python 3 * GObject libraries for Python 3 * Distutils library for Python 3 (usually shipped with Python distribution) Installation ------------ A distutils installation script is available to install from the sources. To install in your system please use: cd /path/to/folder python3 setup.py install To install the files in another path instead of the standard /usr prefix use: cd /path/to/folder python3 setup.py install --root NEW_PATH Usage ----- If the application is not installed please use: cd /path/to/folder python3 gwakeonlan.py If the application was installed simply use the gwakeonlan command. gwakeonlan-0.7.0/create-pot.sh000077500000000000000000000005461374311100600162470ustar00rootroot00000000000000#!/bin/bash POTFILE="po/gwakeonlan.pot.new" if [ -f ui/*.glade.h ] then rm ui/*.glade.h fi for _gladefile in ui/*.glade do intltool-extract --type=gettext/glade ${_gladefile} done if ! [ -f $POTFILE ] then touch $POTFILE fi xgettext --language=Python --keyword=_ --keyword=N_ --output $POTFILE ui/*.glade.h *.py gwakeonlan/*.py rm ui/*.glade.h gwakeonlan-0.7.0/data/000077500000000000000000000000001374311100600145515ustar00rootroot00000000000000gwakeonlan-0.7.0/data/gwakeonlan.desktop000077500000000000000000000034321374311100600202770ustar00rootroot00000000000000[Desktop Entry] Version=1.0 Encoding=UTF-8 Type=Application Name=gWakeOnLAN GenericName=gWakeOnLAN Comment=A GTK+ utility to awake turned off computers through the Wake on LAN feature Comment[bg]=GTK+ приложение за събуждане на изключени компютри чрез функцията „Wake on LAN“ Comment[de]=Ein GTK+-Werkzeug, welches ausgeschaltete Rechner durch Wake on LAN (WOL) anschalten kann Comment[en]=A GTK+ utility to awake turned off computers through the Wake on LAN feature Comment[es]=Una aplicación GTK+ para encender equipos apagados a través de Wake on LAN Comment[eu]=Itzalitako ordenagailuak Wake on LAN bidez pizteko GTK+ tresna Comment[fr]=Un outil GTK+ pour réveiller les ordinateurs éteints grâce à la caractéristique Wake On LAN Comment[he]=כלי עזר +GTK כדי להעיר מחשבים כבויים דרך תכונת Wake on LAN Comment[it]=Un'utilità GTK+ per risvegliare computer spenti attraverso la caratteristica Wake On LAN Comment[nl]=Een GTK+ toepassing om uitgeschakelde computers aan te zetten door middel van de Wake on LAN functie Comment[pl]=Narzędzie GTK+ do budzenia wyłączonych komputerów techniką Wake on LAN Comment[pt_BR]=Um utilitário GTK + para ligar e desligar computadores através do recurso Wake on LAN Comment[ru]=Утилита для включения компьютера посредством функции \"Wake on Lan\" Comment[sk]=GTK+ utilita na prebudenie vypnutých počítačov pomocou Wake on LAN Comment[sl_SI]=Pripomoček za GTK+ za zbujanje izklopljenih računalnikov s pomočjo zmožnosti Wake on LAN Comment[tr]=Wake on LAN özelliğini kullanılarak bilgisayarları açmak için bir GTK+ uygulaması Terminal=false Categories=Network;GTK; Icon=gwakeonlan TryExec=gwakeonlan Exec=gwakeonlan gwakeonlan-0.7.0/data/gwakeonlan.png000066400000000000000000000101111374311100600173770ustar00rootroot00000000000000PNG  IHDR00WbKGD pHYs{tIME  ezIDATh͙[]Wyk_>vĎqQڪMKJQ%J[ZPԪH%)Pڇ PE -Pr3$Şx<ϙ9g}Z}ǎةiZemW>ĩl6svjs/Lɴ Z^ͥoz/:cm0i_2MD$T~CLҐH$z2w2ħ>eWZH9?95V}̹K^Do\XXi6CVk/\߾`@|3Oqs@[!JK"׶v=PB2O4La'ڪS?rhcmӏ׾m$?m?aY`1 shE=^\ZL#~$'kb[o0 ÝG.=o2b;jƭeRD.\\X t̓_ٶUjʰl,vVy?.~8[,"\^\c/d]ZZe\|s3āt:C39VZoO<ٻn<7`0bZa``  ڱL-*"uy SƊei BƑ0@w`a6/w{3!wd?>q[%Ġ{㾠׌T\yd@iǀI T7MN49q <mlϫ!2cK\nce"cMD,HFǧE&4ةdBl Uc-Xʀfk;#G2;}轼ʿ0xIlS '"I[@:=D{r1JtzzKUV*ζ/[w@[; :LhAp "B Xn"U @)yw@JK!X[P5jQ\wVۡY[b}eeq>frOwI^8u3ꬮo05AٳuE3WYր@h_wkoD!vqnR*1czr /Q)UɁ]KPJQ*ROrp(;9,Rxbgw[ dmBQ8DR/^l}x|VE*"8;_gLkV{3|Yo n`ssQodqmj( $JʫnU\Bl4QJII濾g63i G&vj]2pRIom/vjɔ)縼x%R]J @ʈd"o=gOgI_F#ht"7Vy"h)܄J9(B2f*?:um[ƛ9#$n`H ^4͕)&FG㰴$i062:lmoR.i$i0Zk05+89a̓NeجW%%RJ,|0FH=w{8v4'+s='Lir$8?CT9q8#k}4cS-.3=g|_mj V 0 /tJI0-&8-|M 0$)'xc-2Ҡ]B I\XZW^-dU6M<ۤ P:^M.[٪3<4FޤA9 ƭ5 ,#d\If#dteHw0LI*Lk>O:؉M,;tGS|?"URZMw?i} ĚMLH+P'd!nE}b%@yuR,b;ЫSHM7_iEyr%#=J%ZL9yx@R^hPHݜ)!\9 1C&7\]eG)(=M1?0~͔E%lcؖRFsN}$+T I ø5 Rmaf0!l BH.SFkf1Lgo\6%R$kMȤs{חWX9&MpZ % (>B1|9)[{Eq>nFW`qiMp`rE0dfv5ssGbscH$*PٮZ<{xxeE@P.UX\ZGY[[eѠRN2DM.\*D|> "סݩi.2 nXlۓogz2vb.UR="QA78ue_]A=78U6Aa"{=쑊vfs'sk.ӕ;vCgspq3pbZ8~ĕMx0;fHF~h~qBGitNs`KUv]&& <FF\G5K RXL&7IhiILӠTqqXbBnaڭjtŝ_~QgF-!L%mK:-&G5P?.25尾aR23d}է'8|$eZ {4P*k˝n0Q3|tpЯ fl"аE5)m'G"09!LtBѠՌOd0 B!dfCL9LMR(XOLBC !rQ.e"fLL$`468xWAm[35et"TJ29vf!<i64^"lBryM,knB mC$q$V%NSx^<贒8v v±4L:Iz(& Sxդ>!<܁2^'ov SeiXI%|QP!4 Bd&ϱvDmse }"mI }f/eQ ν'dnQ+P7iyPK_ 0nQ|V}ػSqERk~s3{ߌ~Z#@NM[޲ 0ÐN>|_)u\/u~nd&>o3k7^A~?=0Zkur%%_1IENDB`gwakeonlan-0.7.0/doc/000077500000000000000000000000001374311100600144055ustar00rootroot00000000000000gwakeonlan-0.7.0/doc/changelog000066400000000000000000000100351374311100600162560ustar00rootroot00000000000000gwakeonlan 0.7.0 * Python 3 port * PEP 8 compliance * Replaced http links to https * Changed license to GPL-3+ * Import hosts from ethers file * New and updated translations -- Fabio Castelli Sun, 18 Oct 2020 21:04:12 +0100 gwakeonlan 0.6.4 * New Chinese (Taiwan) translation by Cosmo Chene * Updated Italian, German and Spanish translations * New feature to import machines from an ethers file (see /etc/ethers) * Source file now PEP-8 compliant * Added Travis-CI * Added --autotest command line flag to automatically execute some actions -- Fabio Castelli Sun, 26 Jul 2015 20:37:08 +0200 gwakeonlan 0.6.3 * Updated German translation by sahwar -- Fabio Castelli Sat, 4 Oct 2014 16:49:48 +0200 gwakeonlan 0.6.2 * Changed project URL to https://www.muflone.com/gwakeonlan * New Bulgarian translation by sahwar -- Fabio Castelli Sat, 6 Sep 2014 19:16:13 +0200 gwakeonlan 0.6.1 * Changed project URL to http://url.muflone.com/gwakeonlan * Fixed license URL in the documentation * Fixed the minimum GTK+ version to 3.0 -- Fabio Castelli Sun, 8 Dic 2013 17:25:29 +0100 gwakeonlan 0.6.0 * Rewrote the whole project from scratch! * Moved the project from Google Code to GitHub: https://github.com/muflone/gwakeonlan * Now there's also a website for the project: http://gwakeonlan.muflone.com/ * The whole user interface now uses GTK+ 3.0 and GtkBuilder * The main window is now a GtkApplicationWindow * Added a GMenu to application * Moved the configuration file from ~/.gwakeonlan to the folder $XDG_CONFIG_HOME/gwakeonlan/ using XDG BaseDirectory specifications * Updated translations and new languages * New dialog for ARP cache searching -- Fabio Castelli Sun, 20 Oct 2013 01:39:29 +0200 gwakeonlan 0.5.1 * Added Dutch translation by Thomas De Rocker -- Fabio Castelli Sun, 17 Oct 2010 12:24:25 +0200 * Added Slovak translation by Jozef Riha -- Fabio Castelli Sat, 29 May 2010 20:37:14 +0100 * Added German translation by Martin Riemenschneider * Fixed Spanish translation by Luca Della Ghezza -- Fabio Castelli Tue, 20 Apr 2010 22:03:44 +0100 gwakeonlan 0.5 * Added support for internet wake up. * Added UDP port number specification. * Set turn on button as important to force it to show the caption. * Added dialog title for add, edit and remove machines. * Added dialog confirm to delete an existing machine. * Added window size and position saving when close the app. * Added columns sorting on the treeview. * Added default sort order for machine names. * Added reading of ARP cache table for last used devices. * Moved from libglade to gtkbuilder. * Added verbose and client command line options. * Various code cleanup. -- Fabio Castelli Sat, 20 Feb 2010 14:15:21 +0100 gwakeonlan 0.4.1 * Added Russian translation by Сергей Богатов . * Fixed typo in manpage. -- Fabio Castelli Sat, 13 Feb 2010 19:39:24 +0100 gwakeonlan 0.4 * Added Spanish translation by Matias Bellone . * Added doc/translators for translators notice on about dialog. * Modified the manpage for further info about bugs reporting and copyright. * Bump copyright year -- Fabio Castelli Sat, 16 Jan 2010 17:00:40 +0100 gwakeonlan 0.3 * Added confirmation before delete an existing host. * Added French translation by Emmanuel . * Added setup.py for distutils support. -- Fabio Castelli Sun, 13 Dic 2009 21:38:10 +0100 gwakeonlan 0.2 * Fixed wake_on_lan function which missed the magic packet creation code. -- Fabio Castelli Fri, 12 Sep 2009 23:40:00 +0100 gwakeonlan 0.1 * Initial release -- Fabio Castelli Fri, 6 Sep 2009 00:19:00 +0100 gwakeonlan-0.7.0/doc/contributors000066400000000000000000000001551374311100600170660ustar00rootroot00000000000000Robin Schneider Tilka https://github.com/Tilka Torstein Husebø https://github.com/torstehugwakeonlan-0.7.0/doc/copyright000066400000000000000000001046271374311100600163520ustar00rootroot00000000000000Copyright 2009-2020 Fabio Castelli License: GPL-3+ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . gwakeonlan-0.7.0/doc/license000066400000000000000000000011441374311100600157520ustar00rootroot00000000000000This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see .gwakeonlan-0.7.0/doc/resources000066400000000000000000000004351374311100600163440ustar00rootroot00000000000000Project home page: https://www.muflone.com/gwakeonlan Source code: https://github.com/muflone/gwakeonlan/ Author information: https://www.muflone.com/ Issues and bugs tracking: https://github.com/muflone/gwakeonlan/issues Translations: https://www.transifex.com/projects/p/gwakeonlan/ gwakeonlan-0.7.0/doc/translators000066400000000000000000000024551374311100600167120ustar00rootroot00000000000000English: Fabio Castelli Italian: Fabio Castelli French: Emmanuel Spanish: Matias Bellone Luca Della Ghezza Adolfo Jayme Barrientos Russian: Сергей Богатов German: Martin Riemenschneider Ettore Atalan Robin Schneider martinum4 Slovak: Jozef Riha Dutch: Thomas De Rocker Basque: Asier Iturralde Sarasola Hebrew: GenghisKhan Polish: bjfs Portoguese: ricardomourabraga Amilton Pereira Cavalcante Slovenian: Andrej Mernik Turkish: Necdet Yücel Bulgarian: sahwar Chinese: Cosmo Chene Catalan: Adolfo Jayme Barrientos Korean: Ian Snyder Lithuanian: Moo gwakeonlan-0.7.0/gwakeonlan.py000077500000000000000000000031421374311100600163430ustar00rootroot00000000000000#!/usr/bin/env python3 ## # Project: gWakeOnLAN # Description: Wake up your machines using Wake on LAN # Author: Fabio Castelli (Muflone) # Copyright: 2009-2020 Fabio Castelli # License: GPL-3+ # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ## import gettext import locale import gi gi.require_version('Gtk', '3.0') from gwakeonlan.app import Application # noqa: E402 from gwakeonlan.constants import DIR_LOCALE, DOMAIN_NAME # noqa: E402 from gwakeonlan.settings import Settings # noqa: E402 if __name__ == '__main__': # Load domain for translation for module in (gettext, locale): module.bindtextdomain(DOMAIN_NAME, DIR_LOCALE) module.textdomain(DOMAIN_NAME) # Load the settings from the configuration file settings = Settings() settings.load() # Start the application app = Application(settings) app.run(None) gwakeonlan-0.7.0/gwakeonlan/000077500000000000000000000000001374311100600157665ustar00rootroot00000000000000gwakeonlan-0.7.0/gwakeonlan/__init__.py000066400000000000000000000016341374311100600201030ustar00rootroot00000000000000## # Project: gWakeOnLAN # Description: Wake up your machines using Wake on LAN # Author: Fabio Castelli (Muflone) # Copyright: 2009-2020 Fabio Castelli # License: GPL-3+ # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ## gwakeonlan-0.7.0/gwakeonlan/about.py000066400000000000000000000074711374311100600174630ustar00rootroot00000000000000## # Project: gWakeOnLAN # Description: Wake up your machines using Wake on LAN # Author: Fabio Castelli (Muflone) # Copyright: 2009-2020 Fabio Castelli # License: GPL-3+ # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ## from gi.repository import GLib from gi.repository import Gtk from gi.repository.GdkPixbuf import Pixbuf from gwakeonlan.constants import (APP_NAME, APP_VERSION, APP_COPYRIGHT, APP_AUTHOR, APP_AUTHOR_EMAIL, APP_DESCRIPTION, APP_URL, FILE_TRANSLATORS, FILE_UI_ABOUT, FILE_CONTRIBUTORS, FILE_LICENSE, FILE_RESOURCES, FILE_ICON) from gwakeonlan.functions import _, readlines class AboutWindow(object): def __init__(self, winParent, settings, show=False): """Prepare the about dialog and optionally show it immediately""" self.settings = settings # Retrieve the translators list translators = [] for line in readlines(FILE_TRANSLATORS, False): if ':' in line: line = line.split(':', 1)[1] line = line.replace('(at)', '@').strip() if line not in translators: translators.append(line) # Load the user interface builder = Gtk.Builder() builder.add_from_file(FILE_UI_ABOUT) # Obtain widget references self.dialog = builder.get_object("dialogAbout") # Set various properties self.dialog.set_program_name(APP_NAME) self.dialog.set_version('Version %s' % APP_VERSION) self.dialog.set_comments(APP_DESCRIPTION) self.dialog.set_website(APP_URL) self.dialog.set_copyright(APP_COPYRIGHT) # Prepare lists for authors and contributors authors = ['%s <%s>' % (APP_AUTHOR, APP_AUTHOR_EMAIL)] contributors = [] for line in readlines(FILE_CONTRIBUTORS, False): contributors.append(line) if len(contributors) > 0: contributors.insert(0, _('Contributors:')) authors.extend(contributors) self.dialog.set_authors(authors) self.dialog.set_license('\n'.join(readlines(FILE_LICENSE, True))) self.dialog.set_translator_credits('\n'.join(translators)) # Retrieve the external resources links # only for GTK+ 3.6.0 and higher if not Gtk.check_version(3, 6, 0): for line in readlines(FILE_RESOURCES, False): resource_type, resource_url = line.split(':', 1) self.dialog.add_credit_section(resource_type, (resource_url,)) icon_logo = Pixbuf.new_from_file(FILE_ICON) self.dialog.set_logo(icon_logo) self.dialog.set_transient_for(winParent) # Optionally show the dialog if show: self.show() def show(self): """Show the About dialog""" if self.settings.options.autotest: GLib.timeout_add(500, self.dialog.hide) self.dialog.run() self.dialog.hide() def destroy(self): """Destroy the About dialog""" self.dialog.destroy() self.dialog = None gwakeonlan-0.7.0/gwakeonlan/app.py000066400000000000000000000046351374311100600171300ustar00rootroot00000000000000## # Project: gWakeOnLAN # Description: Wake up your machines using Wake on LAN # Author: Fabio Castelli (Muflone) # Copyright: 2009-2020 Fabio Castelli # License: GPL-3+ # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ## from gi.repository import Gio from gi.repository import Gtk from gwakeonlan.constants import APP_ID, FILE_UI_APPMENU from gwakeonlan.ui import MainWindow class Application(Gtk.Application): def __init__(self, settings): """Prepare the GtkApplication""" super(self.__class__, self).__init__(application_id=APP_ID) self.settings = settings self.connect("activate", self.activate) self.connect('startup', self.startup) def startup(self, application): """Configure the application during the startup""" self.ui = MainWindow(self, self.settings) # Add the actions related to the app menu action = Gio.SimpleAction(name="about") action.connect("activate", self.on_app_about_activate) self.add_action(action) action = Gio.SimpleAction(name="quit") action.connect("activate", self.on_app_quit_activate) self.add_action(action) # Add the app menu builder = Gtk.Builder() builder.add_from_file(FILE_UI_APPMENU) menubar = builder.get_object('app-menu') self.set_app_menu(menubar) def activate(self, application): """Execute the application""" self.ui.run() def on_app_about_activate(self, action, data): """Show the about dialog from the app menu""" self.ui.on_btnAbout_clicked(self) def on_app_quit_activate(self, action, data): """Quit the application from the app menu""" self.ui.on_winMain_delete_event(self, None) gwakeonlan-0.7.0/gwakeonlan/arpcache.py000066400000000000000000000073541374311100600201170ustar00rootroot00000000000000## # Project: gWakeOnLAN # Description: Wake up your machines using Wake on LAN # Author: Fabio Castelli (Muflone) # Copyright: 2009-2020 Fabio Castelli # License: GPL-3+ # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ## from gi.repository import GLib from gi.repository import Gtk from gwakeonlan.constants import FILE_UI_ARPCACHE, FILE_ICON from gwakeonlan.functions import _, gtk30_ from gwakeonlan.model_arpcache import ModelARPCache class ARPCacheWindow(object): def __init__(self, settings, winParent, show=False): """Prepare the ARP Cache dialog and optionally show it immediately""" self.settings = settings # Load interface UI builder = Gtk.Builder() builder.add_from_file(FILE_UI_ARPCACHE) # Obtain widget references self.dialog = builder.get_object('dlgARPCache') self.tvwHosts = builder.get_object('tvwHosts') self.btnOK = builder.get_object('btnOK') self.btnCancel = builder.get_object('btnCancel') self.btnRefresh = builder.get_object('btnRefresh') self.model = ModelARPCache( builder.get_object('modelARPCache'), settings) self.model.refresh() self.dialog.set_title(_('Pick a host from the ARP cache')) self.dialog.set_icon_from_file(FILE_ICON) self.dialog.set_transient_for(winParent) self.btnOK.set_label(gtk30_('_OK')) self.btnCancel.set_label(gtk30_('_Cancel')) self.btnRefresh.set_label(gtk30_('_Refresh', 'Stock label')) # Connect signals from the glade file to the functions # with the same name builder.connect_signals(self) # Optionally show the dialog if show: self.show() def destroy(self): """Hide and destroy the ARP cache picker dialog""" self.dialog.destroy() self.dialog = None def show(self): """Show the ARP Cache picker dialog""" if self.settings.options.autotest: GLib.timeout_add(500, self.dialog.hide) response = self.dialog.run() self.dialog.hide() return response def on_btnRefresh_clicked(self, widget): """Reload the ARP cache list""" self.model.refresh() def on_tvwHosts_row_activated(self, widget, path, column): """Treats the double click as the OK button was pressed""" self.dialog.response(Gtk.ResponseType.OK) def get_ip_address(self): """Returns the IP address of the selected row""" (model, treeiter) = self.tvwHosts.get_selection().get_selected() if treeiter: return self.model.get_ip_address(treeiter) def get_hostname(self): """Returns the hostname of the selected row""" (model, treeiter) = self.tvwHosts.get_selection().get_selected() if treeiter: return self.model.get_hostname(treeiter) def get_mac_address(self): """Returns the MAC address of the selected row""" (model, treeiter) = self.tvwHosts.get_selection().get_selected() if treeiter: return self.model.get_mac_address(treeiter) gwakeonlan-0.7.0/gwakeonlan/constants.py000066400000000000000000000057261374311100600203660ustar00rootroot00000000000000## # Project: gWakeOnLAN # Description: Wake up your machines using Wake on LAN # Author: Fabio Castelli (Muflone) # Copyright: 2009-2020 Fabio Castelli # License: GPL-3+ # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ## import sys import os.path import xdg.BaseDirectory # Application constants APP_NAME = 'gWakeOnLAN' APP_VERSION = '0.7.0' APP_DESCRIPTION = 'Wake up your machines using Wake on LAN.' APP_ID = 'gwakeonlan.muflone.com' APP_URL = 'https://www.muflone.com/gwakeonlan' APP_AUTHOR = 'Fabio Castelli' APP_AUTHOR_EMAIL = 'muflone@muflone.com' APP_COPYRIGHT = 'Copyright 2009-2020 %s' % APP_AUTHOR # Other constants DEFAULT_UDP_PORT = 9 BROADCAST_ADDRESS = '255.255.255.255' DOMAIN_NAME = 'gwakeonlan' VERBOSE_LEVEL_QUIET = 0 VERBOSE_LEVEL_NORMAL = 1 VERBOSE_LEVEL_MAX = 2 # Paths constants # If there's a file data/gwakeonlan.png then the shared data are searched in # relative paths, else the standard paths are used if os.path.isfile(os.path.join('data', 'gwakeonlan.png')): DIR_PREFIX = '.' DIR_LOCALE = os.path.join(DIR_PREFIX, 'locale') DIR_DOCS = os.path.join(DIR_PREFIX, 'doc') else: DIR_PREFIX = os.path.join(sys.prefix, 'share', 'gwakeonlan') DIR_LOCALE = os.path.join(sys.prefix, 'share', 'locale') DIR_DOCS = os.path.join(sys.prefix, 'share', 'doc', 'gwakeonlan') # Set the paths for the folders DIR_DATA = os.path.join(DIR_PREFIX, 'data') DIR_UI = os.path.join(DIR_PREFIX, 'ui') DIR_SETTINGS = xdg.BaseDirectory.save_config_path(DOMAIN_NAME) # Set the paths for the UI files FILE_UI_MAIN = os.path.join(DIR_UI, 'main.glade') FILE_UI_DETAIL = os.path.join(DIR_UI, 'detail.glade') FILE_UI_ARPCACHE = os.path.join(DIR_UI, 'arpcache.glade') FILE_UI_ABOUT = os.path.join(DIR_UI, 'about.glade') FILE_UI_APPMENU = os.path.join(DIR_UI, 'appmenu.ui') # Set the paths for the data files FILE_ICON = os.path.join(DIR_DATA, 'gwakeonlan.png') FILE_CONTRIBUTORS = os.path.join(DIR_DOCS, 'contributors') FILE_TRANSLATORS = os.path.join(DIR_DOCS, 'translators') FILE_LICENSE = os.path.join(DIR_DOCS, 'license') FILE_RESOURCES = os.path.join(DIR_DOCS, 'resources') # Set the paths for configuration files FILE_SETTINGS_OLD = os.path.expanduser('~/.gwakeonlan') FILE_SETTINGS_NEW = os.path.join(DIR_SETTINGS, 'settings.conf') # Set the paths for others files FILE_ARP_CACHE = '/proc/net/arp' gwakeonlan-0.7.0/gwakeonlan/detail.py000066400000000000000000000150031374311100600176010ustar00rootroot00000000000000## # Project: gWakeOnLAN # Description: Wake up your machines using Wake on LAN # Author: Fabio Castelli (Muflone) # Copyright: 2009-2020 Fabio Castelli # License: GPL-3+ # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ## from gi.repository import GLib from gi.repository import Gtk from gwakeonlan.constants import BROADCAST_ADDRESS, FILE_UI_DETAIL, FILE_ICON from gwakeonlan.functions import _, gtk30_, formatMAC class DetailWindow(object): def __init__(self, winParent, settings, show=False): self.settings = settings """Prepare the detail dialog and optionally show it immediately""" # Load interface UI builder = Gtk.Builder() builder.add_from_file(FILE_UI_DETAIL) # Obtain widget references self.dialog = builder.get_object('dlgDetail') self.cboMachineName = builder.get_object('cboMachineName') self.txtMachineName = builder.get_object('txtMachineName') self.txtMACAddress = builder.get_object('txtMACAddress') self.spinPortNumber = builder.get_object('spinPortNumber') self.radioRequestLocal = builder.get_object('radioRequestLocal') self.radioRequestInternet = builder.get_object('radioRequestInternet') self.lblDestinationHost = builder.get_object('lblDestinationHost') self.txtDestinationHost = builder.get_object('txtDestinationHost') self.btnOK = builder.get_object('btnOK') self.btnCancel = builder.get_object('btnCancel') self.lblError = builder.get_object('lblError') # Set various properties self.dialog.set_icon_from_file(FILE_ICON) self.dialog.set_transient_for(winParent) self.btnOK.set_label(gtk30_('_OK')) self.btnCancel.set_label(gtk30_('_Cancel')) # Connect signals from the glade file to the functions # with the same name builder.connect_signals(self) # Optionally show the dialog if show: self.show() def destroy(self): """Hide and destroy the Add/Delete machine dialog""" self.dialog.destroy() self.dialog = None def show(self): """Show the Add/Edit machine dialog""" if self.settings.options.autotest: GLib.timeout_add(500, self.dialog.hide) response = 0 self.lblError.set_property('visible', False) self.dialog.set_title(self.get_mac_address() and _('Edit machine') or _('Add machine')) while not response: response = self.dialog.run() if response == Gtk.ResponseType.OK: # Check values for valid response err_msg = '' mac = self.get_mac_address().replace(':', '').replace('.', '') if not self.get_machine_name(): err_msg = _('Missing machine name') self.txtMachineName.grab_focus() elif not (len(mac) == 12 and all(c in '1234567890ABCDEF' for c in mac.upper())): err_msg = _('Invalid MAC address') self.txtMACAddress.grab_focus() elif self.radioRequestInternet.get_active() and \ self.get_destination() in ('', BROADCAST_ADDRESS): err_msg = _('Invalid destination host') self.txtDestinationHost.grab_focus() # There was an error, don't close the dialog if err_msg: self.lblError.set_property('visible', True) self.lblError.set_markup( '%s' % err_msg) # Don't close the dialog if there's some error response = 0 self.dialog.hide() return response def get_machine_name(self): """Return the machine name""" return self.txtMachineName.get_text() def get_mac_address(self): """Return the MAC address""" return formatMAC(self.txtMACAddress.get_text()) def get_portnr(self): """Return the port number""" return self.spinPortNumber.get_value_as_int() def get_destination(self): """Return the destination host""" return self.txtDestinationHost.get_text() def get_request_type_internet(self): """Return if the request type is Internet""" return self.radioRequestInternet.get_active() def on_radioRequestType_toggled(self, widget): """A Radio button was pressed""" request_type_internet = self.radioRequestInternet.get_active() # Check the request type if request_type_internet: # If there was the broadcast address it will be deleted if self.get_destination() == BROADCAST_ADDRESS: self.txtDestinationHost.set_text('') else: # For local request type the broadcast address will be used self.txtDestinationHost.set_text(BROADCAST_ADDRESS) # Enable the destination fields accordingly to the request type self.lblDestinationHost.set_sensitive(request_type_internet) self.txtDestinationHost.set_sensitive(request_type_internet) # Hide previous errors self.lblError.set_visible(False) def load_data(self, machine_name, mac_address, portnr, destination): """Load the fields with the specified values""" self.txtMachineName.set_text(machine_name) self.txtMACAddress.set_text(mac_address) self.spinPortNumber.set_value(portnr) self.txtDestinationHost.set_text(destination) if destination in (BROADCAST_ADDRESS, ''): self.radioRequestLocal.set_active(True) self.txtDestinationHost.set_sensitive(False) else: self.radioRequestInternet.set_active(True) self.txtDestinationHost.set_sensitive(True) self.txtMachineName.grab_focus() gwakeonlan-0.7.0/gwakeonlan/functions.py000066400000000000000000000066721374311100600203630ustar00rootroot00000000000000## # Project: gWakeOnLAN # Description: Wake up your machines using Wake on LAN # Author: Fabio Castelli (Muflone) # Copyright: 2009-2020 Fabio Castelli # License: GPL-3+ # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ## import struct import socket from gettext import dgettext from gettext import gettext as _ from gi.repository import Gtk from gwakeonlan.constants import VERBOSE_LEVEL_MAX def formatMAC(mac): """Return the mac address formatted with colon""" mac = mac.replace(':', '').replace('.', '') return ':'.join([mac[i:i+2] for i in range(0, len(mac), 2)]).upper() def show_message_dialog_yesno(winParent, message, title, default_response): """Show a GtkMessageDialog with yes and no buttons""" dialog = Gtk.MessageDialog( parent=winParent, flags=Gtk.DialogFlags.MODAL, type=Gtk.MessageType.QUESTION, buttons=Gtk.ButtonsType.YES_NO, message_format=message ) dialog.set_title(title) if default_response: dialog.set_default_response(default_response) response = dialog.run() dialog.destroy() return response def wake_on_lan(mac_address, portnr, destination, settings): """Turn on remote machine using Wake On LAN.""" settings.logText( 'turning on: %s through %s using port number %d' % ( mac_address, destination, portnr)) # Magic packet (6 times FF + 16 times MAC address) packet = 'FF' * 6 + mac_address.replace(':', '') * 16 data = [] for i in range(0, len(packet), 2): data.append(struct.pack('B', int(packet[i:i+2], 16))) # Send magic packet to the destination settings.logText('sending packet %s [%d/%d]\n' % ( packet, len(packet), len(data)), VERBOSE_LEVEL_MAX) sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) if destination == '255.255.255.255': destination = '' sock.sendto(b''.join(data), (destination, portnr)) def readlines(filename, empty_lines=False): """Read all the lines of a filename, optionally skipping empty lines""" result = [] with open(filename) as f: for line in f.readlines(): line = line.strip() if line or empty_lines: result.append(line) f.close() return result def process_events(): """Process every pending GTK+ event""" while Gtk.events_pending(): Gtk.main_iteration() def gtk30_(message, context=None): """Return a message translated from GTK+ 3 domain""" return dgettext('gtk30', message if not context else '%s\04%s' % ( context, message)) __all__ = [ 'formatMAC', 'show_message_dialog_yesno', 'wake_on_lan', 'readlines', 'process_events', '_', 'gtk30_' ] gwakeonlan-0.7.0/gwakeonlan/import_ethers.py000066400000000000000000000031421374311100600212240ustar00rootroot00000000000000## # Project: gWakeOnLAN # Description: Wake up your machines using Wake on LAN # Author: Robin Schneider # Copyright: 2015 Robin Schneider # License: GPL-3+ # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ## import re from gwakeonlan.constants import BROADCAST_ADDRESS, DEFAULT_UDP_PORT class ImportEthers(object): def __init__(self, import_l3_dest=BROADCAST_ADDRESS): self.import_l3_dest = import_l3_dest def import_file(self, filepath, add_function): with open(filepath, 'r') as import_fh: for line in import_fh: if re.match(r'(?:#|\s*$)', line): continue mac_address, machine_name = line.split() add_function( False, machine_name, mac_address, DEFAULT_UDP_PORT, self.import_l3_dest, ) gwakeonlan-0.7.0/gwakeonlan/model_arpcache.py000066400000000000000000000065711374311100600212770ustar00rootroot00000000000000## # Project: gWakeOnLAN # Description: Wake up your machines using Wake on LAN # Author: Fabio Castelli (Muflone) # Copyright: 2009-2020 Fabio Castelli # License: GPL-3+ # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ## import os.path import socket from gwakeonlan.constants import FILE_ARP_CACHE, VERBOSE_LEVEL_MAX class ModelARPCache(object): COL_IPADDRESS = 0 COL_MACADDRESS = 1 COL_HOSTNAME = 2 def __init__(self, model, settings): """Initialize the model""" self.model = model self.settings = settings def clear(self): """Clear the model""" return self.model.clear() def refresh(self): """Clear the model and reload all the hosts from the ARP cache file""" self.clear() # Read ARP cache file if os.path.isfile(FILE_ARP_CACHE): try: arpf = open(FILE_ARP_CACHE, 'r') # Skip first and last line for line in arpf.readlines()[1:]: if line: # Add IP Address and MAC address to the model self.settings.logText('arp line:\n%s' % line, VERBOSE_LEVEL_MAX) arp_ip = line[:17].rstrip() arp_mac = line[41:58].upper() # Skip incomplete MAC addresses if arp_mac != '00:00:00:00:00:00': detected_hostname = socket.getfqdn(arp_ip) # I will not trust of getfqdn if the returned # hostname is the same of the source IP address if detected_hostname == arp_ip: detected_hostname = '' self.settings.logText( 'discovered %s with address %s' % ( arp_ip, arp_mac)) self.model.append( [arp_ip, arp_mac, detected_hostname]) arpf.close() except (FileNotFoundError, PermissionError): self.settings.logText('unable to read %s' % FILE_ARP_CACHE) def get_ip_address(self, treeiter): """Returns the IP address for the selected TreeIter""" return self.model[treeiter][self.__class__.COL_IPADDRESS] def get_mac_address(self, treeiter): """Returns the MAC address for the selected TreeIter""" return self.model[treeiter][self.__class__.COL_MACADDRESS] def get_hostname(self, treeiter): """Returns the hostname for the selected TreeIter""" return self.model[treeiter][self.__class__.COL_HOSTNAME] gwakeonlan-0.7.0/gwakeonlan/model_machines.py000066400000000000000000000110051374311100600213040ustar00rootroot00000000000000## # Project: gWakeOnLAN # Description: Wake up your machines using Wake on LAN # Author: Fabio Castelli (Muflone) # Copyright: 2009-2020 Fabio Castelli # License: GPL-3+ # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ## from gi.repository import Gtk from gwakeonlan.constants import BROADCAST_ADDRESS class ModelMachines(object): COL_SELECTED = 0 COL_MACHINE = 1 COL_MACADDRESS = 2 COL_REQUESTTYPE = 3 COL_DESTINATION = 4 COL_PORTNR = 5 def __init__(self, model): """Initialize the model""" self.model = model self.index = 0 def path_from_iter(self, treeiter): """Return a TreePath from a TreeIter""" return type(treeiter) is Gtk.TreeModelRow and treeiter.path or treeiter def get_model_data(self, treeiter, column): """Get model data from a TreeIter column""" return self.model[self.path_from_iter(treeiter)][column] def set_model_data(self, treeiter, column, value): """Set model data for a TreeIter column""" self.model[self.path_from_iter(treeiter)][column] = value def get_selected(self, treeiter): """Return if the TreeIter is selected""" return self.get_model_data(treeiter, self.__class__.COL_SELECTED) def set_selected(self, treeiter, value): """Set the TreeIter selection""" self.set_model_data(treeiter, self.__class__.COL_SELECTED, value) def get_machine_name(self, treeiter): """Return the machine name from a TreeIter""" return self.get_model_data(treeiter, self.__class__.COL_MACHINE) def set_machine_name(self, treeiter, value): """Set the machine name for a TreeIter""" self.set_model_data(treeiter, self.__class__.COL_MACHINE, value) def get_mac_address(self, treeiter): """Return the MAC address from a TreeIter""" return self.get_model_data(treeiter, self.__class__.COL_MACADDRESS) def set_mac_address(self, treeiter, value): """Set the MAC address for a TreeIter""" self.set_model_data(treeiter, self.__class__.COL_MACADDRESS, value) def get_request_type(self, treeiter): """Return the request type from a TreeIter""" return self.get_model_data(treeiter, self.__class__.COL_REQUESTTYPE) def get_destination(self, treeiter): """Return the destination from a TreeIter""" return self.get_model_data(treeiter, self.__class__.COL_DESTINATION) def set_destination(self, treeiter, value): """Set the destination for a TreeIter""" self.set_model_data(treeiter, self.__class__.COL_DESTINATION, value) self.set_model_data(treeiter, self.__class__.COL_REQUESTTYPE, value == BROADCAST_ADDRESS and 'Local' or 'Internet') def get_portnr(self, treeiter): """Return the port number from a TreeIter""" return self.get_model_data(treeiter, self.__class__.COL_PORTNR) def set_portnr(self, treeiter, value): """Set the port number for a TreeIter""" self.set_model_data(treeiter, self.__class__.COL_PORTNR, value) def add_machine(self, selected, machine_name, mac_address, portnr, destination): """Add a new machine to the model""" return self.model.append(( selected, machine_name, mac_address, destination == BROADCAST_ADDRESS and 'Local' or 'Internet', destination, portnr )) def remove(self, treeiter): """Remove a machine from the model""" self.model.remove(treeiter) def clear(self): """Clear the model""" return self.model.clear() def count(self): """Return the number of items in the model""" return len(self.model) def __iter__(self): """Iter the model""" return iter(self.model) gwakeonlan-0.7.0/gwakeonlan/settings.py000066400000000000000000000163631374311100600202110ustar00rootroot00000000000000## # Project: gWakeOnLAN # Description: Wake up your machines using Wake on LAN # Author: Fabio Castelli (Muflone) # Copyright: 2009-2020 Fabio Castelli # License: GPL-3+ # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ## import os import os.path import optparse import time import configparser from gwakeonlan.constants import (VERBOSE_LEVEL_QUIET, VERBOSE_LEVEL_NORMAL, VERBOSE_LEVEL_MAX, FILE_SETTINGS_OLD, FILE_SETTINGS_NEW, BROADCAST_ADDRESS, DEFAULT_UDP_PORT) from gwakeonlan.functions import formatMAC SECTION_MAINWIN = 'main window' SECTION_HOSTS = 'hosts' class Settings(object): def __init__(self): """Initialize settings and parse command line arguments""" self.settings = {} self.model = None # Command line options and arguments parser = optparse.OptionParser(usage='usage: %prog [options]') parser.set_defaults(verbose_level=VERBOSE_LEVEL_NORMAL) parser.add_option('-v', '--verbose', dest='verbose_level', action='store_const', const=VERBOSE_LEVEL_MAX, help='show error and information messages') parser.add_option('-q', '--quiet', dest='verbose_level', action='store_const', const=VERBOSE_LEVEL_QUIET, help='hide error and information messages') parser.add_option('-T', '--autotest', dest='autotest', action='store_true', help='execute automatic test with no interaction') (self.options, self.arguments) = parser.parse_args() # Parse settings from the configuration file self.config = configparser.RawConfigParser() # Allow saving in case sensitive (useful for machine names) self.config.optionxform = str # Determine which filename to use for settings self.filename = os.path.exists(FILE_SETTINGS_OLD) and \ FILE_SETTINGS_OLD or FILE_SETTINGS_NEW if self.filename: self.logText('Loading settings from %s' % self.filename, VERBOSE_LEVEL_MAX) self.config.read(self.filename) def load(self): """Load window settings""" if self.config.has_section(SECTION_MAINWIN): self.logText('Retrieving window settings', VERBOSE_LEVEL_MAX) # Retrieve window position and size if self.config.has_option(SECTION_MAINWIN, 'left'): self.settings['left'] = self.config.getint( SECTION_MAINWIN, 'left') if self.config.has_option(SECTION_MAINWIN, 'top'): self.settings['top'] = self.config.getint( SECTION_MAINWIN, 'top') if self.config.has_option(SECTION_MAINWIN, 'width'): self.settings['width'] = self.config.getint( SECTION_MAINWIN, 'width') if self.config.has_option(SECTION_MAINWIN, 'height'): self.settings['height'] = self.config.getint( SECTION_MAINWIN, 'height') def load_hosts(self, model): """Load hosts settings""" self.model = model if self.config.has_section(SECTION_HOSTS): for machine in self.config.items(SECTION_HOSTS): self.logText('Loading machine: %s' % machine[0], VERBOSE_LEVEL_MAX) # Fix machine configuration from older gWakeOnLAN versions machine = [machine[0], ] + machine[1].split('\\', 4) if len(machine) == 2: machine.append(BROADCAST_ADDRESS) if len(machine) == 3: machine.append(DEFAULT_UDP_PORT) # Add the machine to the model self.model.add_machine(False, machine[0], formatMAC(machine[1]), int(machine[3]), machine[2]) def get_value(self, name, default=None): """Return the value for a setting""" return self.settings.get(name, default) def set_sizes(self, winParent): """Save configuration for main window""" # Main window settings section self.logText('Saving window settings', VERBOSE_LEVEL_MAX) if not self.config.has_section(SECTION_MAINWIN): self.config.add_section(SECTION_MAINWIN) # Window position position = winParent.get_position() self.config.set(SECTION_MAINWIN, 'left', position[0]) self.config.set(SECTION_MAINWIN, 'top', position[1]) # Window size size = winParent.get_size() self.config.set(SECTION_MAINWIN, 'width', size[0]) self.config.set(SECTION_MAINWIN, 'height', size[1]) def save(self): """Save the whole configuration""" # Hosts section if self.config.has_section(SECTION_HOSTS): self.config.remove_section(SECTION_HOSTS) self.config.add_section(SECTION_HOSTS) for machine in self.model: self.logText( 'Saving machine: %s' % self.model.get_machine_name(machine), VERBOSE_LEVEL_MAX) self.config.set( SECTION_HOSTS, self.model.get_machine_name(machine), '%s\\%s\\%d' % ( self.model.get_mac_address(machine), self.model.get_destination(machine), self.model.get_portnr(machine)) ) # Always save the settings in the new configuration file file_settings = open(FILE_SETTINGS_NEW, mode='w') self.logText('Saving settings to %s' % FILE_SETTINGS_NEW, VERBOSE_LEVEL_MAX) self.config.write(file_settings) file_settings.close() # If the read configuration at startup is the old configuration file # the old configuration file will be deleted and the new file # will be used if self.filename == FILE_SETTINGS_OLD: self.logText('Removing old settings from %s' % FILE_SETTINGS_OLD, VERBOSE_LEVEL_MAX) os.remove(FILE_SETTINGS_OLD) self.filename = FILE_SETTINGS_NEW # FIXME: use logging module. def logText(self, text, verbose_level=VERBOSE_LEVEL_NORMAL): """Print a text with current date and time based on verbose level""" if verbose_level <= self.options.verbose_level: print('[%s] %s' % (time.strftime('%Y/%m/%d %H:%M:%S'), text)) gwakeonlan-0.7.0/gwakeonlan/ui.py000066400000000000000000000226341374311100600167640ustar00rootroot00000000000000## # Project: gWakeOnLAN # Description: Wake up your machines using Wake on LAN # Author: Fabio Castelli (Muflone) # Copyright: 2009-2020 Fabio Castelli # License: GPL-3+ # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ## import time from gi.repository import GLib from gi.repository import Gtk from gwakeonlan.about import AboutWindow from gwakeonlan.arpcache import ARPCacheWindow from gwakeonlan.detail import DetailWindow from gwakeonlan.constants import (FILE_UI_MAIN, FILE_ICON, APP_NAME, BROADCAST_ADDRESS, DEFAULT_UDP_PORT) from gwakeonlan.functions import (_, gtk30_, show_message_dialog_yesno, formatMAC, process_events, wake_on_lan) from gwakeonlan.import_ethers import ImportEthers from gwakeonlan.model_machines import ModelMachines class MainWindow(object): def __init__(self, application, settings): """Prepare the main window""" self.application = application self.loadUI() self.settings = settings self.settings.load_hosts(self.model) # Restore the saved size and position if self.settings.get_value('width', 0) and \ self.settings.get_value('height', 0): self.winMain.set_default_size( self.settings.get_value('width', -1), self.settings.get_value('height', -1)) if self.settings.get_value('left', 0) and \ self.settings.get_value('top', 0): self.winMain.move( self.settings.get_value('left', 0), self.settings.get_value('top', 0)) # Load the others dialogs self.about = AboutWindow(self.winMain, settings, False) self.detail = DetailWindow(self.winMain, settings, False) self.detected_addresses = {} def run(self): """Show the main window""" if self.settings.options.autotest: GLib.timeout_add(500, self.do_autotests) self.winMain.show_all() def loadUI(self): """Load the UI for the main window""" builder = Gtk.Builder() builder.add_from_file(FILE_UI_MAIN) # Obtain widget references self.winMain = builder.get_object("winMain") self.model = ModelMachines(builder.get_object('storeMachines')) self.btnAdd = builder.get_object('btnAdd') self.btnEdit = builder.get_object('btnEdit') self.btnDelete = builder.get_object('btnDelete') self.tvwMachines = builder.get_object('tvwMachines') # Set various properties self.winMain.set_title(APP_NAME) self.winMain.set_icon_from_file(FILE_ICON) self.winMain.set_application(self.application) # Connect signals from the glade file to the functions # with the same name builder.connect_signals(self) def on_winMain_delete_event(self, widget, event): """Close the application by closing the main window""" self.about.destroy() self.detail.destroy() self.settings.set_sizes(self.winMain) self.settings.save() self.winMain.destroy() self.application.quit() def on_btnAbout_clicked(self, widget): """Show the about dialog""" self.about.show() def on_cellMachinesSelected_toggled(self, renderer, treeIter, data=None): """Select or deselect an item""" self.model.set_selected( treeIter, not self.model.get_selected(treeIter)) def on_btnAdd_clicked(self, widget): """Add a new empty machine""" self.detail.load_data('', '', DEFAULT_UDP_PORT, BROADCAST_ADDRESS) # Check if the OK button in the dialog was pressed if self.detail.show() == Gtk.ResponseType.OK: self.model.add_machine( False, self.detail.get_machine_name(), self.detail.get_mac_address(), self.detail.get_portnr(), self.detail.get_destination() ) # Automatically select the last inserted item self.tvwMachines.set_cursor(self.model.count() - 1) def on_btnEdit_clicked(self, widget): """Edit the selected machine""" selected = self.tvwMachines.get_selection().get_selected()[1] if selected: self.detail.load_data( self.model.get_machine_name(selected), self.model.get_mac_address(selected), self.model.get_portnr(selected), self.model.get_destination(selected) ) if self.detail.show() == Gtk.ResponseType.OK: self.model.set_machine_name(selected, self.detail.get_machine_name()) self.model.set_mac_address(selected, self.detail.get_mac_address()) self.model.set_portnr(selected, self.detail.get_portnr()) self.model.set_destination(selected, self.detail.get_destination()) def on_menuitemARPCache_activate(self, widget): """Show the ARP cache picker dialog""" dialog = ARPCacheWindow(self.settings, self.winMain, False) # Check if the OK button in the dialog was pressed if dialog.show() == Gtk.ResponseType.OK: # Check if a valid machine with MAC Address was selected if dialog.get_mac_address(): # Add the machine to the model from the ARP cache self.model.add_machine( False, dialog.get_ip_address(), dialog.get_mac_address(), DEFAULT_UDP_PORT, BROADCAST_ADDRESS) # Select the last machine and edit its details self.tvwMachines.set_cursor(self.model.count() - 1) self.btnEdit.emit('clicked') # Destroy the dialog dialog.destroy() def on_tvwMachines_row_activated(self, widget, path, column): """The double click on a row acts as the Edit machine button""" self.btnEdit.emit('clicked') def on_menuitemImportEthers_activate(self, widget): """Show the Ethers file importer""" dialog = Gtk.FileChooserDialog( gtk30_("Select a File"), None, Gtk.FileChooserAction.OPEN, (gtk30_("_Cancel"), Gtk.ResponseType.CANCEL, gtk30_("_Open"), Gtk.ResponseType.OK)) dialog.set_transient_for(self.winMain) response = dialog.run() if response == Gtk.ResponseType.OK: importer = ImportEthers(BROADCAST_ADDRESS) importer.import_file(dialog.get_filename(), self.model.add_machine) dialog.destroy() def on_btnDelete_clicked(self, widget): """Delete the selected machine""" selected_iter = self.tvwMachines.get_selection().get_selected()[1] if selected_iter: # Ask confirmation to delete the selected machine if show_message_dialog_yesno( self.winMain, _('Are you sure you want to remove the selected machine?'), _('Delete machine'), Gtk.ResponseType.NO ) == Gtk.ResponseType.YES: # Delete the selected machine self.model.remove(selected_iter) def on_btnWake_clicked(self, widget): """Launch the Wake On LAN for all the selected machines""" for machine in self.model: if self.model.get_selected(machine): # If a machine was selected then it will turned on wake_on_lan( self.model.get_mac_address(machine), self.model.get_portnr(machine), self.model.get_destination(machine), self.settings ) def do_autotests(self): """Perform a series of autotests""" # Show the about dialog for i in range(3): self.on_btnAbout_clicked(None) process_events() time.sleep(0.2) # Show the add host dialog for i in range(1, 4): self.detail.load_data('testing %d' % i, formatMAC(('%d' % i) * 16), i, BROADCAST_ADDRESS) self.detail.show() process_events() time.sleep(0.2) # Show the ARP cache dialog for i in range(3): self.on_menuitemARPCache_activate(None) process_events() time.sleep(0.2) process_events() time.sleep(0.5) # Close the main window self.winMain.destroy() gwakeonlan-0.7.0/icons/000077500000000000000000000000001374311100600147535ustar00rootroot00000000000000gwakeonlan-0.7.0/icons/128x128/000077500000000000000000000000001374311100600157105ustar00rootroot00000000000000gwakeonlan-0.7.0/icons/128x128/gwakeonlan.png000066400000000000000000000356151374311100600205560ustar00rootroot00000000000000PNG  IHDR>abKGD pHYs''StIME  3Xx IDATxy,}9;wV<,p'2):U%Z8,$+I*Tbr*;]N)i[-G6%"E1ow_f^,݇XBW;gt{~AaSJ]/~u<.b~9uw^8U/ <ҕi]? ˟ԭBaDa.(B0$1J<]״A* <7 tgyjZ@"~<@Vj\z|§vwrph?>j]>j ?ub{䓿(D߹~@]K:iM^)E,+ O$iƊE7n_as~ZdBYy2٨GnP d,Q'' 4[xWxԃK Ʊzgh <xט kg6X #=@<ȧZWz =\O_wٟ{s76VvW)vsAį_8'l 2ua<~Þl;`7w863avtm6Eg2 N5\yS vg^ gV ׎A,S_YFL^;4! #Xޕo[1 ʼnKBĘڍmTxٟ?Z  EMz&0 8MɧkoMVz(6 :1!agSߩ͓?u7֗,6AKF~H w|̭XuZt]o4DW0v=(U9"?$wvo~#6ZE,Tph5?vk0_T꿘G=k;G>s?/VlE d4vo_~>wUK*;9M瞈xд%++A AEq}8e⧯>?;ޞO[/\l:~cw|R*<{s? nfl ],lA~ Bo'oVVGG]Z"6݁M7%Hg73Y_Y]XD }| 5w~X?=)%Ⅷ~bm&J\I1I>Dz,Z'ĸ]![~+ Qou~D~#{]ή.Z[0- c>7 !Kn$^d>}vaT_Sf}?>/~W\:~9G?&,V5IG!BL*1lqrBb޽^_q%Et"%Q@QN݃.8У}D1:&Jc4;@ ' я&Qsgmf99"`v:6pek\(oXj8(WmjU7K? /M+S*W<‘$Z׍6@M_\9~{Oݦg'82 VZ T (=?B8*3;cRpw+o,X.;嫜n<,Js`z"jfB7ƠP/Z%{YqWpfFmq1aۣ0\ M&I/xd|_"[NF4%JM @DZzxidVH! eb,k p3NA` hZ E?M(D/~=/ǬjԛM4= ~' /ѴFK^lRIPg3diFѯ@4MGCO|xe03'҃Ь3ɔ/wE@pv,խ_emſ(_~8Wk,5>@$s, N@-dZ&mwSqaN놎aąLY[]k$̍b)F|PD\ '%ʵX"J"$*CTqKh?(Mk| qe@(EGY`R->q.&c__~^]pF FMX*9KX(; 2yj8vA0P(8K0&PQVm{̞W 4CIA*S0 B]eWJ8UgOv% DӪ'>::J'D=س >)*f@թY";>5]joT*TjBP2JZ8K< Sqo+X)@&r/5 2/'4(d,jq  }VBmWBЬ)֭:.i"e&(J!=~ T̈́@ %Rc6 <{>Z27X&kיt}EemlSQZa.[E!R*Hc8󵌹i ȞRJ`*sH2(vw\;4q*ma@X]I[F:`/ޭk˙ "QuCj.xы4MΝYeuc Īl^r' VFz)fRGanw0en|}ݣT:6sZ?Qj,-wˬ>!@Y4+,Yj,XQ=nTYl}MR.(TIx(8@106(YJ(Ԕ|ZIWd.e;NI`d[t:tǴ0L*{ COrD1ՓwBP_ؤ4VUJŪb.QE7ll,;OP:,.wYv =<$V wUN;euZ^^3t>u;1k#qtt4v  _}k 9Oi"d*rRN !Gm+)Y:<涨 J_Aѿ0 8&"=˯EuemW@10"(PR_0L ɣOe=5{Hdnǣ".4PcWIk( #*)ƃB>l:,iZH9`e4Dl0*SwЯppXY%LdA1i)R1^wG͒0RB|ܵJ"JIELz(c /P @ic%RwW;"V&J) uרUWZؠ r q|"";D"T"LL]% c\Qc) 7TS |,P2() &C#o'eEI669<<{K!qOʐ`>;{{ZMjU7-L%yDR82N>UH,4T%a%> IFuԋ!~ˣJcg%JCCuc]}ψ?u]'_t:}6{GWA)kqܽ8&"bߦDEYC,-%6!yBN2e8븮EYKB>4CNT0L˫NRG9{|=^1Uʘ}cZ,.,$oU?xPEw|Zo%@K/K/?b}=OM%&"gŽ T\|Π7 'f*S0lVZfOQ+kB55õ]44*usXLʮ/;ei:Y{7Bӈm:/s#6=n h =ܒmۥI`%#ZeLd2#N.͏+F3DiRqn+I|t#t;N '_TO(RPgeJɜT(ޫ?["}пU 'WG%FNK͍5x6ig $,.67&Ng)N28TX1ْZԗG"鱻wfsJ%+gݻIhcUAߘ? 2&pcLhHg"WVuh vy%jKEAus%XӳUΝK&n'7!h-8>l̦yonlRT Mf~0⸙z[DaDq0wYJ6<2 P "a B"#шhq/K"R ,+,6.~ P2cx,A3 RD'Gx^?&w:)B(8[Zki(VD*X>c@fDWC~d _z+j2a0!p|Hx(ŤSz#QJc_&/ $#|V; @IY#GW7c6q<ʕREQ Wa 66/q|t0+(Qt,ArçPd3UByzx_0'7)J"U*I)Q2FY5vg:`aa@ڵ!8 cQNuovK 5&bJ@Y&^l\gc1P+/T<lL2ߚF^4쬌nXx>4q#i$@# 3RR춇lb{6ݡ:lJtj΅QuzJjŻ9mBe,?ӮNjS 5?hUdtk^1sߠzoq;V1/nqƥ 7]fzbΙ}2*ǀ b;8u0kݣY' icUG4#.JJ#[`gBñ+FF^0 0t˴1t0 3M?tBRYbLy.Q!*$,Z64XFz;Bўog#up0Boj#󑛁CE &]R*b%a'#[]LztIVJgzR :Dшh4R#|?4&]ɲydQ;O}]vұ87bx-vnreNqg u]}#(&ʓ:??=z2+sXĩ=f.MHYr[Z$t֓dP'Z;~Cw>n^}pHfF[]0R@}IM;+xS_Q˲x^}JXT+CB?YA+!TxQ#Cit{j!b3C:m*g-|ϼ(Dyzx r@bB*ETټqJZ>^q$ȸOfi5U$0[xK%CwI>ulXBCZ>bBuLYs0sX9_ȃL>rG*2c T+MLRP "aJŸ> b ndS9|HL{o-5&'kZoFl򮜛ǰV?z4_ۮP;q59 |a8N#_GYqڶ]^q$5|N|̫(5U#wՙ&{+,^62io"D`ʸ?V"k[JB4] ݙReV(904sPJ(i<^°VrO5FnD!QCQ)Gw U°Oɰ|9VoǦ\!QK +PXN/܌LD{ >3G/~4ayj?yO)lr R*_aS9H_%~? [hrk-{y^[nN)x嵆`eiӲRAn&4ݿh`[54~aqJJ$#<~jjzXVOL6e. tcឯG%-׿ .\x<#pKv*NdfF(e(,"ql f 6*a\p0ȹUJ' Eqw;R!1 xy6vV5Z^^ǭ&fܺV"^FVLZjռyzF~mm=$m_V, D JIvv{◇e>VUEԽe^ݵh>(?W<`{$-~ %] J<{i{f29S^38v%uܾ}ItMrpO)ܪZ7na-\pЉG[ܸqXN>܁$Nɉ ޔ) 験oC6ΗJ(eDY:vvd5j Z+1o޺FE@gϞXy޺]*k:/nKՕUĹKW0z Gb$y8LfA2 hi~m~L-_()^o_KX𫟇4o},Xa}1t3gԲ]z^lX\hfאqgϞòOܸuDJ\u'n8G^(3/s\@*9m I9g??/_,_V?7apc?'n׈xd7bgwkJ͉kvZ/0aW)5;;8( a1ۄ*SX)Q?eW?z0qJ3J8/tyN2 ].'>Aʕ[̱?+Tx:RkttfqAXgg{wnla'`hL;WꞵR-MʟD3*!VGJ7L̎//9,~yO53Pr ~qTO9~,9aaX/V\vwzgo-S%}etcX@OJUQ8j'Q)D:Qͩ/f7ϚM'8!wasJsǃ!dk|E~u3ӓoxXFV,~U8.aJMTWrj֋UAڄb8lIp;'`|O} K]TY7jbE%@gT]={񭖃i l+g\ iTQSYZ36eSx֪kXHq̬jqTM Ji.Kϩ|cH*? `iR&J%4AǴsoah0U=kc9뭸&nLH 3ΔDv 4pR`m[Pղ6B9[7(C3cZFJE03n 9bzNx ^.Ō& nZR4Lttv>tSrcdm ;66 8W4!2.by?ŵ,[ް"q^-A--;oZ&!r]D4}6 "@iGT]39 #Sy<2c)6 [KIN pfRp1 g5ƫh9y:E"YIqfZ|ƣӹ^J8D^EZz0L6`VuL35I#|Aj5D"jK)5ٽhFϼJUGOSk#-My`S| HGd$B`Y?v:aA]h <83Wa)B:]Jz]^s-Q Ojdh$|M mdm'Va"  (RYIx*5~ %VPt_#s% $9IgRnY)qSXj@R.}HTS;gM>r$΅HMX2ùR*B?yZFXӲ~t0L=C2/! k q pf j& \$8Nr {7է]T*~3.aYT8Vp5e] HDb)L%]$DuNg l$aB&)( RWL!|ؓ 0LoAUYhLy2ߺ,L缦0.aO~}A?ĝ TDQRC!-lS1ygzV*߬q <a'}(4v`MlpděyEFpN]8ʯ10 cjN0LpҽA8o<`<TJ6IOb x]~?ڸQ@Ҕpg7R=Rږ ΝYK+cLTIΝ&kvOy[8wz7YjmQt-ss UWWj3Yj:;Jt&2bsl>P$>}|N$~cU(Bc:5СZi"S-kj%@2qL ۞y S8^}v?ݤ@XLfb:k !S4Ѵ8c"%U!At)Eaċ;|L?;1 !RҘ#뵻;QLH`͊dn3(rā@Gh$6/g d4LNGaB$4 e/yuqD&y 8MF*STBLO)ww3 @{kcWoTg^tLun>+%PJ^9*x<2;ι%7V0K䄬ys,*'q 3^%!izd@sMm`>/O)N+dιTTؿsJ)eLkJb٩X ˫# SFyN!2"=SԌc O0-d h')|9*: MJu^8< ]:8sMJ ~zn˒37=&TZ,4Ndw2q@1aӱI)7 ӸyO~'/^P gS6}''f>WIlY}e9'?/pc%s</f $>)$ 63@p9|Z` )b4)iG;x}]p5ruJScxSA{]b  ~'ŸF~7"BFK?$|8w}&ksi7:|qZ<§N).Jzyp 9h7I\Spvp Y/N uwm+b=IENDB`gwakeonlan-0.7.0/icons/16x16/000077500000000000000000000000001374311100600155405ustar00rootroot00000000000000gwakeonlan-0.7.0/icons/16x16/gwakeonlan.png000066400000000000000000000015521374311100600203770ustar00rootroot00000000000000PNG  IHDRasBIT|d pHYswtEXtSoftwarewww.inkscape.org<IDAT8}Mh\e}L6iI)MLnb̦ !]X` . n(Et#(P.bEM m23;.Ҥnꁳ(G{N|ߣŻB虦+4^.~~GzzY7z1-'s \x=(<1I'_1"$Q+ʚn=s[]@p>я:Rq<-4oX G~$s0leqܤZ~1[bx>,95)s5*;=tGR7ͭ[J|LjA;NNu)6*\]v ͖pmJyL,qw<;k\6QMWUNN10rh˱Uo9vJy@k. [scYك()7 iƩ$U<+T=g=te}C8*"Bw oUI0L> IENDB`gwakeonlan-0.7.0/icons/24x24/000077500000000000000000000000001374311100600155365ustar00rootroot00000000000000gwakeonlan-0.7.0/icons/24x24/gwakeonlan.png000066400000000000000000000027061374311100600203770ustar00rootroot00000000000000PNG  IHDRw=bKGD pHYsyy]tIME  SIDATHǥK\GSշ=n۱$$",CHH b Db + Y J @Eaƞ{zU,&vf2XtT(:QXkƣ_ %T._Y̬?{>g˥b @N_ ؅$kYIP P"yD繪X(G$K"?O~_.V1=+lN'馝Zxي:uSw{SO=􉩙< J (u{ nZ(5O0vjfVDDsheg=~XoV (.y\Pm<o,>rFNxUD#,cXiF(mE>We vo; Ř,cgs+Yx U~.ʿlQ9q^ǟб>P^d<4Y$1x6"߿HpUuǿ~yp[4b4RdY"}5"D4:IcUL b=)>%1Ȭf;`m}F$I$GRbtF>,Q̗}4"1C \UXixIKyE/hrT*5r@[t70E9 we>5λi|1BFXاR>2G 3 Zk6F) w8XܩJ\GGyA0Kyo,ܱLFtwb@ kt9nt} AH +XcWQsU4I ƂF!?|@u$eyǏۨw%dðpTOXm2xO0qZިb2H/˕ Q㥕pPQ,d8Zs4[$Ix?tIENDB`gwakeonlan-0.7.0/icons/256x256/000077500000000000000000000000001374311100600157145ustar00rootroot00000000000000gwakeonlan-0.7.0/icons/256x256/gwakeonlan.png000066400000000000000000001010541374311100600205510ustar00rootroot00000000000000PNG  IHDR\rfsBIT|d pHYsIIEtEXtSoftwarewww.inkscape.org< IDATxy%[^9'w3ovy6B3 aHƘ0ep YfP(4!epX%,a!,(`YC aY{V{5sGyVWUW~}]',vN + + + + + + + + + + + +$AXa'85Z~/?>݁Vx!$ϴlsg^d#֩"VxHh% ewSkA$ZkdG X +<$i?PJ/+栍B!w?"VxHh)DkX9鬟%y!(VXa·|?UG}iNS)~qضAgsPqh.Vx{ciO`88-[{xAFeofj}M On\4堣0y.hcWQVxXh-Mt=!)[t'Sv&hԩm/_xx|ks8&ߺ@"ll4H e!Dsn[1W;ZwKܷ~ӐyU"Lh_?>o<%x#/ּf̐:~{k)@həm]ШD;8'haOk[Cjмq>Q~?Wh|Ǚ XJB )xfXMF1f6:=/\wv7l^dGl^ Qt O>.pN%@kQ!9&ٖ uJ}+%/i" ܽw~p?Z4B?pL,qi9i Ӣ;׶q3QZ̉:`$u.^_˹&#??gEcEO*1@˷Tky ', ܼ{ zm&1h шz,~[^~m&0F |:EYvsV@*m4La<֗e(zPLZceQe!Bfܽk͂~ZAj^,ar]G ~R$遨h]ݾN!{ tRDIy>=t΋jݶ րV֚uU{GS_OK< ܟu:S/DJxDq0Se-F#DAN2}+σz,gUXU ̙'Mq!m p18h ӣc2!ĭϝ )߼4 چuP{SGCB"L{|:c< _ m5sam} i̼2B0NsDW;os4xl:kcP^嬲$9ۺPA Hmok/^N? Tz!iį/Z":ґ_wK7: C4Cl#0FW?GyO]` 4@ O&OOf,mtX*Ҍd-luv]hubEƸAFq8O'1+x /UcJ%,6'\K7JHUiX T  #Tǐ nq4O?~g?~mU28}s/Z!7'~kCLƏb~jwh;>--Z3; =XE|{䙫C"(,`s5l??2Vr4]~HڟL٭vs0aE"n7`<{-9?pQJGc`4e>ƱEɈdrh7?4}y##gsC^`[vT3w|-۠v.Bǁ<H^HeB_YqmZ.eBS6.!cŊۻ5_+;)9XbZL: RuXj߂V™Bm ۡTi*wGDQeNdgTcx!08{.I x=魎pj ~0۶ oAwPx50xAč^~PtJ{NUwQs}t7 Rܿ{F _}bE+ /}G"O)Bp}N|2 ˜97ʟ€dl,|GO <}̓:pJ+ZDB8ّ+]fdР!eNJQsw(̫B@<ﵞˠiqZ lIጮk'b/`::$c*4zezKNWH7qgMomJڣ̋I8Lfv <R4˟$~Ð\UL xpu'ل, ?J\+,Eˌ.HV_L}zCaY}?qe-m7q3=>cvӯ}γ B#^Jwfo;-tlNtmZGJ)-_/XVXg?oG?ew\aŲ[8Ne 9RdgQs0*zZ^ŏ?QЄPw-CXF)Ms?bk. ßMM >O7NŠVᧀB0dEa?*q11;e=[p]6+x#/ +],&;dvҚ3ֺ-l+]䣓4I7oxqgcW@{-㶱\~K@{Gslˠ.2aᴶc ''+t@b(h\ )Gglɖ~$6AKۊt`vcHi̵3_?; wlW`c#9'=x3Bw~S`83qǿ;d;O2}G1Ke yir?Z_r/DzLH)#vlot!}{6J?/Œn|@$&V9V.hPv`_tQG|2[ϕ Ow/2\eF i_YfRO,6ȟH&J%ڴð;=vL:nG Li}s CArFw"ӡCBYB¿5F^ t\Aeh8{a̕ax67xs?D+~Q%s0IHH@~*˿r p)I/Ht.쳵0L"T^xqдlFp`g/ 4粐aex"p @~Vk M5(;Nۗ>ϿRw~OZ #Kϫ Gzkk Ma7YX4>tgpUz~ |TWxax%ƥ$+ؕ_<U7Nu+םannq,}YڮTR)T?q<(3?Akke{,(=cBU40Mʯϙ>k-֡SCy2D:= $j IYDVBhLæ۾*Q4҉qz,_bH⌬1%3aH60h@%/8.cu?~@y3obiΠ>dRS/!XE4\L҉qz,$KHvfyAPNzxgIPy76z7"D5t| ܩetNK/B ;Jxbpt4[(,pw^fB$!́i`@)Զ:)d= l>*/J9+!Y liX/kU?nY[[ev: /SR^nYndQ-Fr64kzdYUR(Z2 VKe$ȣ֩T1u&*p L Np%SƠ?5̺cYmdPVI}s6B@A!K-y03ϯ])e!%M&T\~fgVei|>'+,6F&b9 TNHJg“KcCBu5+j"cQiZn3IU钦r]LRIg)%VQdm[nReU\%VkA @-z3k y-nx}viyMaXVIH'C|!St^&R(k8 /y"PaH||H\Sxt8VxQRFQ~VEa$}B ôƹ?}rz`Q/vl!e(=Dㅨlbܠ)h4B"И+C&@" MD RхBxWQӣ0(k!e57<\΋߯o)r2)B9YdA) qS_kϧrQRfa#]r.DUBF6XiDj wܤla >RsJ4TM  4ZtT = ؖiZؖl'bơF|nb rXE.RG!ru+=S=bRpa2[g]})sڞ1APMњTx(+f6}]S mIGFC봰 i335JA!ldXѪ4<˕ E(ɮ2Rz]4<:RS ApqЂC"Q-سq/Yu}WM( {yo h"JοC&I-eYN8Xl,$[N@+" JBhil$( #GbH8^39qp @ہeGc52S@`neh$g&T,Q'(=R8Y3a(n/lp L20oI$ycM_tB$uBV|۶hZtm_gwm:]Ng j!`ÌF{xs?bƓ0 R`Q\l0M7ٕA35(~ F mԇQi߷fS T_( yahIeYU"̀(4+۱i.N 4 UP)Ҿ&ǔR<۞䗎>sNÃZW}F`ASxJha+8뺴.-Xa Ĵt[V1 AL'y;<0Ðg<3߳h<; B`0}A)Z+ &RCh ӐһV2F @dBO .d@.*V& IDAT̜B{\6;NEe\mkW&3k:guV<~Aܿ4k~עm3f &d:d2hqxwy8,2۴~/b2^;-P.CTDA ؖEu5Y)B+K!Ub:${|qGT%(Q(|-.%I(&A3)# X\'2F!8`置P,ɝD uJ'[B`]zag3;L-&s?hQNW40 Ax{|K+t!wIuZG6BXi1+̽ވ1Sq5.JԒrXZb-'49ܲߓsF *θBήk؁F* x!HW=rBvn)ߠ5_CVGE KlSBGHafS1)q\}d}r@1 L!M!DEfӡ@4ظ)%i"&Bu "(0LLEmӶ[N=g _O:%4'<]&}F#c`Lyq`{W*LrN^+x(H)VKf)W4/n5?lll VD1 nbϠF5C%^| 0l%k1Tt藈bAKXTҚX .u8!I\:}e̎5a 6(E9/],luiIadowݧ~ ikRtJhxxX֌G;`]k1emc B+IM;I2T$0V(DHC5P}L, &I[tz/e ̮vf gzeo4,ݫ8v;te@7iQBZO7& 5am>S<]'p(Ti<I8?qkhnUyJz8 ^AyJ{c[^z]sJ*ޚ!ܯl>dҗ*orzq5~փ8] @ $L1q$fDPXD)PUh%0{7 2ZN{(wh9{@#1.s?D]();(,-5^^H$TKN̦/vv|h*j驠jB1$dEÐHoBi$I=J$&"Ua b>?M5c7+'#iMV*d6c6CR?hDUeRJʥD 5!m"O)ı|;\kmH!v $@e>4kE:ZIL RQ?#I2tbJ5 iȵ IDec/cEo9>BH6 DCWs1I 0o P&W񔝪5Rե@YSHglinVE04BHcڮ}8]MQ$_(pP ~J+ƋG|;*?|WX`8 $BT,8aV6%QTRS*uzR$VWneG׮a`;6CpDZm(st4xtxh|ʗ 9)dwUḰ y#LxHCvL~G.vBLGC*u"OR ;d{9_1 td2a:2ϱdDk3"Ex>'Lߺ"\x^Z* ]:v;MNtyZp},Kg>Aǻ'$2yɥB) -g/^5QdRk]Si85+m|gxgJan2o/j|t:MJ=X93O-)]0)O ZK;Mj4KNTtQga<Դ(QqPI &zXKk}K].=\/|,Ti{ἲxd2! G nkD-^"GM /,PO&O7g.QrfC%rY*A0%|8,^%IMJvyޯiRHUr0|iԮS,xIA輞bF_.Y2(]TUWǣkespZ}`w(-Q*mYtA^F x]PG^GpM0d`ۉc0'xvL8|uXRRspVV`]5zʝ+ i1s}81M0օn\VSLsc{z/b? R4y7p]$!:)I$0U)/۹#䭯dajfJcFiCTK=`E%32i:J|,P`u.K6j*pՍsOA4Mg CAZNUhsSa3]Y1^ru.Ux A%PjiG`#Ƴ5ͬGH:=hlK!^f4U&eٺvs4_FFI r \w \ ˄B~}Np9waXK.cwU`~k|{^A2OX_HRE\R Y^ee>Rs32YKs:˲0Lk&A3Olr@;Dk8:k<&B- yኼPAEhUOR2c!oۗ۴$ ៑F]nOdfη> W>ݥLCIuX]tpf/j )J$\7;*U-W4(lap6dL"kHd[_0HQMrRPk"UjVeǦ.@A96^V.evVzo;|~|>vRY,fv?[Adt6e}}N[sUϭt \prr5'6sP=PVoR.OQ\#Mgc۝`>F7\i9yY38<_(+K>/.0/+_@0 lа\'5JF=0JLeЬ[9h7{;Xnn+eRvЊ'@MSȵR=IGN&:# O! 7sR0V+gl Ee&BZRz(4~$ L\n9ZhweiUz{Ed"j4 -v.GJXHx4|M kQLɆG vx^uCV?o.:`Uw_q u|UaW,nZ|忲CgVGze9x0]oUϐn xduΘz_)q-¶]3@ Fid~17 C+[`funwj&Vah ,2Q6*!VdA1wnV~iٔ߱e=R6$DQ0[as1B5Oє#jԾf3Lg\$⊶1d6S :n򧢳JQd$Բ]z-6ֶ`ؿF<ᢁߌrb/CzqiL= [)S*IB4 yӶàqOv]+" 3) MDLK%! Cl6M5 kC^0z@^\S'd.Dr @ k:OV%Zѽah:;{!uv^xl~珈9* ~KQ[+Ž{ 秿z=ߣs<ՅGL)D=S<Ff R,9!UKYV2LXkL IDAT }،GJ)hHIXھ8vD{E夝XYvZ b `ѳ^3ˆ: c"QQLzGo0~aǡ߱xy!2G{FMG;{tD*׹zٜQ:4:k_$)rV @GYs=O]!m]a&(  C<t1uEg : k6?b͚#+(+FXtۯ1AW-;29 È(~GmG>VE(ۗLє(:htE1~"J\nUq!"kbYfRGg{y^D˛jLQ%30V @H>g9x˳rR ]TN8(RW0G`;qljF1eMAveo q.hSΐ^ac) y1~W]Ť'tiEaȝ;7vY,_/ ]|dK̀Z/m5M׷4 lfL{ dotU_יR0%v̈́(IեAɻ4*;OJΥCOy1"fA8c=F0 BaDd_Rbf-t4瞅Bwo@<+lom#$zqJRѯD$\E|27io"ă2vS2:=|z<XsBsa.S aX=a'tJZ-|]YEVt.K(Rs-¯9fsG P·}Ɠ]s0P AxA*H-[s[ 9h(8~^2$>izlF2zqFmKeJ/(8>C\ -qf}\KQn[KR{S `˷CT0[<.4|ҼGwX$q(st/?sڽ{ Oku*1وkܣ;!rk[9ۘFbt ޣݯƤ8B-hu˺k;S$]Ɠ# 1 htOg%c ![.Z^KrI.!9类wG"##zSӿFˌ_D{8f4Glnm7ع#tb?q !. C-h F<ЗG=F ̞!^\TC5w 3Et- kMh5ZNNkVBx0.]?=06?0Jzz6s<^[*Hf9y۝Aiᨸ8ͅze-D v٨Pn`:EimmϟC&Hptkğ8(gJ fq]g%Q2!g+>yFuMJAӲpݦܤJ4\m/^NcIRwIR7'+lW~lWe._3Nth\V&؀̙ΆNU>i[Kq\, ,f"[2OB$B?L]0,|> OR}4TP%I K8u, 6kkױ6M6ؖ>t=v/]~ؗ¨)VŎ]<r!M'89ܛy\7u9?i)fmۥ\cF67ǚ5F;Ҋ+پ~id:̵Yi3E:5tOiyYtHlfϟ,<w^@@IIZFvsnws8uklmN}"gxd6{xxG#}`o([fB_,B̃o>c:+U{ykG{7I.Rb[6V7]aR2l6Z9Db>LD|5XIM# D o\ڭm6qܧt\y.;ӽe7B!,ugؽK\y+7~ n3%%I}j \MPP峬}i\\`PcR3) Zf6|0 LngO&i; Zo?|J-˦`8>̩p4z>6f`4Fln\Hnw=λ~08eTQLmYEP&.䈽en縸}s[\?Cu ϰcL>C( [ d™F&!<ت`ݨ "cc=I~fVxLgC`4 ` v{ 2 .C$F#0f8:L%0pn20ӂ ,ALGba<XJLf#:nQ|# ÄHR_BK-H%1B 4ۗpMm#dbQmz/am>(qvz%C ]dzѨxm;:RxnQO N3JMDi0' u;ض}#݌4҉ rm|ptߟ"tڽBo4G!AE>i},XpVKAi_ :.o!DvY^(z* Ax\ngKYr$PNAt e݈Ѹʀ!3nwhMw G} LA!&\n@Lfܩ"($BYz  `a̋"fscpxh1y̼2?W:X}ggOU|j-A+y7t@"y<- v 4'@8O, !,ݍOS4k!j ,XX_˂d,$a8!`axrD2)=,δg, 5TdN0 1M|xQ ـc8\})q Byg)όډcB,g 澅 rx^4= !(KU4rt53 -vZ=vw?UNb]l^^:4ʾ j(w+xs/חIJtV9&Pϗ3Byͣ}ƓG s&tN7A\_D299]ɬMQuGƼ]fs9ด&>RܲZe9:JXJOYDv׮SΆ9p(SX4FqH߹X_3QS7: q@uSF#>he2}Z.eqOv}ȶ7&s;)H8lFS}#H|L!+ @`ٰVK h]/F!2yޘA8τ[ +i%<''Gg\,"4J{R$<(|,+NY^l#FS,$_|DT344N+WbzƏaP>{PH8H A5~>djW:L< ӈO:2AH68J;e:0O>w c!dm On/U/ "/ o]$+ APbYj^ŮY(<6 r- ƄhNM@E}(xYh<_"+0 0KKkZ 04͵ețFPD~#<}4W6.'MyP:6 A{)R]܀dMbƄmYpo—? ͒>GMidzϥ]MDH{)|R$30s2k$'/y+"Έ 2<d`uȶhv?W:9W-N+x Ƅec/_,tˏU@JQųҩCo>лG¨ q@@>5/o?,5 Xh1d4%:u5FzY`lmq~^> Wބ nN<+Qb(/ّ.ƭs/ h _3爛Oa\2e$A@CWs lLw2hZ_ՊP&j ys;eT@~*i/0Fo+H@W~0^ޚȣnv2[uj"[]*Bck ;o^Ɗ߬q?V&܆2 À F85|J)Z'd JbRjb [3xpX/KFwCo!c x. &2^ㄋ^5@EKf1ggs%nt:`>io8LB 5|(Ja/D $aN |{V[O}x(!oY,Ewc:!ZF TVQ&ܤyF`@>}%%Ŕ?ܠ~caXmc^8L? VGsm4ncNhǣqO Yjදl]M>2s=1t1 ᯲ 9"mFmPQ|@y-g6*-LJJG1 =|_m0EEʀZ[ ͫyw5hpe;GnciqF:N ɒՀdCU6 Tfg҅ycg?2ϧ7ht>uSe52t^i$^m]ѺV+qB?զۉ2ɯb҄E¿R ,d KF48@!7%ɜ5@ X[p߻gf l_ J0U)99z[ ov,O~d]++XN:&[\7N^ 9NiRT_aPꌷ=@X@ NmB`ۛ8͋BCŠe=-;`vqV )uן4/ah:KE2(#_% FNL|{k'wm8LJlw gxx'>wzwg_}/")>ndn4.)/c!CzH饑aa#fXv a]Vj6+Ϳsް$78Nn(CxyA̳tvGVPR*\>#z .%@NmW3 ew#uܽI)+͟{ާ?a( 7wfhq򫬯?=\ɿzU66ٔ>9մ+Ν;˅0 y?c6 5dt/\z(3>F|2k0D "h4Z@B7/ez~"E&)DUw5sFRr vN&[[/dgQܼu+9 VVḰ2G 0Op6FXO6VvRr}f2 uNQg''xn ?Sֈ[w9Y/,ɐw+}>\ɥW=d퓠MqM.]2?|td)vhMv/< c _3qxtȰ6 IDATޞ {=!{)3)$L&h>s2> /ApA .yJ'˩;%4zdF+R^dh8곷lӦ W^/& 0yT z횙0a8͒| Vqq򁔒?uC]?'qF"Ѧ$a*n`"Ÿ?0=\Mc!2!|O*MG2T/nu^8K]|}}ew߾{T\Kcu8u: sn}&KΕ]:6~0f6;H$qݴ.B?Iٖ!PDӡ@msQo _*0|O%0lAe?OfLqn碱W*sfwc~R޸nDžf;w4b qxګƙ|=?_^ŋYR~~>|F:|4PѶ_#9W@g!/:)fH7[WX$a6֗飇l )jU3Ә_U:`6׮8gև(@+8`d2Z ek?~22L#L( e@]T)q`"%<1_U=F_[Bg$!MnT|=[knqV|>û9r'1Z?W0fW<;X(b eȍ"[l6M5bٌ;wucFa(>3 u>Gb?HȲI4bF]3Çy~ӻl4|}O*^Z:~Q=Ol+ݻp4ixɴx|Oʓ>'}SV_` y\H?ϣ7wSh6ӯ%)d:|JJh4`$Bpjِ߀GiBJ<{TT>7G:^.y[7+k> ?0͆U0H/P_*gz~*G ~a0`p4ۯyg;`aLC~AsM(@@0d>wެLC~AsrV"R[}?ǣ_ q}nܸY+Te $gx ˲q&D A+YC<[ &_ GߨS:\twOn;p¸=Fߨ%NJ+,4[g{F_M Sesr&4X)x/S}ea|>f<9d23ϐ>QVR2;8@B~ÿ϶7s&wF;Ѻ)´}fԝ;0ZTAͩV{~+e?SNs+ 4zfY޾7/_YUiTj'^XN$ ^^/ޣ~Fr B#AL)['ߟkN|(݉,md,S$bF5{RJL&:.m)w?/Ͼ~;pϞNcFJ| M3%3(4||grXiyZ q2>w6G4` \%e[X'c.~"03K0B)+{Y_ /kñѩ<=ǣM޾|7.[PI a;;6CAAJpL ?;Ѵþ)JټB (,j,܆պ)o/o榷?$0V @Њ6`#,)x0)=d8fB̃o Aduы^jozN64Xf@%/tjދD pd;߄W/W>Wpذ>?"M0| ,>f%G_ I}+\h2M, o Azz2=ʪ:t'z 7 ٫`GG3PK.=Z{KdWP_\I  N5~]}~t糗x|ZB,eX?~|pZoWj6+7jT VvpO4vg*,>%:e1-a4^qT@Jhh~?y[!׶S!SB~t+:]LkWW"o[~[JA4 P#oTZ.ks݁/yP Vg#_;xvA`Gu zL&BP 9J*,,XSK(-K(wR5&/N?TWu:wy::so6Z{ll`g֟͢7Ft 8tb2w=墎VDn/$qD} tsXqͦ qRk \'%e˄_ò5~CUPuVc~QH+9pls ;. 2Hl+DCuy9fˉv.]70W1[V+Z: Hd2մ\ui%f-)zk.f(7_t%A@aӐT5~N'3Cݵ٨h?}Z_F ~u姘NaA}l7Ǒ"ÒRc{}IMXX3n>2֠s3~Fm@LQ| ll4iwl4~W4`p$K5V 7\}kӤ 3(o6v4Ű/s=Yl_=8N_D׷z7JOb |汿o`؟$~9::t*p_7~[bs6̿F#2E@K8;:v3kFfc(w?[-p\}77 TqJ2Nunψ_vq-eι|%g|)|;?)/ig )qR7!W`B)/bl;O.){BH^UzFN [KY/ 3{%ϯV6kU'4o insZTt]fJWs3 hd4H+=-´[1(& @h}괝(o&t nr];53~`cF ?EJ_a+SCC3.3eV W9_j:1ʯ[׀keVAvuWu"qN_f ҾH?xerD-+uuN%2n_cI׺z:ͯ}EV` >8c[ h4HXDζ 4 4kr2@хMc2] ^_ :i`%Oilk>DAU ڧLA?ķ=og@_w)+/ޞPg:8EE R mm@BK/Z;)RFKG V81 .Zض"Jݮ+#6 % گ ~SY_:Mm_V{IYAc  8v 4,f1஁_P ,#sePBtw#?O#i_7-GN&,j?et\(#O~ҩdgggcәPuTBE n~h@O+4~ǶRVH€„˲rAL\嗔DEˎs},\W 3@/gbXX bKF, P8)nڬq|iU|BKml[Ԁ]|]cP$5#z$9: YD4xL05O>$/ 4-{P4 QMQBMaMB_~6D +^2ڦh"ȖUS硫[B5hy~ACW癃&~KDH/M`۶ݬ]VAdAcKCS&OP? %;0^(0V2?#G#&oLPp@'OA3wlV#]w k)W2z[ hYřQ"U?J k-h_ ǠA-? [vN"l?|KU2al<K7=?+U&03yOB"WA70 2H [Jzrmfdڐ c @D.NB2U3Q`qѺz*s Y(6/"^t-[KȊPaMh@!8-h=V3~ux6 "7LO,eb!7LP)'Gf D!`6A;tZ) 0]!Naz!X49B'H0Җ 0" */dl!Ϣ0fğuLgW0 .߱E-~0Gm?ed%T4x,&b!!k1nqWi,ZK]  |P"dthDB, ~Kf2CKv=~H,9QH-dnA2\ $pIRHҲd k+ S8~;dd1H2>VY"JЗPb6e޼rXTY_y XӵO?5 e"QG,u TF'̺yBR\e5Zsgu8򤏓Cp2HQ&&\,L=e"³'W%O_/惀a1ܗ H>LH_$F`¬PsY(RRs3{ꃺְx5I%Oϯ͢q%KfEaOW9II(.:) ߣԡ 1 ǦZ_G`ִ5XʍԵnB[~e ާ:@S K T}xE揿D"f2 xeZ AŜ9a^FP(yP,C{lXtAUӪZR_IrZ-#qtoc~y5Z1p{YV' p .bYee*PtjI~Ÿ;2 =SUބI5˚ҥRGr4k5 C_-+6r<$)}/jp L*Mc_\2/e Zɨݑʽ#p"I0du%;^FW*hQ):Oz/,Z7U깩Y9e75,#RyL0 6ՂZ%hA0V+J}2)LeєN4 צ**j/zZh&ʛ|,)WoU2*@Y 8S|7񖥕 |r<*uZ&MEie``J+j[Fg +:z+'hWO-|uY"pPJ{$ҏWe!U@2ό/:$B_G@@O"L˄} V2aVtPV}PINBLDU+Ғk +z: UQyePe&a6ߢE0;=o^^d/^f֗R3DMe|z2[W : b `~qNKVߗu@Qo֩4 ~@AM[WUnz]ШJ+GyIDATO&0Q( W;ɧ~(\]zY@r_&z=uS2VC8*-3AH)m\^z78Q]6}c;ZC/Dx/=g߮_䕙c>O:6O}݇ i h!!R~:W{dgq6rS. }EC,P\b^ U$:H4q>3mv(fCH.FcJ y% %e8cT[R_Z-ti+IGua!Yǥ +3Tt .' "|`? LV̞/w-R([#7׺BN8D82%@܆ ,,faqeE E<׻݇aZ}ǫNgBC+lے21 I\>a/#y/t}2^0 .Q˲@Jㅴw0Pֶn(0vO.+kk>B$Y.]ɷ%:h YTRoTa-UMmPw_s'pV/⺳1Oo]cYT0LqFCZނ۰Dq^l۝4UJCOP|J_!B.oިaHeElTNw:S.-vꕓ$u'tWNz?,K eJAffg((Q'Prmx3ϲ>|z xC8$$Kl 2AkPmFXVVӧX(Zq' cR8y~#5* WlD%L@J쐖#RNe(oI@w;}ho7h \ ys,9ro׮ jRH3Ͼiڝ,;?bJkjD|l;~Bvlp, 9t˒8\d|bAѝ˞6=.aJA7ov9 &j7ˏ7Cra:~QFM: 鑶3mC vĎqQڪMKJQ%J[ZPԪH%)Pڇ PE -Pr3$Şx<ϙ9g}Z}ǎةiZemW>ĩl6svjs/Lɴ Z^ͥoz/:cm0i_2MD$T~CLҐH$z2w2ħ>eWZH9?95V}̹K^Do\XXi6CVk/\߾`@|3Oqs@[!JK"׶v=PB2O4La'ڪS?rhcmӏ׾m$?m?aY`1 shE=^\ZL#~$'kb[o0 ÝG.=o2b;jƭeRD.\\X t̓_ٶUjʰl,vVy?.~8[,"\^\c/d]ZZe\|s3āt:C39VZoO<ٻn<7`0bZa``  ڱL-*"uy SƊei BƑ0@w`a6/w{3!wd?>q[%Ġ{㾠׌T\yd@iǀI T7MN49q <mlϫ!2cK\nce"cMD,HFǧE&4ةdBl Uc-Xʀfk;#G2;}轼ʿ0xIlS '"I[@:=D{r1JtzzKUV*ζ/[w@[; :LhAp "B Xn"U @)yw@JK!X[P5jQ\wVۡY[b}eeq>frOwI^8u3ꬮo05AٳuE3WYր@h_wkoD!vqnR*1czr /Q)UɁ]KPJQ*ROrp(;9,Rxbgw[ dmBQ8DR/^l}x|VE*"8;_gLkV{3|Yo n`ssQodqmj( $JʫnU\Bl4QJII濾g63i G&vj]2pRIom/vjɔ)縼x%R]J @ʈd"o=gOgI_F#ht"7Vy"h)܄J9(B2f*?:um[ƛ9#$n`H ^4͕)&FG㰴$i062:lmoR.i$i0Zk05+89a̓NeجW%%RJ,|0FH=w{8v4'+s='Lir$8?CT9q8#k}4cS-.3=g|_mj V 0 /tJI0-&8-|M 0$)'xc-2Ҡ]B I\XZW^-dU6M<ۤ P:^M.[٪3<4FޤA9 ƭ5 ,#d\If#dteHw0LI*Lk>O:؉M,;tGS|?"URZMw?i} ĚMLH+P'd!nE}b%@yuR,b;ЫSHM7_iEyr%#=J%ZL9yx@R^hPHݜ)!\9 1C&7\]eG)(=M1?0~͔E%lcؖRFsN}$+T I ø5 Rmaf0!l BH.SFkf1Lgo\6%R$kMȤs{חWX9&MpZ % (>B1|9)[{Eq>nFW`qiMp`rE0dfv5ssGbscH$*PٮZ<{xxeE@P.UX\ZGY[[eѠRN2DM.\*D|> "סݩi.2 nXlۓogz2vb.UR="QA78ue_]A=78U6Aa"{=쑊vfs'sk.ӕ;vCgspq3pbZ8~ĕMx0;fHF~h~qBGitNs`KUv]&& <FF\G5K RXL&7IhiILӠTqqXbBnaڭjtŝ_~QgF-!L%mK:-&G5P?.25尾aR23d}է'8|$eZ {4P*k˝n0Q3|tpЯ fl"аE5)m'G"09!LtBѠՌOd0 B!dfCL9LMR(XOLBC !rQ.e"fLL$`468xWAm[35et"TJ29vf!<i64^"lBryM,knB mC$q$V%NSx^<贒8v v±4L:Iz(& Sxդ>!<܁2^'ov SeiXI%|QP!4 Bd&ϱvDmse }"mI }f/eQ ν'dnQ+P7iyPK_ 0nQ|V}ػSqERk~s3{ߌ~Z#@NM[޲ 0ÐN>|_)u\/u~nd&>o3k7^A~?=0Zkur%%_1IENDB`gwakeonlan-0.7.0/icons/64x64/000077500000000000000000000000001374311100600155465ustar00rootroot00000000000000gwakeonlan-0.7.0/icons/64x64/gwakeonlan.png000066400000000000000000000142111374311100600204010ustar00rootroot00000000000000PNG  IHDR@@iqbKGD pHYs9#tIME  2rIDATxݛidu-j}ȑ8\"JHd  +ʞd'HC۰@2$%۰hE$E*5$gtw:U]𪫫{z83$1)_rZk= _lNη_S_n4xNB K%͑rG SSF^L4Z.R,PJ.^p챏җfשջ1~%eh=!sl@6Y0aSgfWY4 bvn 0GPR?7[keϜ>o'r&gK"#[_ %LIܮ!:^H.mD+'񉿛JyczV_aW go}L" ?ah-ޱ@!0Gkk ׂcXX duJc}4B3)KI#yO~!=Zha`p;o^?/wׇÿ8<2O@;qh{๽ouSb$@q,:~ɤj{iEd3(XTs=x`zfI㓶M J@\W^GfE).Clo. h ޱE1xujSD>:Б z]`oyI(<$!;h0'Yֽd^%ZIkoRETU:aPV<b֪a@fmJ,#Z6Ril_z}I8bnv{ /$JI awt$JK=MKB[[e teo4KWXF*E)MڨtPylk 2\(4gH]r"}XVR F :?ށX& h%Z!кȣ{ Ƶ LK.Q 4.]fw._Ne8y7o~z v;UXLTy*2+73LkoBٙ}6GTڍ7L :[8@ h>xsٟ P Vjp{BJŹf~f4h[T* ~M!_+j: en(A^f-RDi~/и $!aC_O .\E^~{hujJRASPT͝X&JO} /tns3pc2Xba aܪ5( T4Ds5(VNn•(F)*Hq v( \Џ@$i>՚yۙ0 # t5:J]gfyNys<Ĵ>O=$_ B|I7kd2yqnQp\`nn'Oi|쯔/mn][E88,h+zPbJ)̻p@n]y@t_oj_"c2>6qGuLnLOGI0^vM0K FSy 3Y;x碂d=*CRV6j".KKK{[8i!n=Z:+a*CJ* Zlti&R2SdRJ̻E\gX߮ #M&\؀u]0Q:9/ H][Vu4B( o^ʹoQY%>K~(yäJ'I7//LP;"ީr2u WB $"hv~-8NWA6n! lҒV{; mD8IubrOѿ'8QlEA&L+w Je81zFuh40NӴHt:uL&.4fM]'-ds2EJP{BU{e}"K}k_t7^h~o&0zFwĮ UƴRSO%%{w&ƎNhNy3:ZI0űGU塔jv2Ͷl.Q}ľ0+\քOh"Ԁ,_籅m.CX=#}i|ެwIi s.alB0)+"dґZcPC5xP 2L3M/3V 7DܾΞkEhց T\fgǢ{hK.Kr?7:T71-=AwE7O86w( OU~/Ht?>( {`hHIdJK^[)yh7f̱!,r'ly.W6Rf׳S,30>%X{RhIx~si6I;EN{EZ ؏ }qAgp+5q!_8w]tXe(:fv'1^퐶:ZVĪK0~-qO#RK%H"zZB9s!!6NqB8X0}l+cC ê`Z^`Zi7^@#N0|!,mUkT C^]x6h\_ ^MG'Y# #}3nuyWט\@J ZiFF)JTז L6 Fzٹy0`y-l3,Rju Qq78GHE*^ݼw^wh1T0LWv;M8;; `|tnjuNPbu]bNkVWU鴉)eHHF4VnmѻZuL*D|%()lle335GݢVFkG()KAb[6ss4[XJqܯ ejz|}sOkuڍ WY@U:;!nZ|O5 hACh2ZC*X(Fh cc&ZCei\~7]:"D*~/-c X1LATȸE (P_)CZnwIMo)^EO}(a8"A!4#VA= +yZGڜ ܫނt/*hBv+kic~G@W*MjsWtߋ ,I.axҔ0WV\F٦mS·IATij `mPoC&mM,շ ?H{!&NRȏfw,S0חڠ2azj![d6YJee06ex01&e'm&' U0YF-j1ZXi\vHvu|\ܰIV[ef)F_HK+c3>'1pNs iF2d2a`'rr&ciD'm&c9 6̑Ylo]ʒͦ AE4yO$>(L LN,S)U ig~&E>E)JYʥa槧<0' % 0[.8?-`a1 ez>RB${ZV{nc,rsDŽQ҅InƬW|OZõ+loHEpF?-jKu҅WE7l/cl0(Q~oM4&99>WRo$okƝo,Ҁ#::ole%׵8 k/;4CkzNġe\M(;][1 c(;D!>IL&#0w51j`;z'@zq4 }}1rP#0 nApw`fQ; :Q)}kmIENDB`gwakeonlan-0.7.0/icons/96x96/000077500000000000000000000000001374311100600155605ustar00rootroot00000000000000gwakeonlan-0.7.0/icons/96x96/gwakeonlan.png000066400000000000000000000253211374311100600204170ustar00rootroot00000000000000PNG  IHDR``w8bKGD pHYsOUtIME  ] IDATxyd]?ܭz, /Bq,! Dl%1"P"8QD-/3gzWqoݪz^/3=|[nֽ-Ah?07_ip_;8n-ݝE Q8ybբ5n*b4i~/PJ]c5ZFSW?-vy%7zgtŀ;fG:{dA"{{ .n\>vݿgϞxޤw7%k3CIW(0R(A:8| 'kdscV>ؒ*LynG)a7vR;rYl l}Zk]G~:aM2xn ܉I.~)Dj*iԒ-Ǵ\![ozk_zS7)Vg(Vg^n4u|)@&czQJ!1 @k_~:5ss\AXD+[cZB77 BcJ! Q^p,KsfYfYTK)s ?WE?];bP a Jiy'>qT t\p"ch4' ~wNZ2&{W}9N?<O H3)3Tff0,b"t4PgWf#01T.!_{ϻ{ޥQ:돽_3|C3@?oRQ Sέf1a9_9!CT={f+(cuev'Me(PvαfO,ae2{>MF%@o:RMCcyFPXD hk<7Jߡ zwgW*s30a.EiSXw1c+K")*rCHiW4G?u+{Kay&`s6vkxA?_r*DH^otvȱ}Rb-(?_Y}ow6]B_C  #AƷwk[/,P͂t7pcka>3ߙ=lz\ՋACUenw~+ zFqzIί=$)B>N (>$Sbk&$|BϛrO<ksfqr9:S-:hiP27lysqoLg1'3ex筗?RBk숀bJ%"}(쟔iR;6wKUr2~ht\FcYu:[2RSPLYJÉL'׆gыʐ\h hIqsf߅gu}1d탏JR=@wp9,ԾH 0 տoLj*7R;Poz͏͏ c #( <ʓ͠0_H#JE414\y7nWW]忠Y_7pm'd2 DɳL:ZCyGLӴAǵbC" zX1&IԉT)( q]0J \E)0Z>>(RS o_? rFB{,Nz-DjڴėP)J!P UZCzA@^'R.Ji4 L# } Qz(|F 즾?Ͻ[X#!(򸞦W(=?*ze~F+@$8 bfJuPϲT' WjؖzfkeR>A貾e6lTcg1M B0TfZ0 ,3J!>s[SΗ໊/& Ơ1W '6/Jc18S.={N+P.e' Cv8CYRuvJx:~o o{?|?$v;Fg{n_~<R|B{jxݭ3sxtR1YKPp4,eRpbR GfH)N|`2 ”nR cP\"ZkcQ.'\n~"uXnll'y4~*+7jDQZ364Ml+ad:%*5fKKVk}tNzH|  &S\M ZS7 "@a%y1ǰ JRh ZDZ8vrD0YBR*oB5B6~o#0bZ@aSeZ"swG`Rsbf}Z3p=zQ n&3 M/3Ej#v@PUp'YXXdaa^Ǘ6>A6K_׎d#J♟&>tiF^q*b ^.غ̦ ZS,fk0pxq>)gZ'N\LBW1)N`zEIbdKC \<°~ ej6 /#)lu< Ě+JEt:ur .O\9O\ZT:_YdK֐`)L8×b[uxL4<#n/S*&؆.=O~NfJ%zE4`",f=,çY|%#4rhghtj5ALXb S4! ݚP$Zژ0ENFSCEI\A4zr/_{f0賷&qԔmcCd1k # 2etL3$~2Tyݫfqqs,.xǹ1sD2A_;>mᅤAB 1Vx۽_#k (f]$ niڸm(=/Hf> Jx(-PQ}00M`9LCH40Bjj4*Ft\'i(T| O}^*1}a~OnyQP(T^hkZQDev7CrMNЄ0Q'RE(:Ņ&@m3iq_8VZY); ^|ߧlRB6]0Ef08T3KEb=D3)ʜ9zf ako>K&QD!$o ua>4̉xp5qR|:;Qw~~6< 7޾An133CXp::)-rrKK'XZZz@[KxL`qRÂBG1%=^.usy|K]lrbc=R),rruffv۲҈d(O`Af'2Ha^?ZW^T 㢊Vn?b>~G4%R\L8)*k#X^JbF y4̕TΟ~,k9ubR)۲&%R;TJFBAxXB1%ŋhh._[emg2f֤]3|ͽ1Dp5/R#e j?+jB31$x+#>{kx~s -֮ͳWoјq% Ll߸88NB| Zp`)D*B2r00͐k]Z^"'l 5nʀ!}M}hv ȡAz{dsqc67voo} x{#<>ya^#݀=gy_KTegA@@Q)8"@i`'4VxOo}Mu:iGE($E$Ou@6OPDiz4RH~0j%'S?j\2? .ж" Bra+k w >˥7Z~fК(4>YP(2W[K~z54 TJOtSxHfPg,;]RHwIi),`>qxi8iZj P@ 6}r J v524k?崱eeԀ a (qȘFJdIee(pQΞ^JX{5gOb(n%pċ;<d-W8杷v{8{1 B0fK4^\-jhӍ*A&BseZM^@E\n &-$1F:ᕎҎ?!@`"4,DPıJTQnsB'Kb@y14>ٳלݿcx~ pZR 2 -b6^ # i˔b?Ћ߃T(΀zcNw۶ZtB?9'?p%(?`w.]W|7>ɓ__\Y A0H4a1@b_Y }.m/1e+C@&SqVUUQZE!arb^O2K|ȩD1bS(d1,aJe4'Md2{Ls^8nJ59v*G?i6RBc,A X4Yټ3~rdDR^82,s9v^8')Lxlj4MjىF&縔:΀rES8bOзgD(0!{-m:b QLy[_|E dvk+Mh4t&fbk\ H[㎓Nw{Dd*u%d& ;c>V ìMJY|wySIrJEm<=3eD p/$|Ӱ;vdtL238R2{tևelFARVPIW2CiDaӚ:8Wz=goW9Ij,9l49ė"&.dx ~ RIEwxjxw:qC _c1}2a,"FB~,Q _~3:=Yn uu硐kZ>FGrf0l!Ɉ)j ,1 SbG). &k8:,/?Jy8]=q)*B,&* O^?Fiuhwwql5q")ѵF†yDBw?wOraȕHE@QyK I.TX94XL>KU-MYGEq=&t4K>W0T `g`gvIĵR;|RB:=@&SJK$-ðxnQ1VgG&ӴJ$uf_4w0Y"1AAԗuK~A 0>+ۏ}}V)͕49u2Fj۝ֈ hYY[IoHsςtvvvȥl\+/(EPUڲF+; n`UПъS+ۏ޳ y < L8"ߦɥXElls 1xŠO؎C\_IŶXgi4w^pGR#:uwݶǘyH _w~+x>K?"?豷JR)~4 RIDAT*AF̩s neffb\cmm ?|ܹDmvvwUE~^NH Mw4? < ?8FE}z/`gNGOx VR\ic_A1i/>$ƵLHC|hJ)|^V oz7xg43EaP~O_ 26`ES 8l{]Fc&l, LZV0zYqD*'pנA/-3s0[hs~nb3eu Mu{ASfuoյ8?yS+stc(rաRPXT*N'JRJJeIa̩d(5rYhē2!X>U0tJg/; #3" 8/T*I.'p|$ժc HSlS.۔F<&Ӵ%cHr2X mgblIm4 ̂Ǚ|h YM>WmVkM\6!!T@V=lE͚d28 %\~ls9R9fZ&HU!e:& Pr9\Ͷ$՚a Wh}S/5?a2\΢R8iHl[{BAĪLOۇl֦\ɐqLl[bQ(T3!'w5^?fZ!XR96h<J5C&c8jiHR0Zqח1VF.k6|lǢ\1Y2fυ0+qmƸ540 0ZŒ  \`MeJXuBc\Wy{,K⻀Tg1kűAkQpy/Ћ?JaQؼ1?HClRJg2PDx.DRU3D.ı0i>:UPF|֒jmrj|?3~=BˉQ C0eL0  ƶ#o7H9N|@c'p aapd"< b :R+f0Mʑ1Mߋ}җi ր0 a@A`qb Chy m0483 mUIUű Q8f>]2GXFL%1el)G8VC{cV&cw&kWA>e(JAa)  2œbfdz&y/JN`=L!WLOb@!ua2K2J19;1G*yLFATr&g&,{P'TKEN27[=4'Ok%p:LL9m[j9Ea3OL1RdcAX{4?:mA/&Z^ϣO=?1 z,z^cwGHi; Rphz~cO Qn}P ߺ3w|ㄞ&S5 fɎن}$42.F/8v{a;7ffs8:Ofh1 B4&31 *|Ӡ[3`_ƉaN;.avOCijںZO1O0KS31I_CD˒d];b3p]BqÑclRaEuFi~ C)ĽfDz?vHN6oCƝ1e8%}3GGTcvt!$9u%iKz 3<`"OۖD ~xC7CDW1Bs+8=<@*3~I:9%ĞFpy oE|q\&Lu XIbu&sƉmނfoGoƈ117<ĔE݌7wo bIENDB`gwakeonlan-0.7.0/icons/scalable/000077500000000000000000000000001374311100600165215ustar00rootroot00000000000000gwakeonlan-0.7.0/icons/scalable/gwakeonlan.svg000066400000000000000000003033201374311100600213710ustar00rootroot00000000000000 image/svg+xml gwakeonlan-0.7.0/man/000077500000000000000000000000001374311100600144135ustar00rootroot00000000000000gwakeonlan-0.7.0/man/gwakeonlan.1000066400000000000000000000030011374311100600166150ustar00rootroot00000000000000.\" $Id: gwakeonlan.1 0.4 2020-05-04 00:53 muflone $ .\" .\" Copyright (c) 2009-2020 Fabio Castelli .TH GWAKEONLAN "1" "December 8, 2013" .SH NAME .B gWakeOnLan \- Wake up your machines using Wake on LAN. .SH SYNOPSIS .B gwakeonlan [options] .SH DESCRIPTION .PP .B gWakeOnLan is a A GTK+ utility to awake turned off computers through the Wake on LAN feature. .PP The machines to turn on need to be shut off with the Wake on LAN magic packet enabled. Linux environments can enable this using: .PP ethtool \-s wol g .SH OPTIONS This program follow the usual GNU command line syntax, with long options starting with two dashes (`\-'). A summary of options is included below. .TP .B \-h, \-\-help Show summary of options .TP .B \-v, \-\-verbose Show all error and information messages .TP .B \-q, \-\-quiet Hide all error and information messages .SH FILES Settings will be kept under ~/.config/gwakeonlan/ .SH REPORTING BUGS Report bugs to https://github.com/muflone/gwakeonlan/issues .SH AUTHORS .B gWakeOnLan was written by Fabio Castelli (Muflone) .SH HOMEPAGE Home page: https://www.muflone.com/gwakeonlan Source code: https://github.com/muflone/gwakeonlan/ Translations: https://www.transifex.com/projects/p/gwakeonlan/ .SH COPYRIGHT Copyright © 2009-2020 Fabio Castelli. License GPLv3+: GNU GPL version 3 or later . This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. gwakeonlan-0.7.0/po/000077500000000000000000000000001374311100600142565ustar00rootroot00000000000000gwakeonlan-0.7.0/po/bg.po000066400000000000000000000070301374311100600152060ustar00rootroot00000000000000# gWakeOnLan # Wake up your machines using Wake on LAN. # Copyright (C) 2009-2020 Fabio Castelli (Muflone) # Website: https://www.muflone.com/gwakeonlan/ # This file is distributed under the same license of gWakeOnLan. # Bulgarian translation for gWakeOnLan # # Translators: # sahwar , 2014 msgid "" msgstr "" "Project-Id-Version: gWakeOnLan\n" "Report-Msgid-Bugs-To: https://github.com/muflone/gwakeonlan/issues\n" "POT-Creation-Date: 2015-07-18 17:54+0200\n" "PO-Revision-Date: 2015-07-18 16:35+0000\n" "Last-Translator: sahwar \n" "Language-Team: Bulgarian (https://www.transifex.com/p/gwakeonlan/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ui/arpcache.glade.h:1 msgid "IP Address" msgstr "" #: ui/arpcache.glade.h:2 msgid "Host Name" msgstr "" #: ui/arpcache.glade.h:3 msgid "MAC Address" msgstr "" #: ui/detail.glade.h:1 msgid "ERROR" msgstr "" #: ui/detail.glade.h:2 msgid "Insert the machine name and its MAC address" msgstr "Вмъкнете името на машината и нейния MAC адрес" #: ui/detail.glade.h:3 msgid "_Machine name:" msgstr "Име на _машината:" #: ui/detail.glade.h:4 msgid "MAC _Address:" msgstr "MAC _адрес:" #: ui/detail.glade.h:5 msgid "_UDP port number:" msgstr "_UDP число на порта:" #: ui/detail.glade.h:6 msgid "Request type:" msgstr "Тип на заявката" #: ui/detail.glade.h:7 msgid "_Local (broadcast)" msgstr "_местен (broadcast)" #: ui/detail.glade.h:8 msgid "_Internet" msgstr "_Интернет" #: ui/detail.glade.h:9 msgid "_Destination host:" msgstr "_Предназначен хост:" #: ui/main.glade.h:1 msgid "Turn on" msgstr "Включване" #: ui/main.glade.h:2 gwakeonlan/detail.py:70 msgid "Add machine" msgstr "Добавяне на машина" #: ui/main.glade.h:3 msgid "Detect from ARP cache" msgstr "" #: ui/main.glade.h:4 msgid "Import machines from ethers file" msgstr "" #: ui/main.glade.h:5 msgid "Import from ethers file" msgstr "" #: ui/main.glade.h:6 gwakeonlan/detail.py:69 msgid "Edit machine" msgstr "Редактиране на машина" #: ui/main.glade.h:7 gwakeonlan/ui.py:182 msgid "Delete machine" msgstr "Изтриване на машина" #: ui/main.glade.h:8 msgid "About" msgstr "За програмата..." #: ui/main.glade.h:9 msgid "Machine name" msgstr "Име на машината" #: ui/main.glade.h:10 msgid "MAC address" msgstr "MAC адрес" #: ui/main.glade.h:11 msgid "Request type" msgstr "Тип на заявката" #: ui/main.glade.h:12 msgid "Destination" msgstr "Цел/предназначение" #: ui/main.glade.h:13 msgid "Port NR" msgstr "Порт NR" #: gwakeonlan/about.py:56 msgid "Contributors:" msgstr "" #: gwakeonlan/arpcache.py:42 msgid "Pick a host from the ARP cache" msgstr "" #: gwakeonlan/detail.py:78 msgid "Missing machine name" msgstr "Липсващо име на машина" #: gwakeonlan/detail.py:82 msgid "Invalid MAC address" msgstr "Невалиден MAC адрес" #: gwakeonlan/detail.py:86 msgid "Invalid destination host" msgstr "Невалиден предназначен хост" #: gwakeonlan/ui.py:181 msgid "Are you sure you want to remove the selected machine?" msgstr "Сигурни ли сте, че искате да премахнете избраната машина?" gwakeonlan-0.7.0/po/ca.po000066400000000000000000000055251374311100600152100ustar00rootroot00000000000000# gWakeOnLan # Wake up your machines using Wake on LAN. # Copyright (C) 2009-2020 Fabio Castelli (Muflone) # Website: https://www.muflone.com/gwakeonlan/ # This file is distributed under the same license of gWakeOnLan. # Catalan translation for gWakeOnLan # # Translators: # Adolfo Jayme-Barrientos, 2015 msgid "" msgstr "" "Project-Id-Version: gWakeOnLan\n" "Report-Msgid-Bugs-To: https://github.com/muflone/gwakeonlan/issues\n" "POT-Creation-Date: 2015-07-18 17:54+0200\n" "PO-Revision-Date: 2017-09-22 11:55+0000\n" "Last-Translator: Adolfo Jayme-Barrientos\n" "Language-Team: Catalan (https://www.transifex.com/p/gwakeonlan/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ui/arpcache.glade.h:1 msgid "IP Address" msgstr "Adreça IP" #: ui/arpcache.glade.h:2 msgid "Host Name" msgstr "" #: ui/arpcache.glade.h:3 msgid "MAC Address" msgstr "Adreça MAC" #: ui/detail.glade.h:1 msgid "ERROR" msgstr "ERROR" #: ui/detail.glade.h:2 msgid "Insert the machine name and its MAC address" msgstr "" #: ui/detail.glade.h:3 msgid "_Machine name:" msgstr "" #: ui/detail.glade.h:4 msgid "MAC _Address:" msgstr "" #: ui/detail.glade.h:5 msgid "_UDP port number:" msgstr "" #: ui/detail.glade.h:6 msgid "Request type:" msgstr "" #: ui/detail.glade.h:7 msgid "_Local (broadcast)" msgstr "" #: ui/detail.glade.h:8 msgid "_Internet" msgstr "" #: ui/detail.glade.h:9 msgid "_Destination host:" msgstr "" #: ui/main.glade.h:1 msgid "Turn on" msgstr "" #: ui/main.glade.h:2 gwakeonlan/detail.py:70 msgid "Add machine" msgstr "" #: ui/main.glade.h:3 msgid "Detect from ARP cache" msgstr "" #: ui/main.glade.h:4 msgid "Import machines from ethers file" msgstr "" #: ui/main.glade.h:5 msgid "Import from ethers file" msgstr "" #: ui/main.glade.h:6 gwakeonlan/detail.py:69 msgid "Edit machine" msgstr "" #: ui/main.glade.h:7 gwakeonlan/ui.py:182 msgid "Delete machine" msgstr "" #: ui/main.glade.h:8 msgid "About" msgstr "Quant a" #: ui/main.glade.h:9 msgid "Machine name" msgstr "" #: ui/main.glade.h:10 msgid "MAC address" msgstr "Adreça MAC" #: ui/main.glade.h:11 msgid "Request type" msgstr "" #: ui/main.glade.h:12 msgid "Destination" msgstr "Destinació" #: ui/main.glade.h:13 msgid "Port NR" msgstr "" #: gwakeonlan/about.py:56 msgid "Contributors:" msgstr "" #: gwakeonlan/arpcache.py:42 msgid "Pick a host from the ARP cache" msgstr "" #: gwakeonlan/detail.py:78 msgid "Missing machine name" msgstr "" #: gwakeonlan/detail.py:82 msgid "Invalid MAC address" msgstr "" #: gwakeonlan/detail.py:86 msgid "Invalid destination host" msgstr "" #: gwakeonlan/ui.py:181 msgid "Are you sure you want to remove the selected machine?" msgstr "" gwakeonlan-0.7.0/po/de.po000066400000000000000000000067741374311100600152240ustar00rootroot00000000000000# gWakeOnLan # Wake up your machines using Wake on LAN. # Copyright (C) 2009-2020 Fabio Castelli (Muflone) # Website: https://www.muflone.com/gwakeonlan/ # This file is distributed under the same license of gWakeOnLan. # German translation for gWakeOnLan # # Translators: # Martin Riemenschneider , 2010 # Ettore Atalan , 2014-2015 # Robin Schneider , 2015 # martinum4 , 2016 msgid "" msgstr "" "Project-Id-Version: gWakeOnLan\n" "Report-Msgid-Bugs-To: https://github.com/muflone/gwakeonlan/issues\n" "POT-Creation-Date: 2015-07-18 17:54+0200\n" "PO-Revision-Date: 2017-09-22 11:55+0000\n" "Last-Translator: martinum4 \n" "Language-Team: German (https://www.transifex.com/p/gwakeonlan/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ui/arpcache.glade.h:1 msgid "IP Address" msgstr "IP-Adresse" #: ui/arpcache.glade.h:2 msgid "Host Name" msgstr "Hostname" #: ui/arpcache.glade.h:3 msgid "MAC Address" msgstr "MAC-Adresse" #: ui/detail.glade.h:1 msgid "ERROR" msgstr "FEHLER" #: ui/detail.glade.h:2 msgid "Insert the machine name and its MAC address" msgstr "Rechnername und die MAC-Adresse eingeben" #: ui/detail.glade.h:3 msgid "_Machine name:" msgstr "_Rechnername:" #: ui/detail.glade.h:4 msgid "MAC _Address:" msgstr "MAC-_Adresse:" #: ui/detail.glade.h:5 msgid "_UDP port number:" msgstr "_UDP-Portnummer:" #: ui/detail.glade.h:6 msgid "Request type:" msgstr "Anfragetyp:" #: ui/detail.glade.h:7 msgid "_Local (broadcast)" msgstr "_Lokal (Broadcast)" #: ui/detail.glade.h:8 msgid "_Internet" msgstr "_Internet" #: ui/detail.glade.h:9 msgid "_Destination host:" msgstr "_Zielrechner:" #: ui/main.glade.h:1 msgid "Turn on" msgstr "Einschalten" #: ui/main.glade.h:2 gwakeonlan/detail.py:70 msgid "Add machine" msgstr "Rechner hinzufügen" #: ui/main.glade.h:3 msgid "Detect from ARP cache" msgstr "Aus ARP-Cache ermitteln" #: ui/main.glade.h:4 msgid "Import machines from ethers file" msgstr "Rechner aus einer Ethers-Datei importieren" #: ui/main.glade.h:5 msgid "Import from ethers file" msgstr "Aus Ethers-Datei importieren" #: ui/main.glade.h:6 gwakeonlan/detail.py:69 msgid "Edit machine" msgstr "Rechner bearbeiten" #: ui/main.glade.h:7 gwakeonlan/ui.py:182 msgid "Delete machine" msgstr "Rechner entfernen" #: ui/main.glade.h:8 msgid "About" msgstr "Über" #: ui/main.glade.h:9 msgid "Machine name" msgstr "Rechnername" #: ui/main.glade.h:10 msgid "MAC address" msgstr "MAC-Adresse" #: ui/main.glade.h:11 msgid "Request type" msgstr "Anfragetyp" #: ui/main.glade.h:12 msgid "Destination" msgstr "Ziel" #: ui/main.glade.h:13 msgid "Port NR" msgstr "Portnummer" #: gwakeonlan/about.py:56 msgid "Contributors:" msgstr "Beitragende:" #: gwakeonlan/arpcache.py:42 msgid "Pick a host from the ARP cache" msgstr "Host aus ARP-Cache wählen" #: gwakeonlan/detail.py:78 msgid "Missing machine name" msgstr "Fehlender Rechnername" #: gwakeonlan/detail.py:82 msgid "Invalid MAC address" msgstr "Ungültige MAC-Adresse" #: gwakeonlan/detail.py:86 msgid "Invalid destination host" msgstr "Ungültiger Zielrechner" #: gwakeonlan/ui.py:181 msgid "Are you sure you want to remove the selected machine?" msgstr "Möchten Sie den ausgewählten Rechner wirklich entfernen?" gwakeonlan-0.7.0/po/en.po000066400000000000000000000061001374311100600152150ustar00rootroot00000000000000# gWakeOnLan # Wake up your machines using Wake on LAN. # Copyright (C) 2009-2020 Fabio Castelli (Muflone) # Website: https://www.muflone.com/gwakeonlan/ # This file is distributed under the same license of gWakeOnLan. # English translation for gWakeOnLan # # Translators: # Fabio Castelli (Muflone) , 2009 msgid "" msgstr "" "Project-Id-Version: gWakeOnLan\n" "Report-Msgid-Bugs-To: https://github.com/muflone/gwakeonlan/issues\n" "POT-Creation-Date: 2010-02-20 13:27+0100\n" "PO-Revision-Date: 2013-11-20 10:36+0000\n" "Last-Translator: Fabio Castelli (Muflone) \n" "Language-Team: English (United States) (https://www.transifex.com/p/gwakeonlan/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: en_US\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../data/gwakeonlan.glade.h:1 msgid "Insert the machine name and its MAC address" msgstr "Insert the machine name and its MAC address" #: ../data/gwakeonlan.glade.h:2 msgid "About" msgstr "About" #: ../data/gwakeonlan.glade.h:3 ../gwakeonlan:90 msgid "Add machine" msgstr "Add machine" #: ../data/gwakeonlan.glade.h:4 ../gwakeonlan:277 msgid "Delete machine" msgstr "Delete machine" #: ../data/gwakeonlan.glade.h:5 ../gwakeonlan:90 msgid "Edit machine" msgstr "Edit machine" #: ../data/gwakeonlan.glade.h:6 msgid "MAC _Address:" msgstr "MAC _Address:" #: ../data/gwakeonlan.glade.h:7 msgid "Request type:" msgstr "Request type:" #: ../data/gwakeonlan.glade.h:8 msgid "Turn on" msgstr "" #: ../data/gwakeonlan.glade.h:9 msgid "_Destination host:" msgstr "_Destination host:" #: ../data/gwakeonlan.glade.h:10 msgid "_Internet" msgstr "_Internet" #: ../data/gwakeonlan.glade.h:11 msgid "_Local (broadcast)" msgstr "_Local (broadcast)" #: ../data/gwakeonlan.glade.h:12 msgid "_Machine name:" msgstr "_Machine name:" #: ../data/gwakeonlan.glade.h:13 msgid "_UDP port number:" msgstr "_UDP port number:" #: ../gwakeonlan:115 msgid "Missing machine name" msgstr "Missing machine name" #: ../gwakeonlan:117 msgid "Invalid MAC address" msgstr "Invalid MAC address" #: ../gwakeonlan:119 msgid "Invalid destination host" msgstr "Invalid destination host" #: ../gwakeonlan:140 msgid "Local" msgstr "Local" #: ../gwakeonlan:140 msgid "Internet" msgstr "Internet" #: ../gwakeonlan:275 msgid "Are you sure you want to remove the selected machine?" msgstr "Are you sure you want to remove the selected machine?" #: ../gwakeonlan:290 msgid "A GTK+ utility to awake turned off computers through the Wake on LAN feature." msgstr "A GTK+ utility to awake turned off computers through the Wake on LAN feature." #: ../gwakeonlan:357 msgid "No machines detected" msgstr "No machines detected" #: ../gwakeonlan:378 msgid "Machine name" msgstr "Machine name" #: ../gwakeonlan:382 msgid "MAC address" msgstr "MAC address" #: ../gwakeonlan:386 msgid "Request type" msgstr "Request type" #: ../gwakeonlan:390 msgid "Destination" msgstr "Destination" #: ../gwakeonlan:394 msgid "Port NR" msgstr "Port NR" gwakeonlan-0.7.0/po/es.po000066400000000000000000000070761374311100600152370ustar00rootroot00000000000000# gWakeOnLan # Wake up your machines using Wake on LAN. # Copyright (C) 2009-2020 Fabio Castelli (Muflone) # Website: https://www.muflone.com/gwakeonlan/ # This file is distributed under the same license of gWakeOnLan. # Spanish translation for gWakeOnLan # # Translators: # Matias Bellone , 2010 # Luca Della Ghezza , 2010 # Adolfo Jayme Barrientos , 2012-2015 msgid "" msgstr "" "Project-Id-Version: gWakeOnLan\n" "Report-Msgid-Bugs-To: https://github.com/muflone/gwakeonlan/issues\n" "POT-Creation-Date: 2015-07-18 17:54+0200\n" "PO-Revision-Date: 2015-07-20 00:57+0000\n" "Last-Translator: Adolfo Jayme Barrientos\n" "Language-Team: Spanish (https://www.transifex.com/p/gwakeonlan/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ui/arpcache.glade.h:1 msgid "IP Address" msgstr "Dirección IP" #: ui/arpcache.glade.h:2 msgid "Host Name" msgstr "Nombre del equipo" #: ui/arpcache.glade.h:3 msgid "MAC Address" msgstr "Dirección MAC" #: ui/detail.glade.h:1 msgid "ERROR" msgstr "ERROR" #: ui/detail.glade.h:2 msgid "Insert the machine name and its MAC address" msgstr "Introduzca el nombre del equipo y su dirección MAC" #: ui/detail.glade.h:3 msgid "_Machine name:" msgstr "_Nombre del equipo:" #: ui/detail.glade.h:4 msgid "MAC _Address:" msgstr "Dirección M_AC:" #: ui/detail.glade.h:5 msgid "_UDP port number:" msgstr "Número de puerto _UDP:" #: ui/detail.glade.h:6 msgid "Request type:" msgstr "Tipo de solicitud:" #: ui/detail.glade.h:7 msgid "_Local (broadcast)" msgstr "_Local (transmisión)" #: ui/detail.glade.h:8 msgid "_Internet" msgstr "_Internet" #: ui/detail.glade.h:9 msgid "_Destination host:" msgstr "Equipo de _destino:" #: ui/main.glade.h:1 msgid "Turn on" msgstr "Encender" #: ui/main.glade.h:2 gwakeonlan/detail.py:70 msgid "Add machine" msgstr "Añadir equipo" #: ui/main.glade.h:3 msgid "Detect from ARP cache" msgstr "Detectar a partir de caché ARP" #: ui/main.glade.h:4 msgid "Import machines from ethers file" msgstr "Importar equipos de archivo ethers" #: ui/main.glade.h:5 msgid "Import from ethers file" msgstr "Importar de archivo ethers" #: ui/main.glade.h:6 gwakeonlan/detail.py:69 msgid "Edit machine" msgstr "Editar equipo" #: ui/main.glade.h:7 gwakeonlan/ui.py:182 msgid "Delete machine" msgstr "Eliminar equipo" #: ui/main.glade.h:8 msgid "About" msgstr "Acerca de" #: ui/main.glade.h:9 msgid "Machine name" msgstr "Nombre del equipo" #: ui/main.glade.h:10 msgid "MAC address" msgstr "Dirección MAC" #: ui/main.glade.h:11 msgid "Request type" msgstr "Tipo de solicitud" #: ui/main.glade.h:12 msgid "Destination" msgstr "Destino" #: ui/main.glade.h:13 msgid "Port NR" msgstr "Puerto n.º" #: gwakeonlan/about.py:56 msgid "Contributors:" msgstr "Colaboradores:" #: gwakeonlan/arpcache.py:42 msgid "Pick a host from the ARP cache" msgstr "Elija un equipo de la caché ARP" #: gwakeonlan/detail.py:78 msgid "Missing machine name" msgstr "Falta el nombre de la máquina" #: gwakeonlan/detail.py:82 msgid "Invalid MAC address" msgstr "La dirección MAC no es válida" #: gwakeonlan/detail.py:86 msgid "Invalid destination host" msgstr "El equipo de destino no es válido" #: gwakeonlan/ui.py:181 msgid "Are you sure you want to remove the selected machine?" msgstr "¿Confirma que quiere eliminar el equipo seleccionado?" gwakeonlan-0.7.0/po/eu.po000066400000000000000000000063131374311100600152320ustar00rootroot00000000000000# gWakeOnLan # Wake up your machines using Wake on LAN. # Copyright (C) 2009-2020 Fabio Castelli (Muflone) # Website: https://www.muflone.com/gwakeonlan/ # This file is distributed under the same license of gWakeOnLan. # Basque translation for gWakeOnLan # # Translators: # Asier Iturralde Sarasola , 2011 msgid "" msgstr "" "Project-Id-Version: gWakeOnLan\n" "Report-Msgid-Bugs-To: https://github.com/muflone/gwakeonlan/issues\n" "POT-Creation-Date: 2015-07-18 17:54+0200\n" "PO-Revision-Date: 2015-07-18 16:35+0000\n" "Last-Translator: Asier Iturralde Sarasola \n" "Language-Team: Basque (https://www.transifex.com/p/gwakeonlan/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: eu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ui/arpcache.glade.h:1 msgid "IP Address" msgstr "" #: ui/arpcache.glade.h:2 msgid "Host Name" msgstr "" #: ui/arpcache.glade.h:3 msgid "MAC Address" msgstr "" #: ui/detail.glade.h:1 msgid "ERROR" msgstr "" #: ui/detail.glade.h:2 msgid "Insert the machine name and its MAC address" msgstr "Idatzi gailuaren izena eta MAC helbidea" #: ui/detail.glade.h:3 msgid "_Machine name:" msgstr "_Gailuaren izena:" #: ui/detail.glade.h:4 msgid "MAC _Address:" msgstr "_MAC Helbidea:" #: ui/detail.glade.h:5 msgid "_UDP port number:" msgstr "_UDP ataka zenbakia:" #: ui/detail.glade.h:6 msgid "Request type:" msgstr "Eskaera mota:" #: ui/detail.glade.h:7 msgid "_Local (broadcast)" msgstr "_Lokala (difusioa)" #: ui/detail.glade.h:8 msgid "_Internet" msgstr "_Internet" #: ui/detail.glade.h:9 msgid "_Destination host:" msgstr "_Helburuko ostalaria:" #: ui/main.glade.h:1 msgid "Turn on" msgstr "" #: ui/main.glade.h:2 gwakeonlan/detail.py:70 msgid "Add machine" msgstr "Gehitu gailua" #: ui/main.glade.h:3 msgid "Detect from ARP cache" msgstr "" #: ui/main.glade.h:4 msgid "Import machines from ethers file" msgstr "" #: ui/main.glade.h:5 msgid "Import from ethers file" msgstr "" #: ui/main.glade.h:6 gwakeonlan/detail.py:69 msgid "Edit machine" msgstr "Editatu gailua" #: ui/main.glade.h:7 gwakeonlan/ui.py:182 msgid "Delete machine" msgstr "Ezabatu gailua" #: ui/main.glade.h:8 msgid "About" msgstr "Honi buruz" #: ui/main.glade.h:9 msgid "Machine name" msgstr "Gailuaren izena" #: ui/main.glade.h:10 msgid "MAC address" msgstr "MAC helbidea" #: ui/main.glade.h:11 msgid "Request type" msgstr "Eskaera mota" #: ui/main.glade.h:12 msgid "Destination" msgstr "Helburua" #: ui/main.glade.h:13 msgid "Port NR" msgstr "Ataka zenbakia" #: gwakeonlan/about.py:56 msgid "Contributors:" msgstr "" #: gwakeonlan/arpcache.py:42 msgid "Pick a host from the ARP cache" msgstr "" #: gwakeonlan/detail.py:78 msgid "Missing machine name" msgstr "Gailuaren izena falta da" #: gwakeonlan/detail.py:82 msgid "Invalid MAC address" msgstr "MAC helbide baliogabea" #: gwakeonlan/detail.py:86 msgid "Invalid destination host" msgstr "Helburuko ostalari baliogabea" #: gwakeonlan/ui.py:181 msgid "Are you sure you want to remove the selected machine?" msgstr "Ziur zaude hautatutako gailua ezabatu nahi duzula?" gwakeonlan-0.7.0/po/fr.po000066400000000000000000000062661374311100600152370ustar00rootroot00000000000000# gWakeOnLan # Wake up your machines using Wake on LAN. # Copyright (C) 2009-2020 Fabio Castelli (Muflone) # Website: https://www.muflone.com/gwakeonlan/ # This file is distributed under the same license of gWakeOnLan. # French translation for gWakeOnLan # # Translators: # Emmanuel , 2010 msgid "" msgstr "" "Project-Id-Version: gWakeOnLan\n" "Report-Msgid-Bugs-To: https://github.com/muflone/gwakeonlan/issues\n" "POT-Creation-Date: 2015-07-18 17:54+0200\n" "PO-Revision-Date: 2015-07-18 16:35+0000\n" "Last-Translator: Emmanuel \n" "Language-Team: French (https://www.transifex.com/p/gwakeonlan/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: ui/arpcache.glade.h:1 msgid "IP Address" msgstr "" #: ui/arpcache.glade.h:2 msgid "Host Name" msgstr "" #: ui/arpcache.glade.h:3 msgid "MAC Address" msgstr "" #: ui/detail.glade.h:1 msgid "ERROR" msgstr "" #: ui/detail.glade.h:2 msgid "Insert the machine name and its MAC address" msgstr "Insérer le nom de la machine et son adresse MAC" #: ui/detail.glade.h:3 msgid "_Machine name:" msgstr "Nom de la _machine:" #: ui/detail.glade.h:4 msgid "MAC _Address:" msgstr "_Adresse MAC:" #: ui/detail.glade.h:5 msgid "_UDP port number:" msgstr "Numéro porte _UDP:" #: ui/detail.glade.h:6 msgid "Request type:" msgstr "Type de requête:" #: ui/detail.glade.h:7 msgid "_Local (broadcast)" msgstr "_Local (diffusion)" #: ui/detail.glade.h:8 msgid "_Internet" msgstr "_Internet" #: ui/detail.glade.h:9 msgid "_Destination host:" msgstr "Hôte de _destination:" #: ui/main.glade.h:1 msgid "Turn on" msgstr "" #: ui/main.glade.h:2 gwakeonlan/detail.py:70 msgid "Add machine" msgstr "Ajouter" #: ui/main.glade.h:3 msgid "Detect from ARP cache" msgstr "" #: ui/main.glade.h:4 msgid "Import machines from ethers file" msgstr "" #: ui/main.glade.h:5 msgid "Import from ethers file" msgstr "" #: ui/main.glade.h:6 gwakeonlan/detail.py:69 msgid "Edit machine" msgstr "Éditer" #: ui/main.glade.h:7 gwakeonlan/ui.py:182 msgid "Delete machine" msgstr "Effacer" #: ui/main.glade.h:8 msgid "About" msgstr "À propos" #: ui/main.glade.h:9 msgid "Machine name" msgstr "Nom de la machine" #: ui/main.glade.h:10 msgid "MAC address" msgstr "Adresse MAC" #: ui/main.glade.h:11 msgid "Request type" msgstr "Type de requête" #: ui/main.glade.h:12 msgid "Destination" msgstr "Destination" #: ui/main.glade.h:13 msgid "Port NR" msgstr "Porte NR" #: gwakeonlan/about.py:56 msgid "Contributors:" msgstr "" #: gwakeonlan/arpcache.py:42 msgid "Pick a host from the ARP cache" msgstr "" #: gwakeonlan/detail.py:78 msgid "Missing machine name" msgstr "Nom de la machine manquant" #: gwakeonlan/detail.py:82 msgid "Invalid MAC address" msgstr "Adresse MAC pas valide" #: gwakeonlan/detail.py:86 msgid "Invalid destination host" msgstr "Hôte de destination pas valide" #: gwakeonlan/ui.py:181 msgid "Are you sure you want to remove the selected machine?" msgstr "Êtes-vous sûr de vouloir supprimer la machine sélectionnée?" gwakeonlan-0.7.0/po/gwakeonlan.pot000066400000000000000000000052211374311100600171300ustar00rootroot00000000000000# gWakeOnLan # Wake up your machines using Wake on LAN. # Copyright (C) 2009-2020 Fabio Castelli (Muflone) # Website: https://www.muflone.com/gwakeonlan/ # This file is distributed under the same license of gWakeOnLan. # X translation for gWakeOnLan # #, fuzzy msgid "" msgstr "" "Project-Id-Version: gWakeOnLan \n" "Report-Msgid-Bugs-To: https://github.com/muflone/gwakeonlan/issues \n" "POT-Creation-Date: 2015-07-18 17:54+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: https://www.transifex.com/projects/p/gwakeonlan/ \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: ui/arpcache.glade.h:1 msgid "IP Address" msgstr "" #: ui/arpcache.glade.h:2 msgid "Host Name" msgstr "" #: ui/arpcache.glade.h:3 msgid "MAC Address" msgstr "" #: ui/detail.glade.h:1 msgid "ERROR" msgstr "" #: ui/detail.glade.h:2 msgid "Insert the machine name and its MAC address" msgstr "" #: ui/detail.glade.h:3 msgid "_Machine name:" msgstr "" #: ui/detail.glade.h:4 msgid "MAC _Address:" msgstr "" #: ui/detail.glade.h:5 msgid "_UDP port number:" msgstr "" #: ui/detail.glade.h:6 msgid "Request type:" msgstr "" #: ui/detail.glade.h:7 msgid "_Local (broadcast)" msgstr "" #: ui/detail.glade.h:8 msgid "_Internet" msgstr "" #: ui/detail.glade.h:9 msgid "_Destination host:" msgstr "" #: ui/main.glade.h:1 msgid "Turn on" msgstr "" #: ui/main.glade.h:2 gwakeonlan/detail.py:70 msgid "Add machine" msgstr "" #: ui/main.glade.h:3 msgid "Detect from ARP cache" msgstr "" #: ui/main.glade.h:4 msgid "Import machines from ethers file" msgstr "" #: ui/main.glade.h:5 msgid "Import from ethers file" msgstr "" #: ui/main.glade.h:6 gwakeonlan/detail.py:69 msgid "Edit machine" msgstr "" #: ui/main.glade.h:7 gwakeonlan/ui.py:182 msgid "Delete machine" msgstr "" #: ui/main.glade.h:8 msgid "About" msgstr "" #: ui/main.glade.h:9 msgid "Machine name" msgstr "" #: ui/main.glade.h:10 msgid "MAC address" msgstr "" #: ui/main.glade.h:11 msgid "Request type" msgstr "" #: ui/main.glade.h:12 msgid "Destination" msgstr "" #: ui/main.glade.h:13 msgid "Port NR" msgstr "" #: gwakeonlan/about.py:56 msgid "Contributors:" msgstr "" #: gwakeonlan/arpcache.py:42 msgid "Pick a host from the ARP cache" msgstr "" #: gwakeonlan/detail.py:78 msgid "Missing machine name" msgstr "" #: gwakeonlan/detail.py:82 msgid "Invalid MAC address" msgstr "" #: gwakeonlan/detail.py:86 msgid "Invalid destination host" msgstr "" #: gwakeonlan/ui.py:181 msgid "Are you sure you want to remove the selected machine?" msgstr "" gwakeonlan-0.7.0/po/he.po000066400000000000000000000064201374311100600152140ustar00rootroot00000000000000# gWakeOnLan # Wake up your machines using Wake on LAN. # Copyright (C) 2009-2020 Fabio Castelli (Muflone) # Website: https://www.muflone.com/gwakeonlan/ # This file is distributed under the same license of gWakeOnLan. # Hebrew translation for gWakeOnLan # # Translators: # GenghisKhan , 2013 msgid "" msgstr "" "Project-Id-Version: gWakeOnLan\n" "Report-Msgid-Bugs-To: https://github.com/muflone/gwakeonlan/issues\n" "POT-Creation-Date: 2015-07-18 17:54+0200\n" "PO-Revision-Date: 2015-07-18 16:35+0000\n" "Last-Translator: GenghisKhan \n" "Language-Team: Hebrew (https://www.transifex.com/p/gwakeonlan/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ui/arpcache.glade.h:1 msgid "IP Address" msgstr "" #: ui/arpcache.glade.h:2 msgid "Host Name" msgstr "" #: ui/arpcache.glade.h:3 msgid "MAC Address" msgstr "" #: ui/detail.glade.h:1 msgid "ERROR" msgstr "" #: ui/detail.glade.h:2 msgid "Insert the machine name and its MAC address" msgstr "שבץ את שם המכונה וגם כתובת MAC של אותה מכונה" #: ui/detail.glade.h:3 msgid "_Machine name:" msgstr "שם _מכונה:" #: ui/detail.glade.h:4 msgid "MAC _Address:" msgstr "_כתובת MAC:" #: ui/detail.glade.h:5 msgid "_UDP port number:" msgstr "מספר פורט _UDP:" #: ui/detail.glade.h:6 msgid "Request type:" msgstr "טיפוס בקשה:" #: ui/detail.glade.h:7 msgid "_Local (broadcast)" msgstr "_מקומי (שידור)" #: ui/detail.glade.h:8 msgid "_Internet" msgstr "_אינטרנט" #: ui/detail.glade.h:9 msgid "_Destination host:" msgstr "_מארח יעד:" #: ui/main.glade.h:1 msgid "Turn on" msgstr "הדלק" #: ui/main.glade.h:2 gwakeonlan/detail.py:70 msgid "Add machine" msgstr "הוסף מכונה" #: ui/main.glade.h:3 msgid "Detect from ARP cache" msgstr "" #: ui/main.glade.h:4 msgid "Import machines from ethers file" msgstr "" #: ui/main.glade.h:5 msgid "Import from ethers file" msgstr "" #: ui/main.glade.h:6 gwakeonlan/detail.py:69 msgid "Edit machine" msgstr "ערוך מכונה" #: ui/main.glade.h:7 gwakeonlan/ui.py:182 msgid "Delete machine" msgstr "מחק מכונה" #: ui/main.glade.h:8 msgid "About" msgstr "אודות" #: ui/main.glade.h:9 msgid "Machine name" msgstr "שם מכונה" #: ui/main.glade.h:10 msgid "MAC address" msgstr "כתובת MAC" #: ui/main.glade.h:11 msgid "Request type" msgstr "טיפוס בקשה" #: ui/main.glade.h:12 msgid "Destination" msgstr "יעד" #: ui/main.glade.h:13 msgid "Port NR" msgstr "פורט NR" #: gwakeonlan/about.py:56 msgid "Contributors:" msgstr "" #: gwakeonlan/arpcache.py:42 msgid "Pick a host from the ARP cache" msgstr "" #: gwakeonlan/detail.py:78 msgid "Missing machine name" msgstr "שם מכונה חסר" #: gwakeonlan/detail.py:82 msgid "Invalid MAC address" msgstr "כתובת MAC שגויה" #: gwakeonlan/detail.py:86 msgid "Invalid destination host" msgstr "מארח יעד שגוי" #: gwakeonlan/ui.py:181 msgid "Are you sure you want to remove the selected machine?" msgstr "האם אתה בטוח שברצונך להסיר את המכונה הנבחרת?" gwakeonlan-0.7.0/po/it.po000066400000000000000000000066721374311100600152450ustar00rootroot00000000000000# gWakeOnLan # Wake up your machines using Wake on LAN. # Copyright (C) 2009-2020 Fabio Castelli (Muflone) # Website: https://www.muflone.com/gwakeonlan/ # This file is distributed under the same license of gWakeOnLan. # Italian translation for gWakeOnLan # # Translators: # Fabio Castelli (Muflone) , 2009 msgid "" msgstr "" "Project-Id-Version: gWakeOnLan\n" "Report-Msgid-Bugs-To: https://github.com/muflone/gwakeonlan/issues\n" "POT-Creation-Date: 2015-07-18 17:54+0200\n" "PO-Revision-Date: 2015-07-18 16:35+0000\n" "Last-Translator: Fabio Castelli (Muflone) \n" "Language-Team: Italian (https://www.transifex.com/p/gwakeonlan/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ui/arpcache.glade.h:1 msgid "IP Address" msgstr "Indirizzo IP" #: ui/arpcache.glade.h:2 msgid "Host Name" msgstr "Nome del sistema" #: ui/arpcache.glade.h:3 msgid "MAC Address" msgstr "Indirizzo MAC" #: ui/detail.glade.h:1 msgid "ERROR" msgstr "ERRORE" #: ui/detail.glade.h:2 msgid "Insert the machine name and its MAC address" msgstr "Inserisci il nome della macchina e il suo indirizzo MAC" #: ui/detail.glade.h:3 msgid "_Machine name:" msgstr "Nome della _macchina:" #: ui/detail.glade.h:4 msgid "MAC _Address:" msgstr "Indirizzo M_AC:" #: ui/detail.glade.h:5 msgid "_UDP port number:" msgstr "Numero di porta _UDP:" #: ui/detail.glade.h:6 msgid "Request type:" msgstr "Tipo di richiesta:" #: ui/detail.glade.h:7 msgid "_Local (broadcast)" msgstr "_Locale (broadcast)" #: ui/detail.glade.h:8 msgid "_Internet" msgstr "_Internet" #: ui/detail.glade.h:9 msgid "_Destination host:" msgstr "Sistema di _destinazione:" #: ui/main.glade.h:1 msgid "Turn on" msgstr "Accendi" #: ui/main.glade.h:2 gwakeonlan/detail.py:70 msgid "Add machine" msgstr "Aggiungi" #: ui/main.glade.h:3 msgid "Detect from ARP cache" msgstr "Rileva dalla cache ARP" #: ui/main.glade.h:4 msgid "Import machines from ethers file" msgstr "Importa macchine dal file ethers" #: ui/main.glade.h:5 msgid "Import from ethers file" msgstr "Importa da file ethers" #: ui/main.glade.h:6 gwakeonlan/detail.py:69 msgid "Edit machine" msgstr "Modifica" #: ui/main.glade.h:7 gwakeonlan/ui.py:182 msgid "Delete machine" msgstr "Elimina" #: ui/main.glade.h:8 msgid "About" msgstr "Informazioni" #: ui/main.glade.h:9 msgid "Machine name" msgstr "Nome della macchina" #: ui/main.glade.h:10 msgid "MAC address" msgstr "Indirizzo MAC" #: ui/main.glade.h:11 msgid "Request type" msgstr "Tipo di richiesta" #: ui/main.glade.h:12 msgid "Destination" msgstr "Destinazione" #: ui/main.glade.h:13 msgid "Port NR" msgstr "NR porta" #: gwakeonlan/about.py:56 msgid "Contributors:" msgstr "Contributori" #: gwakeonlan/arpcache.py:42 msgid "Pick a host from the ARP cache" msgstr "Scegli un sistema dalla cache ARP" #: gwakeonlan/detail.py:78 msgid "Missing machine name" msgstr "Nome della macchina mancante" #: gwakeonlan/detail.py:82 msgid "Invalid MAC address" msgstr "Indirizzo MAC non valido" #: gwakeonlan/detail.py:86 msgid "Invalid destination host" msgstr "Sistema di destinazione non valido" #: gwakeonlan/ui.py:181 msgid "Are you sure you want to remove the selected machine?" msgstr "Sicuro di voler eliminare la macchina selezionata?" gwakeonlan-0.7.0/po/ko_KR.po000066400000000000000000000065511374311100600156320ustar00rootroot00000000000000# gWakeOnLan # Wake up your machines using Wake on LAN. # Copyright (C) 2009-2020 Fabio Castelli (Muflone) # Website: https://www.muflone.com/gwakeonlan/ # This file is distributed under the same license of gWakeOnLan. # Korean translation for gWakeOnLan # # Translators: # Ian Snyder , 2017 msgid "" msgstr "" "Project-Id-Version: gWakeOnLan\n" "Report-Msgid-Bugs-To: https://github.com/muflone/gwakeonlan/issues\n" "POT-Creation-Date: 2015-07-18 17:54+0200\n" "PO-Revision-Date: 2017-10-06 14:56+0000\n" "Last-Translator: Ian Snyder \n" "Language-Team: Korean (Korea) (https://www.transifex.com/p/gwakeonlan/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ko_KR\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ui/arpcache.glade.h:1 msgid "IP Address" msgstr "IP 주소" #: ui/arpcache.glade.h:2 msgid "Host Name" msgstr "호스트네임" #: ui/arpcache.glade.h:3 msgid "MAC Address" msgstr "MAC 주소" #: ui/detail.glade.h:1 msgid "ERROR" msgstr "오류" #: ui/detail.glade.h:2 msgid "Insert the machine name and its MAC address" msgstr "장치 이름과 장치의 MAC 주소를 입력하세요" #: ui/detail.glade.h:3 msgid "_Machine name:" msgstr "_장치 이름:" #: ui/detail.glade.h:4 msgid "MAC _Address:" msgstr "MAC _주소:" #: ui/detail.glade.h:5 msgid "_UDP port number:" msgstr "_UDP 포트 번호:" #: ui/detail.glade.h:6 msgid "Request type:" msgstr "요청 타입:" #: ui/detail.glade.h:7 msgid "_Local (broadcast)" msgstr "_로컬 (broadcast)" #: ui/detail.glade.h:8 msgid "_Internet" msgstr "_인터넷" #: ui/detail.glade.h:9 msgid "_Destination host:" msgstr "_도착지 호스트:" #: ui/main.glade.h:1 msgid "Turn on" msgstr "켜기" #: ui/main.glade.h:2 gwakeonlan/detail.py:70 msgid "Add machine" msgstr "장치 추가" #: ui/main.glade.h:3 msgid "Detect from ARP cache" msgstr "" #: ui/main.glade.h:4 msgid "Import machines from ethers file" msgstr "ethers 파일에서 장치 불러오기" #: ui/main.glade.h:5 msgid "Import from ethers file" msgstr "ethers 파일에서 불러오기" #: ui/main.glade.h:6 gwakeonlan/detail.py:69 msgid "Edit machine" msgstr "장치 수정" #: ui/main.glade.h:7 gwakeonlan/ui.py:182 msgid "Delete machine" msgstr "장치 제거" #: ui/main.glade.h:8 msgid "About" msgstr "자세히" #: ui/main.glade.h:9 msgid "Machine name" msgstr "장치 이름" #: ui/main.glade.h:10 msgid "MAC address" msgstr "MAC 주소" #: ui/main.glade.h:11 msgid "Request type" msgstr "요청 타입" #: ui/main.glade.h:12 msgid "Destination" msgstr "도착지" #: ui/main.glade.h:13 msgid "Port NR" msgstr "" #: gwakeonlan/about.py:56 msgid "Contributors:" msgstr "기여자:" #: gwakeonlan/arpcache.py:42 msgid "Pick a host from the ARP cache" msgstr "" #: gwakeonlan/detail.py:78 msgid "Missing machine name" msgstr "실종된 장치 이름" #: gwakeonlan/detail.py:82 msgid "Invalid MAC address" msgstr "올바르지 않은 MAC 주소" #: gwakeonlan/detail.py:86 msgid "Invalid destination host" msgstr "올바르지 않은 도착지 호스트" #: gwakeonlan/ui.py:181 msgid "Are you sure you want to remove the selected machine?" msgstr "정말로 선택된 이 장치를 제거하시겠습니까?" gwakeonlan-0.7.0/po/lt.po000066400000000000000000000060101374311100600152320ustar00rootroot00000000000000# gWakeOnLan # Wake up your machines using Wake on LAN. # Copyright (C) 2009-2020 Fabio Castelli (Muflone) # Website: https://www.muflone.com/gwakeonlan/ # This file is distributed under the same license of gWakeOnLan. # Lithuanian translation for gWakeOnLan # # Translators: # Moo, 2016 msgid "" msgstr "" "Project-Id-Version: gWakeOnLan\n" "Report-Msgid-Bugs-To: https://github.com/muflone/gwakeonlan/issues\n" "POT-Creation-Date: 2015-07-18 17:54+0200\n" "PO-Revision-Date: 2017-09-22 16:08+0000\n" "Last-Translator: Moo\n" "Language-Team: Lithuanian (https://www.transifex.com/p/gwakeonlan/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lt\n" "Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n" #: ui/arpcache.glade.h:1 msgid "IP Address" msgstr "IP adresas" #: ui/arpcache.glade.h:2 msgid "Host Name" msgstr "" #: ui/arpcache.glade.h:3 msgid "MAC Address" msgstr "MAC adresas" #: ui/detail.glade.h:1 msgid "ERROR" msgstr "KLAIDA" #: ui/detail.glade.h:2 msgid "Insert the machine name and its MAC address" msgstr "" #: ui/detail.glade.h:3 msgid "_Machine name:" msgstr "" #: ui/detail.glade.h:4 msgid "MAC _Address:" msgstr "MAC _adresas:" #: ui/detail.glade.h:5 msgid "_UDP port number:" msgstr "_UDP prievado numeris:" #: ui/detail.glade.h:6 msgid "Request type:" msgstr "Užklausos tipas:" #: ui/detail.glade.h:7 msgid "_Local (broadcast)" msgstr "" #: ui/detail.glade.h:8 msgid "_Internet" msgstr "" #: ui/detail.glade.h:9 msgid "_Destination host:" msgstr "" #: ui/main.glade.h:1 msgid "Turn on" msgstr "Įjungti" #: ui/main.glade.h:2 gwakeonlan/detail.py:70 msgid "Add machine" msgstr "" #: ui/main.glade.h:3 msgid "Detect from ARP cache" msgstr "" #: ui/main.glade.h:4 msgid "Import machines from ethers file" msgstr "" #: ui/main.glade.h:5 msgid "Import from ethers file" msgstr "" #: ui/main.glade.h:6 gwakeonlan/detail.py:69 msgid "Edit machine" msgstr "" #: ui/main.glade.h:7 gwakeonlan/ui.py:182 msgid "Delete machine" msgstr "" #: ui/main.glade.h:8 msgid "About" msgstr "Apie" #: ui/main.glade.h:9 msgid "Machine name" msgstr "" #: ui/main.glade.h:10 msgid "MAC address" msgstr "MAC adresas" #: ui/main.glade.h:11 msgid "Request type" msgstr "" #: ui/main.glade.h:12 msgid "Destination" msgstr "" #: ui/main.glade.h:13 msgid "Port NR" msgstr "" #: gwakeonlan/about.py:56 msgid "Contributors:" msgstr "Talkininkai:" #: gwakeonlan/arpcache.py:42 msgid "Pick a host from the ARP cache" msgstr "" #: gwakeonlan/detail.py:78 msgid "Missing machine name" msgstr "" #: gwakeonlan/detail.py:82 msgid "Invalid MAC address" msgstr "Neteisingas MAC adresas" #: gwakeonlan/detail.py:86 msgid "Invalid destination host" msgstr "" #: gwakeonlan/ui.py:181 msgid "Are you sure you want to remove the selected machine?" msgstr "" gwakeonlan-0.7.0/po/nl.po000066400000000000000000000062361374311100600152360ustar00rootroot00000000000000# gWakeOnLan # Wake up your machines using Wake on LAN. # Copyright (C) 2009-2020 Fabio Castelli (Muflone) # Website: https://www.muflone.com/gwakeonlan/ # This file is distributed under the same license of gWakeOnLan. # Dutch translation for gWakeOnLan # # Translators: # Thomas De Rocker , 2010 msgid "" msgstr "" "Project-Id-Version: gWakeOnLan\n" "Report-Msgid-Bugs-To: https://github.com/muflone/gwakeonlan/issues\n" "POT-Creation-Date: 2015-07-18 17:54+0200\n" "PO-Revision-Date: 2015-07-18 16:35+0000\n" "Last-Translator: Thomas De Rocker \n" "Language-Team: Dutch (https://www.transifex.com/p/gwakeonlan/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ui/arpcache.glade.h:1 msgid "IP Address" msgstr "" #: ui/arpcache.glade.h:2 msgid "Host Name" msgstr "" #: ui/arpcache.glade.h:3 msgid "MAC Address" msgstr "" #: ui/detail.glade.h:1 msgid "ERROR" msgstr "" #: ui/detail.glade.h:2 msgid "Insert the machine name and its MAC address" msgstr "Voeg de computernaam en zijn MAC-adres in" #: ui/detail.glade.h:3 msgid "_Machine name:" msgstr "_Computernaamnaam:" #: ui/detail.glade.h:4 msgid "MAC _Address:" msgstr "MAC-_adres:" #: ui/detail.glade.h:5 msgid "_UDP port number:" msgstr "_UDP-poortnummer:" #: ui/detail.glade.h:6 msgid "Request type:" msgstr "Type aanvraag:" #: ui/detail.glade.h:7 msgid "_Local (broadcast)" msgstr "_Lokaal (uitzenden)" #: ui/detail.glade.h:8 msgid "_Internet" msgstr "_Internet" #: ui/detail.glade.h:9 msgid "_Destination host:" msgstr "_Doelcomputer:" #: ui/main.glade.h:1 msgid "Turn on" msgstr "Aanzetten" #: ui/main.glade.h:2 gwakeonlan/detail.py:70 msgid "Add machine" msgstr "Toevoegen" #: ui/main.glade.h:3 msgid "Detect from ARP cache" msgstr "" #: ui/main.glade.h:4 msgid "Import machines from ethers file" msgstr "" #: ui/main.glade.h:5 msgid "Import from ethers file" msgstr "" #: ui/main.glade.h:6 gwakeonlan/detail.py:69 msgid "Edit machine" msgstr "Bewerken" #: ui/main.glade.h:7 gwakeonlan/ui.py:182 msgid "Delete machine" msgstr "Wissen" #: ui/main.glade.h:8 msgid "About" msgstr "Over" #: ui/main.glade.h:9 msgid "Machine name" msgstr "Computernaam" #: ui/main.glade.h:10 msgid "MAC address" msgstr "MAC-adre" #: ui/main.glade.h:11 msgid "Request type" msgstr "Type aanvraag" #: ui/main.glade.h:12 msgid "Destination" msgstr "Bestemming" #: ui/main.glade.h:13 msgid "Port NR" msgstr "Poortnummer" #: gwakeonlan/about.py:56 msgid "Contributors:" msgstr "" #: gwakeonlan/arpcache.py:42 msgid "Pick a host from the ARP cache" msgstr "" #: gwakeonlan/detail.py:78 msgid "Missing machine name" msgstr "Ontbrekende computernaam" #: gwakeonlan/detail.py:82 msgid "Invalid MAC address" msgstr "Ongeldig MAC-adres" #: gwakeonlan/detail.py:86 msgid "Invalid destination host" msgstr "Ongeldige doelcomputer" #: gwakeonlan/ui.py:181 msgid "Are you sure you want to remove the selected machine?" msgstr "Bent u zeker dat u de geselecteerde computer wilt verwijderen?" gwakeonlan-0.7.0/po/pl.po000066400000000000000000000062541374311100600152400ustar00rootroot00000000000000# gWakeOnLan # Wake up your machines using Wake on LAN. # Copyright (C) 2009-2020 Fabio Castelli (Muflone) # Website: https://www.muflone.com/gwakeonlan/ # This file is distributed under the same license of gWakeOnLan. # Polish translation for gWakeOnLan # # Translators: # bjfs , 2011 msgid "" msgstr "" "Project-Id-Version: gWakeOnLan\n" "Report-Msgid-Bugs-To: https://github.com/muflone/gwakeonlan/issues\n" "POT-Creation-Date: 2015-07-18 17:54+0200\n" "PO-Revision-Date: 2015-07-18 16:35+0000\n" "Last-Translator: bjfs \n" "Language-Team: Polish (https://www.transifex.com/p/gwakeonlan/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: ui/arpcache.glade.h:1 msgid "IP Address" msgstr "" #: ui/arpcache.glade.h:2 msgid "Host Name" msgstr "" #: ui/arpcache.glade.h:3 msgid "MAC Address" msgstr "" #: ui/detail.glade.h:1 msgid "ERROR" msgstr "" #: ui/detail.glade.h:2 msgid "Insert the machine name and its MAC address" msgstr "Wpisz nazwę komputera i jego adres MAC" #: ui/detail.glade.h:3 msgid "_Machine name:" msgstr "Nazwa _komputera:" #: ui/detail.glade.h:4 msgid "MAC _Address:" msgstr "_Adres MAC:" #: ui/detail.glade.h:5 msgid "_UDP port number:" msgstr "Numer portu _UDP:" #: ui/detail.glade.h:6 msgid "Request type:" msgstr "Typ żądania:" #: ui/detail.glade.h:7 msgid "_Local (broadcast)" msgstr "_Lokalny (broadcast)" #: ui/detail.glade.h:8 msgid "_Internet" msgstr "_Internet" #: ui/detail.glade.h:9 msgid "_Destination host:" msgstr "_Docelowy host:" #: ui/main.glade.h:1 msgid "Turn on" msgstr "" #: ui/main.glade.h:2 gwakeonlan/detail.py:70 msgid "Add machine" msgstr "Dodaj komputer" #: ui/main.glade.h:3 msgid "Detect from ARP cache" msgstr "" #: ui/main.glade.h:4 msgid "Import machines from ethers file" msgstr "" #: ui/main.glade.h:5 msgid "Import from ethers file" msgstr "" #: ui/main.glade.h:6 gwakeonlan/detail.py:69 msgid "Edit machine" msgstr "Edytuj komputer" #: ui/main.glade.h:7 gwakeonlan/ui.py:182 msgid "Delete machine" msgstr "Usuń komputer" #: ui/main.glade.h:8 msgid "About" msgstr "O programie" #: ui/main.glade.h:9 msgid "Machine name" msgstr "Nazwa komputera" #: ui/main.glade.h:10 msgid "MAC address" msgstr "Adres MAC" #: ui/main.glade.h:11 msgid "Request type" msgstr "Typ żądania" #: ui/main.glade.h:12 msgid "Destination" msgstr "Cel" #: ui/main.glade.h:13 msgid "Port NR" msgstr "Port NR" #: gwakeonlan/about.py:56 msgid "Contributors:" msgstr "" #: gwakeonlan/arpcache.py:42 msgid "Pick a host from the ARP cache" msgstr "" #: gwakeonlan/detail.py:78 msgid "Missing machine name" msgstr "Brak nazwy komputera" #: gwakeonlan/detail.py:82 msgid "Invalid MAC address" msgstr "Nieprawidłowy adres MAC" #: gwakeonlan/detail.py:86 msgid "Invalid destination host" msgstr "Nieprawidłowy host docelowy" #: gwakeonlan/ui.py:181 msgid "Are you sure you want to remove the selected machine?" msgstr "Czy na pewno usunąć zaznaczony komputer?" gwakeonlan-0.7.0/po/pt_BR.po000066400000000000000000000066151374311100600156340ustar00rootroot00000000000000# gWakeOnLan # Wake up your machines using Wake on LAN. # Copyright (C) 2009-2020 Fabio Castelli (Muflone) # Website: https://www.muflone.com/gwakeonlan/ # This file is distributed under the same license of gWakeOnLan. # Portoguese Brazilian translation for gWakeOnLan # # Translators: # ricardomourabraga , 2011 # Amilton Pereira Cavalcante , 2016 msgid "" msgstr "" "Project-Id-Version: gWakeOnLan\n" "Report-Msgid-Bugs-To: https://github.com/muflone/gwakeonlan/issues\n" "POT-Creation-Date: 2015-07-18 17:54+0200\n" "PO-Revision-Date: 2017-09-22 11:55+0000\n" "Last-Translator: Amilton Pereira Cavalcante \n" "Language-Team: Portuguese (Brazil) (https://www.transifex.com/p/gwakeonlan/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: ui/arpcache.glade.h:1 msgid "IP Address" msgstr "Endereço IP" #: ui/arpcache.glade.h:2 msgid "Host Name" msgstr "Nome do host" #: ui/arpcache.glade.h:3 msgid "MAC Address" msgstr "Endereço MAC" #: ui/detail.glade.h:1 msgid "ERROR" msgstr "ERRO" #: ui/detail.glade.h:2 msgid "Insert the machine name and its MAC address" msgstr "Insira o nome do PC e seu endereço MAC" #: ui/detail.glade.h:3 msgid "_Machine name:" msgstr "_PC nome:" #: ui/detail.glade.h:4 msgid "MAC _Address:" msgstr "MAC _Address:" #: ui/detail.glade.h:5 msgid "_UDP port number:" msgstr "_Número Porta UDP:" #: ui/detail.glade.h:6 msgid "Request type:" msgstr "Tipo de requisição:" #: ui/detail.glade.h:7 msgid "_Local (broadcast)" msgstr "_Local (broadcast)" #: ui/detail.glade.h:8 msgid "_Internet" msgstr "_Internet" #: ui/detail.glade.h:9 msgid "_Destination host:" msgstr "_PC Destino:" #: ui/main.glade.h:1 msgid "Turn on" msgstr "Ligar" #: ui/main.glade.h:2 gwakeonlan/detail.py:70 msgid "Add machine" msgstr "Adicionar PC" #: ui/main.glade.h:3 msgid "Detect from ARP cache" msgstr "Detectar a partir do chache ARP" #: ui/main.glade.h:4 msgid "Import machines from ethers file" msgstr "" #: ui/main.glade.h:5 msgid "Import from ethers file" msgstr "" #: ui/main.glade.h:6 gwakeonlan/detail.py:69 msgid "Edit machine" msgstr "Edita PC" #: ui/main.glade.h:7 gwakeonlan/ui.py:182 msgid "Delete machine" msgstr "Deleta PC" #: ui/main.glade.h:8 msgid "About" msgstr "Sobre" #: ui/main.glade.h:9 msgid "Machine name" msgstr "Nome PC" #: ui/main.glade.h:10 msgid "MAC address" msgstr "Endereço MAC" #: ui/main.glade.h:11 msgid "Request type" msgstr "Tipo de requisição" #: ui/main.glade.h:12 msgid "Destination" msgstr "Destino" #: ui/main.glade.h:13 msgid "Port NR" msgstr "Porta NR" #: gwakeonlan/about.py:56 msgid "Contributors:" msgstr "Contribuidores:" #: gwakeonlan/arpcache.py:42 msgid "Pick a host from the ARP cache" msgstr "Escolher um PC a pratir do cache ARP" #: gwakeonlan/detail.py:78 msgid "Missing machine name" msgstr "PC sem nome" #: gwakeonlan/detail.py:82 msgid "Invalid MAC address" msgstr "Endereço MAC Inválido" #: gwakeonlan/detail.py:86 msgid "Invalid destination host" msgstr "PC de destino inválido " #: gwakeonlan/ui.py:181 msgid "Are you sure you want to remove the selected machine?" msgstr "Tem certeza que deseja remover o PC selecionado?" gwakeonlan-0.7.0/po/ru.po000066400000000000000000000075201374311100600152500ustar00rootroot00000000000000# gWakeOnLan # Wake up your machines using Wake on LAN. # Copyright (C) 2009-2020 Fabio Castelli (Muflone) # Website: https://www.muflone.com/gwakeonlan/ # This file is distributed under the same license of gWakeOnLan. # Russian translation for gWakeOnLan # # Translators: # Сергей Богатов , 2010,2015,2020 msgid "" msgstr "" "Project-Id-Version: gWakeOnLan\n" "Report-Msgid-Bugs-To: https://github.com/muflone/gwakeonlan/issues\n" "POT-Creation-Date: 2015-07-18 17:54+0200\n" "PO-Revision-Date: 2020-02-13 13:31+0000\n" "Last-Translator: Сергей Богатов \n" "Language-Team: Russian (https://www.transifex.com/p/gwakeonlan/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ru\n" "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" #: ui/arpcache.glade.h:1 msgid "IP Address" msgstr "IP Адрес" #: ui/arpcache.glade.h:2 msgid "Host Name" msgstr "Имя компьютера" #: ui/arpcache.glade.h:3 msgid "MAC Address" msgstr "MAC Адрес" #: ui/detail.glade.h:1 msgid "ERROR" msgstr "ОШИБКА" #: ui/detail.glade.h:2 msgid "Insert the machine name and its MAC address" msgstr "Введите имя и MAC адрес компьютера" #: ui/detail.glade.h:3 msgid "_Machine name:" msgstr "_Имя компьютера:" #: ui/detail.glade.h:4 msgid "MAC _Address:" msgstr "MAC _адрес:" #: ui/detail.glade.h:5 msgid "_UDP port number:" msgstr "_Номер порта UDP:" #: ui/detail.glade.h:6 msgid "Request type:" msgstr "Тип запроса:" #: ui/detail.glade.h:7 msgid "_Local (broadcast)" msgstr "_Локальная сеть" #: ui/detail.glade.h:8 msgid "_Internet" msgstr "_Интернет" #: ui/detail.glade.h:9 msgid "_Destination host:" msgstr "_Расположение компьютера:" #: ui/main.glade.h:1 msgid "Turn on" msgstr "Включить" #: ui/main.glade.h:2 gwakeonlan/detail.py:70 msgid "Add machine" msgstr "Добавить" #: ui/main.glade.h:3 msgid "Detect from ARP cache" msgstr "Найти в ARP кэше" #: ui/main.glade.h:4 msgid "Import machines from ethers file" msgstr "Импортировать компьютеры из /etc/ethers" #: ui/main.glade.h:5 msgid "Import from ethers file" msgstr "Импорт из файла /etc/ethers" #: ui/main.glade.h:6 gwakeonlan/detail.py:69 msgid "Edit machine" msgstr "Редактировать" #: ui/main.glade.h:7 gwakeonlan/ui.py:182 msgid "Delete machine" msgstr "Удалить" #: ui/main.glade.h:8 msgid "About" msgstr "Справка" #: ui/main.glade.h:9 msgid "Machine name" msgstr "Имя компьютера" #: ui/main.glade.h:10 msgid "MAC address" msgstr "MAC адрес" #: ui/main.glade.h:11 msgid "Request type" msgstr "Тип запроса" #: ui/main.glade.h:12 msgid "Destination" msgstr "Расположение" #: ui/main.glade.h:13 msgid "Port NR" msgstr "Порт" #: gwakeonlan/about.py:56 msgid "Contributors:" msgstr "Авторы:" #: gwakeonlan/arpcache.py:42 msgid "Pick a host from the ARP cache" msgstr "Выбор хоста из кэша ARP" #: gwakeonlan/detail.py:78 msgid "Missing machine name" msgstr "Не задано имя компьютера" #: gwakeonlan/detail.py:82 msgid "Invalid MAC address" msgstr "Неверный MAC адрес" #: gwakeonlan/detail.py:86 msgid "Invalid destination host" msgstr "Неверное расположение" #: gwakeonlan/ui.py:181 msgid "Are you sure you want to remove the selected machine?" msgstr "Удалить выбранный компьютер из списка?" gwakeonlan-0.7.0/po/sk.po000066400000000000000000000062421374311100600152370ustar00rootroot00000000000000# gWakeOnLan # Wake up your machines using Wake on LAN. # Copyright (C) 2009-2020 Fabio Castelli (Muflone) # Website: https://www.muflone.com/gwakeonlan/ # This file is distributed under the same license of gWakeOnLan. # Slovak translation for gWakeOnLan # # Translators: # Jozef Riha , 2010 msgid "" msgstr "" "Project-Id-Version: gWakeOnLan\n" "Report-Msgid-Bugs-To: https://github.com/muflone/gwakeonlan/issues\n" "POT-Creation-Date: 2015-07-18 17:54+0200\n" "PO-Revision-Date: 2015-07-18 16:35+0000\n" "Last-Translator: Jozef Riha \n" "Language-Team: Slovak (https://www.transifex.com/p/gwakeonlan/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sk\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: ui/arpcache.glade.h:1 msgid "IP Address" msgstr "" #: ui/arpcache.glade.h:2 msgid "Host Name" msgstr "" #: ui/arpcache.glade.h:3 msgid "MAC Address" msgstr "" #: ui/detail.glade.h:1 msgid "ERROR" msgstr "" #: ui/detail.glade.h:2 msgid "Insert the machine name and its MAC address" msgstr "Zadajte názov stroja a jeho MAC adresu" #: ui/detail.glade.h:3 msgid "_Machine name:" msgstr "_Názov stroja:" #: ui/detail.glade.h:4 msgid "MAC _Address:" msgstr "MAC _adresa:" #: ui/detail.glade.h:5 msgid "_UDP port number:" msgstr "Číslo _UDP portu:" #: ui/detail.glade.h:6 msgid "Request type:" msgstr "Typ požiadavky:" #: ui/detail.glade.h:7 msgid "_Local (broadcast)" msgstr "_Miestna (broadcast)" #: ui/detail.glade.h:8 msgid "_Internet" msgstr "_Internet" #: ui/detail.glade.h:9 msgid "_Destination host:" msgstr "_Cieľový hostiteľ:" #: ui/main.glade.h:1 msgid "Turn on" msgstr "" #: ui/main.glade.h:2 gwakeonlan/detail.py:70 msgid "Add machine" msgstr "Pridať stroj" #: ui/main.glade.h:3 msgid "Detect from ARP cache" msgstr "" #: ui/main.glade.h:4 msgid "Import machines from ethers file" msgstr "" #: ui/main.glade.h:5 msgid "Import from ethers file" msgstr "" #: ui/main.glade.h:6 gwakeonlan/detail.py:69 msgid "Edit machine" msgstr "Upraviť stroj" #: ui/main.glade.h:7 gwakeonlan/ui.py:182 msgid "Delete machine" msgstr "Vymazať stroj" #: ui/main.glade.h:8 msgid "About" msgstr "O programe" #: ui/main.glade.h:9 msgid "Machine name" msgstr "Názov stroja" #: ui/main.glade.h:10 msgid "MAC address" msgstr "MAC adresa" #: ui/main.glade.h:11 msgid "Request type" msgstr "Typ požiadavky" #: ui/main.glade.h:12 msgid "Destination" msgstr "Cieľ" #: ui/main.glade.h:13 msgid "Port NR" msgstr "Port NR" #: gwakeonlan/about.py:56 msgid "Contributors:" msgstr "" #: gwakeonlan/arpcache.py:42 msgid "Pick a host from the ARP cache" msgstr "" #: gwakeonlan/detail.py:78 msgid "Missing machine name" msgstr "Chýba názov stroja" #: gwakeonlan/detail.py:82 msgid "Invalid MAC address" msgstr "Neplatná MAC adresa" #: gwakeonlan/detail.py:86 msgid "Invalid destination host" msgstr "Neplatný cieľový hostiteľ" #: gwakeonlan/ui.py:181 msgid "Are you sure you want to remove the selected machine?" msgstr "Naozaj chcete odstrániť vybraný stroj?" gwakeonlan-0.7.0/po/sl_SI.po000066400000000000000000000067741374311100600156450ustar00rootroot00000000000000# gWakeOnLan # Wake up your machines using Wake on LAN. # Copyright (C) 2009-2020 Fabio Castelli (Muflone) # Website: https://www.muflone.com/gwakeonlan/ # This file is distributed under the same license of gWakeOnLan. # Slovenian translation for gWakeOnLan # # Translators: # Andrej Mernik , 2012-2015 msgid "" msgstr "" "Project-Id-Version: gWakeOnLan\n" "Report-Msgid-Bugs-To: https://github.com/muflone/gwakeonlan/issues\n" "POT-Creation-Date: 2015-07-18 17:54+0200\n" "PO-Revision-Date: 2015-08-15 19:37+0000\n" "Last-Translator: Andrej Mernik \n" "Language-Team: Slovenian (Slovenia) (https://www.transifex.com/p/gwakeonlan/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sl_SI\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" #: ui/arpcache.glade.h:1 msgid "IP Address" msgstr "Naslov IP" #: ui/arpcache.glade.h:2 msgid "Host Name" msgstr "Ime gostitelja" #: ui/arpcache.glade.h:3 msgid "MAC Address" msgstr "Strojni naslov" #: ui/detail.glade.h:1 msgid "ERROR" msgstr "NAPAKA" #: ui/detail.glade.h:2 msgid "Insert the machine name and its MAC address" msgstr "Vnesite naslov računalnika in njegov strojni naslov" #: ui/detail.glade.h:3 msgid "_Machine name:" msgstr "I_me računalnika:" #: ui/detail.glade.h:4 msgid "MAC _Address:" msgstr "Strojni n_aslov:" #: ui/detail.glade.h:5 msgid "_UDP port number:" msgstr "Številka vrat _UDP:" #: ui/detail.glade.h:6 msgid "Request type:" msgstr "Vrsta zahteve:" #: ui/detail.glade.h:7 msgid "_Local (broadcast)" msgstr "_Krajevno (vsesmerno oddajanje)" #: ui/detail.glade.h:8 msgid "_Internet" msgstr "_Internet" #: ui/detail.glade.h:9 msgid "_Destination host:" msgstr "_Ciljni gostitelj:" #: ui/main.glade.h:1 msgid "Turn on" msgstr "Vklopi" #: ui/main.glade.h:2 gwakeonlan/detail.py:70 msgid "Add machine" msgstr "Dodaj računalnik" #: ui/main.glade.h:3 msgid "Detect from ARP cache" msgstr "Zaznaj v predpomnilniku ARP" #: ui/main.glade.h:4 msgid "Import machines from ethers file" msgstr "Uvozi računalnike iz datoteke ethers" #: ui/main.glade.h:5 msgid "Import from ethers file" msgstr "Uvozi iz datoteke ethers" #: ui/main.glade.h:6 gwakeonlan/detail.py:69 msgid "Edit machine" msgstr "Uredi računalnik" #: ui/main.glade.h:7 gwakeonlan/ui.py:182 msgid "Delete machine" msgstr "Izbriši računalnik" #: ui/main.glade.h:8 msgid "About" msgstr "O" #: ui/main.glade.h:9 msgid "Machine name" msgstr "Ime računalnika" #: ui/main.glade.h:10 msgid "MAC address" msgstr "Strojni naslov" #: ui/main.glade.h:11 msgid "Request type" msgstr "Vrsta zahteve" #: ui/main.glade.h:12 msgid "Destination" msgstr "Cilj" #: ui/main.glade.h:13 msgid "Port NR" msgstr "Št. vrat" #: gwakeonlan/about.py:56 msgid "Contributors:" msgstr "Prispevkarji:" #: gwakeonlan/arpcache.py:42 msgid "Pick a host from the ARP cache" msgstr "Izberi gostitelja iz predpomnilnika ARP" #: gwakeonlan/detail.py:78 msgid "Missing machine name" msgstr "Manjka ime računalnika" #: gwakeonlan/detail.py:82 msgid "Invalid MAC address" msgstr "Neveljaven strojni naslov" #: gwakeonlan/detail.py:86 msgid "Invalid destination host" msgstr "Neveljaven ciljni gostitelj" #: gwakeonlan/ui.py:181 msgid "Are you sure you want to remove the selected machine?" msgstr "Ali ste prepričani, da želite odstraniti izbran računalnik?" gwakeonlan-0.7.0/po/tr.po000066400000000000000000000061771374311100600152560ustar00rootroot00000000000000# gWakeOnLan # Wake up your machines using Wake on LAN. # Copyright (C) 2009-2020 Fabio Castelli (Muflone) # Website: https://www.muflone.com/gwakeonlan/ # This file is distributed under the same license of gWakeOnLan. # Turkish translation for gWakeOnLan # # Translators: # Necdet Yücel , 2012 msgid "" msgstr "" "Project-Id-Version: gWakeOnLan\n" "Report-Msgid-Bugs-To: https://github.com/muflone/gwakeonlan/issues\n" "POT-Creation-Date: 2015-07-18 17:54+0200\n" "PO-Revision-Date: 2015-07-18 16:35+0000\n" "Last-Translator: Necdet Yücel \n" "Language-Team: Turkish (https://www.transifex.com/p/gwakeonlan/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: tr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: ui/arpcache.glade.h:1 msgid "IP Address" msgstr "" #: ui/arpcache.glade.h:2 msgid "Host Name" msgstr "" #: ui/arpcache.glade.h:3 msgid "MAC Address" msgstr "" #: ui/detail.glade.h:1 msgid "ERROR" msgstr "" #: ui/detail.glade.h:2 msgid "Insert the machine name and its MAC address" msgstr "Makine adını ve MAC adresini girin" #: ui/detail.glade.h:3 msgid "_Machine name:" msgstr "_Makine adı:" #: ui/detail.glade.h:4 msgid "MAC _Address:" msgstr "MAC _Adresi" #: ui/detail.glade.h:5 msgid "_UDP port number:" msgstr "_UDP port numarası:" #: ui/detail.glade.h:6 msgid "Request type:" msgstr "İstek tipi:" #: ui/detail.glade.h:7 msgid "_Local (broadcast)" msgstr "_Yerel (broadcast)" #: ui/detail.glade.h:8 msgid "_Internet" msgstr "_Internet" #: ui/detail.glade.h:9 msgid "_Destination host:" msgstr "_Hedef istemci:" #: ui/main.glade.h:1 msgid "Turn on" msgstr "" #: ui/main.glade.h:2 gwakeonlan/detail.py:70 msgid "Add machine" msgstr "Makine ekle" #: ui/main.glade.h:3 msgid "Detect from ARP cache" msgstr "" #: ui/main.glade.h:4 msgid "Import machines from ethers file" msgstr "" #: ui/main.glade.h:5 msgid "Import from ethers file" msgstr "" #: ui/main.glade.h:6 gwakeonlan/detail.py:69 msgid "Edit machine" msgstr "Makine düzenle" #: ui/main.glade.h:7 gwakeonlan/ui.py:182 msgid "Delete machine" msgstr "Makine sil" #: ui/main.glade.h:8 msgid "About" msgstr "Hakkında" #: ui/main.glade.h:9 msgid "Machine name" msgstr "Makine adı" #: ui/main.glade.h:10 msgid "MAC address" msgstr "MAC adresi" #: ui/main.glade.h:11 msgid "Request type" msgstr "İstek tipi" #: ui/main.glade.h:12 msgid "Destination" msgstr "Hedef" #: ui/main.glade.h:13 msgid "Port NR" msgstr "Port No" #: gwakeonlan/about.py:56 msgid "Contributors:" msgstr "" #: gwakeonlan/arpcache.py:42 msgid "Pick a host from the ARP cache" msgstr "" #: gwakeonlan/detail.py:78 msgid "Missing machine name" msgstr "Eksik makine adı" #: gwakeonlan/detail.py:82 msgid "Invalid MAC address" msgstr "Geçersiz MAC adresi" #: gwakeonlan/detail.py:86 msgid "Invalid destination host" msgstr "Geçersiz hedef istemci" #: gwakeonlan/ui.py:181 msgid "Are you sure you want to remove the selected machine?" msgstr "Seçtiğiniz makineyi silmek istediğinizden emin misiniz?" gwakeonlan-0.7.0/po/zh_TW.po000066400000000000000000000061651374311100600156610ustar00rootroot00000000000000# gWakeOnLan # Wake up your machines using Wake on LAN. # Copyright (C) 2009-2020 Fabio Castelli (Muflone) # Website: https://www.muflone.com/gwakeonlan/ # This file is distributed under the same license of gWakeOnLan. # Chinese-Taiwan translation for gWakeOnLan # # Translators: # Cosmo Chene , 2015 msgid "" msgstr "" "Project-Id-Version: gWakeOnLan\n" "Report-Msgid-Bugs-To: https://github.com/muflone/gwakeonlan/issues\n" "POT-Creation-Date: 2015-07-18 17:54+0200\n" "PO-Revision-Date: 2015-07-18 16:35+0000\n" "Last-Translator: Cosmo Chene \n" "Language-Team: Chinese (Taiwan) (https://www.transifex.com/p/gwakeonlan/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ui/arpcache.glade.h:1 msgid "IP Address" msgstr "" #: ui/arpcache.glade.h:2 msgid "Host Name" msgstr "" #: ui/arpcache.glade.h:3 msgid "MAC Address" msgstr "" #: ui/detail.glade.h:1 msgid "ERROR" msgstr "" #: ui/detail.glade.h:2 msgid "Insert the machine name and its MAC address" msgstr "輸入主機名稱及 MAC 位址" #: ui/detail.glade.h:3 msgid "_Machine name:" msgstr "主機名稱_M:" #: ui/detail.glade.h:4 msgid "MAC _Address:" msgstr "MAC _位址:" #: ui/detail.glade.h:5 msgid "_UDP port number:" msgstr "_UDP 埠號:" #: ui/detail.glade.h:6 msgid "Request type:" msgstr "請求類型:" #: ui/detail.glade.h:7 msgid "_Local (broadcast)" msgstr "本地端_L (broadcast)" #: ui/detail.glade.h:8 msgid "_Internet" msgstr "網際網路_I" #: ui/detail.glade.h:9 msgid "_Destination host:" msgstr "目標主機_D:" #: ui/main.glade.h:1 msgid "Turn on" msgstr "開機" #: ui/main.glade.h:2 gwakeonlan/detail.py:70 msgid "Add machine" msgstr "加入主機" #: ui/main.glade.h:3 msgid "Detect from ARP cache" msgstr "" #: ui/main.glade.h:4 msgid "Import machines from ethers file" msgstr "" #: ui/main.glade.h:5 msgid "Import from ethers file" msgstr "" #: ui/main.glade.h:6 gwakeonlan/detail.py:69 msgid "Edit machine" msgstr "編輯主機" #: ui/main.glade.h:7 gwakeonlan/ui.py:182 msgid "Delete machine" msgstr "刪除主機" #: ui/main.glade.h:8 msgid "About" msgstr "關於" #: ui/main.glade.h:9 msgid "Machine name" msgstr "主機名稱" #: ui/main.glade.h:10 msgid "MAC address" msgstr "主機名稱" #: ui/main.glade.h:11 msgid "Request type" msgstr "請求類型" #: ui/main.glade.h:12 msgid "Destination" msgstr "目標" #: ui/main.glade.h:13 msgid "Port NR" msgstr "埠號" #: gwakeonlan/about.py:56 msgid "Contributors:" msgstr "" #: gwakeonlan/arpcache.py:42 msgid "Pick a host from the ARP cache" msgstr "" #: gwakeonlan/detail.py:78 msgid "Missing machine name" msgstr "失聯主機名稱" #: gwakeonlan/detail.py:82 msgid "Invalid MAC address" msgstr "無效的 MAC 位址" #: gwakeonlan/detail.py:86 msgid "Invalid destination host" msgstr "無效的目標主機" #: gwakeonlan/ui.py:181 msgid "Are you sure you want to remove the selected machine?" msgstr "您確定要移除選取的主機嗎?" gwakeonlan-0.7.0/requirements.txt000066400000000000000000000000361374311100600171230ustar00rootroot00000000000000pyxdg==0.27 PyGObject==3.38.0 gwakeonlan-0.7.0/requirements_development.txt000066400000000000000000000000711374311100600215240ustar00rootroot00000000000000-r requirements.txt PyGObject-stubs==0.0.2 flake8==3.8.4gwakeonlan-0.7.0/requirements_travis.txt000066400000000000000000000000141374311100600205070ustar00rootroot00000000000000pyxdg==0.26 gwakeonlan-0.7.0/setup.py000077500000000000000000000133001374311100600153520ustar00rootroot00000000000000#!/usr/bin/env python3 ## # Project: gWakeOnLAN # Description: Wake up your machines using Wake on LAN # Author: Fabio Castelli (Muflone) # Copyright: 2009-2020 Fabio Castelli # License: GPL-3+ # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ## from distutils.command.install_scripts import install_scripts from distutils.command.install_data import install_data from distutils.core import setup, Command from distutils.log import info import glob import itertools import os import os.path import shutil import subprocess from gwakeonlan.constants import (DOMAIN_NAME, APP_NAME, APP_VERSION, APP_AUTHOR, APP_AUTHOR_EMAIL, APP_URL, APP_DESCRIPTION) class Install_Scripts(install_scripts): def run(self): install_scripts.run(self) self.rename_python_scripts() def rename_python_scripts(self): "Rename main executable python script without .py extension" for script in self.get_outputs(): if script.endswith(".py"): info('renaming the python script %s -> %s' % ( script, script[:-3])) shutil.move(script, script[:-3]) class Install_Data(install_data): def run(self): self.install_icons() cmd_translations = Command_Translations(self.distribution) cmd_translations.initialize_options() cmd_translations.finalize_options() cmd_translations.data_files = self.data_files cmd_translations.run() install_data.run(self) def install_icons(self): """Add icons to the data files""" info('Installing icons...') DIR_ICONS = 'icons' for icon_format in os.listdir(DIR_ICONS): icon_dir = os.path.join(DIR_ICONS, icon_format) self.data_files.append(( os.path.join('share', 'icons', 'hicolor', icon_format, 'apps'), glob.glob(os.path.join(icon_dir, '*')))) class Command_Translation(Command): description = "compile a translation" user_options = [ ('input=', None, 'Define input file'), ('output=', None, 'Define output file'), ] def initialize_options(self): self.input = None self.output = None self.data_files = [] def finalize_options(self): assert (self.input), 'Missing input file' assert (self.output), 'Missing output file' def run(self): """Compile a single translation using self.input and self.output""" lang = os.path.basename(self.input[:-3]) dir_lang = os.path.dirname(self.output) if not os.path.exists(dir_lang): os.makedirs(dir_lang) subprocess.call(('msgfmt', '--output-file', self.output, self.input)) self.data_files.append((os.path.join('share', 'locale', lang, 'LC_MESSAGES'), [self.output])) class Command_Translations(Command): description = "build translations" user_options = [] def initialize_options(self): pass def finalize_options(self): self.dir_base = os.path.dirname(os.path.abspath(__file__)) self.dir_po = os.path.join(self.dir_base, 'po') self.dir_mo = os.path.join(self.dir_base, 'locale') def run(self): """Compile every translation and add it to the data files""" for file_po in glob.glob(os.path.join(self.dir_po, '*.po')): file_mo = os.path.join(self.dir_mo, os.path.basename(file_po[:-3]), 'LC_MESSAGES', '%s.mo' % DOMAIN_NAME) cmd_translation = Command_Translation(self.distribution) cmd_translation.initialize_options() cmd_translation.input = file_po cmd_translation.output = file_mo cmd_translation.finalize_options() # Add the translation files to the data files cmd_translation.data_files = self.data_files cmd_translation.run() setup( name=APP_NAME, version=APP_VERSION, author=APP_AUTHOR, author_email=APP_AUTHOR_EMAIL, maintainer=APP_AUTHOR, maintainer_email=APP_AUTHOR_EMAIL, url=APP_URL, description=APP_DESCRIPTION, license='GPL v3', scripts=['gwakeonlan.py'], packages=['gwakeonlan'], data_files=[ ('share/gwakeonlan/data', ['data/gwakeonlan.png']), ('share/applications', ['data/gwakeonlan.desktop']), ('share/doc/gwakeonlan', list(itertools.chain(glob.glob('doc/*'), glob.glob('*.md')))), ('share/man/man1', ['man/gwakeonlan.1']), ('share/gwakeonlan/ui', glob.glob('ui/*')), ], cmdclass={ 'install_scripts': Install_Scripts, 'install_data': Install_Data, 'translation': Command_Translation, 'translations': Command_Translations } ) gwakeonlan-0.7.0/ui/000077500000000000000000000000001374311100600142555ustar00rootroot00000000000000gwakeonlan-0.7.0/ui/about.glade000066400000000000000000000025611374311100600163710ustar00rootroot00000000000000 False 5 True center-on-parent True dialog False vertical 2 False end False True end 0 gwakeonlan-0.7.0/ui/appmenu.ui000066400000000000000000000011001374311100600162510ustar00rootroot00000000000000
_About gWakeOnLAN app.about F1
_Quit app.quit <Primary>q
gwakeonlan-0.7.0/ui/arpcache.glade000066400000000000000000000147031374311100600170260ustar00rootroot00000000000000 False 450 260 dialog False vertical 2 False False end _Refresh True True True True False True 0 True _Cancel True True True True True True 1 _OK True True True True True True True True 2 False True end 0 True True in True True modelARPCache True IP Address 0 True Host Name 2 True MAC Address 1 True True 1 btnCancel btnOK gwakeonlan-0.7.0/ui/detail.glade000066400000000000000000000317601374311100600165240ustar00rootroot00000000000000 1 65535 9 1 10 False 9 True dialog False vertical 7 False end False <b><span foreground="red">ERROR</span></b> True center False True 0 True _Cancel True True True True True True 1 _OK True True True True True True True True 2 False True end 0 True False True True 7 7 True False <big><b>Insert the machine name and its MAC address</b></big> True 0 0 4 True False start 72 computer 0 1 5 True False start False _Machine name: True 1 1 True True True True 17 2 2 2 True False start False MAC _Address: True 1 2 True False start False _UDP port number: True 1 3 True True True 90 adjPortNumber 9 2 3 2 True False start False Request type: True 1 4 _Local (broadcast) True True False start True True True 2 4 _Internet True True False start True True True radioRequestLocal 3 4 True False start False _Destination host: True 1 5 True True True 2 5 2 True True True True 2 1 2 True True 1 btnCancel btnOK gwakeonlan-0.7.0/ui/main.glade000066400000000000000000000312231374311100600162000ustar00rootroot00000000000000 False 620 240 False True False vertical True False True False Turn on True Turn on system-run False False True False False False True False Add machine Add machine True list-add True False True False Detect from ARP cache Detect from ARP cache True False Import machines from ethers file Import from ethers file False False True False Edit machine Edit machine True document-properties False False True False Delete machine Delete machine True list-remove False False True False False False True False About About True help-about False False False True 0 True True in True True storeMachines 0 0 True Machine name 1 1 True MAC address 2 2 True Request type 3 3 True Destination 4 4 True Port NR 5 5 True True 1