optparse is deprecated since 2.7/3.2
... | ... |
@@ -15,24 +15,17 @@ |
15 | 15 |
# You should have received a copy of the GNU Lesser General Public License |
16 | 16 |
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
17 | 17 |
# |
18 |
-import optparse |
|
18 |
+import argparse |
|
19 | 19 |
import sys |
20 | 20 |
|
21 | 21 |
from .ui.window import DotWindow, Gtk |
22 | 22 |
|
23 | 23 |
|
24 |
-class OptionParser(optparse.OptionParser): |
|
25 |
- |
|
26 |
- def format_epilog(self, formatter): |
|
27 |
- # Prevent stripping the newlines in epilog message |
|
28 |
- # http://stackoverflow.com/questions/1857346/python-optparse-how-to-include-additional-info-in-usage-output |
|
29 |
- return self.epilog |
|
30 |
- |
|
31 |
- |
|
32 | 24 |
def main(): |
33 | 25 |
|
34 |
- parser = OptionParser( |
|
35 |
- usage='\n\t%prog [file]', |
|
26 |
+ parser = argparse.ArgumentParser( |
|
27 |
+ description="xdot.py is an interactive viewer for graphs written in Graphviz's dot language.", |
|
28 |
+ formatter_class=argparse.RawDescriptionHelpFormatter, |
|
36 | 29 |
epilog=''' |
37 | 30 |
Shortcuts: |
38 | 31 |
Up, Down, Left, Right scroll |
... | ... |
@@ -47,23 +40,24 @@ Shortcuts: |
47 | 40 |
Shift-drag zooms an area |
48 | 41 |
''' |
49 | 42 |
) |
50 |
- parser.add_option( |
|
51 |
- '-f', '--filter', |
|
52 |
- type='choice', choices=('dot', 'neato', 'twopi', 'circo', 'fdp'), |
|
53 |
- dest='filter', default='dot', |
|
54 |
- help='graphviz filter: dot, neato, twopi, circo, or fdp [default: %default]') |
|
55 |
- parser.add_option( |
|
43 |
+ parser.add_argument( |
|
44 |
+ 'inputfile', metavar='file', nargs='?', |
|
45 |
+ help='input file to be viewed') |
|
46 |
+ parser.add_argument( |
|
47 |
+ '-f', '--filter', choices=['dot', 'neato', 'twopi', 'circo', 'fdp'], |
|
48 |
+ dest='filter', default='dot', metavar='FILTER', |
|
49 |
+ help='graphviz filter: dot, neato, twopi, circo, or fdp [default: %(default)s]') |
|
50 |
+ parser.add_argument( |
|
56 | 51 |
'-n', '--no-filter', |
57 | 52 |
action='store_const', const=None, dest='filter', |
58 | 53 |
help='assume input is already filtered into xdot format (use e.g. dot -Txdot)') |
59 |
- parser.add_option( |
|
60 |
- '-g', None, |
|
54 |
+ parser.add_argument( |
|
55 |
+ '-g', '--geometry', |
|
61 | 56 |
action='store', dest='geometry', |
62 | 57 |
help='default window size in form WxH') |
63 | 58 |
|
64 |
- (options, args) = parser.parse_args(sys.argv[1:]) |
|
65 |
- if len(args) > 1: |
|
66 |
- parser.error('incorrect number of arguments') |
|
59 |
+ options = parser.parse_args() |
|
60 |
+ inputfile = options.inputfile |
|
67 | 61 |
|
68 | 62 |
width = height = 512 |
69 | 63 |
if options.geometry: |
... | ... |
@@ -75,11 +69,11 @@ Shortcuts: |
75 | 69 |
win = DotWindow(width=width, height=height) |
76 | 70 |
win.connect('delete-event', Gtk.main_quit) |
77 | 71 |
win.set_filter(options.filter) |
78 |
- if len(args) >= 1: |
|
79 |
- if args[0] == '-': |
|
72 |
+ if inputfile and len(inputfile) >= 1: |
|
73 |
+ if inputfile == '-': |
|
80 | 74 |
win.set_dotcode(sys.stdin.read()) |
81 | 75 |
else: |
82 |
- win.open_file(args[0]) |
|
76 |
+ win.open_file(inputfile) |
|
83 | 77 |
Gtk.main() |
84 | 78 |
|
85 | 79 |
if __name__ == '__main__': |