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