-
Notifications
You must be signed in to change notification settings - Fork 45
/
citationPopup.py
131 lines (101 loc) · 4.3 KB
/
citationPopup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/usr/bin/env python
"""Display a pop-up that informs the user about RCrane's citations"""
# Copyright 2011, 2012 Kevin Keating
#
# Licensed under the Educational Community License, Version 2.0 (the
# "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.osedu.org/licenses/ECL-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an "AS IS"
# BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
# or implied. See the License for the specific language governing
# permissions and limitations under the License.
import gtk
from settings import addSetting
__dontShowAgain = False
__dontShowAgainButton = None
def createCitationPopup():
"""Creates and displays a popup informing the user about RCrane's citations.
ARGUMENTS:
None
RETURNS:
None
EFFECTS:
creates and displays the citation dialog
NOTE:
This function returns either:
a) immediately, if the user has already checked the "Don't show this again" option
or b) after the user has closed the dialog
"""
global __dontShowAgainButton
if __dontShowAgain:
return
citeDialog = gtk.Dialog("RCrane", None, gtk.DIALOG_MODAL | gtk.DIALOG_NO_SEPARATOR)
citeDialog.set_resizable(False)
citeDialog.connect("delete_event", __citationPopupCloseWin)
citeLabel = gtk.Label()
citeLabel.set_markup(" RCrane partially automates the RNA model building process. All \n" +
" publications resulting from the use of RCrane must acknowledge: \n\n" +
" Keating KS and Pyle AM. Semiautomated model building for RNA \n" +
" \tcrystallography using a directed rotameric approach. <span style='italic'>Proc \n" +
" \tNatl Acad USA</span>, <span weight='bold'>107</span> (2010) 8177-8182. ")
citeLabel.show()
citeDialog.vbox.pack_start(citeLabel, True, True, 7)
#change the layout so the check button appears on the left
citeDialog.action_area.set_layout(gtk.BUTTONBOX_EDGE)
dontShowAgainButton = gtk.CheckButton("Don't show this again")
dontShowAgainButton.show()
citeDialog.action_area.pack_start(dontShowAgainButton, False, False, 0)
#store the Don't Show Again button object so we can later check to see if it's been checked
__dontShowAgainButton = dontShowAgainButton
okButton = gtk.Button("_OK", gtk.STOCK_OK)
okButton.connect("clicked", __citationPopupOK, citeDialog)
okButton.show_all()
citeDialog.action_area.pack_end(okButton, False, False, 0)
citeDialog.run()
citeDialog.destroy()
def __citationPopupCloseWin(window, widget):
"""Respond to the user closing the citation pop-up window
ARUGMENTS:
window - the pop-up window object
widget - the widget used to close the window
NOTES:
This function simply calls __citationPopupOK with a reversed argument list
"""
__citationPopupOK(widget, window)
def __citationPopupOK(widget, window):
"""Respond to the user clicking OK
ARGUMENTS:
widget - the OK button
window - the pop-up window object
RETURNS:
None
"""
global __dontShowAgainButton
#if the user has clicked Don't show again
if __dontShowAgainButton.get_active():
#then store that setting in a module variable
global __dontShowAgain
__dontShowAgain = True
#and store the setting in the RCrane settings file
addSetting("rcrane.dontShowCitationPopup()")
#if RCrane isn't installed, this command will produce an error the next time Coot is launched
#but the error shouldn't cause any problems (other than possibly confusing the user)
#clear the Don't show again button object
__dontShowAgainButton = None
#close the window
window.destroy()
def dontShowPopup():
"""Set the flag so that the citation pop-up is not shown
ARGUMENTS:
None
RETURNS:
None
NOTES:
This function is intended to be called in the RCrane settings file
"""
global __dontShowAgain
__dontShowAgain = True