1050: def initialize(encoding)
1051: @changed = false
1052: @encoding = encoding
1053: super(TOPLEVEL)
1054: display_title
1055: set_default_size(800, 600)
1056: signal_connect(:delete_event) { quit }
1057:
1058: vbox = VBox.new(false, 0)
1059: add(vbox)
1060:
1061:
1062: @treeview = JSONTreeView.new(self)
1063: @treeview.signal_connect('cursor-changed''cursor-changed') do
1064: display_status('')
1065: end
1066:
1067: menu_bar = create_menu_bar
1068: vbox.pack_start(menu_bar, false, false, 0)
1069:
1070: sw = ScrolledWindow.new(nil, nil)
1071: sw.shadow_type = SHADOW_ETCHED_IN
1072: sw.set_policy(POLICY_AUTOMATIC, POLICY_AUTOMATIC)
1073: vbox.pack_start(sw, true, true, 0)
1074: sw.add(@treeview)
1075:
1076: @status_bar = Statusbar.new
1077: vbox.pack_start(@status_bar, false, false, 0)
1078:
1079: @filename ||= nil
1080: if @filename
1081: data = read_data(@filename)
1082: view_new_model Editor.data2model(data)
1083: end
1084:
1085: signal_connect(:button_release_event) do |_,event|
1086: if event.button == 2
1087: c = Gtk::Clipboard.get(Gdk::Selection::PRIMARY)
1088: if url = c.wait_for_text
1089: location_open url
1090: end
1091: false
1092: else
1093: true
1094: end
1095: end
1096: end