mirror of
https://gitlab.gnome.org/GNOME/nautilus
synced 2024-10-01 13:34:16 +00:00
Add a factory for activating components implemented inside nautilus.
Add a factory for activating components implemented inside nautilus. Add some comments on how URI mapping will work.
This commit is contained in:
parent
6407cf3688
commit
339e891c68
|
@ -44,7 +44,28 @@ nautilus_navinfo_new(NautilusNavigationInfo *navinfo,
|
|||
|
||||
navinfo->requesting_view = requesting_view;
|
||||
|
||||
/* XXX turn the provided information into some activateable IID's */
|
||||
navinfo->navinfo.content_type = gnome_mime_type_of_file(navinfo->navinfo.requested_uri);
|
||||
|
||||
/* Given a content type and a URI, what do we do? Basically the "expert system" below
|
||||
tries to answer that question
|
||||
|
||||
Check if the URI is in an abnormal scheme (e.g. one not supported by gnome-vfs)
|
||||
If so
|
||||
Lookup a content view by scheme name, go.
|
||||
Lookup meta views by scheme name, go.
|
||||
|
||||
If not
|
||||
Figure out content type.
|
||||
Lookup a content view by content type, go.
|
||||
Lookup meta views by content type, go.
|
||||
|
||||
The lookup-and-go process works like:
|
||||
Generate a list of all possibilities ordered by quality.
|
||||
Put possibilities on menu.
|
||||
|
||||
Find if the user has specified any default(s) globally, modify selection.
|
||||
Find if the user has specified any default(s) per-page, modify selection.
|
||||
*/
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
@ -52,4 +73,5 @@ nautilus_navinfo_new(NautilusNavigationInfo *navinfo,
|
|||
void
|
||||
nautilus_navinfo_free(NautilusNavigationInfo *navinfo)
|
||||
{
|
||||
g_free(navinfo->navinfo.content_type);
|
||||
}
|
||||
|
|
|
@ -38,6 +38,13 @@ check_for_quit(void)
|
|||
gtk_main_quit();
|
||||
}
|
||||
|
||||
static GnomeObject *
|
||||
nautilus_make_object(GnomeGenericFactory *gfact, const char *goad_id, void *closure)
|
||||
{
|
||||
/* New internally implemented objects should be activated here */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
poptContext ctx;
|
||||
|
@ -47,10 +54,13 @@ int main(int argc, char *argv[])
|
|||
{NULL}
|
||||
};
|
||||
GtkWidget *mainwin;
|
||||
GnomeGenericFactory *gfact;
|
||||
|
||||
orb = gnome_CORBA_init_with_popt_table("nautilus", VERSION, &argc, argv, options, 0, &ctx, GNORBA_INIT_SERVER_FUNC, &ev);
|
||||
bonobo_init(orb, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL);
|
||||
|
||||
gfact = gnome_generic_factory_new("nautilus_factory", nautilus_make_object, NULL);
|
||||
|
||||
mainwin = gtk_widget_new(nautilus_window_get_type(), "app_id", "nautilus", NULL);
|
||||
bonobo_activate();
|
||||
nautilus_window_set_initial_state(NAUTILUS_WINDOW(mainwin));
|
||||
|
|
|
@ -415,13 +415,13 @@ nautilus_view_activate_uri(GnomeControlFrame *frame, const char *uri, gboolean r
|
|||
nautilus_view_request_location_change(view, &nri);
|
||||
}
|
||||
|
||||
void
|
||||
nautilus_view_load_client(NautilusView *view,
|
||||
const char * iid)
|
||||
nautilus_view_load_client(NautilusView *view, const char *iid)
|
||||
{
|
||||
GnomeControlFrame *frame;
|
||||
CORBA_Environment ev;
|
||||
|
||||
g_return_if_fail(iid);
|
||||
|
||||
if(view->client)
|
||||
{
|
||||
g_free(view->iid); view->iid = NULL;
|
||||
|
@ -438,6 +438,7 @@ nautilus_view_load_client(NautilusView *view,
|
|||
"IDL:Nautilus/View:1.0", &ev);
|
||||
if(ev._major != CORBA_NO_EXCEPTION)
|
||||
view->view_client = CORBA_OBJECT_NIL;
|
||||
|
||||
view->iid = g_strdup(iid);
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(frame), "activate_uri", GTK_SIGNAL_FUNC(nautilus_view_activate_uri), view);
|
||||
|
@ -446,6 +447,20 @@ nautilus_view_load_client(NautilusView *view,
|
|||
CORBA_exception_free(&ev);
|
||||
}
|
||||
|
||||
void
|
||||
nautilus_view_use_client (NautilusView *view,
|
||||
GNOME_Control ctl)
|
||||
{
|
||||
nautilus_view_handle_client(view, NULL, ctl);
|
||||
}
|
||||
|
||||
void
|
||||
nautilus_view_load_client(NautilusView *view,
|
||||
const char * iid)
|
||||
{
|
||||
nautilus_view_handle_client(view, iid, CORBA_OBJECT_NIL);
|
||||
}
|
||||
|
||||
static void
|
||||
nautilus_view_notify_location_change(NautilusView *view,
|
||||
Nautilus_NavigationInfo *nav_context)
|
||||
|
|
|
@ -90,8 +90,8 @@ void nautilus_view_request_selection_change (NautilusView *view,
|
|||
Nautilus_SelectionRequestInfo *loc);
|
||||
void nautilus_view_request_status_change (NautilusView *view,
|
||||
Nautilus_StatusRequestInfo *loc);
|
||||
void nautilus_view_load_client (NautilusView *view,
|
||||
const char * iid);
|
||||
void nautilus_view_load_client (NautilusView *view,
|
||||
const char * iid);
|
||||
|
||||
/* This is a "protected" operation */
|
||||
void nautilus_view_construct_arg_set(NautilusView *view);
|
||||
|
|
|
@ -38,6 +38,13 @@ check_for_quit(void)
|
|||
gtk_main_quit();
|
||||
}
|
||||
|
||||
static GnomeObject *
|
||||
nautilus_make_object(GnomeGenericFactory *gfact, const char *goad_id, void *closure)
|
||||
{
|
||||
/* New internally implemented objects should be activated here */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
poptContext ctx;
|
||||
|
@ -47,10 +54,13 @@ int main(int argc, char *argv[])
|
|||
{NULL}
|
||||
};
|
||||
GtkWidget *mainwin;
|
||||
GnomeGenericFactory *gfact;
|
||||
|
||||
orb = gnome_CORBA_init_with_popt_table("nautilus", VERSION, &argc, argv, options, 0, &ctx, GNORBA_INIT_SERVER_FUNC, &ev);
|
||||
bonobo_init(orb, CORBA_OBJECT_NIL, CORBA_OBJECT_NIL);
|
||||
|
||||
gfact = gnome_generic_factory_new("nautilus_factory", nautilus_make_object, NULL);
|
||||
|
||||
mainwin = gtk_widget_new(nautilus_window_get_type(), "app_id", "nautilus", NULL);
|
||||
bonobo_activate();
|
||||
nautilus_window_set_initial_state(NAUTILUS_WINDOW(mainwin));
|
||||
|
|
|
@ -44,7 +44,28 @@ nautilus_navinfo_new(NautilusNavigationInfo *navinfo,
|
|||
|
||||
navinfo->requesting_view = requesting_view;
|
||||
|
||||
/* XXX turn the provided information into some activateable IID's */
|
||||
navinfo->navinfo.content_type = gnome_mime_type_of_file(navinfo->navinfo.requested_uri);
|
||||
|
||||
/* Given a content type and a URI, what do we do? Basically the "expert system" below
|
||||
tries to answer that question
|
||||
|
||||
Check if the URI is in an abnormal scheme (e.g. one not supported by gnome-vfs)
|
||||
If so
|
||||
Lookup a content view by scheme name, go.
|
||||
Lookup meta views by scheme name, go.
|
||||
|
||||
If not
|
||||
Figure out content type.
|
||||
Lookup a content view by content type, go.
|
||||
Lookup meta views by content type, go.
|
||||
|
||||
The lookup-and-go process works like:
|
||||
Generate a list of all possibilities ordered by quality.
|
||||
Put possibilities on menu.
|
||||
|
||||
Find if the user has specified any default(s) globally, modify selection.
|
||||
Find if the user has specified any default(s) per-page, modify selection.
|
||||
*/
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
@ -52,4 +73,5 @@ nautilus_navinfo_new(NautilusNavigationInfo *navinfo,
|
|||
void
|
||||
nautilus_navinfo_free(NautilusNavigationInfo *navinfo)
|
||||
{
|
||||
g_free(navinfo->navinfo.content_type);
|
||||
}
|
||||
|
|
|
@ -415,13 +415,13 @@ nautilus_view_activate_uri(GnomeControlFrame *frame, const char *uri, gboolean r
|
|||
nautilus_view_request_location_change(view, &nri);
|
||||
}
|
||||
|
||||
void
|
||||
nautilus_view_load_client(NautilusView *view,
|
||||
const char * iid)
|
||||
nautilus_view_load_client(NautilusView *view, const char *iid)
|
||||
{
|
||||
GnomeControlFrame *frame;
|
||||
CORBA_Environment ev;
|
||||
|
||||
g_return_if_fail(iid);
|
||||
|
||||
if(view->client)
|
||||
{
|
||||
g_free(view->iid); view->iid = NULL;
|
||||
|
@ -438,6 +438,7 @@ nautilus_view_load_client(NautilusView *view,
|
|||
"IDL:Nautilus/View:1.0", &ev);
|
||||
if(ev._major != CORBA_NO_EXCEPTION)
|
||||
view->view_client = CORBA_OBJECT_NIL;
|
||||
|
||||
view->iid = g_strdup(iid);
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(frame), "activate_uri", GTK_SIGNAL_FUNC(nautilus_view_activate_uri), view);
|
||||
|
@ -446,6 +447,20 @@ nautilus_view_load_client(NautilusView *view,
|
|||
CORBA_exception_free(&ev);
|
||||
}
|
||||
|
||||
void
|
||||
nautilus_view_use_client (NautilusView *view,
|
||||
GNOME_Control ctl)
|
||||
{
|
||||
nautilus_view_handle_client(view, NULL, ctl);
|
||||
}
|
||||
|
||||
void
|
||||
nautilus_view_load_client(NautilusView *view,
|
||||
const char * iid)
|
||||
{
|
||||
nautilus_view_handle_client(view, iid, CORBA_OBJECT_NIL);
|
||||
}
|
||||
|
||||
static void
|
||||
nautilus_view_notify_location_change(NautilusView *view,
|
||||
Nautilus_NavigationInfo *nav_context)
|
||||
|
|
|
@ -90,8 +90,8 @@ void nautilus_view_request_selection_change (NautilusView *view,
|
|||
Nautilus_SelectionRequestInfo *loc);
|
||||
void nautilus_view_request_status_change (NautilusView *view,
|
||||
Nautilus_StatusRequestInfo *loc);
|
||||
void nautilus_view_load_client (NautilusView *view,
|
||||
const char * iid);
|
||||
void nautilus_view_load_client (NautilusView *view,
|
||||
const char * iid);
|
||||
|
||||
/* This is a "protected" operation */
|
||||
void nautilus_view_construct_arg_set(NautilusView *view);
|
||||
|
|
Loading…
Reference in a new issue