summaryrefslogtreecommitdiff
path: root/doc/classes/JSONTreeView.src/M000037.html
blob: ec1860e67c5cc1962dc5f771cc11d7b8e94606d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
<head>
  <title>ask_for_hash_pair (JSONTreeView)</title>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
</head>
<body class="standalone-code">
  <pre><span class="ruby-comment cmt"># File lib/json/editor.rb, line 831</span>
      <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">ask_for_hash_pair</span>(<span class="ruby-identifier">parent</span>)
        <span class="ruby-identifier">key_input</span> = <span class="ruby-identifier">type_input</span> = <span class="ruby-identifier">value_input</span> = <span class="ruby-keyword kw">nil</span>

        <span class="ruby-identifier">dialog</span> = <span class="ruby-constant">Dialog</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;New (key, value) pair for Hash&quot;</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>,
          [ <span class="ruby-constant">Stock</span><span class="ruby-operator">::</span><span class="ruby-constant">OK</span>, <span class="ruby-constant">Dialog</span><span class="ruby-operator">::</span><span class="ruby-constant">RESPONSE_ACCEPT</span> ],
          [ <span class="ruby-constant">Stock</span><span class="ruby-operator">::</span><span class="ruby-constant">CANCEL</span>, <span class="ruby-constant">Dialog</span><span class="ruby-operator">::</span><span class="ruby-constant">RESPONSE_REJECT</span> ]
        )
        <span class="ruby-identifier">dialog</span>.<span class="ruby-identifier">width_request</span> = <span class="ruby-value">640</span>

        <span class="ruby-identifier">hbox</span> = <span class="ruby-constant">HBox</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">false</span>, <span class="ruby-value">5</span>)
        <span class="ruby-identifier">hbox</span>.<span class="ruby-identifier">pack_start</span>(<span class="ruby-constant">Label</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;Key:&quot;</span>), <span class="ruby-keyword kw">false</span>)
        <span class="ruby-identifier">hbox</span>.<span class="ruby-identifier">pack_start</span>(<span class="ruby-identifier">key_input</span> = <span class="ruby-constant">Entry</span>.<span class="ruby-identifier">new</span>)
        <span class="ruby-identifier">key_input</span>.<span class="ruby-identifier">text</span> = <span class="ruby-ivar">@key</span> <span class="ruby-operator">||</span> <span class="ruby-value str">''</span>
        <span class="ruby-identifier">dialog</span>.<span class="ruby-identifier">vbox</span>.<span class="ruby-identifier">pack_start</span>(<span class="ruby-identifier">hbox</span>, <span class="ruby-keyword kw">false</span>)
        <span class="ruby-identifier">key_input</span>.<span class="ruby-identifier">signal_connect</span>(<span class="ruby-identifier">:activate</span>) <span class="ruby-keyword kw">do</span>
          <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parent</span>.<span class="ruby-identifier">any?</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">content</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">key_input</span>.<span class="ruby-identifier">text</span> }
            <span class="ruby-identifier">toplevel</span>.<span class="ruby-identifier">display_status</span>(<span class="ruby-value str">'Key already exists in Hash!'</span>)
            <span class="ruby-identifier">key_input</span>.<span class="ruby-identifier">text</span> = <span class="ruby-value str">''</span>
          <span class="ruby-keyword kw">else</span>
            <span class="ruby-identifier">toplevel</span>.<span class="ruby-identifier">display_status</span>(<span class="ruby-value str">'Key has been changed.'</span>)
          <span class="ruby-keyword kw">end</span>
        <span class="ruby-keyword kw">end</span>

        <span class="ruby-identifier">hbox</span> = <span class="ruby-constant">HBox</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">false</span>, <span class="ruby-value">5</span>)
        <span class="ruby-identifier">hbox</span>.<span class="ruby-identifier">pack_start</span>(<span class="ruby-constant">Label</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;Type:&quot;</span>), <span class="ruby-keyword kw">false</span>)
        <span class="ruby-identifier">hbox</span>.<span class="ruby-identifier">pack_start</span>(<span class="ruby-identifier">type_input</span> = <span class="ruby-constant">ComboBox</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">true</span>))
        <span class="ruby-constant">ALL_TYPES</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span> <span class="ruby-identifier">type_input</span>.<span class="ruby-identifier">append_text</span>(<span class="ruby-identifier">t</span>) }
        <span class="ruby-identifier">type_input</span>.<span class="ruby-identifier">active</span> = <span class="ruby-ivar">@type</span> <span class="ruby-operator">||</span> <span class="ruby-value">0</span>
        <span class="ruby-identifier">dialog</span>.<span class="ruby-identifier">vbox</span>.<span class="ruby-identifier">pack_start</span>(<span class="ruby-identifier">hbox</span>, <span class="ruby-keyword kw">false</span>)

        <span class="ruby-identifier">type_input</span>.<span class="ruby-identifier">signal_connect</span>(<span class="ruby-identifier">:changed</span>) <span class="ruby-keyword kw">do</span>
          <span class="ruby-identifier">value_input</span>.<span class="ruby-identifier">editable</span> = <span class="ruby-keyword kw">false</span>
          <span class="ruby-keyword kw">case</span> <span class="ruby-constant">ALL_TYPES</span>[<span class="ruby-identifier">type_input</span>.<span class="ruby-identifier">active</span>]
          <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'Array'</span>, <span class="ruby-value str">'Hash'</span>
            <span class="ruby-identifier">value_input</span>.<span class="ruby-identifier">text</span> = <span class="ruby-value str">''</span>
          <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'TrueClass'</span>
            <span class="ruby-identifier">value_input</span>.<span class="ruby-identifier">text</span> = <span class="ruby-value str">'true'</span>
          <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'FalseClass'</span>
            <span class="ruby-identifier">value_input</span>.<span class="ruby-identifier">text</span> = <span class="ruby-value str">'false'</span>
          <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'NilClass'</span>
            <span class="ruby-identifier">value_input</span>.<span class="ruby-identifier">text</span> = <span class="ruby-value str">'null'</span>
          <span class="ruby-keyword kw">else</span>
            <span class="ruby-identifier">value_input</span>.<span class="ruby-identifier">text</span> = <span class="ruby-value str">''</span>
            <span class="ruby-identifier">value_input</span>.<span class="ruby-identifier">editable</span> = <span class="ruby-keyword kw">true</span>
          <span class="ruby-keyword kw">end</span>
        <span class="ruby-keyword kw">end</span>

        <span class="ruby-identifier">hbox</span> = <span class="ruby-constant">HBox</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">false</span>, <span class="ruby-value">5</span>)
        <span class="ruby-identifier">hbox</span>.<span class="ruby-identifier">pack_start</span>(<span class="ruby-constant">Label</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;Value:&quot;</span>), <span class="ruby-keyword kw">false</span>)
        <span class="ruby-identifier">hbox</span>.<span class="ruby-identifier">pack_start</span>(<span class="ruby-identifier">value_input</span> = <span class="ruby-constant">Entry</span>.<span class="ruby-identifier">new</span>)
        <span class="ruby-identifier">value_input</span>.<span class="ruby-identifier">width_chars</span> = <span class="ruby-value">60</span>
        <span class="ruby-identifier">value_input</span>.<span class="ruby-identifier">text</span> = <span class="ruby-ivar">@value</span> <span class="ruby-operator">||</span> <span class="ruby-value str">''</span>
        <span class="ruby-identifier">dialog</span>.<span class="ruby-identifier">vbox</span>.<span class="ruby-identifier">pack_start</span>(<span class="ruby-identifier">hbox</span>, <span class="ruby-keyword kw">false</span>)

        <span class="ruby-identifier">dialog</span>.<span class="ruby-identifier">signal_connect</span>(<span class="ruby-value str">'key-press-event'</span><span class="ruby-value str">'key-press-event'</span>, <span class="ruby-operator">&amp;</span><span class="ruby-constant">DEFAULT_DIALOG_KEY_PRESS_HANDLER</span>)
        <span class="ruby-identifier">dialog</span>.<span class="ruby-identifier">show_all</span>
        <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">focus</span> = <span class="ruby-identifier">dialog</span>
        <span class="ruby-identifier">dialog</span>.<span class="ruby-identifier">run</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">response</span><span class="ruby-operator">|</span> 
          <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">response</span> <span class="ruby-operator">==</span> <span class="ruby-constant">Dialog</span><span class="ruby-operator">::</span><span class="ruby-constant">RESPONSE_ACCEPT</span>
            <span class="ruby-ivar">@key</span> = <span class="ruby-identifier">key_input</span>.<span class="ruby-identifier">text</span>
            <span class="ruby-identifier">type</span> = <span class="ruby-constant">ALL_TYPES</span>[<span class="ruby-ivar">@type</span> = <span class="ruby-identifier">type_input</span>.<span class="ruby-identifier">active</span>]
            <span class="ruby-identifier">content</span> = <span class="ruby-identifier">value_input</span>.<span class="ruby-identifier">text</span>
            <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@key</span>, <span class="ruby-identifier">type</span>, <span class="ruby-identifier">content</span>
          <span class="ruby-keyword kw">end</span>
        <span class="ruby-keyword kw">end</span>
        <span class="ruby-keyword kw">return</span>
      <span class="ruby-keyword kw">ensure</span>
        <span class="ruby-identifier">dialog</span>.<span class="ruby-identifier">destroy</span>
      <span class="ruby-keyword kw">end</span></pre>
</body>
</html>