Browse Source

code refractor

- tear stuff from ui module to tools module
oz123 12 years ago
parent
commit
668dfc3452
1 changed files with 114 additions and 0 deletions
  1. 114 0
      pwman/ui/tools.py

+ 114 - 0
pwman/ui/tools.py

@@ -0,0 +1,114 @@
+#============================================================================
+# This file is part of Pwman3.
+#
+# Pwman3 is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License, version 2
+# as published by the Free Software Foundation;
+#
+# Pwman3 is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Pwman3; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#============================================================================
+# Copyright (C) 2013 Oz Nahum <nahumoz@gmail.com>
+#============================================================================
+"""
+Define the CLI interface for pwman3 and the helper functions
+"""
+
+import pwman.util.config as config
+import subprocess as sp
+
+
+class ANSI(object):
+    """
+    ANSI Colors
+    """
+    Reset = 0
+    Bold = 1
+    Underscore = 2
+
+    Black = 30
+    Red = 31
+    Green = 32
+    Yellow = 33
+    Blue = 34
+    Magenta = 35
+    Cyan = 36
+    White = 37
+
+def typeset(text, color, bold=False, underline=False):
+    """print colored strings"""
+    if not config.get_value("Global", "colors") == 'yes':
+        return text
+    if (bold):
+        bold = "%d ;" % (ANSI.Bold)
+    else:
+        bold = ""
+    if (underline):
+        underline = "%d;" % (ANSI.Underscore)
+    else:
+        underline = ""
+    return "\033[%s%s%sm%s\033[%sm" % (bold, underline, color,
+                                       text, ANSI.Reset)
+
+
+def select(question, possible):
+    """
+    select input from user
+    """
+    for i in range(0, len(possible)):
+        print ("%d - %-"+str(_defaultwidth)+"s") % (i+1, possible[i])
+    while 1:
+        uinput = getonechar(question)
+        if uinput.isdigit() and int(uinput) in range(1, len(possible)+1):
+            return possible[int(uinput)-1]
+
+
+def text_to_clipboards(text):
+    """
+    copy text to clipboard
+    credit:
+    https://pythonadventures.wordpress.com/tag/xclip/
+    """
+    # "primary":
+    try:
+        xsel_proc = sp.Popen(['xsel', '-pi'], stdin=sp.PIPE)
+        xsel_proc.communicate(text)
+        # "clipboard":
+        xsel_proc = sp.Popen(['xsel', '-bi'], stdin=sp.PIPE)
+        xsel_proc.communicate(text)
+    except OSError, e:
+        print e, "\nExecuting xsel failed, is it installed ?\n \
+please check your configuration file ... "
+
+
+def text_to_mcclipboard(text):
+    """
+    copy text to mac os x clip board
+    credit:
+    https://pythonadventures.wordpress.com/tag/xclip/
+    """
+    # "primary":
+    try:
+        pbcopy_proc = sp.Popen(['pbcopy'], stdin=sp.PIPE)
+        pbcopy_proc.communicate(text)
+    except OSError, e:
+        print e, "\nExecuting pbcoy failed..."
+
+
+def open_url(link, macosx=False):
+    """
+    launch xdg-open or open in MacOSX with url
+    """
+    uopen = "xdg-open"
+    if macosx:
+        uopen = "open"
+    try:
+        sp.Popen([uopen, link], stdin=sp.PIPE)
+    except OSError, e:
+        print "Executing open_url failed with:\n", e