Skip to content

Instantly share code, notes, and snippets.

@raku-cat
Created July 2, 2017 16:38
Show Gist options
  • Save raku-cat/22ae9828a4231fbeb25fb9b2132adceb to your computer and use it in GitHub Desktop.
Save raku-cat/22ae9828a4231fbeb25fb9b2132adceb to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3
import requests
from multiprocessing import Queue
import json
import PyZenity
import regex
import time
import sys
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GObject, Pango
r = requests.get('http://api.ttr-invasions.com/json/invasionlist/')
invkeys = r.json()
invlist=[]
for i in invkeys:
invlist.append((i['invasion_cog'],i['invasion_district'],i['invasion_remaining']))
#chosen_invasion = PyZenity.List(['Invasions','District','Time Left'],data=invlist, title='TTR Invasion Timer', width=500, height=220, select_col='1,2')
#try:
# chosen_cog, chosen_dist = chosen_invasion
#except TypeError:
# sys.exit(0)
#for key in invkeys:
# if key['invasion_cog'] == chosen_cog:
# if key['invasion_district'] == chosen_dist:
# chosen_time = key['invasion_remaining']
#print(chosen_time)
#if chosen_time == 'Calculating'
#time_split = ':'.join(regex.split(' H | M | s', chosen_time)[:-1])
#print(time_split)
def get_sec(time_str):
try:
h, m, s = time_str.split(':')
except ValueError:
try:
m, s = time_str.split(':')
h = '0'
except ValueError:
s = time_str
h = '0'
m = '0'
return int(h) * 3600 + int(m) * 60 + int(s)
def countdown(t):
hours, newt = divmod(t, 3600)
mins, secs = divmod(newt, 60)
timeformat = '{:02d}:{:02d}:{:02d}'.format(hours, mins, secs)
t -= 1
return(timeformat)
class InvasionSelector(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title='TTR Invasion Timer')
self.set_border_width(10)
self.grid = Gtk.Grid()
self.grid.set_column_homogeneous(True)
self.grid.set_row_homogeneous(True)
self.add(self.grid)
self.invasion_liststore = Gtk.ListStore(str, str, str)
for invasions in invlist:
self.invasion_liststore.append(list(invasions))
self.treeview = Gtk.TreeView(self.invasion_liststore)
for i, column_title in enumerate(['Cog', 'District', 'Time Remaining']):
renderer = Gtk.CellRendererText()
column = Gtk.TreeViewColumn(column_title, renderer, text=i)
self.treeview.append_column(column)
column.set_sort_column_id(i)
self.buttons = list()
okbutton = Gtk.Button('OK')
self.buttons.append(okbutton)
okbutton.connect('clicked', self.ok_clicked)
cancelbut = Gtk.Button('Cancel')
self.buttons.append(cancelbut)
cancelbut.connect('clicked', Gtk.main_quit)
self.scrollable_treelist = Gtk.ScrolledWindow()
self.scrollable_treelist.set_vexpand(True)
self.grid.attach(self.scrollable_treelist, 0, 0, 8, 10)
self.grid.attach_next_to(self.buttons[0], self.scrollable_treelist, Gtk.PositionType.BOTTOM, 1, 1)
for i, button in enumerate(self.buttons[1:]):
self.grid.attach_next_to(button, self.buttons[i], Gtk.PositionType.RIGHT, 1, 1)
self.scrollable_treelist.add(self.treeview)
self.show_all()
def ok_clicked(self, button):
model, treeiter = self.treeview.get_selection().get_selected()
if treeiter != None:
timeleft = model[treeiter][2]
Gtk.main_quit()
starttimer(timeleft)
#InvasionTimer.show_timer(timeleft)
#InvasionTimer.startclocktimer(self)
#InvastionTimer(self).run()
def starttimer(time):
if time != 'Calculating':
#time_split = ':'.join(regex.split(' H | M | s', time)[:-1])
#time_seconds = get_sec(time_split)
InvasionTimer.show_timer(time)
InvasionTimer(self).startclocktimer()
InvastionTimer(self).run()
class InvasionTimer(Gtk.Window):
# t = time_seconds
def show_timer(time):
if time != 'Calculating':
time_split = ':'.join(regex.split(' H | M | s', time)[:-1])
t = get_sec(time_split)
def __init__(self):
Gtk.Window.__init__(self, title='TTR Invasion Timer')
self.box = Gtk.Box(spacing=6)
self.add(self.box)
self.label = Gtk.Label()
self.label.modify_font(Pango.FontDescription('Impress BT 90'))
self.box.pack_start(self.label, True, True, 0)
self.set_keep_above(True)
self.set_default_size(620, 260)
# Displays Timer
def displayclock(self):
datetimenow = countdown(self.t)
self.t -= 1
self.label.set_label(datetimenow)
return True
# Initialize Timer
def startclocktimer(self):
GObject.timeout_add(1000, self.displayclock)
win = InvasionSelector()
win.connect('delete-event', Gtk.main_quit)
win.show_all()
#win.startclocktimer()
Gtk.main()
#win = InvasionTimer()
#win.connect("delete-event", Gtk.main_quit)
#win.show_all()
#win.startclocktimer()
#Gtk.main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment