Imported a new plug-in "selection"

This commit is contained in:
Pierre Pronchery 2014-01-06 18:42:27 -06:00
parent fd32107486
commit 790cf176e4
4 changed files with 151 additions and 3 deletions

View File

@ -88,6 +88,7 @@ dist:
$(PACKAGE)-$(VERSION)/src/plugins/make.c \
$(PACKAGE)-$(VERSION)/src/plugins/preview.c \
$(PACKAGE)-$(VERSION)/src/plugins/properties.c \
$(PACKAGE)-$(VERSION)/src/plugins/selection.c \
$(PACKAGE)-$(VERSION)/src/plugins/subversion.c \
$(PACKAGE)-$(VERSION)/src/plugins/template.c \
$(PACKAGE)-$(VERSION)/src/plugins/volumes.c \

View File

@ -1,4 +1,4 @@
TARGETS = cvs.so dirtree.so favorites.so git.so make.so preview.so properties.so subversion.so template.so volumes.so
TARGETS = cvs.so dirtree.so favorites.so git.so make.so preview.so properties.so selection.so subversion.so template.so volumes.so
PREFIX = /usr/local
DESTDIR =
LIBDIR = $(PREFIX)/lib
@ -68,6 +68,13 @@ properties_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)
properties.so: $(properties_OBJS)
$(CCSHARED) -o properties.so $(properties_OBJS) $(properties_LDFLAGS)
selection_OBJS = selection.o
selection_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
selection_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)
selection.so: $(selection_OBJS)
$(CCSHARED) -o selection.so $(selection_OBJS) $(selection_LDFLAGS)
subversion_OBJS = subversion.o
subversion_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
subversion_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)
@ -110,6 +117,9 @@ preview.o: preview.c ../../include/Browser.h
properties.o: properties.c ../../include/Browser.h
$(CC) $(properties_CFLAGS) -c properties.c
selection.o: selection.c ../../include/Browser.h
$(CC) $(selection_CFLAGS) -c selection.c
subversion.o: subversion.c common.c ../../include/Browser.h
$(CC) $(subversion_CFLAGS) -c subversion.c
@ -120,7 +130,7 @@ volumes.o: volumes.c ../../include/Browser.h
$(CC) $(volumes_CFLAGS) -c volumes.c
clean:
$(RM) -- $(cvs_OBJS) $(dirtree_OBJS) $(favorites_OBJS) $(git_OBJS) $(make_OBJS) $(preview_OBJS) $(properties_OBJS) $(subversion_OBJS) $(template_OBJS) $(volumes_OBJS)
$(RM) -- $(cvs_OBJS) $(dirtree_OBJS) $(favorites_OBJS) $(git_OBJS) $(make_OBJS) $(preview_OBJS) $(properties_OBJS) $(selection_OBJS) $(subversion_OBJS) $(template_OBJS) $(volumes_OBJS)
distclean: clean
$(RM) -- $(TARGETS)

View File

@ -1,4 +1,4 @@
targets=cvs,dirtree,favorites,git,make,preview,properties,subversion,template,volumes
targets=cvs,dirtree,favorites,git,make,preview,properties,selection,subversion,template,volumes
cppflags_force=-I ../../include
cppflags=
cflags_force=-W `pkg-config --cflags libDesktop`
@ -62,6 +62,13 @@ install=$(LIBDIR)/Browser/plugins
[properties.c]
depends=../../include/Browser.h
[selection]
type=plugin
sources=selection.c
[selection.c]
depends=../../include/Browser.h
[subversion]
type=plugin
sources=subversion.c

130
src/plugins/selection.c Normal file
View File

@ -0,0 +1,130 @@
/* $Id$ */
/* Copyright (c) 2014 Pierre Pronchery <khorben@defora.org> */
/* This file is part of DeforaOS Desktop Browser */
/* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* FIXME:
* - count the files and directories selected
* - count the total size */
#include <System.h>
#include <libintl.h>
#include "Browser.h"
#define _(string) gettext(string)
#define N_(string) (string)
/* Selection */
/* private */
/* types */
typedef struct _BrowserPlugin
{
BrowserPluginHelper * helper;
GtkWidget * widget;
GtkWidget * view;
GtkListStore * store;
} Selection;
/* prototypes */
static Selection * _selection_init(BrowserPluginHelper * helper);
static void _selection_destroy(Selection * selection);
static GtkWidget * _selection_get_widget(Selection * selection);
static void _selection_refresh(Selection * selection, GList * selected);
/* public */
/* variables */
BrowserPluginDefinition plugin =
{
N_("Selection"),
"stock_select-all",
NULL,
_selection_init,
_selection_destroy,
_selection_get_widget,
_selection_refresh
};
/* private */
/* functions */
/* selection_init */
static Selection * _selection_init(BrowserPluginHelper * helper)
{
Selection * selection;
GtkWidget * widget;
GtkCellRenderer * renderer;
GtkTreeViewColumn * column;
if((selection = object_new(sizeof(*selection))) == NULL)
return NULL;
selection->helper = helper;
#if GTK_CHECK_VERSION(3, 0, 0)
selection->widget = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
#else
selection->widget = gtk_vbox_new(FALSE, 0);
#endif
widget = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
selection->store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
selection->view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(
selection->store));
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(selection->view),
FALSE);
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(_("Filename"),
renderer, "text", 1, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(selection->view), column);
gtk_container_add(GTK_CONTAINER(widget), selection->view);
gtk_box_pack_start(GTK_BOX(selection->widget), widget, TRUE, TRUE, 0);
gtk_widget_show_all(selection->widget);
return selection;
}
/* selection_destroy */
static void _selection_destroy(Selection * selection)
{
/* FIXME implement */
object_delete(selection);
}
/* selection_get_widget */
static GtkWidget * _selection_get_widget(Selection * selection)
{
return selection->widget;
}
/* selection_refresh */
static void _selection_refresh(Selection * selection, GList * selected)
{
GList * l;
gchar * basename;
GtkTreeIter iter;
gtk_list_store_clear(selection->store);
for(l = selected; l != NULL; l = l->next)
{
basename = g_path_get_basename(l->data);
gtk_list_store_append(selection->store, &iter);
gtk_list_store_set(selection->store, &iter, 0, l->data,
1, basename, -1);
g_free(basename);
}
}