[Python-checkins] r43388 - sandbox/trunk/welease/welease.glade sandbox/trunk/welease/welease.py
anthony.baxter
python-checkins at python.org
Tue Mar 28 10:23:51 CEST 2006
Author: anthony.baxter
Date: Tue Mar 28 10:23:51 2006
New Revision: 43388
Modified:
sandbox/trunk/welease/welease.glade
sandbox/trunk/welease/welease.py
Log:
checks for uncommitted svn changes
checks for idleversion
Modified: sandbox/trunk/welease/welease.glade
==============================================================================
--- sandbox/trunk/welease/welease.glade (original)
+++ sandbox/trunk/welease/welease.glade Tue Mar 28 10:23:51 2006
@@ -574,11 +574,11 @@
</child>
<child>
- <widget class="GtkScrolledWindow" id="scrolledwindow2">
+ <widget class="GtkScrolledWindow" id="textscroll">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_IN</property>
<property name="window_placement">GTK_CORNER_TOP_RIGHT</property>
Modified: sandbox/trunk/welease/welease.py
==============================================================================
--- sandbox/trunk/welease/welease.py (original)
+++ sandbox/trunk/welease/welease.py Tue Mar 28 10:23:51 2006
@@ -26,6 +26,15 @@
# Make the 'Abort' button work
# Add a *lot* more checks to the Check Release stage.
+# Check Release steps:
+#
+# Checks Include/patchlevel.h (fatal if wrong)
+# Checks for uncommitted changes in the checkout (nonfatal)
+# Checks Lib/idlelib/idlever.py (fatal)
+# Checks Misc/NEWS and Lib/idlelib/NEWS.txt (nonfatal) [XXX]
+# Checks PCbuild/BUILDno.txt ? [XXX]
+# Checks Tools/msi/msi.py ? [XXX]
+
import gnome
gnomeProgram = gnome.init("Welease", "0.1")
import pygtk
@@ -37,7 +46,7 @@
gtk2reactor.install()
from twisted.internet import reactor, protocol, defer
-import os
+import os, sys
# Config section. This should all be put into a config file or something
CheckoutHome = '/home/anthony/projects/python'
@@ -74,8 +83,12 @@
self.xml.signal_autoconnect(self)
self.xml.get_widget('weleaseMainWindow').show_all()
output = self.xml.get_widget("outputText")
- self.logger = TextViewer(output.get_buffer())
- #self.logger.set_visible(self.xml.get_widget('scrolledwindow2'))
+ attr = output.get_default_attributes()
+ style = output.rc_get_style()
+ #print style, dir(style)
+ #print dir(style.fg), style.bg, style.get_font()
+ self.logger = TextViewer(output)
+ self.logger.set_visible(self.xml.get_widget('textscroll'))
def warnPopup(self, message, fatal=True, d=None):
if d is None: print "**", message
@@ -174,7 +187,53 @@
def checkReleaseTestVersion(self, (output, error)):
if output != '%s %s\n'%(self.newRelease, self.newRelease):
return self.warnPopup('Include/patchlevel.h is not correct')
+ checkout = CheckoutPaths[self.currentBranch]
+ os.chdir(checkout)
+ d = self.do_command(["svn", "stat"], capture=True)
+ d.addCallback(self.checkReleaseFindUnmergedChanges)
+
+ def checkReleaseFindUnmergedChanges(self, (stdout, stderr)):
+ checkout = CheckoutPaths[self.currentBranch]
+ unmerged = set()
+ badstats = ('M', 'A', 'C', 'D', 'G', 'R', '~', '!')
+ for line in stdout.splitlines():
+ line = line.strip().split()
+ if not line:
+ continue
+ stat = line[0]
+ for c in badstats:
+ if c in stat:
+ unmerged.add(line[-1])
+ if not unmerged:
+ self.checkReleaseIdlelibVer()
+ else:
+ d = self.warnPopup('The following have uncommitted changes in\n' +
+ '%s\n'%checkout +
+ ' '.join(unmerged),
+ fatal=False)
+ d.addCallback(lambda x: x==True and self.checkReleaseIdlelibVer())
+ return
+ def checkReleaseIdlelibVer(self):
+ checkout = CheckoutPaths[self.currentBranch]
+ libpath = os.path.join(checkout, 'Lib')
+ if libpath in sys.modules:
+ print "already added %s to sys.path??"%libpath
+ else:
+ sys.path.insert(0, libpath)
+ from idlelib.idlever import IDLE_VERSION
+ # Now compare Python and Idle versions.
+ pyver = self.newRelease.split('.')
+ idlever = IDLE_VERSION.split('.')
+ unimportModules('idlelib', 'idlelib.idlever')
+ if (int(pyver[0]) - 1 != int(idlever[0]) or
+ int(pyver[1]) - 3 != int(idlever[1]) or
+ pyver[2] != idlever[2]):
+ return self.warnPopup('Lib/idlelib/idlever.py is not correct')
+ self.checkReleaseCheckNewsFiles()
+
+ def checkReleaseCheckNewsFiles(self):
+ checkout = CheckoutPaths[self.currentBranch]
self.checkReleaseDone()
def checkReleaseDone(self):
@@ -194,7 +253,6 @@
def makeTagCheckSvnExists(self, (stdout, stderr)):
if 'Node Kind' in stdout:
- # uh oh.
d = self.warnPopup('Tag %s is already in SVN!'%(self.tagPath) +
'svn rm first to recreate it',
fatal=False)
@@ -254,26 +312,36 @@
DELETECHUNK = 100
def __init__(self, widget):
- self.buffer = widget
+ self.buffer = widget.get_buffer()
+ self.widget = widget
self.scroll = None
+ self.textTag = gtk.TextTag('default')
+ self.textTag.set_property('family', 'Monospace')
+ #self.textTag.set_property('background', 'black')
+ #self.textTag.set_property('foreground', 'white')
+ self.buffer.get_tag_table().add(self.textTag)
def set_visible(self, scroll):
- self.scroll = scroll
- if scroll:
- adj = self.scroll.get_vadjustment()
- adj.set_value(adj.upper)
+ self.widget.place_cursor_onscreen()
+ #self.scroll = scroll
+ #if scroll:
+ #adj = self.scroll.get_vadjustment()
+ #adj.set_value(adj.upper)
def write(self, text):
b = self.buffer
- b.insert(b.get_end_iter(), text)
+ b.insert_with_tags(b.get_end_iter(), text, self.textTag)
lines = b.get_line_count()
if lines > self.MAXLINES:
b.delete(b.get_start_iter(),
b.get_iter_at_line_offset(self.DELETECHUNK,0))
- if self.scroll is not None:
- print "scrolling"
- adj = self.scroll.get_vadjustment()
- adj.set_value(adj.upper)
+ # Doesn't sodding work...
+ b.place_cursor(b.get_end_iter())
+ self.widget.place_cursor_onscreen()
+ #if self.scroll is not None:
+ # print "scrolling"
+ # adj = self.scroll.get_vadjustment()
+ # adj.set_value(adj.upper)
def flush(self):
pass
@@ -320,6 +388,11 @@
self.defer.callback((self.stdout, self.stderr))
self.defer = None
+def unimportModules(*modules):
+ for mod in modules:
+ if mod in sys.modules:
+ del sys.modules[mod]
+
def main():
win = WeleaseWindow()
@@ -329,6 +402,8 @@
+
+# Yeah, this is ugly code. Just slapped something together quickly.
TestVersionCode = r"""
#include <Include/patchlevel.h>
#include <stdio.h>
More information about the Python-checkins
mailing list