~ubuntu-branches/ubuntu/vivid/xiphos/vivid-proposed

« back to all changes in this revision

Viewing changes to src/gnome2/bibletext.c

  • Committer: Package Import Robot
  • Author(s): Dimitri John Ledkov
  • Date: 2014-07-12 17:08:46 UTC
  • mfrom: (17.1.3 sid)
  • Revision ID: package-import@ubuntu.com-20140712170846-1lcybpijz5fn72fg
Tags: 3.2.2+dfsg1-1
* New upstream release.
* Bump standards version.
* Switch uscan to sf.net redirector.
* Unpack waf in get-orig-source target.
* Bump to debhelper 9.
* Add uuid-dev build-dep.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
 * Xiphos Bible Study Tool
3
3
 * bibletext.c - gui for Bible text modules
4
4
 *
5
 
 * Copyright (C) 2000-2011 Xiphos Developer Team
 
5
 * Copyright (C) 2000-2014 Xiphos Developer Team
6
6
 *
7
7
 * This program is free software; you can redistribute it and/or modify
8
8
 * it under the terms of the GNU General Public License as published by
25
25
 
26
26
#include <gtk/gtk.h>
27
27
 
28
 
#include "../xiphos_html/xiphos_html.h"
 
28
#include "xiphos_html/xiphos_html.h"
29
29
 
30
30
 
31
31
#include "gui/xiphos.h"
53
53
#include "main/global_ops.hh"
54
54
#include "main/display.hh"
55
55
 
56
 
 
57
56
gboolean shift_key_pressed = FALSE;
58
57
guint scroll_adj_signal;
59
58
GtkAdjustment* adjustment;
60
59
 
61
 
 
62
60
/******************************************************************************
63
61
 * Name
64
62
 *
82
80
}
83
81
 
84
82
 
85
 
#ifdef USE_XIPHOS_HTML
86
 
  #ifdef USE_WEBKIT
87
 
    static gboolean
88
 
    _popupmenu_requested_cb (XiphosHtml *html,
 
83
static gboolean
 
84
_popupmenu_requested_cb (XiphosHtml *html,
89
85
                            gchar *uri ,
90
86
                             gpointer user_data)
91
 
  #elif USE_GTKMOZEMBED
92
 
    static void
93
 
    _popupmenu_requested_cb (XiphosHtml *html,
94
 
                             gchar *uri,
95
 
                             gpointer user_data)
96
 
 
97
 
  #endif
98
 
{
99
 
    gui_menu_popup(html, settings.MainWindowModule, NULL);  
100
 
    #ifdef USE_WEBKIT
101
 
      return TRUE;
102
 
   // #elif USE_GTKMOZEMBED
103
 
      //gui_popup_pm_text();
104
 
    #endif
105
 
}
106
 
#endif
107
 
 
108
 
#ifndef USE_XIPHOS_HTML
109
 
/******************************************************************************
110
 
 * Name
111
 
 *  on_text_button_press_event
112
 
 *
113
 
 * Synopsis
114
 
 *   #include ".h"
115
 
 *
116
 
 *  gboolean on_text_button_press_event(GtkWidget * widget,
117
 
                            GdkEventButton * event, DIALOG_DATA * t)
118
 
 *
119
 
 * Description
120
 
 *   called when mouse button is clicked in html widget
121
 
 *
122
 
 * Return value
123
 
 *   gboolean
124
 
 */
125
 
static gboolean on_text_button_press_event(GtkWidget * widget,
126
 
                                        GdkEventButton * event,
127
 
                                        gpointer data)
128
 
{
129
 
        switch (event->button) {
130
 
        case 1:
131
 
                break;
132
 
        case 2:
133
 
                shift_key_pressed = TRUE;
134
 
                break;
135
 
        case 3:
136
 
                gui_popup_pm_text();
137
 
                break;
138
 
        }
139
 
        return FALSE;
140
 
}
141
 
 
142
 
 
143
 
/******************************************************************************
144
 
 * Name
145
 
 *  on_button_release_event
146
 
 *
147
 
 * Synopsis
148
 
 *   #include "_bibletext.h"
149
 
 *
150
 
 *  gboolean on_button_release_event(GtkWidget * widget,
151
 
                            GdkEventButton * event, DIALOG_DATA * t)
152
 
 *
153
 
 * Description
154
 
 *   called when mouse button is clicked in html widget
155
 
 *
156
 
 * Return value
157
 
 *   gboolean
158
 
 */
159
 
 
160
 
extern gboolean in_url;
161
 
 
162
 
static gboolean on_text_button_release_event(GtkWidget * widget,
163
 
                                        GdkEventButton * event,
164
 
                                        gpointer date)
165
 
{
166
 
 
167
 
//#ifdef GTKHTML
168
 
        gchar *key;
169
 
        const gchar *url;
170
 
 
171
 
        settings.whichwindow = MAIN_TEXT_WINDOW;
172
 
        /*
173
 
         * set program title to current text module name
174
 
         */
175
 
        gui_change_window_title(settings.MainWindowModule);
176
 
        switch (event->button) {
177
 
        case 1:
178
 
                if (!in_url) {
179
 
                        key = gui_button_press_lookup(widgets.html_text);
180
 
                        if (key) {
181
 
                                gchar *dict = NULL;
182
 
                                if (settings.useDefaultDict)
183
 
                                        dict =
184
 
                                            g_strdup(settings.
185
 
                                                     DefaultDict);
186
 
                                else
187
 
                                        dict =
188
 
                                            g_strdup(settings.DictWindowModule);
189
 
                                main_display_dictionary(dict, key);
190
 
                                g_free(key);
191
 
                                if (dict)
192
 
                                        g_free(dict);
193
 
                        }
194
 
                }
195
 
                break;
196
 
        case 2:
197
 
                if (shift_key_pressed) {
198
 
                        shift_key_pressed = FALSE;
199
 
                        break;
200
 
                }
201
 
                if (!in_url)
202
 
                        break;
203
 
 
204
 
                url = gtk_html_get_url_at (GTK_HTML(widgets.html_text),
205
 
                                                                event->x,
206
 
                                                                event->y);
207
 
 
208
 
                if (strstr(url,"sword://")) {
209
 
                        gchar **work_buf = g_strsplit (url,"/",4);
210
 
                        gui_open_passage_in_new_tab(work_buf[3]);
211
 
                        g_strfreev(work_buf);
212
 
                }
213
 
                break;
214
 
        case 3:
215
 
                break;
216
 
        }
217
 
//#endif /* GTKHTML */
218
 
        return FALSE;
219
 
}
220
 
 
221
 
static gboolean
222
 
on_enter_notify_event        (GtkWidget       *widget,
223
 
                                        GdkEventCrossing *event,
224
 
                                        gpointer         user_data)
225
 
{
226
 
        //shift_key_pressed = FALSE;
227
 
        //gtk_widget_grab_focus (widgets.html_text);
228
 
        settings.whichwindow = MAIN_TEXT_WINDOW;
229
 
        gui_change_window_title(settings.MainWindowModule);
230
 
        return FALSE;
231
 
}
232
 
/*
233
 
static gboolean on_key_press_event           (GtkWidget       *widget,
234
 
                                        GdkEventKey     *event,
235
 
                                        gpointer         user_data)
236
 
{
237
 
#ifdef DEBUG
238
 
        if (event->state == GDK_CONTROL_MASK)
239
 
                g_message("GDK_CONTROL_MASK");
240
 
        if (event->state == GDK_SHIFT_MASK)
241
 
                g_message("GDK_SHIFT_MASK");
242
 
        if (event->state == GDK_MOD1_MASK)
243
 
                g_message("GDK_MOD1_MASK");
244
 
        if (event->state == GDK_MODIFIER_MASK)
245
 
                g_message("GDK_MODIFIER_MASK");
246
 
        g_message("state: %d",event->state);
247
 
#endif
248
 
        switch (event->hardware_keycode) {
249
 
                case 50:
250
 
                case 62:
251
 
                        shift_key_pressed = TRUE;
252
 
                        return TRUE;
253
 
                break;
254
 
        }
255
 
        GS_message(("on_key_press_event\nkeycode: %d",event->hardware_keycode));
256
 
        return FALSE;
257
 
}
258
 
 
259
 
 
260
 
static gboolean on_key_release_event         (GtkWidget       *widget,
261
 
                                        GdkEventKey     *event,
262
 
                                        gpointer         user_data)
263
 
{
264
 
#ifdef DEBUG
265
 
        if (event->state == GDK_CONTROL_MASK)
266
 
                g_message("GDK_CONTROL_MASK");
267
 
        if (event->state == GDK_SHIFT_MASK)
268
 
                g_message("GDK_SHIFT_MASK");
269
 
        if (event->state == GDK_MOD1_MASK)
270
 
                g_message("GDK_MOD1_MASK");
271
 
#endif
272
 
        switch (event->hardware_keycode) {
273
 
                case 50:
274
 
                case 62:
275
 
                        shift_key_pressed = FALSE;
276
 
                break;
277
 
        }
278
 
        GS_message(("on_key_release_event\nkeycode: %d",event->hardware_keycode));
279
 
        return FALSE;
280
 
}
281
 
*/
282
 
 
283
 
extern NAVBAR_VERSEKEY navbar_versekey;
284
 
 
285
 
static
286
 
void adj_changed(GtkAdjustment * adjustment1, gpointer user_data)
287
 
 
288
 
{
289
 
        gdouble scroll = 1;
290
 
        gdouble value, lower, upper, page_size;
291
 
 
292
 
        g_object_get (adjustment1,
293
 
                      "value", &value,
294
 
                      "upper", &upper,
295
 
                      "lower", &lower,
296
 
                      "page-size", &page_size,
297
 
                      NULL);
298
 
 
299
 
        if (!settings.chapter_scroll) return;
300
 
        if (scroll && (value <= lower)) {
301
 
                GS_message(("\ntop: %g\n", value));
302
 
                main_navbar_versekey_spin_chapter(navbar_versekey,0);
303
 
                scroll = 0;
304
 
        } else if (scroll && (value >= (upper - page_size))) {
305
 
                GS_message(("\nvalue + page_size: %g\n", value + page_size));
306
 
                main_navbar_versekey_spin_chapter(navbar_versekey,1);
307
 
                scroll = 0;
308
 
                gtk_adjustment_set_value(adjustment,2);
309
 
        } else  scroll = 1;
310
 
}
311
 
 
312
 
#endif /* !USE_XIPHOS_HTML */
 
87
{
 
88
        gui_menu_popup(html, settings.MainWindowModule, NULL);  
 
89
        return TRUE;
 
90
}
 
91
 
313
92
 
314
93
/******************************************************************************
315
94
 * Name
332
111
        GtkWidget *vbox;
333
112
        GtkWidget *scrolledwindow;
334
113
 
335
 
        vbox = gtk_vbox_new(FALSE, 0);
 
114
        UI_VBOX(vbox, FALSE, 0);
336
115
        gtk_widget_show(vbox);
337
116
 
338
117
        scrolledwindow = gtk_scrolled_window_new(NULL, NULL);
341
120
                           scrolledwindow,
342
121
                           TRUE,
343
122
                           TRUE, 0);
344
 
#ifdef USE_XIPHOS_HTML
345
123
 
346
124
        widgets.html_text = GTK_WIDGET(XIPHOS_HTML_NEW(NULL, FALSE, TEXT_TYPE));
347
125
        gtk_widget_show(widgets.html_text);
352
130
                      "popupmenu_requested",
353
131
                      G_CALLBACK (_popupmenu_requested_cb),
354
132
                      NULL);
355
 
#else
356
 
 
357
 
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW
358
 
                                       (scrolledwindow),
359
 
                                       GTK_POLICY_AUTOMATIC,
360
 
                                       GTK_POLICY_AUTOMATIC);
361
 
 
362
 
 
363
 
        adjustment = gtk_scrolled_window_get_vadjustment
364
 
                                             (GTK_SCROLLED_WINDOW(scrolledwindow));
365
 
        scroll_adj_signal = g_signal_connect(G_OBJECT(adjustment), "value-changed",
366
 
                                G_CALLBACK(adj_changed),
367
 
                                NULL);
368
 
        widgets.html_text = gtk_html_new();
369
 
        gtk_widget_show(widgets.html_text);
370
 
        gtk_container_add(GTK_CONTAINER(scrolledwindow),
371
 
                          widgets.html_text);
372
 
 
373
 
        g_signal_connect(G_OBJECT(widgets.html_text), "link_clicked",
374
 
                                G_CALLBACK(gui_link_clicked),
375
 
                                NULL);
376
 
        g_signal_connect(G_OBJECT(widgets.html_text), "on_url",
377
 
                                G_CALLBACK(gui_url),
378
 
                                GINT_TO_POINTER(TEXT_TYPE));
379
 
        g_signal_connect(G_OBJECT(widgets.html_text),"button_release_event",
380
 
                                G_CALLBACK(on_text_button_release_event),
381
 
                                NULL);
382
 
        g_signal_connect(G_OBJECT(widgets.html_text), "button_press_event",
383
 
                                G_CALLBACK(on_text_button_press_event),
384
 
                                NULL);
385
 
        g_signal_connect(G_OBJECT(widgets.html_text), "enter_notify_event",
386
 
                                G_CALLBACK (on_enter_notify_event),
387
 
                                NULL);
388
 
        g_signal_connect(G_OBJECT(widgets.html_text),
389
 
                         "url_requested",
390
 
                         G_CALLBACK(url_requested), NULL);
391
 
#endif /* USE_XIPHOS_HTML */
392
133
 
393
134
        return  vbox;
394
 
 
395
135
}