#!/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. Proc \n" + " \tNatl Acad USA, 107 (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