author | Steve Borho <steve@borho.org> |
Sun, 27 Jan 2008 21:52:17 -0600 | |
changeset 889 | 3bc868f2b133 |
parent 883 | 25adeacce00e |
child 999 | 071b3aa8b7c3 |
permissions | -rw-r--r-- |
309 | 1 |
# |
2 |
# TortoiseHg dialog to start web server |
|
3 |
# |
|
4 |
# Copyright (C) 2007 Steve Borho <steve@borho.org> |
|
5 |
# Copyright (C) 2007 TK Soh <teekaysoh@gmail.com> |
|
6 |
# |
|
7 |
||
8 |
try: |
|
9 |
import pygtk |
|
10 |
pygtk.require("2.0") |
|
11 |
except: |
|
12 |
pass |
|
13 |
||
14 |
import gtk |
|
15 |
import gobject |
|
872
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
16 |
import httplib |
309 | 17 |
import os |
18 |
import pango |
|
19 |
import Queue |
|
312
03bd6b30de68
hggtk: serve dialog, cleanup dialog messages
Steve Borho <steve@borho.org>
parents:
311
diff
changeset
|
20 |
import socket |
309 | 21 |
import sys |
22 |
import threading |
|
872
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
23 |
import time |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
24 |
import hglib |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
25 |
from dialog import question_dialog, error_dialog |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
26 |
from mercurial import hg, ui, commands, cmdutil, util |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
27 |
from mercurial.hgweb import server |
309 | 28 |
from mercurial.i18n import _ |
455 | 29 |
from shlib import set_tortoise_icon |
309 | 30 |
|
872
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
31 |
gservice = None |
853
a8fc63e4cba4
hggtk/serve: new window layout
Steve Borho <steve@borho.org>
parents:
553
diff
changeset
|
32 |
class ServeDialog(gtk.Window): |
309 | 33 |
""" Dialog to run web server""" |
872
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
34 |
def __init__(self, cwd='', root=''): |
309 | 35 |
""" Initialize the Dialog """ |
853
a8fc63e4cba4
hggtk/serve: new window layout
Steve Borho <steve@borho.org>
parents:
553
diff
changeset
|
36 |
gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL) |
309 | 37 |
|
455 | 38 |
set_tortoise_icon(self, 'proxy.ico') |
324
f18e8b19c8e4
hggtk: Capture response event in sever dialog
Steve Borho <steve@borho.org>
parents:
323
diff
changeset
|
39 |
self.connect('delete-event', self._delete) |
312
03bd6b30de68
hggtk: serve dialog, cleanup dialog messages
Steve Borho <steve@borho.org>
parents:
311
diff
changeset
|
40 |
|
872
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
41 |
# Pipe stderr, stdout to self.write |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
42 |
sys.stdout = self |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
43 |
sys.stderr = self |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
44 |
|
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
45 |
# Override mercurial.commands.serve() with our own version |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
46 |
# that supports being stopped |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
47 |
commands.table.update(thg_serve_cmd) |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
48 |
|
368
27d438da221d
hggtk/serve: add button to view web server using default browser
TK Soh <teekaysoh@yahoo.com>
parents:
351
diff
changeset
|
49 |
self._url = None |
325
f3f9733eec37
hggtk: Pass repo to serve dialog, fixup web.name
Steve Borho <steve@borho.org>
parents:
324
diff
changeset
|
50 |
self._root = root |
889
3bc868f2b133
hggtk/serve: set web.name into ui object, cleanup config usage
Steve Borho <steve@borho.org>
parents:
883
diff
changeset
|
51 |
if cwd: |
3bc868f2b133
hggtk/serve: set web.name into ui object, cleanup config usage
Steve Borho <steve@borho.org>
parents:
883
diff
changeset
|
52 |
os.chdir(cwd) |
309 | 53 |
|
889
3bc868f2b133
hggtk/serve: set web.name into ui object, cleanup config usage
Steve Borho <steve@borho.org>
parents:
883
diff
changeset
|
54 |
self._get_config() |
326
21ca136e64c0
hggtk: Make serve dialog default to 500x300
Steve Borho <steve@borho.org>
parents:
325
diff
changeset
|
55 |
self.set_default_size(500, 300) |
309 | 56 |
|
351
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
57 |
# toolbar |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
58 |
self.tbar = gtk.Toolbar() |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
59 |
self._button_start = self._toolbutton(gtk.STOCK_MEDIA_PLAY, |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
60 |
'Start', |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
61 |
self._on_start_clicked, |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
62 |
None) |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
63 |
self._button_stop = self._toolbutton(gtk.STOCK_MEDIA_STOP, |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
64 |
'Stop', |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
65 |
self._on_stop_clicked, |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
66 |
None) |
368
27d438da221d
hggtk/serve: add button to view web server using default browser
TK Soh <teekaysoh@yahoo.com>
parents:
351
diff
changeset
|
67 |
self._button_browse = self._toolbutton(gtk.STOCK_HOME, |
27d438da221d
hggtk/serve: add button to view web server using default browser
TK Soh <teekaysoh@yahoo.com>
parents:
351
diff
changeset
|
68 |
'Browse', |
27d438da221d
hggtk/serve: add button to view web server using default browser
TK Soh <teekaysoh@yahoo.com>
parents:
351
diff
changeset
|
69 |
self._on_browse_clicked, |
27d438da221d
hggtk/serve: add button to view web server using default browser
TK Soh <teekaysoh@yahoo.com>
parents:
351
diff
changeset
|
70 |
None) |
469
a9c1082bbd8f
hggtk/serve: add 'Configure' toolbar button
Steve Borho <steve@borho.org>
parents:
459
diff
changeset
|
71 |
self._button_conf = self._toolbutton(gtk.STOCK_PREFERENCES, |
a9c1082bbd8f
hggtk/serve: add 'Configure' toolbar button
Steve Borho <steve@borho.org>
parents:
459
diff
changeset
|
72 |
'Configure', |
a9c1082bbd8f
hggtk/serve: add 'Configure' toolbar button
Steve Borho <steve@borho.org>
parents:
459
diff
changeset
|
73 |
self._on_conf_clicked, |
a9c1082bbd8f
hggtk/serve: add 'Configure' toolbar button
Steve Borho <steve@borho.org>
parents:
459
diff
changeset
|
74 |
None) |
853
a8fc63e4cba4
hggtk/serve: new window layout
Steve Borho <steve@borho.org>
parents:
553
diff
changeset
|
75 |
sep = gtk.SeparatorToolItem() |
a8fc63e4cba4
hggtk/serve: new window layout
Steve Borho <steve@borho.org>
parents:
553
diff
changeset
|
76 |
sep.set_expand(True) |
a8fc63e4cba4
hggtk/serve: new window layout
Steve Borho <steve@borho.org>
parents:
553
diff
changeset
|
77 |
sep.set_draw(False) |
a8fc63e4cba4
hggtk/serve: new window layout
Steve Borho <steve@borho.org>
parents:
553
diff
changeset
|
78 |
self._button_close = self._toolbutton(gtk.STOCK_CLOSE, 'Close', |
a8fc63e4cba4
hggtk/serve: new window layout
Steve Borho <steve@borho.org>
parents:
553
diff
changeset
|
79 |
self._close_clicked) |
a8fc63e4cba4
hggtk/serve: new window layout
Steve Borho <steve@borho.org>
parents:
553
diff
changeset
|
80 |
|
351
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
81 |
tbuttons = [ |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
82 |
self._button_start, |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
83 |
self._button_stop, |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
84 |
gtk.SeparatorToolItem(), |
368
27d438da221d
hggtk/serve: add button to view web server using default browser
TK Soh <teekaysoh@yahoo.com>
parents:
351
diff
changeset
|
85 |
self._button_browse, |
553
72d6af483bf7
hggtk/serve: group tool buttons by functionality
TK Soh <teekaysoh@yahoo.com>
parents:
516
diff
changeset
|
86 |
gtk.SeparatorToolItem(), |
469
a9c1082bbd8f
hggtk/serve: add 'Configure' toolbar button
Steve Borho <steve@borho.org>
parents:
459
diff
changeset
|
87 |
self._button_conf, |
853
a8fc63e4cba4
hggtk/serve: new window layout
Steve Borho <steve@borho.org>
parents:
553
diff
changeset
|
88 |
sep, |
a8fc63e4cba4
hggtk/serve: new window layout
Steve Borho <steve@borho.org>
parents:
553
diff
changeset
|
89 |
self._button_close, |
351
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
90 |
] |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
91 |
for btn in tbuttons: |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
92 |
self.tbar.insert(btn, -1) |
853
a8fc63e4cba4
hggtk/serve: new window layout
Steve Borho <steve@borho.org>
parents:
553
diff
changeset
|
93 |
|
a8fc63e4cba4
hggtk/serve: new window layout
Steve Borho <steve@borho.org>
parents:
553
diff
changeset
|
94 |
vbox = gtk.VBox() |
a8fc63e4cba4
hggtk/serve: new window layout
Steve Borho <steve@borho.org>
parents:
553
diff
changeset
|
95 |
self.add(vbox) |
a8fc63e4cba4
hggtk/serve: new window layout
Steve Borho <steve@borho.org>
parents:
553
diff
changeset
|
96 |
vbox.pack_start(self.tbar, False, False, 2) |
351
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
97 |
|
309 | 98 |
# revision input |
99 |
revbox = gtk.HBox() |
|
100 |
lbl = gtk.Label("HTTP Port:") |
|
323
feb7f335c6d7
hggtk: minor cleanup in serve dialog
Steve Borho <steve@borho.org>
parents:
322
diff
changeset
|
101 |
lbl.set_property("width-chars", 16) |
309 | 102 |
lbl.set_alignment(0, 0.5) |
103 |
self._port_input = gtk.Entry() |
|
459
35252de5daee
hggtk/serve.py: respect web.port configuration
Steve Borho <steve@borho.org>
parents:
455
diff
changeset
|
104 |
self._port_input.set_text(self.defport) |
309 | 105 |
revbox.pack_start(lbl, False, False) |
106 |
revbox.pack_start(self._port_input, False, False) |
|
853
a8fc63e4cba4
hggtk/serve: new window layout
Steve Borho <steve@borho.org>
parents:
553
diff
changeset
|
107 |
vbox.pack_start(revbox, False, False, 2) |
309 | 108 |
|
109 |
scrolledwindow = gtk.ScrolledWindow() |
|
351
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
110 |
scrolledwindow.set_shadow_type(gtk.SHADOW_ETCHED_IN) |
309 | 111 |
scrolledwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) |
112 |
self.textview = gtk.TextView(buffer=None) |
|
113 |
self.textview.set_editable(False) |
|
114 |
self.textview.modify_font(pango.FontDescription("Monospace")) |
|
115 |
scrolledwindow.add(self.textview) |
|
116 |
self.textview.set_editable(False) |
|
117 |
self.textbuffer = self.textview.get_buffer() |
|
853
a8fc63e4cba4
hggtk/serve: new window layout
Steve Borho <steve@borho.org>
parents:
553
diff
changeset
|
118 |
vbox.pack_start(scrolledwindow, True, True) |
889
3bc868f2b133
hggtk/serve: set web.name into ui object, cleanup config usage
Steve Borho <steve@borho.org>
parents:
883
diff
changeset
|
119 |
self._set_button_states() |
309 | 120 |
|
889
3bc868f2b133
hggtk/serve: set web.name into ui object, cleanup config usage
Steve Borho <steve@borho.org>
parents:
883
diff
changeset
|
121 |
def _get_config(self): |
3bc868f2b133
hggtk/serve: set web.name into ui object, cleanup config usage
Steve Borho <steve@borho.org>
parents:
883
diff
changeset
|
122 |
try: |
3bc868f2b133
hggtk/serve: set web.name into ui object, cleanup config usage
Steve Borho <steve@borho.org>
parents:
883
diff
changeset
|
123 |
repo = hg.repository(ui.ui(), path=self._root) |
3bc868f2b133
hggtk/serve: set web.name into ui object, cleanup config usage
Steve Borho <steve@borho.org>
parents:
883
diff
changeset
|
124 |
except hg.RepoError: |
3bc868f2b133
hggtk/serve: set web.name into ui object, cleanup config usage
Steve Borho <steve@borho.org>
parents:
883
diff
changeset
|
125 |
print 'no repository found' |
3bc868f2b133
hggtk/serve: set web.name into ui object, cleanup config usage
Steve Borho <steve@borho.org>
parents:
883
diff
changeset
|
126 |
gtk.main_quit() |
3bc868f2b133
hggtk/serve: set web.name into ui object, cleanup config usage
Steve Borho <steve@borho.org>
parents:
883
diff
changeset
|
127 |
self.defport = repo.ui.config('web', 'port') or '8000' |
3bc868f2b133
hggtk/serve: set web.name into ui object, cleanup config usage
Steve Borho <steve@borho.org>
parents:
883
diff
changeset
|
128 |
self.webname = repo.ui.config('web', 'name') or \ |
3bc868f2b133
hggtk/serve: set web.name into ui object, cleanup config usage
Steve Borho <steve@borho.org>
parents:
883
diff
changeset
|
129 |
os.path.basename(self._root) |
3bc868f2b133
hggtk/serve: set web.name into ui object, cleanup config usage
Steve Borho <steve@borho.org>
parents:
883
diff
changeset
|
130 |
self.set_title("hg serve - " + self.webname) |
309 | 131 |
|
351
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
132 |
def _toolbutton(self, stock, label, handler, menu=None, userdata=None): |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
133 |
if menu: |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
134 |
tbutton = gtk.MenuToolButton(stock) |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
135 |
tbutton.set_menu(menu) |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
136 |
else: |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
137 |
tbutton = gtk.ToolButton(stock) |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
138 |
|
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
139 |
tbutton.set_label(label) |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
140 |
tbutton.connect('clicked', handler, userdata) |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
141 |
return tbutton |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
142 |
|
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
143 |
def _close_clicked(self, *args): |
853
a8fc63e4cba4
hggtk/serve: new window layout
Steve Borho <steve@borho.org>
parents:
553
diff
changeset
|
144 |
if self._server_stopped() == True: |
a8fc63e4cba4
hggtk/serve: new window layout
Steve Borho <steve@borho.org>
parents:
553
diff
changeset
|
145 |
gtk.main_quit() |
351
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
146 |
|
324
f18e8b19c8e4
hggtk: Capture response event in sever dialog
Steve Borho <steve@borho.org>
parents:
323
diff
changeset
|
147 |
def _delete(self, widget, event): |
853
a8fc63e4cba4
hggtk/serve: new window layout
Steve Borho <steve@borho.org>
parents:
553
diff
changeset
|
148 |
if self._server_stopped() == True: |
a8fc63e4cba4
hggtk/serve: new window layout
Steve Borho <steve@borho.org>
parents:
553
diff
changeset
|
149 |
gtk.main_quit() |
a8fc63e4cba4
hggtk/serve: new window layout
Steve Borho <steve@borho.org>
parents:
553
diff
changeset
|
150 |
else: |
a8fc63e4cba4
hggtk/serve: new window layout
Steve Borho <steve@borho.org>
parents:
553
diff
changeset
|
151 |
return True |
324
f18e8b19c8e4
hggtk: Capture response event in sever dialog
Steve Borho <steve@borho.org>
parents:
323
diff
changeset
|
152 |
|
351
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
153 |
def _server_stopped(self): |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
154 |
''' |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
155 |
check if server is running, or to terminate if running |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
156 |
''' |
872
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
157 |
if gservice and not gservice.stopped: |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
158 |
if question_dialog("Really Exit?", |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
159 |
"Server process is still running\n" + |
324
f18e8b19c8e4
hggtk: Capture response event in sever dialog
Steve Borho <steve@borho.org>
parents:
323
diff
changeset
|
160 |
"Exiting will stop the server.") != gtk.RESPONSE_YES: |
351
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
161 |
return False |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
162 |
else: |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
163 |
self._stop_server() |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
164 |
return True |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
165 |
else: |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
166 |
return True |
324
f18e8b19c8e4
hggtk: Capture response event in sever dialog
Steve Borho <steve@borho.org>
parents:
323
diff
changeset
|
167 |
|
368
27d438da221d
hggtk/serve: add button to view web server using default browser
TK Soh <teekaysoh@yahoo.com>
parents:
351
diff
changeset
|
168 |
def _set_button_states(self): |
872
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
169 |
if gservice and not gservice.stopped: |
368
27d438da221d
hggtk/serve: add button to view web server using default browser
TK Soh <teekaysoh@yahoo.com>
parents:
351
diff
changeset
|
170 |
self._button_start.set_sensitive(False) |
27d438da221d
hggtk/serve: add button to view web server using default browser
TK Soh <teekaysoh@yahoo.com>
parents:
351
diff
changeset
|
171 |
self._button_stop.set_sensitive(True) |
27d438da221d
hggtk/serve: add button to view web server using default browser
TK Soh <teekaysoh@yahoo.com>
parents:
351
diff
changeset
|
172 |
self._button_browse.set_sensitive(True) |
469
a9c1082bbd8f
hggtk/serve: add 'Configure' toolbar button
Steve Borho <steve@borho.org>
parents:
459
diff
changeset
|
173 |
self._button_conf.set_sensitive(False) |
368
27d438da221d
hggtk/serve: add button to view web server using default browser
TK Soh <teekaysoh@yahoo.com>
parents:
351
diff
changeset
|
174 |
else: |
27d438da221d
hggtk/serve: add button to view web server using default browser
TK Soh <teekaysoh@yahoo.com>
parents:
351
diff
changeset
|
175 |
self._button_start.set_sensitive(True) |
27d438da221d
hggtk/serve: add button to view web server using default browser
TK Soh <teekaysoh@yahoo.com>
parents:
351
diff
changeset
|
176 |
self._button_stop.set_sensitive(False) |
27d438da221d
hggtk/serve: add button to view web server using default browser
TK Soh <teekaysoh@yahoo.com>
parents:
351
diff
changeset
|
177 |
self._button_browse.set_sensitive(False) |
469
a9c1082bbd8f
hggtk/serve: add 'Configure' toolbar button
Steve Borho <steve@borho.org>
parents:
459
diff
changeset
|
178 |
self._button_conf.set_sensitive(True) |
368
27d438da221d
hggtk/serve: add button to view web server using default browser
TK Soh <teekaysoh@yahoo.com>
parents:
351
diff
changeset
|
179 |
|
351
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
180 |
def _on_start_clicked(self, *args): |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
181 |
self._start_server() |
368
27d438da221d
hggtk/serve: add button to view web server using default browser
TK Soh <teekaysoh@yahoo.com>
parents:
351
diff
changeset
|
182 |
self._set_button_states() |
27d438da221d
hggtk/serve: add button to view web server using default browser
TK Soh <teekaysoh@yahoo.com>
parents:
351
diff
changeset
|
183 |
|
351
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
184 |
def _on_stop_clicked(self, *args): |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
185 |
self._stop_server() |
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
186 |
|
368
27d438da221d
hggtk/serve: add button to view web server using default browser
TK Soh <teekaysoh@yahoo.com>
parents:
351
diff
changeset
|
187 |
def _on_browse_clicked(self, *args): |
27d438da221d
hggtk/serve: add button to view web server using default browser
TK Soh <teekaysoh@yahoo.com>
parents:
351
diff
changeset
|
188 |
''' launch default browser to view repo ''' |
27d438da221d
hggtk/serve: add button to view web server using default browser
TK Soh <teekaysoh@yahoo.com>
parents:
351
diff
changeset
|
189 |
if self._url: |
372
d5989a0c10f8
hggtk/serve: start browser in a thread to prevent dialog lock up
TK Soh <teekaysoh@yahoo.com>
parents:
368
diff
changeset
|
190 |
def start_browser(): |
400
d4c301397992
nautilus: add nautilus extension, refactor thgutil.py
Steve Borho <steve@borho.org>
parents:
372
diff
changeset
|
191 |
if os.name == 'nt': |
873
fb3a19c45786
hggtk/serve: fixes for timing sensitive bugs
Steve Borho <steve@borho.org>
parents:
872
diff
changeset
|
192 |
try: |
fb3a19c45786
hggtk/serve: fixes for timing sensitive bugs
Steve Borho <steve@borho.org>
parents:
872
diff
changeset
|
193 |
import win32api, win32con |
fb3a19c45786
hggtk/serve: fixes for timing sensitive bugs
Steve Borho <steve@borho.org>
parents:
872
diff
changeset
|
194 |
win32api.ShellExecute(0, "open", self._url, None, "", |
fb3a19c45786
hggtk/serve: fixes for timing sensitive bugs
Steve Borho <steve@borho.org>
parents:
872
diff
changeset
|
195 |
win32con.SW_SHOW) |
fb3a19c45786
hggtk/serve: fixes for timing sensitive bugs
Steve Borho <steve@borho.org>
parents:
872
diff
changeset
|
196 |
except: |
fb3a19c45786
hggtk/serve: fixes for timing sensitive bugs
Steve Borho <steve@borho.org>
parents:
872
diff
changeset
|
197 |
# Firefox likes to create exceptions at launch, |
fb3a19c45786
hggtk/serve: fixes for timing sensitive bugs
Steve Borho <steve@borho.org>
parents:
872
diff
changeset
|
198 |
# the user doesn't need to be bothered by them |
fb3a19c45786
hggtk/serve: fixes for timing sensitive bugs
Steve Borho <steve@borho.org>
parents:
872
diff
changeset
|
199 |
pass |
400
d4c301397992
nautilus: add nautilus extension, refactor thgutil.py
Steve Borho <steve@borho.org>
parents:
372
diff
changeset
|
200 |
else: |
d4c301397992
nautilus: add nautilus extension, refactor thgutil.py
Steve Borho <steve@borho.org>
parents:
372
diff
changeset
|
201 |
import gconf |
d4c301397992
nautilus: add nautilus extension, refactor thgutil.py
Steve Borho <steve@borho.org>
parents:
372
diff
changeset
|
202 |
client = gconf.client_get_default() |
d4c301397992
nautilus: add nautilus extension, refactor thgutil.py
Steve Borho <steve@borho.org>
parents:
372
diff
changeset
|
203 |
browser = client.get_string( |
d4c301397992
nautilus: add nautilus extension, refactor thgutil.py
Steve Borho <steve@borho.org>
parents:
372
diff
changeset
|
204 |
'/desktop/gnome/url-handlers/http/command') + '&' |
d4c301397992
nautilus: add nautilus extension, refactor thgutil.py
Steve Borho <steve@borho.org>
parents:
372
diff
changeset
|
205 |
os.system(browser % self._url) |
372
d5989a0c10f8
hggtk/serve: start browser in a thread to prevent dialog lock up
TK Soh <teekaysoh@yahoo.com>
parents:
368
diff
changeset
|
206 |
threading.Thread(target=start_browser).start() |
368
27d438da221d
hggtk/serve: add button to view web server using default browser
TK Soh <teekaysoh@yahoo.com>
parents:
351
diff
changeset
|
207 |
|
469
a9c1082bbd8f
hggtk/serve: add 'Configure' toolbar button
Steve Borho <steve@borho.org>
parents:
459
diff
changeset
|
208 |
def _on_conf_clicked(self, *args): |
a9c1082bbd8f
hggtk/serve: add 'Configure' toolbar button
Steve Borho <steve@borho.org>
parents:
459
diff
changeset
|
209 |
from thgconfig import ConfigDialog |
872
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
210 |
dlg = ConfigDialog(self._root, True) |
469
a9c1082bbd8f
hggtk/serve: add 'Configure' toolbar button
Steve Borho <steve@borho.org>
parents:
459
diff
changeset
|
211 |
dlg.show_all() |
516
16a3c8dc9c1d
hggtk/thgconfig: move focus_field and new_path into class methods
Steve Borho <steve@borho.org>
parents:
513
diff
changeset
|
212 |
dlg.focus_field('web.name') |
469
a9c1082bbd8f
hggtk/serve: add 'Configure' toolbar button
Steve Borho <steve@borho.org>
parents:
459
diff
changeset
|
213 |
dlg.run() |
a9c1082bbd8f
hggtk/serve: add 'Configure' toolbar button
Steve Borho <steve@borho.org>
parents:
459
diff
changeset
|
214 |
dlg.hide() |
889
3bc868f2b133
hggtk/serve: set web.name into ui object, cleanup config usage
Steve Borho <steve@borho.org>
parents:
883
diff
changeset
|
215 |
self._get_config() |
469
a9c1082bbd8f
hggtk/serve: add 'Configure' toolbar button
Steve Borho <steve@borho.org>
parents:
459
diff
changeset
|
216 |
|
351
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
217 |
def _start_server(self): |
309 | 218 |
# gather input data |
219 |
try: |
|
220 |
port = int(self._port_input.get_text()) |
|
221 |
except: |
|
459
35252de5daee
hggtk/serve.py: respect web.port configuration
Steve Borho <steve@borho.org>
parents:
455
diff
changeset
|
222 |
try: port = int(self.defport) |
872
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
223 |
except: port = 8000 |
459
35252de5daee
hggtk/serve.py: respect web.port configuration
Steve Borho <steve@borho.org>
parents:
455
diff
changeset
|
224 |
error_dialog("Invalid port 2048..65535", "Defaulting to " + |
35252de5daee
hggtk/serve.py: respect web.port configuration
Steve Borho <steve@borho.org>
parents:
455
diff
changeset
|
225 |
self.defport) |
309 | 226 |
|
872
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
227 |
global gservice |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
228 |
gservice = None |
325
f3f9733eec37
hggtk: Pass repo to serve dialog, fixup web.name
Steve Borho <steve@borho.org>
parents:
324
diff
changeset
|
229 |
|
872
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
230 |
q = Queue.Queue() |
889
3bc868f2b133
hggtk/serve: set web.name into ui object, cleanup config usage
Steve Borho <steve@borho.org>
parents:
883
diff
changeset
|
231 |
args = [self._root, q, 'serve', '--verbose', '--name', self.webname, |
883
25adeacce00e
hggtk/serve: provide default web.name if not specified
Steve Borho <steve@borho.org>
parents:
873
diff
changeset
|
232 |
'--port', str(port)] |
872
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
233 |
thread = threading.Thread(target=hglib.hgcmd_toq, args=args) |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
234 |
thread.start() |
309 | 235 |
|
873
fb3a19c45786
hggtk/serve: fixes for timing sensitive bugs
Steve Borho <steve@borho.org>
parents:
872
diff
changeset
|
236 |
while not gservice or not hasattr(gservice, 'httpd'): |
872
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
237 |
time.sleep(0.1) |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
238 |
self._url = 'http://%s:%d/' % (gservice.httpd.addr, port) |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
239 |
gobject.timeout_add(10, self.process_queue, q) |
351
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
240 |
|
a7d5afeb5824
hggtk: refactor serve dialog to use toolbar
TK Soh <teekaysoh@yahoo.com>
parents:
326
diff
changeset
|
241 |
def _stop_server(self): |
872
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
242 |
if gservice and not gservice.stopped: |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
243 |
gservice.stop() |
309 | 244 |
|
873
fb3a19c45786
hggtk/serve: fixes for timing sensitive bugs
Steve Borho <steve@borho.org>
parents:
872
diff
changeset
|
245 |
def flush(self, *args): |
fb3a19c45786
hggtk/serve: fixes for timing sensitive bugs
Steve Borho <steve@borho.org>
parents:
872
diff
changeset
|
246 |
pass |
fb3a19c45786
hggtk/serve: fixes for timing sensitive bugs
Steve Borho <steve@borho.org>
parents:
872
diff
changeset
|
247 |
|
309 | 248 |
def write(self, msg, append=True): |
249 |
msg = unicode(msg, 'iso-8859-1') |
|
250 |
if append: |
|
251 |
enditer = self.textbuffer.get_end_iter() |
|
252 |
self.textbuffer.insert(enditer, msg) |
|
253 |
else: |
|
254 |
self.textbuffer.set_text(msg) |
|
255 |
||
872
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
256 |
def process_queue(self, q): |
309 | 257 |
""" |
258 |
Handle all the messages currently in the queue (if any). |
|
259 |
""" |
|
872
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
260 |
while q.qsize(): |
309 | 261 |
try: |
872
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
262 |
msg = q.get(0) |
309 | 263 |
self.write(msg) |
264 |
except Queue.Empty: |
|
265 |
pass |
|
266 |
||
872
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
267 |
if gservice and gservice.stopped: |
368
27d438da221d
hggtk/serve: add button to view web server using default browser
TK Soh <teekaysoh@yahoo.com>
parents:
351
diff
changeset
|
268 |
self._set_button_states() |
309 | 269 |
return False # Stop polling this function |
270 |
else: |
|
271 |
return True |
|
272 |
||
872
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
273 |
def thg_serve(ui, repo, **opts): |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
274 |
class service: |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
275 |
def init(self): |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
276 |
self.stopped = True |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
277 |
util.set_signal_handler() |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
278 |
try: |
889
3bc868f2b133
hggtk/serve: set web.name into ui object, cleanup config usage
Steve Borho <steve@borho.org>
parents:
883
diff
changeset
|
279 |
if 'name' in opts: |
3bc868f2b133
hggtk/serve: set web.name into ui object, cleanup config usage
Steve Borho <steve@borho.org>
parents:
883
diff
changeset
|
280 |
ui.setconfig('web', 'name', opts['name']) |
872
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
281 |
self.httpd = server.create_server(ui, repo) |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
282 |
except socket.error, inst: |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
283 |
raise util.Abort(_('cannot start server: ') + inst.args[1]) |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
284 |
|
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
285 |
if not ui.verbose: return |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
286 |
|
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
287 |
if self.httpd.port != 80: |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
288 |
ui.status(_('listening at http://%s:%d/\n') % |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
289 |
(self.httpd.addr, self.httpd.port)) |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
290 |
else: |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
291 |
ui.status(_('listening at http://%s/\n') % self.httpd.addr) |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
292 |
|
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
293 |
def stop(self): |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
294 |
self.stopped = True |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
295 |
# issue request to trigger handle_request() and quit |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
296 |
addr = '%s:%d' % (self.httpd.addr, self.httpd.port) |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
297 |
conn = httplib.HTTPConnection(addr) |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
298 |
conn.request("GET", "/") |
873
fb3a19c45786
hggtk/serve: fixes for timing sensitive bugs
Steve Borho <steve@borho.org>
parents:
872
diff
changeset
|
299 |
res = conn.getresponse() |
fb3a19c45786
hggtk/serve: fixes for timing sensitive bugs
Steve Borho <steve@borho.org>
parents:
872
diff
changeset
|
300 |
res.read() |
fb3a19c45786
hggtk/serve: fixes for timing sensitive bugs
Steve Borho <steve@borho.org>
parents:
872
diff
changeset
|
301 |
conn.close() |
309 | 302 |
|
872
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
303 |
def run(self): |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
304 |
self.stopped = False |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
305 |
while not self.stopped: |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
306 |
self.httpd.handle_request() |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
307 |
self.httpd.server_close() # release port |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
308 |
|
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
309 |
global gservice |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
310 |
gservice = service() |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
311 |
cmdutil.service(opts, initfn=gservice.init, runfn=gservice.run) |
309 | 312 |
|
872
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
313 |
thg_serve_cmd = {"^serve": |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
314 |
(thg_serve, |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
315 |
[('A', 'accesslog', '', _('name of access log file to write to')), |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
316 |
('d', 'daemon', None, _('run server in background')), |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
317 |
('', 'daemon-pipefds', '', _('used internally by daemon mode')), |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
318 |
('E', 'errorlog', '', _('name of error log file to write to')), |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
319 |
('p', 'port', 0, _('port to use (default: 8000)')), |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
320 |
('a', 'address', '', _('address to use')), |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
321 |
('n', 'name', '', |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
322 |
_('name to show in web pages (default: working dir)')), |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
323 |
('', 'webdir-conf', '', _('name of the webdir config file' |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
324 |
' (serve more than one repo)')), |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
325 |
('', 'pid-file', '', _('name of file to write process ID to')), |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
326 |
('', 'stdio', None, _('for remote clients')), |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
327 |
('t', 'templates', '', _('web templates to use')), |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
328 |
('', 'style', '', _('template style to use')), |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
329 |
('6', 'ipv6', None, _('use IPv6 in addition to IPv4')), |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
330 |
('', 'certificate', '', _('SSL certificate file'))], |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
331 |
_('hg serve [OPTION]...'))} |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
332 |
|
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
333 |
|
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
334 |
def run(cwd='', root='', **opts): |
8444ce62c03e
hggtk/serve: use internal stoppable serve command
Steve Borho <steve@borho.org>
parents:
853
diff
changeset
|
335 |
dialog = ServeDialog(cwd, root) |
401
9ab309fbc25c
hggtk: gtk threads and hgproc cleanup
Steve Borho <steve@borho.org>
parents:
400
diff
changeset
|
336 |
dialog.show_all() |
9ab309fbc25c
hggtk: gtk threads and hgproc cleanup
Steve Borho <steve@borho.org>
parents:
400
diff
changeset
|
337 |
gtk.gdk.threads_init() |
9ab309fbc25c
hggtk: gtk threads and hgproc cleanup
Steve Borho <steve@borho.org>
parents:
400
diff
changeset
|
338 |
gtk.gdk.threads_enter() |
9ab309fbc25c
hggtk: gtk threads and hgproc cleanup
Steve Borho <steve@borho.org>
parents:
400
diff
changeset
|
339 |
gtk.main() |
9ab309fbc25c
hggtk: gtk threads and hgproc cleanup
Steve Borho <steve@borho.org>
parents:
400
diff
changeset
|
340 |
gtk.gdk.threads_leave() |
309 | 341 |
|
342 |
if __name__ == "__main__": |
|
343 |
import sys |
|
401
9ab309fbc25c
hggtk: gtk threads and hgproc cleanup
Steve Borho <steve@borho.org>
parents:
400
diff
changeset
|
344 |
opts = {} |
9ab309fbc25c
hggtk: gtk threads and hgproc cleanup
Steve Borho <steve@borho.org>
parents:
400
diff
changeset
|
345 |
opts['cwd'] = os.getcwd() |
9ab309fbc25c
hggtk: gtk threads and hgproc cleanup
Steve Borho <steve@borho.org>
parents:
400
diff
changeset
|
346 |
opts['root'] = len(sys.argv) > 1 and sys.argv[1] or '' |
9ab309fbc25c
hggtk: gtk threads and hgproc cleanup
Steve Borho <steve@borho.org>
parents:
400
diff
changeset
|
347 |
run(**opts) |