Repository: Qiskit/qiskit

Issue:
conditional wires in text circuit drawer should be classical wires
Currently:
```
from qiskit import *
qr = QuantumRegister(2, 'qr')
cr = ClassicalRegister(1, 'cr')
circuit = QuantumCircuit(qr, cr)
circuit.measure(qr[0], cr[0])
circuit.h(qr[0]).c_if(cr, 1)
print(circuit)
```
```
      ┌─┐ ┌───┐ 
qr_0: ┤M├─┤ H ├─
      └╥┘ └─┬─┘ 
qr_1: ─╫────┼───
       ║ ┌──┴──┐
cr: 1/═╩═╡ = 1 ╞
       0 └─────┘
```

Expected output:
```
      ┌─┐ ┌───┐ 
qr_0: ┤M├─┤ H ├─
      └╥┘ └─╥─┘ 
qr_1: ─╫────╫───
       ║ ┌──╨──┐
cr: 1/═╩═╡ = 1 ╞
       0 └─────┘
```


Discussion:
Can I try this one? @1ucian0 
Let's wrap https://github.com/Qiskit/qiskit-terra/pull/5199 up first :-)
I can have a go at this @1ucian0 

Resolving patch:
diff --git a/qiskit/visualization/text.py b/qiskit/visualization/text.py
--- a/qiskit/visualization/text.py
+++ b/qiskit/visualization/text.py
@@ -171,7 +171,7 @@ def __init__(self, label="", top_connect='─', conditional=False):
         self.bot_format = "└─%s─┘"
         self.top_pad = self.bot_pad = self.mid_bck = '─'
         self.top_connect = top_connect
-        self.bot_connect = '┬' if conditional else '─'
+        self.bot_connect = '╥' if conditional else '─'
         self.mid_content = label
         self.top_connector = {"│": '┴'}
         self.bot_connector = {"│": '┬'}
@@ -302,7 +302,7 @@ def __init__(self, label, input_length, bot_connect=None, wire_label='', conditi
         self.bot_format = "└─" + "s".center(self.left_fill + 1, '─') + "─┘"
         self.bot_format = self.bot_format.replace('s', '%s')
         bot_connect = bot_connect if bot_connect else '─'
-        self.bot_connect = '┬' if conditional else bot_connect
+        self.bot_connect = '╥' if conditional else bot_connect
 
         self.mid_content = self.top_connect = ""
         if input_length <= 2:
@@ -395,7 +395,7 @@ class Ex(DirectOnQuWire):
 
     def __init__(self, bot_connect=" ", top_connect=" ", conditional=False):
         super().__init__("X")
-        self.bot_connect = "│" if conditional else bot_connect
+        self.bot_connect = "║" if conditional else bot_connect
         self.top_connect = top_connect
 
 
@@ -405,7 +405,7 @@ class Reset(DirectOnQuWire):
     def __init__(self, conditional=False):
         super().__init__("|0>")
         if conditional:
-            self.bot_connect = "│"
+            self.bot_connect = "║"
 
 
 class Bullet(DirectOnQuWire):
@@ -422,7 +422,7 @@ def __init__(self, top_connect="", bot_connect="", conditional=False,
                  label=None, bottom=False):
         super().__init__('■')
         self.top_connect = top_connect
-        self.bot_connect = '│' if conditional else bot_connect
+        self.bot_connect = '║' if conditional else bot_connect
         if label and bottom:
             self.bot_connect = label
         elif label:
@@ -444,7 +444,7 @@ def __init__(self, top_connect="", bot_connect="", conditional=False,
                  label=None, bottom=False):
         super().__init__('o')
         self.top_connect = top_connect
-        self.bot_connect = '│' if conditional else bot_connect
+        self.bot_connect = '║' if conditional else bot_connect
         if label and bottom:
             self.bot_connect = label
         elif label:
@@ -716,7 +716,7 @@ def should_compress(self, top_line, bot_line):
         if self.vertical_compression == 'low':
             return False
         for top, bot in zip(top_line, bot_line):
-            if top == '┴' and bot == '┬':
+            if top in ['┴', '╨'] and bot in ['┬', '╥']:
                 return False
         for line in (bot_line, top_line):
             no_spaces = line.replace(' ', '')
@@ -959,7 +959,7 @@ def _instruction_to_gate(self, instruction, layer):
         if instruction.condition is not None:
             # conditional
             cllabel = TextDrawing.label_for_conditional(instruction)
-            layer.set_cl_multibox(instruction.condition[0], cllabel, top_connect='┴')
+            layer.set_cl_multibox(instruction.condition[0], cllabel, top_connect='╨')
             conditional = True
 
         # add in a gate that operates over multiple qubits


Test patch:
diff --git a/test/python/visualization/test_circuit_text_drawer.py b/test/python/visualization/test_circuit_text_drawer.py
--- a/test/python/visualization/test_circuit_text_drawer.py
+++ b/test/python/visualization/test_circuit_text_drawer.py
@@ -1131,8 +1131,8 @@ def test_control_gate_label_with_cond_1_low(self):
                               "           │    ",
                               "        ┌──┴───┐",
                               "q_1: |0>┤ my h ├",
-                              "        └──┬───┘",
-                              "        ┌──┴──┐ ",
+                              "        └──╥───┘",
+                              "        ┌──╨──┐ ",
                               " c_0: 0 ╡ = 1 ╞═",
                               "        └─────┘ "])
 
@@ -1152,8 +1152,8 @@ def test_control_gate_label_with_cond_1_med(self):
                               "q_0: |0>───■────",
                               "        ┌──┴───┐",
                               "q_1: |0>┤ my h ├",
-                              "        └──┬───┘",
-                              "        ┌──┴──┐ ",
+                              "        └──╥───┘",
+                              "        ┌──╨──┐ ",
                               " c_0: 0 ╡ = 1 ╞═",
                               "        └─────┘ "])
 
@@ -1173,7 +1173,7 @@ def test_control_gate_label_with_cond_1_high(self):
                               "q_0: |0>───■────",
                               "        ┌──┴───┐",
                               "q_1: |0>┤ my h ├",
-                              "        ├──┴──┬┘",
+                              "        ├──╨──┬┘",
                               " c_0: 0 ╡ = 1 ╞═",
                               "        └─────┘ "])
 
@@ -1194,7 +1194,7 @@ def test_control_gate_label_with_cond_2_med(self):
                               "        └──┬───┘",
                               "q_1: |0>───■────",
                               "         my ch  ",
-                              "        ┌──┴──┐ ",
+                              "        ┌──╨──┐ ",
                               " c_0: 0 ╡ = 1 ╞═",
                               "        └─────┘ "])
 
@@ -1216,7 +1216,7 @@ def test_control_gate_label_with_cond_2_low(self):
                               "           │    ",
                               "q_1: |0>───■────",
                               "         my ch  ",
-                              "        ┌──┴──┐ ",
+                              "        ┌──╨──┐ ",
                               " c_0: 0 ╡ = 1 ╞═",
                               "        └─────┘ "])
 
@@ -1294,11 +1294,11 @@ def test_text_conditional_1(self):
         """
         expected = '\n'.join(["         ┌───┐  ┌───┐ ",
                               "q_0: |0>─┤ X ├──┤ X ├─",
-                              "         └─┬─┘  └─┬─┘ ",
-                              "        ┌──┴──┐   │   ",
-                              "c0_0: 0 ╡ = 1 ╞═══╪═══",
-                              "        └─────┘   │   ",
-                              "               ┌──┴──┐",
+                              "         └─╥─┘  └─╥─┘ ",
+                              "        ┌──╨──┐   ║   ",
+                              "c0_0: 0 ╡ = 1 ╞═══╬═══",
+                              "        └─────┘   ║   ",
+                              "               ┌──╨──┐",
                               "c1_0: 0 ═══════╡ = 1 ╞",
                               "               └─────┘"])
 
@@ -1347,10 +1347,10 @@ def test_text_conditional_1(self):
         """
         expected = '\n'.join(["         ┌───┐  ┌───┐ ",
                               "q_0: |0>─┤ X ├──┤ X ├─",
-                              "         └─┬─┘  └─┬─┘ ",
-                              "        ┌──┴──┐   │   ",
-                              "c0_0: 0 ╡ = 1 ╞═══╪═══",
-                              "        └─────┘┌──┴──┐",
+                              "         └─╥─┘  └─╥─┘ ",
+                              "        ┌──╨──┐   ║   ",
+                              "c0_0: 0 ╡ = 1 ╞═══╬═══",
+                              "        └─────┘┌──╨──┐",
                               "c1_0: 0 ═══════╡ = 1 ╞",
                               "               └─────┘"])
 
@@ -1375,8 +1375,8 @@ def test_text_measure_with_spaces(self):
                               "        └╥┘       ",
                               "         ║  ┌───┐ ",
                               "q_1: |0>─╫──┤ X ├─",
-                              "         ║  └─┬─┘ ",
-                              "         ║ ┌──┴──┐",
+                              "         ║  └─╥─┘ ",
+                              "         ║ ┌──╨──┐",
                               " c_0: 0 ═╬═╡     ╞",
                               "         ║ │     │",
                               "         ║ │     │",
@@ -1405,9 +1405,9 @@ def test_text_conditional_1_cregbundle(self):
         """
         expected = '\n'.join(["         ┌───┐  ┌───┐ ",
                               "q_0: |0>─┤ X ├──┤ X ├─",
-                              "        ┌┴─┴─┴┐ └─┬─┘ ",
-                              "c0: 0 1/╡ = 1 ╞═══╪═══",
-                              "        └─────┘┌──┴──┐",
+                              "        ┌┴─╨─┴┐ └─╥─┘ ",
+                              "c0: 0 1/╡ = 1 ╞═══╬═══",
+                              "        └─────┘┌──╨──┐",
                               "c1: 0 1/═══════╡ = 1 ╞",
                               "               └─────┘"])
 
@@ -1427,9 +1427,9 @@ def test_text_conditional_1(self):
         """
         expected = '\n'.join(["         ┌───┐  ┌───┐ ",
                               "q_0: |0>─┤ X ├──┤ X ├─",
-                              "        ┌┴─┴─┴┐ └─┬─┘ ",
-                              "c0_0: 0 ╡ = 1 ╞═══╪═══",
-                              "        └─────┘┌──┴──┐",
+                              "        ┌┴─╨─┴┐ └─╥─┘ ",
+                              "c0_0: 0 ╡ = 1 ╞═══╬═══",
+                              "        └─────┘┌──╨──┐",
                               "c1_0: 0 ═══════╡ = 1 ╞",
                               "               └─────┘"])
 
@@ -1449,9 +1449,9 @@ def test_text_conditional_2_cregbundle(self):
         """
         expected = '\n'.join(["         ┌───┐  ┌───┐ ",
                               "q_0: |0>─┤ X ├──┤ X ├─",
-                              "        ┌┴─┴─┴┐ └─┬─┘ ",
-                              "c0: 0 2/╡ = 2 ╞═══╪═══",
-                              "        └─────┘┌──┴──┐",
+                              "        ┌┴─╨─┴┐ └─╥─┘ ",
+                              "c0: 0 2/╡ = 2 ╞═══╬═══",
+                              "        └─────┘┌──╨──┐",
                               "c1: 0 2/═══════╡ = 2 ╞",
                               "               └─────┘"])
         circuit = QuantumCircuit.from_qasm_str(qasm_string)
@@ -1470,11 +1470,11 @@ def test_text_conditional_2(self):
         """
         expected = '\n'.join(["         ┌───┐  ┌───┐ ",
                               "q_0: |0>─┤ X ├──┤ X ├─",
-                              "        ┌┴─┴─┴┐ └─┬─┘ ",
-                              "c0_0: 0 ╡     ╞═══╪═══",
-                              "        │ = 2 │   │   ",
-                              "c0_1: 0 ╡     ╞═══╪═══",
-                              "        └─────┘┌──┴──┐",
+                              "        ┌┴─╨─┴┐ └─╥─┘ ",
+                              "c0_0: 0 ╡     ╞═══╬═══",
+                              "        │ = 2 │   ║   ",
+                              "c0_1: 0 ╡     ╞═══╬═══",
+                              "        └─────┘┌──╨──┐",
                               "c1_0: 0 ═══════╡     ╞",
                               "               │ = 2 │",
                               "c1_1: 0 ═══════╡     ╞",
@@ -1495,13 +1495,13 @@ def test_text_conditional_3(self):
         """
         expected = '\n'.join(["         ┌───┐  ┌───┐ ",
                               "q_0: |0>─┤ X ├──┤ X ├─",
-                              "        ┌┴─┴─┴┐ └─┬─┘ ",
-                              "c0_0: 0 ╡     ╞═══╪═══",
-                              "        │     │   │   ",
-                              "c0_1: 0 ╡ = 3 ╞═══╪═══",
-                              "        │     │   │   ",
-                              "c0_2: 0 ╡     ╞═══╪═══",
-                              "        └─────┘┌──┴──┐",
+                              "        ┌┴─╨─┴┐ └─╥─┘ ",
+                              "c0_0: 0 ╡     ╞═══╬═══",
+                              "        │     │   ║   ",
+                              "c0_1: 0 ╡ = 3 ╞═══╬═══",
+                              "        │     │   ║   ",
+                              "c0_2: 0 ╡     ╞═══╬═══",
+                              "        └─────┘┌──╨──┐",
                               "c1_0: 0 ═══════╡     ╞",
                               "               │     │",
                               "c1_1: 0 ═══════╡ = 3 ╞",
@@ -1524,15 +1524,15 @@ def test_text_conditional_4(self):
         """
         expected = '\n'.join(["         ┌───┐  ┌───┐ ",
                               "q_0: |0>─┤ X ├──┤ X ├─",
-                              "        ┌┴─┴─┴┐ └─┬─┘ ",
-                              "c0_0: 0 ╡     ╞═══╪═══",
-                              "        │     │   │   ",
-                              "c0_1: 0 ╡     ╞═══╪═══",
-                              "        │ = 4 │   │   ",
-                              "c0_2: 0 ╡     ╞═══╪═══",
-                              "        │     │   │   ",
-                              "c0_3: 0 ╡     ╞═══╪═══",
-                              "        └─────┘┌──┴──┐",
+                              "        ┌┴─╨─┴┐ └─╥─┘ ",
+                              "c0_0: 0 ╡     ╞═══╬═══",
+                              "        │     │   ║   ",
+                              "c0_1: 0 ╡     ╞═══╬═══",
+                              "        │ = 4 │   ║   ",
+                              "c0_2: 0 ╡     ╞═══╬═══",
+                              "        │     │   ║   ",
+                              "c0_3: 0 ╡     ╞═══╬═══",
+                              "        └─────┘┌──╨──┐",
                               "c1_0: 0 ═══════╡     ╞",
                               "               │     │",
                               "c1_1: 0 ═══════╡     ╞",
@@ -1557,17 +1557,17 @@ def test_text_conditional_5(self):
         """
         expected = '\n'.join(["         ┌───┐  ┌───┐ ",
                               "q_0: |0>─┤ X ├──┤ X ├─",
-                              "        ┌┴─┴─┴┐ └─┬─┘ ",
-                              "c0_0: 0 ╡     ╞═══╪═══",
-                              "        │     │   │   ",
-                              "c0_1: 0 ╡     ╞═══╪═══",
-                              "        │     │   │   ",
-                              "c0_2: 0 ╡ = 5 ╞═══╪═══",
-                              "        │     │   │   ",
-                              "c0_3: 0 ╡     ╞═══╪═══",
-                              "        │     │   │   ",
-                              "c0_4: 0 ╡     ╞═══╪═══",
-                              "        └─────┘┌──┴──┐",
+                              "        ┌┴─╨─┴┐ └─╥─┘ ",
+                              "c0_0: 0 ╡     ╞═══╬═══",
+                              "        │     │   ║   ",
+                              "c0_1: 0 ╡     ╞═══╬═══",
+                              "        │     │   ║   ",
+                              "c0_2: 0 ╡ = 5 ╞═══╬═══",
+                              "        │     │   ║   ",
+                              "c0_3: 0 ╡     ╞═══╬═══",
+                              "        │     │   ║   ",
+                              "c0_4: 0 ╡     ╞═══╬═══",
+                              "        └─────┘┌──╨──┐",
                               "c1_0: 0 ═══════╡     ╞",
                               "               │     │",
                               "c1_1: 0 ═══════╡     ╞",
@@ -1592,7 +1592,7 @@ def test_text_conditional_cz_no_space(self):
                               "qr_0: |0>───■───",
                               "            │   ",
                               "qr_1: |0>───■───",
-                              "         ┌──┴──┐",
+                              "         ┌──╨──┐",
                               " cr_0: 0 ╡ = 1 ╞",
                               "         └─────┘"])
 
@@ -1609,9 +1609,9 @@ def test_text_conditional_cz(self):
                               "qr_0: |0>───■───",
                               "            │   ",
                               "qr_1: |0>───■───",
-                              "            │   ",
-                              "qr_2: |0>───┼───",
-                              "         ┌──┴──┐",
+                              "            ║   ",
+                              "qr_2: |0>───╫───",
+                              "         ┌──╨──┐",
                               " cr_0: 0 ╡ = 1 ╞",
                               "         └─────┘"])
 
@@ -1628,9 +1628,9 @@ def test_text_conditional_cx_ct(self):
                               "qr_0: |0>───■───",
                               "          ┌─┴─┐ ",
                               "qr_1: |0>─┤ X ├─",
-                              "          └─┬─┘ ",
-                              "qr_2: |0>───┼───",
-                              "         ┌──┴──┐",
+                              "          └─╥─┘ ",
+                              "qr_2: |0>───╫───",
+                              "         ┌──╨──┐",
                               " cr_0: 0 ╡ = 1 ╞",
                               "         └─────┘"])
 
@@ -1647,9 +1647,9 @@ def test_text_conditional_cx_tc(self):
                               "qr_0: |0>─┤ X ├─",
                               "          └─┬─┘ ",
                               "qr_1: |0>───■───",
-                              "            │   ",
-                              "qr_2: |0>───┼───",
-                              "         ┌──┴──┐",
+                              "            ║   ",
+                              "qr_2: |0>───╫───",
+                              "         ┌──╨──┐",
                               " cr_0: 0 ╡ = 1 ╞",
                               "         └─────┘"])
 
@@ -1666,9 +1666,9 @@ def test_text_conditional_cu3_ct(self):
                               "qr_0: |0>─────────■─────────",
                               "         ┌────────┴────────┐",
                               "qr_1: |0>┤ U3(π/2,π/2,π/2) ├",
-                              "         └────────┬────────┘",
-                              "qr_2: |0>─────────┼─────────",
-                              "               ┌──┴──┐      ",
+                              "         └────────╥────────┘",
+                              "qr_2: |0>─────────╫─────────",
+                              "               ┌──╨──┐      ",
                               " cr_0: 0 ══════╡ = 1 ╞══════",
                               "               └─────┘      "])
 
@@ -1685,9 +1685,9 @@ def test_text_conditional_cu3_tc(self):
                               "qr_0: |0>┤ U3(π/2,π/2,π/2) ├",
                               "         └────────┬────────┘",
                               "qr_1: |0>─────────■─────────",
-                              "                  │         ",
-                              "qr_2: |0>─────────┼─────────",
-                              "               ┌──┴──┐      ",
+                              "                  ║         ",
+                              "qr_2: |0>─────────╫─────────",
+                              "               ┌──╨──┐      ",
                               " cr_0: 0 ══════╡ = 1 ╞══════",
                               "               └─────┘      "])
 
@@ -1706,9 +1706,9 @@ def test_text_conditional_ccx(self):
                               "qr_1: |0>───■───",
                               "          ┌─┴─┐ ",
                               "qr_2: |0>─┤ X ├─",
-                              "          └─┬─┘ ",
-                              "qr_3: |0>───┼───",
-                              "         ┌──┴──┐",
+                              "          └─╥─┘ ",
+                              "qr_3: |0>───╫───",
+                              "         ┌──╨──┐",
                               " cr_0: 0 ╡ = 1 ╞",
                               "         └─────┘"])
 
@@ -1727,7 +1727,7 @@ def test_text_conditional_ccx_no_space(self):
                               "qr_1: |0>───■───",
                               "          ┌─┴─┐ ",
                               "qr_2: |0>─┤ X ├─",
-                              "         ┌┴─┴─┴┐",
+                              "         ┌┴─╨─┴┐",
                               " cr_0: 0 ╡ = 1 ╞",
                               "         └─────┘"])
 
@@ -1742,9 +1742,9 @@ def test_text_conditional_h(self):
 
         expected = '\n'.join(["          ┌───┐ ",
                               "qr_0: |0>─┤ H ├─",
-                              "          └─┬─┘ ",
-                              "qr_1: |0>───┼───",
-                              "         ┌──┴──┐",
+                              "          └─╥─┘ ",
+                              "qr_1: |0>───╫───",
+                              "         ┌──╨──┐",
                               " cr_0: 0 ╡ = 1 ╞",
                               "         └─────┘"])
 
@@ -1761,9 +1761,9 @@ def test_text_conditional_swap(self):
                               "qr_0: |0>───X───",
                               "            │   ",
                               "qr_1: |0>───X───",
-                              "            │   ",
-                              "qr_2: |0>───┼───",
-                              "         ┌──┴──┐",
+                              "            ║   ",
+                              "qr_2: |0>───╫───",
+                              "         ┌──╨──┐",
                               " cr_0: 0 ╡ = 1 ╞",
                               "         └─────┘"])
 
@@ -1782,9 +1782,9 @@ def test_text_conditional_cswap(self):
                               "qr_1: |0>───X───",
                               "            │   ",
                               "qr_2: |0>───X───",
-                              "            │   ",
-                              "qr_3: |0>───┼───",
-                              "         ┌──┴──┐",
+                              "            ║   ",
+                              "qr_3: |0>───╫───",
+                              "         ┌──╨──┐",
                               " cr_0: 0 ╡ = 1 ╞",
                               "         └─────┘"])
 
@@ -1800,9 +1800,9 @@ def test_conditional_reset(self):
 
         expected = '\n'.join(["                ",
                               "qr_0: |0>──|0>──",
-                              "            │   ",
-                              "qr_1: |0>───┼───",
-                              "         ┌──┴──┐",
+                              "            ║   ",
+                              "qr_1: |0>───╫───",
+                              "         ┌──╨──┐",
                               " cr_0: 0 ╡ = 1 ╞",
                               "         └─────┘"])
 
@@ -2416,7 +2416,7 @@ def test_cccz_conditional(self):
                               "q_2: |0>───■───",
                               "           │   ",
                               "q_3: |0>───■───",
-                              "        ┌──┴──┐",
+                              "        ┌──╨──┐",
                               " c_0: 0 ╡ = 1 ╞",
                               "        └─────┘"])
         qr = QuantumRegister(4, 'q')