merge from steffen
This commit is contained in:
+89
-76
@@ -82,7 +82,7 @@ except ImportError:
|
||||
use_numpy = False
|
||||
|
||||
|
||||
DB_VERSION = 142
|
||||
DB_VERSION = 143
|
||||
|
||||
|
||||
# Variance created as sqlite has a bunch of undefined aggregate functions.
|
||||
@@ -150,6 +150,8 @@ class Database:
|
||||
, {'tab':'TourneyTypes', 'col':'siteId', 'drop':0}
|
||||
, {'tab':'Backings', 'col':'tourneysPlayersId', 'drop':0}
|
||||
, {'tab':'Backings', 'col':'playerId', 'drop':0}
|
||||
, {'tab':'RawHands', 'col':'id', 'drop':0}
|
||||
, {'tab':'RawTourneys', 'col':'id', 'drop':0}
|
||||
]
|
||||
, [ # indexes for sqlite (list index 4)
|
||||
{'tab':'Hands', 'col':'gametypeId', 'drop':0}
|
||||
@@ -165,6 +167,8 @@ class Database:
|
||||
, {'tab':'TourneyTypes', 'col':'siteId', 'drop':0}
|
||||
, {'tab':'Backings', 'col':'tourneysPlayersId', 'drop':0}
|
||||
, {'tab':'Backings', 'col':'playerId', 'drop':0}
|
||||
, {'tab':'RawHands', 'col':'id', 'drop':0}
|
||||
, {'tab':'RawTourneys', 'col':'id', 'drop':0}
|
||||
]
|
||||
]
|
||||
|
||||
@@ -306,9 +310,7 @@ class Database:
|
||||
|
||||
tables=self.cursor.execute(self.sql.query['list_tables'])
|
||||
tables=self.cursor.fetchall()
|
||||
for table in tables:
|
||||
table=table[0]
|
||||
|
||||
for table in (u'Autorates', u'Backings', u'Gametypes', u'Hands', u'HandsActions', u'HandsPlayers', u'HudCache', u'Players', u'RawHands', u'RawTourneys', u'Settings', u'Sites', u'TourneyTypes', u'Tourneys', u'TourneysPlayers'):
|
||||
print "table:", table
|
||||
result+="###################\nTable "+table+"\n###################\n"
|
||||
rows=self.cursor.execute(self.sql.query['get'+table])
|
||||
@@ -1155,6 +1157,8 @@ class Database:
|
||||
c.execute(self.sql.query['createHandsActionsTable'])
|
||||
c.execute(self.sql.query['createHudCacheTable'])
|
||||
c.execute(self.sql.query['createBackingsTable'])
|
||||
c.execute(self.sql.query['createRawHands'])
|
||||
c.execute(self.sql.query['createRawTourneys'])
|
||||
|
||||
# Create unique indexes:
|
||||
log.debug("Creating unique indexes")
|
||||
@@ -1765,86 +1769,95 @@ class Database:
|
||||
#print "DEBUG: %s %s %s" %(hid, pids, pdata)
|
||||
inserts = []
|
||||
for p in pdata:
|
||||
line = [0]*76
|
||||
line = [0]*85
|
||||
|
||||
line[0] = 1 # HDs
|
||||
if pdata[p]['street0VPI']: line[1] = 1
|
||||
if pdata[p]['street0Aggr']: line[2] = 1
|
||||
if pdata[p]['street0_3BChance']: line[3] = 1
|
||||
if pdata[p]['street0_3BDone']: line[4] = 1
|
||||
if pdata[p]['street1Seen']: line[5] = 1
|
||||
if pdata[p]['street2Seen']: line[6] = 1
|
||||
if pdata[p]['street3Seen']: line[7] = 1
|
||||
if pdata[p]['street4Seen']: line[8] = 1
|
||||
if pdata[p]['sawShowdown']: line[9] = 1
|
||||
if pdata[p]['street1Aggr']: line[10] = 1
|
||||
if pdata[p]['street2Aggr']: line[11] = 1
|
||||
if pdata[p]['street3Aggr']: line[12] = 1
|
||||
if pdata[p]['street4Aggr']: line[13] = 1
|
||||
if pdata[p]['otherRaisedStreet1']: line[14] = 1
|
||||
if pdata[p]['otherRaisedStreet2']: line[15] = 1
|
||||
if pdata[p]['otherRaisedStreet3']: line[16] = 1
|
||||
if pdata[p]['otherRaisedStreet4']: line[17] = 1
|
||||
if pdata[p]['foldToOtherRaisedStreet1']: line[18] = 1
|
||||
if pdata[p]['foldToOtherRaisedStreet2']: line[19] = 1
|
||||
if pdata[p]['foldToOtherRaisedStreet3']: line[20] = 1
|
||||
if pdata[p]['foldToOtherRaisedStreet4']: line[21] = 1
|
||||
line[22] = pdata[p]['wonWhenSeenStreet1']
|
||||
line[23] = pdata[p]['wonAtSD']
|
||||
if pdata[p]['raiseFirstInChance']: line[24] = 1
|
||||
if pdata[p]['raisedFirstIn']: line[25] = 1
|
||||
if pdata[p]['foldBbToStealChance']: line[26] = 1
|
||||
if pdata[p]['foldedBbToSteal']: line[27] = 1
|
||||
if pdata[p]['foldSbToStealChance']: line[28] = 1
|
||||
if pdata[p]['foldedSbToSteal']: line[29] = 1
|
||||
if pdata[p]['street1CBChance']: line[30] = 1
|
||||
if pdata[p]['street1CBDone']: line[31] = 1
|
||||
if pdata[p]['street2CBChance']: line[32] = 1
|
||||
if pdata[p]['street2CBDone']: line[33] = 1
|
||||
if pdata[p]['street3CBChance']: line[34] = 1
|
||||
if pdata[p]['street3CBDone']: line[35] = 1
|
||||
if pdata[p]['street4CBChance']: line[36] = 1
|
||||
if pdata[p]['street4CBDone']: line[37] = 1
|
||||
if pdata[p]['foldToStreet1CBChance']: line[38] = 1
|
||||
if pdata[p]['foldToStreet1CBDone']: line[39] = 1
|
||||
if pdata[p]['foldToStreet2CBChance']: line[40] = 1
|
||||
if pdata[p]['foldToStreet2CBDone']: line[41] = 1
|
||||
if pdata[p]['foldToStreet3CBChance']: line[42] = 1
|
||||
if pdata[p]['foldToStreet3CBDone']: line[43] = 1
|
||||
if pdata[p]['foldToStreet4CBChance']: line[44] = 1
|
||||
if pdata[p]['foldToStreet4CBDone']: line[45] = 1
|
||||
line[46] = pdata[p]['totalProfit']
|
||||
if pdata[p]['street1CheckCallRaiseChance']: line[47] = 1
|
||||
if pdata[p]['street1CheckCallRaiseDone']: line[48] = 1
|
||||
if pdata[p]['street2CheckCallRaiseChance']: line[49] = 1
|
||||
if pdata[p]['street2CheckCallRaiseDone']: line[50] = 1
|
||||
if pdata[p]['street3CheckCallRaiseChance']: line[51] = 1
|
||||
if pdata[p]['street3CheckCallRaiseDone']: line[52] = 1
|
||||
if pdata[p]['street4CheckCallRaiseChance']: line[53] = 1
|
||||
if pdata[p]['street4CheckCallRaiseDone']: line[54] = 1
|
||||
if pdata[p]['street0Calls']: line[55] = 1
|
||||
if pdata[p]['street1Calls']: line[56] = 1
|
||||
if pdata[p]['street2Calls']: line[57] = 1
|
||||
if pdata[p]['street3Calls']: line[58] = 1
|
||||
if pdata[p]['street4Calls']: line[59] = 1
|
||||
if pdata[p]['street0Bets']: line[60] = 1
|
||||
if pdata[p]['street1Bets']: line[61] = 1
|
||||
if pdata[p]['street2Bets']: line[62] = 1
|
||||
if pdata[p]['street3Bets']: line[63] = 1
|
||||
if pdata[p]['street4Bets']: line[64] = 1
|
||||
if pdata[p]['street0Raises']: line[65] = 1
|
||||
if pdata[p]['street1Raises']: line[66] = 1
|
||||
if pdata[p]['street2Raises']: line[67] = 1
|
||||
if pdata[p]['street3Raises']: line[68] = 1
|
||||
if pdata[p]['street4Raises']: line[69] = 1
|
||||
if pdata[p]['street0_4BChance']: line[5] = 1
|
||||
if pdata[p]['street0_4BDone']: line[6] = 1
|
||||
if pdata[p]['other3BStreet0']: line[7] = 1
|
||||
if pdata[p]['other4BStreet0']: line[8] = 1
|
||||
if pdata[p]['street1Seen']: line[9] = 1
|
||||
if pdata[p]['street2Seen']: line[10] = 1
|
||||
if pdata[p]['street3Seen']: line[11] = 1
|
||||
if pdata[p]['street4Seen']: line[12] = 1
|
||||
if pdata[p]['sawShowdown']: line[13] = 1
|
||||
if pdata[p]['street1Aggr']: line[14] = 1
|
||||
if pdata[p]['street2Aggr']: line[15] = 1
|
||||
if pdata[p]['street3Aggr']: line[16] = 1
|
||||
if pdata[p]['street4Aggr']: line[17] = 1
|
||||
if pdata[p]['otherRaisedStreet0']: line[18] = 1
|
||||
if pdata[p]['otherRaisedStreet1']: line[19] = 1
|
||||
if pdata[p]['otherRaisedStreet2']: line[20] = 1
|
||||
if pdata[p]['otherRaisedStreet3']: line[21] = 1
|
||||
if pdata[p]['otherRaisedStreet4']: line[22] = 1
|
||||
if pdata[p]['foldToOtherRaisedStreet0']: line[23] = 1
|
||||
if pdata[p]['foldToOtherRaisedStreet1']: line[24] = 1
|
||||
if pdata[p]['foldToOtherRaisedStreet2']: line[25] = 1
|
||||
if pdata[p]['foldToOtherRaisedStreet3']: line[26] = 1
|
||||
if pdata[p]['foldToOtherRaisedStreet4']: line[27] = 1
|
||||
line[28] = pdata[p]['wonWhenSeenStreet1']
|
||||
line[29] = pdata[p]['wonWhenSeenStreet2']
|
||||
line[30] = pdata[p]['wonWhenSeenStreet3']
|
||||
line[31] = pdata[p]['wonWhenSeenStreet4']
|
||||
line[32] = pdata[p]['wonAtSD']
|
||||
if pdata[p]['raiseFirstInChance']: line[33] = 1
|
||||
if pdata[p]['raisedFirstIn']: line[34] = 1
|
||||
if pdata[p]['foldBbToStealChance']: line[35] = 1
|
||||
if pdata[p]['foldedBbToSteal']: line[36] = 1
|
||||
if pdata[p]['foldSbToStealChance']: line[37] = 1
|
||||
if pdata[p]['foldedSbToSteal']: line[38] = 1
|
||||
if pdata[p]['street1CBChance']: line[39] = 1
|
||||
if pdata[p]['street1CBDone']: line[40] = 1
|
||||
if pdata[p]['street2CBChance']: line[41] = 1
|
||||
if pdata[p]['street2CBDone']: line[42] = 1
|
||||
if pdata[p]['street3CBChance']: line[43] = 1
|
||||
if pdata[p]['street3CBDone']: line[44] = 1
|
||||
if pdata[p]['street4CBChance']: line[45] = 1
|
||||
if pdata[p]['street4CBDone']: line[46] = 1
|
||||
if pdata[p]['foldToStreet1CBChance']: line[47] = 1
|
||||
if pdata[p]['foldToStreet1CBDone']: line[48] = 1
|
||||
if pdata[p]['foldToStreet2CBChance']: line[49] = 1
|
||||
if pdata[p]['foldToStreet2CBDone']: line[50] = 1
|
||||
if pdata[p]['foldToStreet3CBChance']: line[51] = 1
|
||||
if pdata[p]['foldToStreet3CBDone']: line[52] = 1
|
||||
if pdata[p]['foldToStreet4CBChance']: line[53] = 1
|
||||
if pdata[p]['foldToStreet4CBDone']: line[54] = 1
|
||||
line[55] = pdata[p]['totalProfit']
|
||||
if pdata[p]['street1CheckCallRaiseChance']: line[56] = 1
|
||||
if pdata[p]['street1CheckCallRaiseDone']: line[57] = 1
|
||||
if pdata[p]['street2CheckCallRaiseChance']: line[58] = 1
|
||||
if pdata[p]['street2CheckCallRaiseDone']: line[59] = 1
|
||||
if pdata[p]['street3CheckCallRaiseChance']: line[60] = 1
|
||||
if pdata[p]['street3CheckCallRaiseDone']: line[61] = 1
|
||||
if pdata[p]['street4CheckCallRaiseChance']: line[62] = 1
|
||||
if pdata[p]['street4CheckCallRaiseDone']: line[63] = 1
|
||||
if pdata[p]['street0Calls']: line[64] = 1
|
||||
if pdata[p]['street1Calls']: line[65] = 1
|
||||
if pdata[p]['street2Calls']: line[66] = 1
|
||||
if pdata[p]['street3Calls']: line[67] = 1
|
||||
if pdata[p]['street4Calls']: line[68] = 1
|
||||
if pdata[p]['street0Bets']: line[69] = 1
|
||||
if pdata[p]['street1Bets']: line[70] = 1
|
||||
if pdata[p]['street2Bets']: line[71] = 1
|
||||
if pdata[p]['street3Bets']: line[72] = 1
|
||||
if pdata[p]['street4Bets']: line[73] = 1
|
||||
if pdata[p]['street0Raises']: line[74] = 1
|
||||
if pdata[p]['street1Raises']: line[75] = 1
|
||||
if pdata[p]['street2Raises']: line[76] = 1
|
||||
if pdata[p]['street3Raises']: line[77] = 1
|
||||
if pdata[p]['street4Raises']: line[78] = 1
|
||||
|
||||
line[70] = gid # gametypeId
|
||||
line[71] = pids[p] # playerId
|
||||
line[72] = len(pids) # activeSeats
|
||||
line[79] = gid # gametypeId
|
||||
line[80] = pids[p] # playerId
|
||||
line[81] = len(pids) # activeSeats
|
||||
pos = {'B':'B', 'S':'S', 0:'D', 1:'C', 2:'M', 3:'M', 4:'M', 5:'E', 6:'E', 7:'E', 8:'E', 9:'E' }
|
||||
line[73] = pos[pdata[p]['position']]
|
||||
line[74] = pdata[p]['tourneyTypeId']
|
||||
line[75] = styleKey # styleKey
|
||||
line[82] = pos[pdata[p]['position']]
|
||||
line[83] = pdata[p]['tourneyTypeId']
|
||||
line[84] = styleKey # styleKey
|
||||
inserts.append(line)
|
||||
|
||||
|
||||
|
||||
@@ -416,7 +416,16 @@ or None if we fail to get the info """
|
||||
# ['player1name', 'player2name', ...] where player1name is the sb and player2name is bb,
|
||||
# addtional players are assumed to post a bb oop
|
||||
def readBlinds(self, hand): abstract
|
||||
"""Function for reading the various blinds from the hand history.
|
||||
|
||||
Pass any small blind to hand.addBlind(<name>, "small blind", <value>)
|
||||
- unless it is a single dead small blind then use:
|
||||
hand.addBlind(<name>, 'secondsb', <value>)
|
||||
Pass any big blind to hand.addBlind(<name>, "big blind", <value>)
|
||||
Pass any play posting both big and small blinds to hand.addBlind(<name>, 'both', <vale>)
|
||||
"""
|
||||
def readAntes(self, hand): abstract
|
||||
"""Function for reading the antes from the hand history and passing the hand.addAnte"""
|
||||
def readBringIn(self, hand): abstract
|
||||
def readButton(self, hand): abstract
|
||||
def readHeroCards(self, hand): abstract
|
||||
@@ -473,18 +482,6 @@ or None if we fail to get the info """
|
||||
self.filetype = filetype
|
||||
self.codepage = codepage
|
||||
|
||||
#This function doesn't appear to be used
|
||||
def splitFileIntoHands(self):
|
||||
hands = []
|
||||
self.obs = self.obs.strip()
|
||||
list = self.re_SplitHands.split(self.obs)
|
||||
list.pop() #Last entry is empty
|
||||
for l in list:
|
||||
# print "'" + l + "'"
|
||||
hands = hands + [Hand.Hand(self.config, self.sitename, self.gametype, l)]
|
||||
# TODO: This looks like it could be replaced with a list comp.. ?
|
||||
return hands
|
||||
|
||||
def __listof(self, x):
|
||||
if isinstance(x, list) or isinstance(x, tuple):
|
||||
return x
|
||||
|
||||
+4
-1
@@ -525,7 +525,10 @@ class Hud:
|
||||
def debug_stat_windows(self, *args):
|
||||
# print self.table, "\n", self.main_window.window.get_transient_for()
|
||||
for w in self.stat_windows:
|
||||
print self.stat_windows[w].window.window.get_transient_for()
|
||||
try:
|
||||
print self.stat_windows[w].window.window.get_transient_for()
|
||||
except AttributeError:
|
||||
print "this window doesnt have get_transient_for"
|
||||
|
||||
def save_layout(self, *args):
|
||||
new_layout = [(0, 0)] * self.max
|
||||
|
||||
@@ -66,8 +66,7 @@ def run(config, db):
|
||||
#print "response to fetch subject:",response
|
||||
if response!="OK":
|
||||
raise error #TODO: show error message
|
||||
if headerData[1].find("Subject: PokerStars Tournament History Request - Last x")!=1:
|
||||
neededMessages.append(("PS", messageNumber))
|
||||
neededMessages.append(("PS", messageNumber))
|
||||
|
||||
if (len(neededMessages)==0):
|
||||
raise error #TODO: show error message
|
||||
|
||||
@@ -50,7 +50,7 @@ class OnGame(HandHistoryConverter):
|
||||
'LS' : "\$|\xe2\x82\xac|" # legal currency symbols - Euro(cp1252, utf-8)
|
||||
}
|
||||
|
||||
limits = { 'NO LIMIT':'nl', 'LIMIT':'fl'}
|
||||
limits = { 'NO_LIMIT':'nl', 'LIMIT':'fl'}
|
||||
|
||||
games = { # base, category
|
||||
"TEXAS_HOLDEM" : ('hold','holdem'),
|
||||
|
||||
+51
-2
@@ -108,7 +108,52 @@ class Sql:
|
||||
self.query['createSettingsTable'] = """CREATE TABLE Settings
|
||||
(version INTEGER NOT NULL) """
|
||||
|
||||
|
||||
################################
|
||||
# Create RawHands (this table is all but identical with RawTourneys)
|
||||
################################
|
||||
if db_server == 'mysql':
|
||||
self.query['createRawHands'] = """CREATE TABLE RawHands (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
|
||||
handId BIGINT NOT NULL,
|
||||
rawHand TEXT NOT NULL,
|
||||
complain BOOLEAN NOT NULL DEFAULT FALSE)
|
||||
ENGINE=INNODB"""
|
||||
elif db_server == 'postgresql':
|
||||
self.query['createRawHands'] = """CREATE TABLE RawHands (
|
||||
id BIGSERIAL, PRIMARY KEY (id),
|
||||
handId BIGINT NOT NULL,
|
||||
rawHand TEXT NOT NULL,
|
||||
complain BOOLEAN NOT NULL DEFAULT FALSE)"""
|
||||
elif db_server == 'sqlite':
|
||||
self.query['createRawHands'] = """CREATE TABLE RawHands (
|
||||
id INTEGER PRIMARY KEY,
|
||||
handId BIGINT NOT NULL,
|
||||
rawHand TEXT NOT NULL,
|
||||
complain BOOLEAN NOT NULL DEFAULT FALSE)"""
|
||||
|
||||
################################
|
||||
# Create RawTourneys (this table is all but identical with RawHands)
|
||||
################################
|
||||
if db_server == 'mysql':
|
||||
self.query['createRawTourneys'] = """CREATE TABLE RawTourneys (
|
||||
id BIGINT UNSIGNED AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
|
||||
tourneyId BIGINT NOT NULL,
|
||||
rawTourney TEXT NOT NULL,
|
||||
complain BOOLEAN NOT NULL DEFAULT FALSE)
|
||||
ENGINE=INNODB"""
|
||||
elif db_server == 'postgresql':
|
||||
self.query['createRawTourneys'] = """CREATE TABLE RawTourneys (
|
||||
id BIGSERIAL, PRIMARY KEY (id),
|
||||
tourneyId BIGINT NOT NULL,
|
||||
rawTourney TEXT NOT NULL,
|
||||
complain BOOLEAN NOT NULL DEFAULT FALSE)"""
|
||||
elif db_server == 'sqlite':
|
||||
self.query['createRawTourneys'] = """CREATE TABLE RawTourneys (
|
||||
id INTEGER PRIMARY KEY,
|
||||
tourneyId BIGINT NOT NULL,
|
||||
rawTourney TEXT NOT NULL,
|
||||
complain BOOLEAN NOT NULL DEFAULT FALSE)"""
|
||||
|
||||
################################
|
||||
# Create Sites
|
||||
################################
|
||||
@@ -3753,6 +3798,10 @@ class Sql:
|
||||
street0Aggr=street0Aggr+%s,
|
||||
street0_3BChance=street0_3BChance+%s,
|
||||
street0_3BDone=street0_3BDone+%s,
|
||||
street0_4BChance=street0_4BChance+%s,
|
||||
street0_4BDone=street0_4BDone+%s,
|
||||
other3BStreet0=other3BStreet0+%s,
|
||||
other4BStreet0=other4BStreet0+%s,
|
||||
street1Seen=street1Seen+%s,
|
||||
street2Seen=street2Seen+%s,
|
||||
street3Seen=street3Seen+%s,
|
||||
@@ -4182,7 +4231,7 @@ class Sql:
|
||||
################################
|
||||
# queries for dumpDatabase
|
||||
################################
|
||||
for table in (u'Autorates', u'Backings', u'Gametypes', u'Hands', u'HandsActions', u'HandsPlayers', u'HudCache', u'Players', u'Settings', u'Sites', u'TourneyTypes', u'Tourneys', u'TourneysPlayers'):
|
||||
for table in (u'Autorates', u'Backings', u'Gametypes', u'Hands', u'HandsActions', u'HandsPlayers', u'HudCache', u'Players', u'RawHands', u'RawTourneys', u'Settings', u'Sites', u'TourneyTypes', u'Tourneys', u'TourneysPlayers'):
|
||||
self.query['get'+table] = u"SELECT * FROM "+table
|
||||
|
||||
################################
|
||||
|
||||
+24
-14
@@ -1093,6 +1093,7 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
|
||||
self.status_bar = None
|
||||
self.quitting = False
|
||||
|
||||
self.visible = False
|
||||
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
|
||||
self.window.connect("delete_event", self.delete_event)
|
||||
self.window.connect("destroy", self.destroy)
|
||||
@@ -1130,6 +1131,7 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
|
||||
self.tab_main_help(None, None)
|
||||
|
||||
self.window.show()
|
||||
self.visible = True # Flip on
|
||||
self.load_profile(create_db = True)
|
||||
|
||||
if not options.errorsToConsole:
|
||||
@@ -1165,21 +1167,31 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
|
||||
self.window.connect('window-state-event', self.window_state_event_cb)
|
||||
sys.stderr.write(_("fpdb starting ..."))
|
||||
|
||||
|
||||
def __iconify(self):
|
||||
self.visible = False
|
||||
self.window.set_skip_taskbar_hint(True)
|
||||
self.window.set_skip_pager_hint(True)
|
||||
|
||||
def __deiconify(self):
|
||||
self.visible = True
|
||||
self.window.set_skip_taskbar_hint(False)
|
||||
self.window.set_skip_pager_hint(False)
|
||||
|
||||
def window_state_event_cb(self, window, event):
|
||||
# Deal with iconification first
|
||||
if event.changed_mask & gtk.gdk.WINDOW_STATE_ICONIFIED:
|
||||
# -20 = GWL_EXSTYLE can't find it in the pywin32 libs
|
||||
#bits = win32api.GetWindowLong(self.window.window.handle, -20)
|
||||
#bits = bits ^ (win32con.WS_EX_TOOLWINDOW | win32con.WS_EX_APPWINDOW)
|
||||
|
||||
#win32api.SetWindowLong(self.window.window.handle, -20, bits)
|
||||
|
||||
if event.new_window_state & gtk.gdk.WINDOW_STATE_ICONIFIED:
|
||||
self.window.hide()
|
||||
self.window.set_skip_taskbar_hint(True)
|
||||
self.window.set_skip_pager_hint(True)
|
||||
self.__iconify()
|
||||
else:
|
||||
self.window.set_skip_taskbar_hint(False)
|
||||
self.window.set_skip_pager_hint(False)
|
||||
self.__deiconify()
|
||||
if not event.new_window_state & gtk.gdk.WINDOW_STATE_WITHDRAWN:
|
||||
return True
|
||||
# And then the tray icon click
|
||||
if event.new_window_state & gtk.gdk.WINDOW_STATE_WITHDRAWN:
|
||||
self.__iconify()
|
||||
else:
|
||||
self.__deiconify()
|
||||
# Tell GTK not to propagate this signal any further
|
||||
return True
|
||||
|
||||
@@ -1197,11 +1209,9 @@ You can find the full license texts in agpl-3.0.txt, gpl-2.0.txt, gpl-3.0.txt an
|
||||
def statusicon_activate(self, widget, data = None):
|
||||
# Let's allow the tray icon to toggle window visibility, the way
|
||||
# most other apps work
|
||||
shown = self.window.get_property('visible')
|
||||
if shown:
|
||||
if self.visible:
|
||||
self.window.hide()
|
||||
else:
|
||||
self.window.show()
|
||||
self.window.present()
|
||||
|
||||
def info_box(self, str1, str2):
|
||||
|
||||
+1719
File diff suppressed because it is too large
Load Diff
-1623
File diff suppressed because it is too large
Load Diff
+3664
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user