Let the desktop application rotate the screen
This commit is contained in:
parent
1157d3d4e2
commit
79daf44445
3
Makefile
3
Makefile
|
@ -35,6 +35,9 @@ dist:
|
|||
$(PACKAGE)-$(VERSION)/include/Browser.h \
|
||||
$(PACKAGE)-$(VERSION)/include/Makefile \
|
||||
$(PACKAGE)-$(VERSION)/include/project.conf \
|
||||
$(PACKAGE)-$(VERSION)/include/Browser/desktop.h \
|
||||
$(PACKAGE)-$(VERSION)/include/Browser/Makefile \
|
||||
$(PACKAGE)-$(VERSION)/include/Browser/project.conf \
|
||||
$(PACKAGE)-$(VERSION)/po/Makefile \
|
||||
$(PACKAGE)-$(VERSION)/po/gettext.sh \
|
||||
$(PACKAGE)-$(VERSION)/po/POTFILES \
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
# include <gtk/gtk.h>
|
||||
# include <Desktop.h>
|
||||
# include "Browser/desktop.h"
|
||||
|
||||
|
||||
/* Browser */
|
||||
|
|
23
include/Browser/Makefile
Normal file
23
include/Browser/Makefile
Normal file
|
@ -0,0 +1,23 @@
|
|||
PREFIX = /usr/local
|
||||
DESTDIR =
|
||||
RM ?= rm -f
|
||||
LN ?= ln -f
|
||||
MKDIR ?= mkdir -p
|
||||
INSTALL ?= install
|
||||
INCLUDEDIR= $(PREFIX)/include
|
||||
|
||||
|
||||
all:
|
||||
|
||||
clean:
|
||||
|
||||
distclean: clean
|
||||
|
||||
install:
|
||||
$(MKDIR) $(DESTDIR)$(PREFIX)/include/Desktop/Browser
|
||||
$(INSTALL) -m 0644 -- desktop.h $(DESTDIR)$(PREFIX)/include/Desktop/Browser/desktop.h
|
||||
|
||||
uninstall:
|
||||
$(RM) -- $(DESTDIR)$(PREFIX)/include/Desktop/Browser/desktop.h
|
||||
|
||||
.PHONY: all clean distclean install uninstall
|
71
include/Browser/desktop.h
Normal file
71
include/Browser/desktop.h
Normal file
|
@ -0,0 +1,71 @@
|
|||
/* $Id$ */
|
||||
/* Copyright (c) 2012 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/>. */
|
||||
|
||||
|
||||
|
||||
#ifndef DESKTOP_BROWSER_DESKTOP_H
|
||||
# define DESKTOP_BROWSER_DESKTOP_H
|
||||
|
||||
# include <gtk/gtk.h>
|
||||
# include <Desktop.h>
|
||||
|
||||
|
||||
/* Desktop */
|
||||
/* public */
|
||||
/* types */
|
||||
typedef enum _DesktopAlignment
|
||||
{
|
||||
DESKTOP_ALIGNMENT_VERTICAL = 0,
|
||||
DESKTOP_ALIGNMENT_HORIZONTAL
|
||||
} DesktopAlignment;
|
||||
|
||||
typedef enum _DesktopIcons
|
||||
{
|
||||
DESKTOP_ICONS_NONE = 0,
|
||||
DESKTOP_ICONS_APPLICATIONS,
|
||||
DESKTOP_ICONS_CATEGORIES,
|
||||
DESKTOP_ICONS_FILES,
|
||||
DESKTOP_ICONS_HOMESCREEN
|
||||
} DesktopIcons;
|
||||
# define DESKTOP_ICONS_LAST DESKTOP_ICONS_HOMESCREEN
|
||||
# define DESKTOP_ICONS_COUNT (DESKTOP_ICONS_LAST + 1)
|
||||
|
||||
typedef enum _DesktopLayout
|
||||
{
|
||||
DESKTOP_LAYOUT_NORMAL = 0,
|
||||
DESKTOP_LAYOUT_LANDSCAPE,
|
||||
DESKTOP_LAYOUT_PORTRAIT,
|
||||
DESKTOP_LAYOUT_ROTATE,
|
||||
DESKTOP_LAYOUT_TOGGLE
|
||||
} DesktopLayout;
|
||||
|
||||
typedef enum _DesktopMessage
|
||||
{
|
||||
DESKTOP_MESSAGE_SET_ALIGNMENT = 0,
|
||||
DESKTOP_MESSAGE_SET_ICONS,
|
||||
DESKTOP_MESSAGE_SET_LAYOUT,
|
||||
DESKTOP_MESSAGE_SHOW
|
||||
} DesktopMessage;
|
||||
|
||||
typedef enum _DesktopShow
|
||||
{
|
||||
DESKTOP_SHOW_SETTINGS = 0
|
||||
} DesktopMessageShow;
|
||||
|
||||
|
||||
/* constants */
|
||||
# define DESKTOP_CLIENT_MESSAGE "DEFORAOS_DESKTOP_DESKTOP_CLIENT"
|
||||
|
||||
#endif /* !DESKTOP_BROWSER_DESKTOP_H */
|
5
include/Browser/project.conf
Normal file
5
include/Browser/project.conf
Normal file
|
@ -0,0 +1,5 @@
|
|||
includes=desktop.h
|
||||
dist=Makefile
|
||||
|
||||
[desktop.h]
|
||||
install=$(PREFIX)/include/Desktop/Browser
|
|
@ -1,3 +1,4 @@
|
|||
SUBDIRS = Browser
|
||||
PREFIX = /usr/local
|
||||
DESTDIR =
|
||||
RM ?= rm -f
|
||||
|
@ -7,17 +8,24 @@ INSTALL ?= install
|
|||
INCLUDEDIR= $(PREFIX)/include
|
||||
|
||||
|
||||
all:
|
||||
all: subdirs
|
||||
|
||||
subdirs:
|
||||
@for i in $(SUBDIRS); do (cd $$i && $(MAKE)) || exit; done
|
||||
|
||||
clean:
|
||||
@for i in $(SUBDIRS); do (cd $$i && $(MAKE) clean) || exit; done
|
||||
|
||||
distclean: clean
|
||||
distclean:
|
||||
@for i in $(SUBDIRS); do (cd $$i && $(MAKE) distclean) || exit; done
|
||||
|
||||
install:
|
||||
@for i in $(SUBDIRS); do (cd $$i && $(MAKE) install) || exit; done
|
||||
$(MKDIR) $(DESTDIR)$(PREFIX)/include/Desktop
|
||||
$(INSTALL) -m 0644 -- Browser.h $(DESTDIR)$(PREFIX)/include/Desktop/Browser.h
|
||||
|
||||
uninstall:
|
||||
@for i in $(SUBDIRS); do (cd $$i && $(MAKE) uninstall) || exit; done
|
||||
$(RM) -- $(DESTDIR)$(PREFIX)/include/Desktop/Browser.h
|
||||
|
||||
.PHONY: all clean distclean install uninstall
|
||||
.PHONY: all subdirs clean distclean install uninstall
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
subdirs=Browser
|
||||
includes=Browser.h
|
||||
dist=Makefile
|
||||
|
||||
|
|
|
@ -42,8 +42,8 @@ delete: $(delete_OBJS)
|
|||
$(CC) -o delete $(delete_OBJS) $(delete_LDFLAGS)
|
||||
|
||||
desktop_OBJS = desktop.o desktopicon.o
|
||||
desktop_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
|
||||
desktop_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)
|
||||
desktop_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) `pkg-config --cflags xrandr`
|
||||
desktop_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs xrandr`
|
||||
|
||||
desktop: $(desktop_OBJS)
|
||||
$(CC) -o desktop $(desktop_OBJS) $(desktop_LDFLAGS)
|
||||
|
|
304
src/desktop.c
304
src/desktop.c
|
@ -34,7 +34,9 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkx.h>
|
||||
#include <X11/Xatom.h>
|
||||
#include <X11/extensions/Xrandr.h>
|
||||
#include <System.h>
|
||||
#include "Browser/desktop.h"
|
||||
#include "desktop.h"
|
||||
#include "../config.h"
|
||||
#define _(string) gettext(string)
|
||||
|
@ -98,6 +100,8 @@ struct _Desktop
|
|||
GtkWidget * pr_background;
|
||||
GtkWidget * pr_background_how;
|
||||
GtkWidget * pr_background_extend;
|
||||
GtkWidget * pr_ilayout;
|
||||
GtkWidget * pr_imonitor;
|
||||
GtkWidget * pr_ibcolor;
|
||||
GtkWidget * pr_ifcolor;
|
||||
GtkWidget * pr_ifont;
|
||||
|
@ -164,6 +168,20 @@ static const char * _desktop_hows[DESKTOP_HOW_COUNT] =
|
|||
"tiled"
|
||||
};
|
||||
|
||||
static const char * _desktop_icons_config[DESKTOP_ICONS_COUNT] =
|
||||
{
|
||||
"none", "applications", "categories", "files", "homescreen"
|
||||
};
|
||||
|
||||
static const char * _desktop_icons[DESKTOP_ICONS_COUNT] =
|
||||
{
|
||||
N_("Do not draw icons"),
|
||||
N_("Applications"),
|
||||
N_("Categories"),
|
||||
N_("Desktop contents"),
|
||||
N_("Home screen")
|
||||
};
|
||||
|
||||
|
||||
/* prototypes */
|
||||
static int _desktop_error(Desktop * desktop, char const * message,
|
||||
|
@ -209,7 +227,7 @@ Desktop * desktop_new(DesktopPrefs * prefs)
|
|||
/* set default foreground to white */
|
||||
memset(&desktop->foreground, 0xff, sizeof(desktop->foreground));
|
||||
desktop->prefs.alignment = DESKTOP_ALIGNMENT_VERTICAL;
|
||||
desktop->prefs.layout = DESKTOP_LAYOUT_FILES;
|
||||
desktop->prefs.icons = DESKTOP_ICONS_FILES;
|
||||
desktop->prefs.monitor = -1;
|
||||
if(prefs != NULL)
|
||||
memcpy(&desktop->prefs, prefs, sizeof(*prefs));
|
||||
|
@ -248,8 +266,6 @@ static gboolean _new_idle(gpointer data)
|
|||
{
|
||||
Desktop * desktop = data;
|
||||
Config * config;
|
||||
char const * p;
|
||||
char * q;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, "DEBUG: %s()\n", __func__);
|
||||
|
@ -258,16 +274,9 @@ static gboolean _new_idle(gpointer data)
|
|||
return FALSE;
|
||||
_idle_background(desktop, config);
|
||||
_idle_icons(desktop, config);
|
||||
if(desktop->prefs.monitor < 0
|
||||
&& (p = config_get(config, "icons", "monitor")) != NULL)
|
||||
{
|
||||
desktop->prefs.monitor = strtol(p, &q, 10);
|
||||
if(p[0] == '\0' || *q != '\0')
|
||||
desktop->prefs.monitor = -1;
|
||||
}
|
||||
config_delete(config);
|
||||
_desktop_get_workarea(desktop);
|
||||
desktop_set_layout(desktop, desktop->prefs.layout);
|
||||
desktop_set_icons(desktop, desktop->prefs.icons);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -296,8 +305,10 @@ static void _idle_icons(Desktop * desktop, Config * config)
|
|||
{
|
||||
GdkColor color;
|
||||
char const * p;
|
||||
char * q;
|
||||
size_t i;
|
||||
|
||||
/* icons colors */
|
||||
if((p = config_get(config, "icons", "background")) != NULL)
|
||||
{
|
||||
gdk_color_parse(p, &color);
|
||||
|
@ -308,6 +319,7 @@ static void _idle_icons(Desktop * desktop, Config * config)
|
|||
gdk_color_parse(p, &color);
|
||||
desktop->foreground = color;
|
||||
}
|
||||
/* icons font */
|
||||
if((p = config_get(config, "icons", "font")) != NULL)
|
||||
desktop->font = pango_font_description_from_string(p);
|
||||
for(i = 0; i < desktop->icon_cnt; i++)
|
||||
|
@ -318,6 +330,34 @@ static void _idle_icons(Desktop * desktop, Config * config)
|
|||
desktopicon_set_foreground(desktop->icon[i],
|
||||
&desktop->foreground);
|
||||
}
|
||||
/* icons monitor */
|
||||
if(desktop->prefs.monitor < 0
|
||||
&& (p = config_get(config, "icons", "monitor")) != NULL)
|
||||
{
|
||||
desktop->prefs.monitor = strtol(p, &q, 10);
|
||||
if(p[0] == '\0' || *q != '\0')
|
||||
desktop->prefs.monitor = -1;
|
||||
}
|
||||
/* icons layout */
|
||||
if(desktop->prefs.icons < 0
|
||||
&& (p = config_get(config, "icons", "layout")) != NULL)
|
||||
{
|
||||
for(i = 0; i < DESKTOP_ICONS_COUNT; i++)
|
||||
if(strcmp(_desktop_icons_config[i], p) == 0)
|
||||
{
|
||||
desktop->prefs.icons = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(desktop->prefs.icons < 0
|
||||
|| desktop->prefs.icons >= DESKTOP_ICONS_COUNT)
|
||||
desktop->prefs.icons = DESKTOP_ICONS_FILES;
|
||||
/* icons alignment */
|
||||
if(desktop->prefs.alignment < 0)
|
||||
desktop->prefs.alignment = (desktop->prefs.icons
|
||||
== DESKTOP_ICONS_FILES)
|
||||
? DESKTOP_ALIGNMENT_VERTICAL
|
||||
: DESKTOP_ALIGNMENT_HORIZONTAL;
|
||||
}
|
||||
|
||||
static int _on_message(void * data, uint32_t value1, uint32_t value2,
|
||||
|
@ -326,6 +366,7 @@ static int _on_message(void * data, uint32_t value1, uint32_t value2,
|
|||
Desktop * desktop = data;
|
||||
DesktopMessage message;
|
||||
DesktopAlignment alignment;
|
||||
DesktopIcons icons;
|
||||
DesktopLayout layout;
|
||||
|
||||
switch((message = value1))
|
||||
|
@ -334,6 +375,10 @@ static int _on_message(void * data, uint32_t value1, uint32_t value2,
|
|||
alignment = value2;
|
||||
desktop_set_alignment(desktop, alignment);
|
||||
break;
|
||||
case DESKTOP_MESSAGE_SET_ICONS:
|
||||
icons = value2;
|
||||
desktop_set_icons(desktop, icons);
|
||||
break;
|
||||
case DESKTOP_MESSAGE_SET_LAYOUT:
|
||||
layout = value2;
|
||||
desktop_set_layout(desktop, layout);
|
||||
|
@ -393,7 +438,7 @@ static GdkFilterReturn _event_button_press(XButtonEvent * xbev,
|
|||
return GDK_FILTER_CONTINUE;
|
||||
}
|
||||
/* ignore if not managing files */
|
||||
if(desktop->prefs.layout != DESKTOP_LAYOUT_FILES)
|
||||
if(desktop->prefs.icons != DESKTOP_ICONS_FILES)
|
||||
return GDK_FILTER_CONTINUE;
|
||||
desktop->menu = gtk_menu_new();
|
||||
menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_NEW, NULL);
|
||||
|
@ -671,42 +716,42 @@ static void _alignment_vertical(Desktop * desktop)
|
|||
}
|
||||
|
||||
|
||||
/* desktop_set_layout */
|
||||
static void _layout_delete(Desktop * desktop);
|
||||
static int _layout_applications(Desktop * desktop);
|
||||
static int _layout_categories(Desktop * desktop);
|
||||
static int _layout_files(Desktop * desktop);
|
||||
static void _layout_files_add_home(Desktop * desktop);
|
||||
static int _layout_homescreen(Desktop * desktop);
|
||||
static void _layout_set_categories(Desktop * desktop, gpointer data);
|
||||
static void _layout_set_homescreen(Desktop * desktop, gpointer data);
|
||||
/* desktop_set_icons */
|
||||
static void _icons_delete(Desktop * desktop);
|
||||
static int _icons_applications(Desktop * desktop);
|
||||
static int _icons_categories(Desktop * desktop);
|
||||
static int _icons_files(Desktop * desktop);
|
||||
static void _icons_files_add_home(Desktop * desktop);
|
||||
static int _icons_homescreen(Desktop * desktop);
|
||||
static void _icons_set_categories(Desktop * desktop, gpointer data);
|
||||
static void _icons_set_homescreen(Desktop * desktop, gpointer data);
|
||||
|
||||
void desktop_set_layout(Desktop * desktop, DesktopLayout layout)
|
||||
void desktop_set_icons(Desktop * desktop, DesktopIcons icons)
|
||||
{
|
||||
_layout_delete(desktop);
|
||||
desktop->prefs.layout = layout;
|
||||
switch(layout)
|
||||
_icons_delete(desktop);
|
||||
desktop->prefs.icons = icons;
|
||||
switch(icons)
|
||||
{
|
||||
case DESKTOP_LAYOUT_APPLICATIONS:
|
||||
_layout_applications(desktop);
|
||||
case DESKTOP_ICONS_APPLICATIONS:
|
||||
_icons_applications(desktop);
|
||||
break;
|
||||
case DESKTOP_LAYOUT_CATEGORIES:
|
||||
_layout_categories(desktop);
|
||||
case DESKTOP_ICONS_CATEGORIES:
|
||||
_icons_categories(desktop);
|
||||
break;
|
||||
case DESKTOP_LAYOUT_FILES:
|
||||
_layout_files(desktop);
|
||||
case DESKTOP_ICONS_FILES:
|
||||
_icons_files(desktop);
|
||||
break;
|
||||
case DESKTOP_LAYOUT_HOMESCREEN:
|
||||
_layout_homescreen(desktop);
|
||||
case DESKTOP_ICONS_HOMESCREEN:
|
||||
_icons_homescreen(desktop);
|
||||
break;
|
||||
case DESKTOP_LAYOUT_NONE:
|
||||
case DESKTOP_ICONS_NONE:
|
||||
/* nothing to do */
|
||||
break;
|
||||
}
|
||||
desktop_refresh(desktop);
|
||||
}
|
||||
|
||||
static void _layout_delete(Desktop * desktop)
|
||||
static void _icons_delete(Desktop * desktop)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
|
@ -723,7 +768,7 @@ static void _layout_delete(Desktop * desktop)
|
|||
_desktop_categories[i].show = FALSE;
|
||||
}
|
||||
|
||||
static int _layout_applications(Desktop * desktop)
|
||||
static int _icons_applications(Desktop * desktop)
|
||||
{
|
||||
const char path[] = DATADIR "/applications";
|
||||
struct stat st;
|
||||
|
@ -737,10 +782,11 @@ static int _layout_applications(Desktop * desktop)
|
|||
if(stat(desktop->path, &st) == 0)
|
||||
if(!S_ISDIR(st.st_mode))
|
||||
return desktop_error(NULL, strerror(ENOTDIR), 1);
|
||||
/* FIXME list all applications otherwise? */
|
||||
if(desktop->category != NULL)
|
||||
{
|
||||
desktopicon = desktopicon_new(desktop, _("Back"), NULL);
|
||||
desktopicon_set_callback(desktopicon, _layout_set_categories,
|
||||
desktopicon_set_callback(desktopicon, _icons_set_categories,
|
||||
NULL);
|
||||
desktopicon_set_immutable(desktopicon, TRUE);
|
||||
icon = gtk_icon_theme_load_icon(desktop->theme, "back",
|
||||
|
@ -752,15 +798,15 @@ static int _layout_applications(Desktop * desktop)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int _layout_categories(Desktop * desktop)
|
||||
static int _icons_categories(Desktop * desktop)
|
||||
{
|
||||
DesktopIcon * desktopicon;
|
||||
GdkPixbuf * icon;
|
||||
|
||||
desktop->category = NULL;
|
||||
_layout_applications(desktop); /* XXX hack */
|
||||
_icons_applications(desktop); /* XXX hack */
|
||||
desktopicon = desktopicon_new(desktop, _("Back"), NULL);
|
||||
desktopicon_set_callback(desktopicon, _layout_set_homescreen, NULL);
|
||||
desktopicon_set_callback(desktopicon, _icons_set_homescreen, NULL);
|
||||
desktopicon_set_first(desktopicon, TRUE);
|
||||
desktopicon_set_immutable(desktopicon, TRUE);
|
||||
icon = gtk_icon_theme_load_icon(desktop->theme, "back",
|
||||
|
@ -771,7 +817,7 @@ static int _layout_categories(Desktop * desktop)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int _layout_files(Desktop * desktop)
|
||||
static int _icons_files(Desktop * desktop)
|
||||
{
|
||||
const char path[] = "/" DESKTOP;
|
||||
const char * file[] = { "gnome-fs-regular",
|
||||
|
@ -798,7 +844,7 @@ static int _layout_files(Desktop * desktop)
|
|||
desktop->folder = gtk_icon_theme_load_icon(
|
||||
desktop->theme, *p,
|
||||
DESKTOPICON_ICON_SIZE, 0, NULL);
|
||||
_layout_files_add_home(desktop);
|
||||
_icons_files_add_home(desktop);
|
||||
desktop->path_cnt = strlen(desktop->home) + 1 + sizeof(path);
|
||||
if((desktop->path = malloc(desktop->path_cnt)) == NULL)
|
||||
return desktop_error(NULL, strerror(ENOTDIR), 1);
|
||||
|
@ -814,7 +860,7 @@ static int _layout_files(Desktop * desktop)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void _layout_files_add_home(Desktop * desktop)
|
||||
static void _icons_files_add_home(Desktop * desktop)
|
||||
{
|
||||
DesktopIcon * desktopicon;
|
||||
GdkPixbuf * icon;
|
||||
|
@ -834,7 +880,7 @@ static void _layout_files_add_home(Desktop * desktop)
|
|||
desktopicon_set_icon(desktopicon, icon);
|
||||
}
|
||||
|
||||
static int _layout_homescreen(Desktop * desktop)
|
||||
static int _icons_homescreen(Desktop * desktop)
|
||||
{
|
||||
DesktopIcon * desktopicon;
|
||||
GdkPixbuf * icon;
|
||||
|
@ -852,7 +898,7 @@ static int _layout_homescreen(Desktop * desktop)
|
|||
if((desktopicon = desktopicon_new(desktop, _("Applications"), NULL))
|
||||
== NULL)
|
||||
return desktop_error(NULL, error_get(), 1);
|
||||
desktopicon_set_callback(desktopicon, _layout_set_categories, NULL);
|
||||
desktopicon_set_callback(desktopicon, _icons_set_categories, NULL);
|
||||
desktopicon_set_immutable(desktopicon, TRUE);
|
||||
icon = gtk_icon_theme_load_icon(desktop->theme, "gnome-applications",
|
||||
DESKTOPICON_ICON_SIZE, 0, NULL);
|
||||
|
@ -869,20 +915,53 @@ static int _layout_homescreen(Desktop * desktop)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void _layout_set_categories(Desktop * desktop, gpointer data)
|
||||
static void _icons_set_categories(Desktop * desktop, gpointer data)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, "DEBUG: %s()\n", __func__);
|
||||
#endif
|
||||
desktop_set_layout(desktop, DESKTOP_LAYOUT_CATEGORIES);
|
||||
desktop_set_icons(desktop, DESKTOP_ICONS_CATEGORIES);
|
||||
}
|
||||
|
||||
static void _layout_set_homescreen(Desktop * desktop, gpointer data)
|
||||
static void _icons_set_homescreen(Desktop * desktop, gpointer data)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, "DEBUG: %s()\n", __func__);
|
||||
#endif
|
||||
desktop_set_layout(desktop, DESKTOP_LAYOUT_HOMESCREEN);
|
||||
desktop_set_icons(desktop, DESKTOP_ICONS_HOMESCREEN);
|
||||
}
|
||||
|
||||
|
||||
/* desktop_set_layout */
|
||||
void desktop_set_layout(Desktop * desktop, DesktopLayout layout)
|
||||
{
|
||||
XRRScreenConfiguration * sc;
|
||||
Rotation r;
|
||||
SizeID size;
|
||||
|
||||
sc = XRRGetScreenInfo(GDK_DISPLAY_XDISPLAY(desktop->display),
|
||||
GDK_WINDOW_XWINDOW(desktop->root));
|
||||
size = XRRConfigCurrentConfiguration(sc, &r);
|
||||
switch(layout)
|
||||
{
|
||||
case DESKTOP_LAYOUT_NORMAL:
|
||||
case DESKTOP_LAYOUT_LANDSCAPE:
|
||||
r = RR_Rotate_0;
|
||||
break;
|
||||
case DESKTOP_LAYOUT_PORTRAIT:
|
||||
r = RR_Rotate_90;
|
||||
break;
|
||||
case DESKTOP_LAYOUT_ROTATE:
|
||||
r <<= 1;
|
||||
r = (r > 16) ? 1 : r;
|
||||
break;
|
||||
case DESKTOP_LAYOUT_TOGGLE:
|
||||
r = (r != RR_Rotate_0) ? RR_Rotate_0 : RR_Rotate_90;
|
||||
break;
|
||||
}
|
||||
XRRSetScreenConfig(GDK_DISPLAY_XDISPLAY(desktop->display), sc,
|
||||
GDK_WINDOW_XWINDOW(desktop->root), size, r,
|
||||
CurrentTime);
|
||||
}
|
||||
|
||||
|
||||
|
@ -955,16 +1034,16 @@ void desktop_refresh(Desktop * desktop)
|
|||
|
||||
static int _current_loop(Desktop * desktop)
|
||||
{
|
||||
switch(desktop->prefs.layout)
|
||||
switch(desktop->prefs.icons)
|
||||
{
|
||||
case DESKTOP_LAYOUT_APPLICATIONS:
|
||||
case DESKTOP_ICONS_APPLICATIONS:
|
||||
return _current_loop_applications(desktop);
|
||||
case DESKTOP_LAYOUT_CATEGORIES:
|
||||
case DESKTOP_ICONS_CATEGORIES:
|
||||
return _current_loop_categories(desktop);
|
||||
case DESKTOP_LAYOUT_FILES:
|
||||
case DESKTOP_ICONS_FILES:
|
||||
return _current_loop_files(desktop);
|
||||
case DESKTOP_LAYOUT_HOMESCREEN:
|
||||
case DESKTOP_LAYOUT_NONE:
|
||||
case DESKTOP_ICONS_HOMESCREEN:
|
||||
case DESKTOP_ICONS_NONE:
|
||||
break; /* nothing to do */
|
||||
}
|
||||
return -1;
|
||||
|
@ -1162,9 +1241,9 @@ static gboolean _current_done(Desktop * desktop)
|
|||
{
|
||||
size_t i = 0;
|
||||
|
||||
switch(desktop->prefs.layout)
|
||||
switch(desktop->prefs.icons)
|
||||
{
|
||||
case DESKTOP_LAYOUT_CATEGORIES:
|
||||
case DESKTOP_ICONS_CATEGORIES:
|
||||
_done_categories(desktop);
|
||||
break;
|
||||
default:
|
||||
|
@ -1233,7 +1312,7 @@ static void _done_categories_open(Desktop * desktop, gpointer data)
|
|||
fprintf(stderr, "DEBUG: %s() \"%s\"\n", __func__, dc->name);
|
||||
#endif
|
||||
desktop->category = dc;
|
||||
desktop_set_layout(desktop, DESKTOP_LAYOUT_APPLICATIONS);
|
||||
desktop_set_icons(desktop, DESKTOP_ICONS_APPLICATIONS);
|
||||
}
|
||||
|
||||
static gboolean _done_timeout(gpointer data)
|
||||
|
@ -1444,6 +1523,7 @@ static int _desktop_get_workarea(Desktop * desktop)
|
|||
desktop->workarea.width,
|
||||
desktop->workarea.height);
|
||||
#endif
|
||||
desktop_icons_align(desktop);
|
||||
return 0;
|
||||
}
|
||||
atom = gdk_x11_get_xatom_by_name("_NET_WORKAREA");
|
||||
|
@ -1727,6 +1807,7 @@ static void _desktop_show_preferences(Desktop * desktop)
|
|||
_preferences_background(desktop, notebook);
|
||||
_preferences_icons(desktop, notebook);
|
||||
_preferences_monitors(desktop, notebook);
|
||||
_on_preferences_monitors_refresh(desktop);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 0);
|
||||
/* container */
|
||||
_preferences_set(desktop);
|
||||
|
@ -1814,10 +1895,33 @@ static void _preferences_icons(Desktop * desktop, GtkWidget * notebook)
|
|||
GtkWidget * vbox2;
|
||||
GtkWidget * hbox;
|
||||
GtkWidget * label;
|
||||
size_t i;
|
||||
|
||||
vbox2 = gtk_vbox_new(FALSE, 4);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(vbox2), 4);
|
||||
group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
|
||||
/* icons */
|
||||
hbox = gtk_hbox_new(FALSE, 0);
|
||||
label = gtk_label_new(_("Layout: "));
|
||||
gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
|
||||
gtk_size_group_add_widget(group, label);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0);
|
||||
desktop->pr_ilayout = gtk_combo_box_new_text();
|
||||
for(i = 0; i < sizeof(_desktop_icons) / sizeof(*_desktop_icons);
|
||||
i++)
|
||||
gtk_combo_box_append_text(GTK_COMBO_BOX(desktop->pr_ilayout),
|
||||
_(_desktop_icons[i]));
|
||||
gtk_box_pack_start(GTK_BOX(hbox), desktop->pr_ilayout, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, TRUE, 0);
|
||||
/* monitor */
|
||||
hbox = gtk_hbox_new(FALSE, 0);
|
||||
label = gtk_label_new(_("Monitor: "));
|
||||
gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
|
||||
gtk_size_group_add_widget(group, label);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0);
|
||||
desktop->pr_imonitor = gtk_combo_box_new_text();
|
||||
gtk_box_pack_start(GTK_BOX(hbox), desktop->pr_imonitor, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, TRUE, 0);
|
||||
/* background color */
|
||||
hbox = gtk_hbox_new(FALSE, 0);
|
||||
label = gtk_label_new(_("Background color: "));
|
||||
|
@ -1905,7 +2009,6 @@ static void _preferences_monitors(Desktop * desktop, GtkWidget * notebook)
|
|||
/* updates */
|
||||
g_signal_connect_swapped(desktop->pr_monitors, "changed", G_CALLBACK(
|
||||
_on_preferences_monitors_changed), desktop);
|
||||
_on_preferences_monitors_refresh(desktop);
|
||||
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox2, gtk_label_new(
|
||||
_("Monitors")));
|
||||
}
|
||||
|
@ -1955,7 +2058,9 @@ static void _on_preferences_monitors_changed(gpointer data)
|
|||
static void _on_preferences_monitors_refresh(gpointer data)
|
||||
{
|
||||
Desktop * desktop = data;
|
||||
GtkTreeModel * model;
|
||||
GtkTreeModel * model1;
|
||||
GtkTreeModel * model2;
|
||||
gint active;
|
||||
#if GTK_CHECK_VERSION(2, 14, 0)
|
||||
gint n;
|
||||
gint i;
|
||||
|
@ -1963,8 +2068,13 @@ static void _on_preferences_monitors_refresh(gpointer data)
|
|||
char buf[32];
|
||||
#endif
|
||||
|
||||
model = gtk_combo_box_get_model(GTK_COMBO_BOX(desktop->pr_monitors));
|
||||
gtk_list_store_clear(GTK_LIST_STORE(model));
|
||||
active = gtk_combo_box_get_active(GTK_COMBO_BOX(desktop->pr_imonitor));
|
||||
model1 = gtk_combo_box_get_model(GTK_COMBO_BOX(desktop->pr_imonitor));
|
||||
model2 = gtk_combo_box_get_model(GTK_COMBO_BOX(desktop->pr_monitors));
|
||||
gtk_list_store_clear(GTK_LIST_STORE(model1));
|
||||
gtk_list_store_clear(GTK_LIST_STORE(model2));
|
||||
gtk_combo_box_append_text(GTK_COMBO_BOX(desktop->pr_imonitor),
|
||||
_("Default monitor"));
|
||||
gtk_combo_box_append_text(GTK_COMBO_BOX(desktop->pr_monitors),
|
||||
_("Whole screen"));
|
||||
#if GTK_CHECK_VERSION(2, 14, 0)
|
||||
|
@ -1973,11 +2083,14 @@ static void _on_preferences_monitors_refresh(gpointer data)
|
|||
{
|
||||
snprintf(buf, sizeof(buf), _("Monitor %d"), i);
|
||||
name = gdk_screen_get_monitor_plug_name(desktop->screen, i);
|
||||
gtk_combo_box_append_text(GTK_COMBO_BOX(desktop->pr_imonitor),
|
||||
(name != NULL) ? name : buf);
|
||||
gtk_combo_box_append_text(GTK_COMBO_BOX(desktop->pr_monitors),
|
||||
(name != NULL) ? name : buf);
|
||||
g_free(name);
|
||||
}
|
||||
#endif
|
||||
gtk_combo_box_set_active(GTK_COMBO_BOX(desktop->pr_imonitor), active);
|
||||
gtk_combo_box_set_active(GTK_COMBO_BOX(desktop->pr_monitors), 0);
|
||||
}
|
||||
|
||||
|
@ -2008,6 +2121,7 @@ static void _on_preferences_apply(gpointer data)
|
|||
char * p;
|
||||
char const * q;
|
||||
int i;
|
||||
char buf[12];
|
||||
|
||||
/* XXX not very efficient */
|
||||
g_idle_add(_new_idle, desktop);
|
||||
|
@ -2029,6 +2143,10 @@ static void _on_preferences_apply(gpointer data)
|
|||
desktop->pr_background_extend)) ? "1" : "0";
|
||||
config_set(config, "background", "extend", p);
|
||||
/* icons */
|
||||
i = gtk_combo_box_get_active(GTK_COMBO_BOX(desktop->pr_ilayout));
|
||||
if(i >= 0 && i < DESKTOP_ICONS_COUNT)
|
||||
config_set(config, "icons", "layout", _desktop_icons_config[i]);
|
||||
desktop->prefs.icons = i; /* applied by _new_idle() */
|
||||
gtk_color_button_get_color(GTK_COLOR_BUTTON(desktop->pr_ibcolor),
|
||||
&color);
|
||||
p = gdk_color_to_string(&color);
|
||||
|
@ -2041,6 +2159,10 @@ static void _on_preferences_apply(gpointer data)
|
|||
g_free(p);
|
||||
q = gtk_font_button_get_font_name(GTK_FONT_BUTTON(desktop->pr_ifont));
|
||||
config_set(config, "icons", "font", q);
|
||||
i = gtk_combo_box_get_active(GTK_COMBO_BOX(desktop->pr_imonitor));
|
||||
snprintf(buf, sizeof(buf), "%d", i - 1);
|
||||
config_set(config, "icons", "monitor", buf);
|
||||
desktop->prefs.monitor = i - 1;
|
||||
/* XXX code duplication */
|
||||
if((p = string_new_append(desktop->home, "/" DESKTOPRC, NULL)) != NULL)
|
||||
{
|
||||
|
@ -2101,12 +2223,19 @@ static void _preferences_set(Desktop * desktop)
|
|||
{
|
||||
Config * config;
|
||||
String const * p;
|
||||
String * q;
|
||||
String const * filename = NULL;
|
||||
GdkColor color = { 0, 0, 0, 0 };
|
||||
int how;
|
||||
gboolean extend = FALSE;
|
||||
size_t i;
|
||||
int j;
|
||||
|
||||
/* FIXME:
|
||||
* - cache the current configuration within the Desktop class
|
||||
* - apply the configuration values to the widgets
|
||||
* - no longer prepend an empty line in configuration files when there
|
||||
* are no values in the default section */
|
||||
if((config = _desktop_get_config(desktop)) != NULL)
|
||||
{
|
||||
/* background */
|
||||
|
@ -2128,6 +2257,16 @@ static void _preferences_set(Desktop * desktop)
|
|||
if((p = config_get(config, "background", "extend")) != NULL)
|
||||
extend = strtol(p, NULL, 10) ? TRUE : FALSE;
|
||||
/* icons */
|
||||
how = DESKTOP_ICONS_FILES;
|
||||
if((p = config_get(config, "icons", "layout")) != NULL)
|
||||
for(i = 0; i < DESKTOP_ICONS_COUNT; i++)
|
||||
if(strcmp(_desktop_icons_config[i], p) == 0)
|
||||
{
|
||||
how = i;
|
||||
break;
|
||||
}
|
||||
gtk_combo_box_set_active(GTK_COMBO_BOX(desktop->pr_ilayout),
|
||||
how);
|
||||
if((p = config_get(config, "icons", "background")) != NULL
|
||||
&& gdk_color_parse(p, &color) == TRUE)
|
||||
gtk_color_button_set_color(GTK_COLOR_BUTTON(
|
||||
|
@ -2139,8 +2278,25 @@ static void _preferences_set(Desktop * desktop)
|
|||
if((p = config_get(config, "icons", "font")) != NULL)
|
||||
gtk_font_button_set_font_name(GTK_FONT_BUTTON(
|
||||
desktop->pr_ifont), p);
|
||||
if((p = config_get(config, "icons", "monitor")) != NULL)
|
||||
{
|
||||
j = strtol(p, &q, 10);
|
||||
if(p[0] == '\0' || *q != '\0' || j < 0)
|
||||
j = -1;
|
||||
gtk_combo_box_set_active(GTK_COMBO_BOX(
|
||||
desktop->pr_imonitor), j + 1);
|
||||
}
|
||||
config_delete(config);
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_combo_box_set_active(GTK_COMBO_BOX(
|
||||
desktop->pr_background_how), 0);
|
||||
gtk_combo_box_set_active(GTK_COMBO_BOX(desktop->pr_ilayout),
|
||||
DESKTOP_ICONS_FILES);
|
||||
gtk_combo_box_set_active(GTK_COMBO_BOX(desktop->pr_imonitor),
|
||||
0);
|
||||
}
|
||||
if(filename != NULL)
|
||||
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(
|
||||
desktop->pr_background), filename);
|
||||
|
@ -2174,36 +2330,35 @@ int main(int argc, char * argv[])
|
|||
int o;
|
||||
Desktop * desktop;
|
||||
DesktopPrefs prefs;
|
||||
int alignment = -1;
|
||||
char * p;
|
||||
|
||||
setlocale(LC_ALL, "");
|
||||
bindtextdomain(PACKAGE, LOCALEDIR);
|
||||
textdomain(PACKAGE);
|
||||
memset(&prefs, 0, sizeof(prefs));
|
||||
prefs.layout = DESKTOP_LAYOUT_FILES;
|
||||
prefs.alignment = -1;
|
||||
prefs.icons = -1;
|
||||
prefs.monitor = -1;
|
||||
gtk_init(&argc, &argv);
|
||||
while((o = getopt(argc, argv, "HVacfhm:n")) != -1)
|
||||
switch(o)
|
||||
{
|
||||
case 'H':
|
||||
alignment = DESKTOP_ALIGNMENT_HORIZONTAL;
|
||||
prefs.alignment = DESKTOP_ALIGNMENT_HORIZONTAL;
|
||||
break;
|
||||
case 'V':
|
||||
alignment = DESKTOP_ALIGNMENT_VERTICAL;
|
||||
prefs.alignment = DESKTOP_ALIGNMENT_VERTICAL;
|
||||
break;
|
||||
case 'a':
|
||||
prefs.layout = DESKTOP_LAYOUT_APPLICATIONS;
|
||||
prefs.icons = DESKTOP_ICONS_APPLICATIONS;
|
||||
break;
|
||||
case 'c':
|
||||
prefs.layout = DESKTOP_LAYOUT_CATEGORIES;
|
||||
prefs.icons = DESKTOP_ICONS_CATEGORIES;
|
||||
break;
|
||||
case 'f':
|
||||
prefs.layout = DESKTOP_LAYOUT_FILES;
|
||||
prefs.icons = DESKTOP_ICONS_FILES;
|
||||
break;
|
||||
case 'h':
|
||||
prefs.layout = DESKTOP_LAYOUT_HOMESCREEN;
|
||||
prefs.icons = DESKTOP_ICONS_HOMESCREEN;
|
||||
break;
|
||||
case 'm':
|
||||
prefs.monitor = strtol(optarg, &p, 0);
|
||||
|
@ -2211,18 +2366,13 @@ int main(int argc, char * argv[])
|
|||
return _usage();
|
||||
break;
|
||||
case 'n':
|
||||
prefs.layout = DESKTOP_LAYOUT_NONE;
|
||||
prefs.icons = DESKTOP_ICONS_NONE;
|
||||
break;
|
||||
default:
|
||||
return _usage();
|
||||
}
|
||||
if(optind < argc)
|
||||
return _usage();
|
||||
if(alignment < 0)
|
||||
alignment = (prefs.layout == DESKTOP_LAYOUT_FILES)
|
||||
? DESKTOP_ALIGNMENT_VERTICAL
|
||||
: DESKTOP_ALIGNMENT_HORIZONTAL;
|
||||
prefs.alignment = alignment;
|
||||
if((desktop = desktop_new(&prefs)) == NULL)
|
||||
{
|
||||
gtk_main();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* $Id$ */
|
||||
/* Copyright (c) 2011 Pierre Pronchery <khorben@defora.org> */
|
||||
/* Copyright (c) 2011-2012 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
|
||||
|
@ -20,6 +20,7 @@
|
|||
|
||||
# include <gtk/gtk.h>
|
||||
# include <Desktop.h>
|
||||
# include "Desktop.h"
|
||||
# include "desktopicon.h"
|
||||
|
||||
|
||||
|
@ -35,47 +36,14 @@ typedef struct _DesktopIcon DesktopIcon;
|
|||
typedef struct _Desktop Desktop;
|
||||
# endif
|
||||
|
||||
typedef enum _DesktopAlignment
|
||||
{
|
||||
DESKTOP_ALIGNMENT_VERTICAL = 0,
|
||||
DESKTOP_ALIGNMENT_HORIZONTAL
|
||||
} DesktopAlignment;
|
||||
|
||||
typedef enum _DesktopLayout
|
||||
{
|
||||
DESKTOP_LAYOUT_NONE = 0,
|
||||
DESKTOP_LAYOUT_APPLICATIONS,
|
||||
DESKTOP_LAYOUT_CATEGORIES,
|
||||
DESKTOP_LAYOUT_FILES,
|
||||
DESKTOP_LAYOUT_HOMESCREEN
|
||||
} DesktopLayout;
|
||||
# define DESKTOP_LAYOUT_LAST DESKTOP_LAYOUT_HOMESCREEN
|
||||
# define DESKTOP_LAYOUT_COUNT (DESKTOP_LAYOUT_LAST + 1)
|
||||
|
||||
typedef enum _DesktopMessage
|
||||
{
|
||||
DESKTOP_MESSAGE_SET_ALIGNMENT = 0,
|
||||
DESKTOP_MESSAGE_SET_LAYOUT,
|
||||
DESKTOP_MESSAGE_SHOW
|
||||
} DesktopMessage;
|
||||
|
||||
typedef enum _DesktopShow
|
||||
{
|
||||
DESKTOP_SHOW_SETTINGS = 0
|
||||
} DesktopMessageShow;
|
||||
|
||||
typedef struct _DesktopPrefs
|
||||
{
|
||||
DesktopAlignment alignment;
|
||||
DesktopLayout layout;
|
||||
int alignment;
|
||||
int icons;
|
||||
int monitor;
|
||||
} DesktopPrefs;
|
||||
|
||||
|
||||
/* constants */
|
||||
# define DESKTOP_CLIENT_MESSAGE "DEFORAOS_DESKTOP_DESKTOP_CLIENT"
|
||||
|
||||
|
||||
/* functions */
|
||||
Desktop * desktop_new(DesktopPrefs * prefs);
|
||||
void desktop_delete(Desktop * desktop);
|
||||
|
@ -89,6 +57,7 @@ Mime * desktop_get_mime(Desktop * desktop);
|
|||
GtkIconTheme * desktop_get_theme(Desktop * desktop);
|
||||
|
||||
void desktop_set_alignment(Desktop * desktop, DesktopAlignment alignment);
|
||||
void desktop_set_icons(Desktop * desktop, DesktopIcons icons);
|
||||
void desktop_set_layout(Desktop * desktop, DesktopLayout layout);
|
||||
|
||||
/* useful */
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
#include <libintl.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <Desktop.h>
|
||||
#include "desktop.h"
|
||||
#include "Browser/desktop.h"
|
||||
#include "../config.h"
|
||||
#define _(string) gettext(string)
|
||||
|
||||
|
@ -42,9 +42,13 @@
|
|||
/* usage */
|
||||
static int _usage(void)
|
||||
{
|
||||
fputs(_("Usage: desktopctl [-H|-S|-V|-a|-c|-f|-h|-n]\n"
|
||||
fputs(_("Usage: desktopctl [-H|-L|-P|-R|-S|-T|-V|-a|-c|-f|-h|-n]\n"
|
||||
" -H Place icons horizontally\n"
|
||||
" -L Rotate screen to landscape mode\n"
|
||||
" -P Rotate screen to portrait mode\n"
|
||||
" -R Rotate screen\n"
|
||||
" -S Display or change settings\n"
|
||||
" -T Toggle screen rotation\n"
|
||||
" -V Place icons vertically\n"
|
||||
" -a Display the applications registered\n"
|
||||
" -c Sort the applications registered by category\n"
|
||||
|
@ -66,7 +70,7 @@ int main(int argc, char * argv[])
|
|||
bindtextdomain(PACKAGE, LOCALEDIR);
|
||||
textdomain(PACKAGE);
|
||||
gtk_init(&argc, &argv);
|
||||
while((o = getopt(argc, argv, "HSVacfhn")) != -1)
|
||||
while((o = getopt(argc, argv, "HLPRSVacfhn")) != -1)
|
||||
switch(o)
|
||||
{
|
||||
case 'H':
|
||||
|
@ -75,12 +79,36 @@ int main(int argc, char * argv[])
|
|||
action = DESKTOP_MESSAGE_SET_ALIGNMENT;
|
||||
what = DESKTOP_ALIGNMENT_HORIZONTAL;
|
||||
break;
|
||||
case 'L':
|
||||
if(action != -1)
|
||||
return _usage();
|
||||
action = DESKTOP_MESSAGE_SET_LAYOUT;
|
||||
what = DESKTOP_LAYOUT_LANDSCAPE;
|
||||
break;
|
||||
case 'P':
|
||||
if(action != -1)
|
||||
return _usage();
|
||||
action = DESKTOP_MESSAGE_SET_LAYOUT;
|
||||
what = DESKTOP_LAYOUT_PORTRAIT;
|
||||
break;
|
||||
case 'R':
|
||||
if(action != -1)
|
||||
return _usage();
|
||||
action = DESKTOP_MESSAGE_SET_LAYOUT;
|
||||
what = DESKTOP_LAYOUT_ROTATE;
|
||||
break;
|
||||
case 'S':
|
||||
if(action != -1)
|
||||
return _usage();
|
||||
action = DESKTOP_MESSAGE_SHOW;
|
||||
what = DESKTOP_SHOW_SETTINGS;
|
||||
break;
|
||||
case 'T':
|
||||
if(action != -1)
|
||||
return _usage();
|
||||
action = DESKTOP_MESSAGE_SET_LAYOUT;
|
||||
what = DESKTOP_LAYOUT_TOGGLE;
|
||||
break;
|
||||
case 'V':
|
||||
if(action != -1)
|
||||
return _usage();
|
||||
|
@ -90,32 +118,32 @@ int main(int argc, char * argv[])
|
|||
case 'a':
|
||||
if(action != -1)
|
||||
return _usage();
|
||||
action = DESKTOP_MESSAGE_SET_LAYOUT;
|
||||
what = DESKTOP_LAYOUT_APPLICATIONS;
|
||||
action = DESKTOP_MESSAGE_SET_ICONS;
|
||||
what = DESKTOP_ICONS_APPLICATIONS;
|
||||
break;
|
||||
case 'c':
|
||||
if(action != -1)
|
||||
return _usage();
|
||||
action = DESKTOP_MESSAGE_SET_LAYOUT;
|
||||
what = DESKTOP_LAYOUT_CATEGORIES;
|
||||
action = DESKTOP_MESSAGE_SET_ICONS;
|
||||
what = DESKTOP_ICONS_CATEGORIES;
|
||||
break;
|
||||
case 'f':
|
||||
if(action != -1)
|
||||
return _usage();
|
||||
action = DESKTOP_MESSAGE_SET_LAYOUT;
|
||||
what = DESKTOP_LAYOUT_FILES;
|
||||
action = DESKTOP_MESSAGE_SET_ICONS;
|
||||
what = DESKTOP_ICONS_FILES;
|
||||
break;
|
||||
case 'h':
|
||||
if(action != -1)
|
||||
return _usage();
|
||||
action = DESKTOP_MESSAGE_SET_LAYOUT;
|
||||
what = DESKTOP_LAYOUT_HOMESCREEN;
|
||||
action = DESKTOP_MESSAGE_SET_ICONS;
|
||||
what = DESKTOP_ICONS_HOMESCREEN;
|
||||
break;
|
||||
case 'n':
|
||||
if(action != -1)
|
||||
return _usage();
|
||||
action = DESKTOP_MESSAGE_SET_LAYOUT;
|
||||
what = DESKTOP_LAYOUT_NONE;
|
||||
action = DESKTOP_MESSAGE_SET_ICONS;
|
||||
what = DESKTOP_ICONS_NONE;
|
||||
break;
|
||||
default:
|
||||
return _usage();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* $Id$ */
|
||||
/* Copyright (c) 2012 Pierre Pronchery <khorben@defora.org> */
|
||||
/* Copyright (c) 2010-2012 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
|
||||
|
@ -26,6 +26,7 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
#include <System.h>
|
||||
#include "Browser/desktop.h"
|
||||
#include "desktopicon.h"
|
||||
#include "../config.h"
|
||||
#define _(string) gettext(string)
|
||||
|
@ -434,6 +435,9 @@ void desktopicon_set_updated(DesktopIcon * desktopicon, gboolean updated)
|
|||
/* desktopicon_move */
|
||||
void desktopicon_move(DesktopIcon * desktopicon, int x, int y)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, "DEBUG: %s(%d, %d)\n", __func__, x, y);
|
||||
#endif
|
||||
gtk_window_move(GTK_WINDOW(desktopicon->window), x, y);
|
||||
}
|
||||
|
||||
|
|
|
@ -35,6 +35,8 @@ install=$(BINDIR)
|
|||
[desktop]
|
||||
type=binary
|
||||
sources=desktop.c,desktopicon.c
|
||||
cflags=`pkg-config --cflags xrandr`
|
||||
ldflags=`pkg-config --libs xrandr`
|
||||
install=$(BINDIR)
|
||||
|
||||
[desktop.c]
|
||||
|
|
Loading…
Reference in New Issue
Block a user