|
Packit |
116408 |
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
|
|
Packit |
116408 |
/*
|
|
Packit |
116408 |
* Copyright (C) 2008 Imendio AB
|
|
Packit |
116408 |
*
|
|
Packit |
116408 |
* This program is free software; you can redistribute it and/or
|
|
Packit |
116408 |
* modify it under the terms of the GNU General Public License as
|
|
Packit |
116408 |
* published by the Free Software Foundation; either version 2 of the
|
|
Packit |
116408 |
* License, or (at your option) any later version.
|
|
Packit |
116408 |
*
|
|
Packit |
116408 |
* This program is distributed in the hope that it will be useful,
|
|
Packit |
116408 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
116408 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
116408 |
* General Public License for more details.
|
|
Packit |
116408 |
*
|
|
Packit |
116408 |
* You should have received a copy of the GNU General Public License
|
|
Packit |
116408 |
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
Packit |
116408 |
*/
|
|
Packit |
116408 |
|
|
Packit |
116408 |
#include "config.h"
|
|
Packit |
116408 |
#include "dh-assistant.h"
|
|
Packit |
116408 |
#include "dh-window.h"
|
|
Packit |
116408 |
#include "dh-util.h"
|
|
Packit |
116408 |
#include "dh-assistant-view.h"
|
|
Packit |
116408 |
#include "dh-settings.h"
|
|
Packit |
116408 |
|
|
Packit |
116408 |
typedef struct {
|
|
Packit |
116408 |
GtkWidget *view;
|
|
Packit |
116408 |
} DhAssistantPrivate;
|
|
Packit |
116408 |
|
|
Packit |
116408 |
G_DEFINE_TYPE_WITH_PRIVATE (DhAssistant, dh_assistant, GTK_TYPE_APPLICATION_WINDOW);
|
|
Packit |
116408 |
|
|
Packit |
116408 |
static void
|
|
Packit |
116408 |
assistant_view_open_uri_cb (DhAssistantView *view,
|
|
Packit |
116408 |
const char *uri,
|
|
Packit |
116408 |
DhAssistant *assistant)
|
|
Packit |
116408 |
{
|
|
Packit |
116408 |
DhApp *app;
|
|
Packit |
116408 |
DhWindow *window;
|
|
Packit |
116408 |
|
|
Packit |
116408 |
app = DH_APP (gtk_window_get_application (GTK_WINDOW (assistant)));
|
|
Packit |
116408 |
|
|
Packit |
116408 |
window = dh_app_get_active_main_window (app, TRUE);
|
|
Packit |
116408 |
_dh_window_display_uri (window, uri);
|
|
Packit |
116408 |
}
|
|
Packit |
116408 |
|
|
Packit |
116408 |
static gboolean
|
|
Packit |
116408 |
dh_assistant_key_press_event (GtkWidget *widget,
|
|
Packit |
116408 |
GdkEventKey *event)
|
|
Packit |
116408 |
{
|
|
Packit |
116408 |
DhAssistant *assistant = DH_ASSISTANT (widget);
|
|
Packit |
116408 |
|
|
Packit |
116408 |
if (event->keyval == GDK_KEY_Escape) {
|
|
Packit |
116408 |
gtk_window_close (GTK_WINDOW (assistant));
|
|
Packit |
116408 |
return GDK_EVENT_STOP;
|
|
Packit |
116408 |
}
|
|
Packit |
116408 |
|
|
Packit |
116408 |
return GTK_WIDGET_CLASS (dh_assistant_parent_class)->key_press_event (widget, event);
|
|
Packit |
116408 |
}
|
|
Packit |
116408 |
|
|
Packit |
116408 |
static gboolean
|
|
Packit |
116408 |
dh_assistant_delete_event (GtkWidget *widget,
|
|
Packit |
116408 |
GdkEventAny *event)
|
|
Packit |
116408 |
{
|
|
Packit |
116408 |
DhSettings *settings;
|
|
Packit |
116408 |
|
|
Packit |
116408 |
settings = dh_settings_get_singleton ();
|
|
Packit |
116408 |
dh_util_window_settings_save (GTK_WINDOW (widget),
|
|
Packit |
116408 |
dh_settings_peek_assistant_settings (settings));
|
|
Packit |
116408 |
|
|
Packit |
116408 |
if (GTK_WIDGET_CLASS (dh_assistant_parent_class)->delete_event == NULL)
|
|
Packit |
116408 |
return GDK_EVENT_PROPAGATE;
|
|
Packit |
116408 |
|
|
Packit |
116408 |
return GTK_WIDGET_CLASS (dh_assistant_parent_class)->delete_event (widget, event);
|
|
Packit |
116408 |
}
|
|
Packit |
116408 |
|
|
Packit |
116408 |
static void
|
|
Packit |
116408 |
dh_assistant_class_init (DhAssistantClass *klass)
|
|
Packit |
116408 |
{
|
|
Packit |
116408 |
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
|
|
Packit |
116408 |
|
|
Packit |
116408 |
widget_class->key_press_event = dh_assistant_key_press_event;
|
|
Packit |
116408 |
widget_class->delete_event = dh_assistant_delete_event;
|
|
Packit |
116408 |
|
|
Packit |
116408 |
/* Bind class to template */
|
|
Packit |
116408 |
gtk_widget_class_set_template_from_resource (widget_class,
|
|
Packit |
116408 |
"/org/gnome/devhelp/dh-assistant.ui");
|
|
Packit |
116408 |
gtk_widget_class_bind_template_child_private (widget_class, DhAssistant, view);
|
|
Packit |
116408 |
}
|
|
Packit |
116408 |
|
|
Packit |
116408 |
static void
|
|
Packit |
116408 |
dh_assistant_init (DhAssistant *assistant)
|
|
Packit |
116408 |
{
|
|
Packit |
116408 |
DhAssistantPrivate *priv = dh_assistant_get_instance_private (assistant);
|
|
Packit |
116408 |
|
|
Packit |
116408 |
gtk_widget_init_template (GTK_WIDGET (assistant));
|
|
Packit |
116408 |
|
|
Packit |
116408 |
g_signal_connect (priv->view, "open-uri",
|
|
Packit |
116408 |
G_CALLBACK (assistant_view_open_uri_cb),
|
|
Packit |
116408 |
assistant);
|
|
Packit |
116408 |
}
|
|
Packit |
116408 |
|
|
Packit |
116408 |
DhAssistant *
|
|
Packit |
116408 |
dh_assistant_new (DhApp *application)
|
|
Packit |
116408 |
{
|
|
Packit |
116408 |
DhAssistant *assistant;
|
|
Packit |
116408 |
DhSettings *settings;
|
|
Packit |
116408 |
|
|
Packit |
116408 |
assistant = g_object_new (DH_TYPE_ASSISTANT,
|
|
Packit |
116408 |
"application", application,
|
|
Packit |
116408 |
NULL);
|
|
Packit |
116408 |
|
|
Packit |
116408 |
settings = dh_settings_get_singleton ();
|
|
Packit |
116408 |
gtk_widget_realize (GTK_WIDGET (assistant));
|
|
Packit |
116408 |
dh_util_window_settings_restore (GTK_WINDOW (assistant),
|
|
Packit |
116408 |
dh_settings_peek_assistant_settings (settings));
|
|
Packit |
116408 |
|
|
Packit |
116408 |
return assistant;
|
|
Packit |
116408 |
}
|
|
Packit |
116408 |
|
|
Packit |
116408 |
gboolean
|
|
Packit |
116408 |
dh_assistant_search (DhAssistant *assistant,
|
|
Packit |
116408 |
const gchar *str)
|
|
Packit |
116408 |
{
|
|
Packit |
116408 |
DhAssistantPrivate *priv;
|
|
Packit |
116408 |
|
|
Packit |
116408 |
g_return_val_if_fail (DH_IS_ASSISTANT (assistant), FALSE);
|
|
Packit |
116408 |
g_return_val_if_fail (str != NULL, FALSE);
|
|
Packit |
116408 |
|
|
Packit |
116408 |
priv = dh_assistant_get_instance_private (assistant);
|
|
Packit |
116408 |
|
|
Packit |
116408 |
if (dh_assistant_view_search (DH_ASSISTANT_VIEW (priv->view), str)) {
|
|
Packit |
116408 |
gtk_widget_show (GTK_WIDGET (assistant));
|
|
Packit |
116408 |
return TRUE;
|
|
Packit |
116408 |
}
|
|
Packit |
116408 |
|
|
Packit |
116408 |
return FALSE;
|
|
Packit |
116408 |
}
|