/** * \fn void external_link_catch(GtkWidget *w, GObject *link) * \brief This function catch the signal when a clic is made on a note. * \param w The widget which triggered the call. * \param link ev_link_action. * \param editor The GUI structure. */ void external_link_catch(GtkWidget *widget, GObject *link, BrailleMusicEditor *editor) { EvLinkAction *l = EV_LINK_ACTION(link); ev_view_copy_link_address(EV_VIEW(widget), l); //get line:column link const gchar * lc = ev_link_action_get_uri(l); int line, column; int i = 0; char c = ' ', temp[2048]; while(c != ':' || i >= strlen(lc)) { c = lc[i]; temp[i] = c; i++; } temp[i+1]='\0'; line = atoi(temp); line--; column = atoi(lc+i); GtkTextIter it; GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(editor->textview)); if(gtk_text_buffer_get_line_count(buffer) < line ) { line = 0; column = 0; } gtk_text_buffer_get_iter_at_line(buffer, &it, line); while(column >0 && !gtk_text_iter_ends_line(&it)) { gtk_text_iter_forward_char(&it); column--; } gtk_widget_grab_focus(editor->textview); gtk_text_buffer_place_cursor(buffer, &it); gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(editor->textview), &it, 0.0, FALSE, 0.5, 0.5); }
EvLinkAction * ev_link_action_new_external_uri (const gchar *uri) { return EV_LINK_ACTION (g_object_new (EV_TYPE_LINK_ACTION, "uri", uri, "type", EV_LINK_ACTION_TYPE_EXTERNAL_URI, NULL)); }
EvLinkAction * ev_link_action_new_named (const gchar *name) { return EV_LINK_ACTION (g_object_new (EV_TYPE_LINK_ACTION, "name", name, "type", EV_LINK_ACTION_TYPE_NAMED, NULL)); }
EvLinkAction * ev_link_action_new_dest (EvLinkDest *dest) { return EV_LINK_ACTION (g_object_new (EV_TYPE_LINK_ACTION, "dest", dest, "type", EV_LINK_ACTION_TYPE_GOTO_DEST, NULL)); }
EvLinkAction * ev_link_action_new_launch (const gchar *filename, const gchar *params) { return EV_LINK_ACTION (g_object_new (EV_TYPE_LINK_ACTION, "filename", filename, "params", params, "type", EV_LINK_ACTION_TYPE_LAUNCH, NULL)); }
EvLinkAction * ev_link_action_new_remote (EvLinkDest *dest, const gchar *filename) { return EV_LINK_ACTION (g_object_new (EV_TYPE_LINK_ACTION, "dest", dest, "filename", filename, "type", EV_LINK_ACTION_TYPE_GOTO_REMOTE, NULL)); }
EvLinkAction * ev_link_action_new_layers_state (GList *show_list, GList *hide_list, GList *toggle_list) { return EV_LINK_ACTION (g_object_new (EV_TYPE_LINK_ACTION, "show-list", show_list, "hide-list", hide_list, "toggle-list", toggle_list, "type", EV_LINK_ACTION_TYPE_LAYERS_STATE, NULL)); }
static void ev_link_action_finalize (GObject *object) { EvLinkActionPrivate *priv; priv = EV_LINK_ACTION (object)->priv; if (priv->dest) { g_object_unref (priv->dest); priv->dest = NULL; } if (priv->uri) { g_free (priv->uri); priv->uri = NULL; } if (priv->filename) { g_free (priv->filename); priv->filename = NULL; } if (priv->params) { g_free (priv->params); priv->params = NULL; } if (priv->name) { g_free (priv->name); priv->name = NULL; } if (priv->show_list) { g_list_foreach (priv->show_list, (GFunc)g_object_unref, NULL); g_list_free (priv->show_list); priv->show_list = NULL; } if (priv->hide_list) { g_list_foreach (priv->hide_list, (GFunc)g_object_unref, NULL); g_list_free (priv->hide_list); priv->hide_list = NULL; } if (priv->toggle_list) { g_list_foreach (priv->toggle_list, (GFunc)g_object_unref, NULL); g_list_free (priv->toggle_list); priv->toggle_list = NULL; } G_OBJECT_CLASS (ev_link_action_parent_class)->finalize (object); }
static void ev_link_action_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *param_spec) { EvLinkAction *self = EV_LINK_ACTION (object); switch (prop_id) { case PROP_TYPE: self->priv->type = g_value_get_enum (value); break; case PROP_DEST: self->priv->dest = g_value_get_pointer (value); break; case PROP_URI: g_free (self->priv->uri); self->priv->uri = g_value_dup_string (value); break; case PROP_FILENAME: g_free (self->priv->filename); self->priv->filename = g_value_dup_string (value); break; case PROP_PARAMS: g_free (self->priv->params); self->priv->params = g_value_dup_string (value); break; case PROP_NAME: g_free (self->priv->name); self->priv->name = g_value_dup_string (value); break; case PROP_SHOW_LIST: self->priv->show_list = g_value_get_pointer (value); break; case PROP_HIDE_LIST: self->priv->hide_list = g_value_get_pointer (value); break; case PROP_TOGGLE_LIST: self->priv->toggle_list = g_value_get_pointer (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, param_spec); break; } }