2 * Copyright (C) 2010 J. Ali Harlow <ali@juiblex.co.uk>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License along
15 * with this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
25 #include <plover-gtk/packageset.h>
26 #include "app-manager.h"
27 #include "localmedia.h"
29 #define LOGO_NAME "plover-applications"
32 GtkTreeModel *installed,*applications,*location,*local_media;
34 int main(int argc,char **argv)
40 PloverPackageSet *set;
41 GOptionEntry options[]={
44 if (!gtk_init_with_args(&argc,&argv,NULL,options,NULL,&err))
46 g_printerr("%s",err->message);
49 gtk_window_set_default_icon_name(LOGO_NAME);
51 if (!g_file_get_contents("app-manager.ui",&contents,&len,&err) &&
52 g_error_matches(err,G_FILE_ERROR,G_FILE_ERROR_NOENT))
55 s=g_build_filename(PLOVER_DATADIR,"app-manager.ui",NULL);
56 (void)g_file_get_contents(s,&contents,&len,&err);
61 (void)gtk_builder_add_from_string(ui,contents,len,&err);
66 g_error("%s",err->message);
69 gtk_builder_connect_signals(ui,NULL);
70 installed=GTK_TREE_MODEL(plover_package_store_new());
71 set=plover_package_set_new_from_installed("",NULL);
73 plover_package_store_add_set(PLOVER_PACKAGE_STORE(installed),set);
74 applications=plover_applications_model_new(installed);
75 set_package_model(applications);
82 on_applications_toggled(GtkToggleToolButton *button,gpointer data)
84 if (gtk_toggle_tool_button_get_active(button))
87 applications=plover_applications_model_new(installed);
88 set_package_model(applications);
93 on_all_packages_toggled(GtkToggleToolButton *button,gpointer data)
95 if (gtk_toggle_tool_button_get_active(button))
96 set_package_model(installed);
100 on_local_media_toggled(GtkToggleToolButton *button,gpointer data)
102 if (gtk_toggle_tool_button_get_active(button))
105 local_media=plover_local_media_store_new();
106 set_package_model(local_media);
111 on_location_toggled(GtkToggleToolButton *button,gpointer data)
113 if (gtk_toggle_tool_button_get_active(button))
114 set_package_model(location);
117 G_MODULE_EXPORT void on_open_location(GtkWidget *widget)
119 GtkWidget *w=GTK_WIDGET(gtk_builder_get_object(ui,"MainWindow"));
122 PloverPackageSet *set;
125 dialog=gtk_file_chooser_dialog_new("Open Location",GTK_WINDOW(w),
126 GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,GTK_STOCK_CANCEL,
127 GTK_RESPONSE_CANCEL,GTK_STOCK_OPEN,GTK_RESPONSE_ACCEPT,NULL);
128 #if GTK_CHECK_VERSION(2,18,0)
129 gtk_file_chooser_set_create_folders(GTK_FILE_CHOOSER(dialog),FALSE);
131 if (gtk_dialog_run(GTK_DIALOG(dialog))==GTK_RESPONSE_ACCEPT)
133 path=gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
134 set=plover_package_set_new_from_repository(path,&err);
138 location=GTK_TREE_MODEL(plover_package_store_new());
140 plover_package_store_get_sets(PLOVER_PACKAGE_STORE(location))))
141 plover_package_store_remove_set(PLOVER_PACKAGE_STORE(location),
142 PLOVER_PACKAGE_SET(sets->data));
143 plover_package_store_add_set(PLOVER_PACKAGE_STORE(location),set);
145 w=GTK_WIDGET(gtk_builder_get_object(ui,"LocationButton"));
146 name=g_filename_display_basename(path);
147 gtk_tool_button_set_label(GTK_TOOL_BUTTON(w),name);
150 gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(w),TRUE);
154 gtk_widget_destroy(dialog);
155 dialog=gtk_message_dialog_new(GTK_WINDOW(w),
156 GTK_DIALOG_DESTROY_WITH_PARENT,GTK_MESSAGE_ERROR,
157 GTK_BUTTONS_CLOSE,"Error loading repository '%s'",path);
158 gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog),
160 gtk_dialog_run(GTK_DIALOG(dialog));
165 gtk_widget_destroy(dialog);
168 G_MODULE_EXPORT void on_scan_local_media(GtkWidget *widget)
171 local_media=plover_local_media_store_new();
172 plover_local_media_store_scan(PLOVER_LOCAL_MEDIA_STORE(local_media));
175 G_MODULE_EXPORT void on_help_about(GtkWidget *widget)
177 GtkWidget *w=GTK_WIDGET(gtk_builder_get_object(ui,"MainWindow"));
178 gtk_show_about_dialog(GTK_WINDOW(w),"name",PACKAGE_NAME,
179 "version",PACKAGE_VERSION,"comments","Application Manager",
180 "copyright","Copyright © 2010 J. Ali Harlow","logo-icon-name",LOGO_NAME,
184 G_MODULE_EXPORT void on_find_clicked(GtkButton *button)
187 GtkWidget *w=GTK_WIDGET(gtk_builder_get_object(ui,"SearchEntry"));
188 text=g_strdup(gtk_entry_get_text(GTK_ENTRY(w)));
189 gtk_entry_set_text(GTK_ENTRY(w),"");
190 gtk_entry_set_text(GTK_ENTRY(w),text);