|
17 | 17 | # You should have received a copy of the GNU General Public License
|
18 | 18 | # along with this program. If not, see <https://www.gnu.org/licenses/>.
|
19 | 19 | ##
|
20 |
| - |
| 20 | +import logging |
21 | 21 | import time
|
22 | 22 |
|
23 | 23 | from gi.repository import Gdk
|
@@ -72,6 +72,7 @@ def __init__(self, application, options):
|
72 | 72 | True, 8, 24, 24)
|
73 | 73 | self.icon_empty.fill(0)
|
74 | 74 | self.icon_yes = get_pixbuf_from_icon_name('gtk-yes', 24)
|
| 75 | + self.icon_no = get_pixbuf_from_icon_name('gtk-no', 24) |
75 | 76 | # Load hosts
|
76 | 77 | self.settings.load_hosts(model=self.model,
|
77 | 78 | icon=self.icon_empty)
|
@@ -169,6 +170,23 @@ def do_autotests(self):
|
169 | 170 | # Close the main window
|
170 | 171 | self.ui.window.destroy()
|
171 | 172 |
|
| 173 | + def do_turn_on(self, treeiter): |
| 174 | + """Turn on the machine for the specified TreeIter""" |
| 175 | + try: |
| 176 | + mac_address = self.model.get_mac_address(treeiter) |
| 177 | + port_number = self.model.get_port_number(treeiter) |
| 178 | + destination = self.model.get_destination(treeiter) |
| 179 | + wake_on_lan(mac_address=mac_address, |
| 180 | + port_number=port_number, |
| 181 | + destination=destination) |
| 182 | + self.model.set_icon(treeiter, self.icon_yes) |
| 183 | + except OSError as error: |
| 184 | + logging.error(f'Unable to turn on: {mac_address} ' |
| 185 | + f'through {destination} ' |
| 186 | + f'using port number {port_number}') |
| 187 | + logging.error(error) |
| 188 | + self.model.set_icon(treeiter, self.icon_no) |
| 189 | + |
172 | 190 | def on_window_delete_event(self, widget, event):
|
173 | 191 | """Close the application by closing the main window"""
|
174 | 192 | self.ui.action_quit.emit('activate')
|
@@ -253,23 +271,15 @@ def on_action_turnon_activate(self, widget):
|
253 | 271 | for treeiter in self.model:
|
254 | 272 | self.model.set_icon(treeiter, self.icon_empty)
|
255 | 273 | for treeiter in self.model:
|
| 274 | + # Turn on any selected machine |
256 | 275 | if self.model.get_selected(treeiter):
|
257 |
| - # If a machine was selected then it will turned on |
258 | 276 | selected_count += 1
|
259 |
| - wake_on_lan( |
260 |
| - mac_address=self.model.get_mac_address(treeiter), |
261 |
| - port_number=self.model.get_port_number(treeiter), |
262 |
| - destination=self.model.get_destination(treeiter)) |
263 |
| - self.model.set_icon(treeiter, self.icon_yes) |
| 277 | + self.do_turn_on(treeiter) |
264 | 278 | if selected_count == 0:
|
265 | 279 | # When no machines are selected use the currently selected row
|
266 | 280 | treeiter = get_treeview_selected_row(self.ui.treeview_machines)
|
267 | 281 | if treeiter:
|
268 |
| - wake_on_lan( |
269 |
| - mac_address=self.model.get_mac_address(treeiter), |
270 |
| - port_number=self.model.get_port_number(treeiter), |
271 |
| - destination=self.model.get_destination(treeiter)) |
272 |
| - self.model.set_icon(treeiter, self.icon_yes) |
| 282 | + self.do_turn_on(treeiter) |
273 | 283 |
|
274 | 284 | def on_action_import_arp_cache_activate(self, widget):
|
275 | 285 | """Show the ARP cache picker dialog"""
|
|
0 commit comments