[Pkg-wmaker-commits] [wmforecast] 24/63: version 0.4
Doug Torrance
dtorrance-guest at moszumanska.debian.org
Mon Aug 17 11:20:34 UTC 2015
This is an automated email from the git hooks/post-receive script.
dtorrance-guest pushed a commit to branch master
in repository wmforecast.
commit b1eab55b1b0e0d55d27bac2ef08bd9b3984b0b4a
Author: Doug Torrance <dtorrance at monmouthcollege.edu>
Date: Wed May 7 23:09:58 2014 -0500
version 0.4
---
ChangeLog | 14 +-
INSTALL | 4 +-
Makefile.am | 6 +-
NEWS | 9 ++
README | 9 +-
configure.ac | 5 +-
wmforecast.c | 458 ++++++++++++++++++++++++++++++++++-------------------------
7 files changed, 296 insertions(+), 209 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index bc3a07f..28b62f9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,16 @@
2014-05-07 Doug Torrance <dtorrance at monmouthcollege.edu>
- * wmforecast.c (editPreferences): new function, GUI for editing user
- preferences; currently non-functioning
+ * wmforecast.c (Dockapp): combined with old UpdateData struct to better
+ facilitate new feature:
+ * wmforecast.c (editPreferences): new GUI to edit wmforecastrc
+ * wmforecast.c (setPreferences): removed check to see if both -w and -z
+ options were used, as it was creating a problem when wmforecastrc
+ existed; new behavior is to just take the last option given
+ * wmforecast.c (getWeather): "Location not found" error now uses setError
+ instead of exiting
+ * configure.ac: set version 0.4, added PKG_CHECK_MODULES for x11
+ * Makefile.am: added x11 libs and flags, manually add WINGs libs and flag,
+ since get-wings-flags returns the deprecated lungif
+ * NEWS, README: updated with version 0.4 info
2014-04-21 Doug Torrance <dtorrance at monmouthcollege.edu>
* wmforecast.c: changed all calls to free to use WINGs's native wfree;
diff --git a/INSTALL b/INSTALL
index 007e939..2099840 100644
--- a/INSTALL
+++ b/INSTALL
@@ -12,8 +12,8 @@ without warranty of any kind.
Basic Installation
==================
- Briefly, the shell commands `./configure; make; make install' should
-configure, build, and install this package. The following
+ Briefly, the shell command `./configure && make && make install'
+should configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for
instructions specific to this package. Some packages provide this
`INSTALL' file but do not implement all of the features documented
diff --git a/Makefile.am b/Makefile.am
index 0f96b26..349caad 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -6,8 +6,8 @@ man_MANS = wmforecast.1
wmforecast.1: wmforecast.c config.h
$(HELP2MAN) --output=$@ -N -n "a weather dockapp for Window Maker using the Yahoo Weather API" ./wmforecast
-AM_CFLAGS = $(libxml2_CFLAGS) $(libcurl_CFLAGS) `get-wings-flags --cflags`
+AM_CFLAGS = $(libxml2_CFLAGS) $(libcurl_CFLAGS) $(X11_CFLAGS)
AM_CPPFLAGS = -DDATADIR=\"$(pkgdatadir)\"
-LIBS += $(libxml2_LIBS) $(libcurl_LIBS) `get-wings-flags --libs`
+LIBS += $(libxml2_LIBS) $(libcurl_LIBS) $(X11_LIBS) -lWINGs -lwraster -lWUtil
-EXTRA_DIST = $(man_MANS)
\ No newline at end of file
+EXTRA_DIST = $(man_MANS)
diff --git a/NEWS b/NEWS
index f02a7ec..e89429a 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,12 @@
+version 0.4
+-----------
+* New features!
+ - Right click the icon to edit preferences in a GUI
+ - Preferences may also be manually configured in XDG_CONFIG_DIR/wmforecast/
+ wmforecastrc, or HOME/.config/wmforecast/wmforecastrc if XDG_CONFIG_DIR is
+ undefined
+* More bug fixes
+
version 0.3
-----------
* New features!
diff --git a/README b/README
index 0b139da..e5ca4df 100644
--- a/README
+++ b/README
@@ -31,7 +31,7 @@ sudo make install
Usage
=====
-wmforecast [OPTIONS]
+Usage: wmforecast [OPTIONS]
Options:
-v, --version print the version number
@@ -45,10 +45,13 @@ Options:
-z, --zip <zip> ZIP code or Location ID (Yahoo has deprecated this
option and it is not guaranteed to work)
Notes:
-* only one of -w or -z may be used, not both
-
* double click the icon at any time to refresh data
+* right click the icon to edit your preferences in a GUI
+
+* preferences may be manually configured in
+ XDG_CONFIG_DIR/wmforecast/wmforecastrc
+
Copyright
=========
wmforecast:
diff --git a/configure.ac b/configure.ac
index 250cb3c..2225e4a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
-AC_INIT([wmforecast], [0.3], [dtorrance at monmouthcollege.edu])
+AC_INIT([wmforecast], [0.4], [dtorrance at monmouthcollege.edu])
AM_INIT_AUTOMAKE([-Wall -Werror])
AC_CONFIG_SRCDIR([configure.ac])
AC_CONFIG_HEADER([config.h])
@@ -6,7 +6,8 @@ AC_SUBST(VERSION)
AC_PROG_CC
PKG_CHECK_MODULES([libxml2],[libxml-2.0])
PKG_CHECK_MODULES([libcurl],[libcurl])
+PKG_CHECK_MODULES([X11],[x11])
AC_CHECK_LIB(WINGs,WMCreateWindow)
AC_CONFIG_FILES([Makefile icons/Makefile])
AM_MISSING_PROG(HELP2MAN, help2man, $missing_dir)
-AC_OUTPUT
\ No newline at end of file
+AC_OUTPUT
diff --git a/wmforecast.c b/wmforecast.c
index e0b1b6c..0276315 100755
--- a/wmforecast.c
+++ b/wmforecast.c
@@ -29,8 +29,42 @@
#define color(c) WMCreateNamedColor(screen,c,True)
typedef struct {
+ char *units;
+ char *woeid;
+ char *zip;
+ char *woeid_or_zip;
+ long int interval;
+} Preferences;
+
+typedef struct {
+ Preferences *prefs;
+ WMButton *celsius;
+ WMButton *close;
+ WMButton *fahrenheit;
+ WMButton *save;
+ WMButton *woeid;
+ WMButton *zip;
+ WMFrame *intervalFrame;
+ WMFrame *locationFrame;
+ WMFrame *units;
+ WMLabel *minutes;
+ WMLabel *woeid_zip;
+ WMScreen *screen;
+ WMTextField *interval;
+ WMTextField *location;
+ WMTextField *woeidField;
+ WMTextField *zipField;
+ WMWindow *window;
+} PreferencesWindow;
+
+typedef struct {
+ int prefsWindowPresent;
+ long int minutesLeft;
+ Preferences *prefs;
+ PreferencesWindow *prefsWindow;
WMLabel *icon;
WMLabel *text;
+ WMScreen *screen;
} Dockapp;
typedef struct {
@@ -55,21 +89,6 @@ typedef struct {
char *errorText;
} Weather;
-typedef struct {
- char *units;
- char *woeid;
- char *zip;
- char *woeid_or_zip;
- long int interval;
-} Preferences;
-
-typedef struct {
- WMScreen *screen;
- Dockapp *dockapp;
- Preferences *prefs;
- long int minutesLeft;
-} UpdateData;
-
Forecast *newForecast()
{
Forecast *forecast = wmalloc(sizeof(Forecast));
@@ -221,12 +240,17 @@ WMWindow *WMCreateDockapp(WMScreen *screen, const char *name, int argc, char **a
return dockapp;
}
-Dockapp *newDockapp(WMScreen *screen, int argc, char **argv)
+Dockapp *newDockapp(WMScreen *screen, Preferences *prefs, int argc, char **argv)
{
Dockapp *dockapp = wmalloc(sizeof(Dockapp));
WMFrame *frame;
WMWindow *window;
+ dockapp->screen = screen;
+ dockapp->prefs = prefs;
+ dockapp->minutesLeft = prefs->interval;
+ dockapp->prefsWindowPresent = 0;
+
window = WMCreateDockapp(screen, "", argc, argv);
frame = WMCreateFrame(window);
@@ -383,8 +407,7 @@ Weather *getWeather(WMScreen *screen, Preferences *prefs)
while (cur != NULL) {
if ((!xmlStrcmp(cur->name, (const xmlChar *)"title"))) {
if ((!xmlStrcmp(xmlNodeListGetString(doc, cur->children, 1), (const xmlChar *)"City not found"))) {
- printf("Location not found\n");
- exit(0);
+ setError(weather, screen, "Location not found\n");
}
setTitle(
weather,
@@ -431,11 +454,10 @@ Weather *getWeather(WMScreen *screen, Preferences *prefs)
static void updateDockapp(void *data)
{
- UpdateData *d = (UpdateData *)data;
+ Dockapp *dockapp = (Dockapp *)data;
- WMScreen *screen = d->screen;
- Dockapp *dockapp = d->dockapp;
- Preferences *prefs = d->prefs;
+ WMScreen *screen = dockapp->screen;
+ Preferences *prefs = dockapp->prefs;
Weather *weather;
WMPixmap *icon;
@@ -484,25 +506,24 @@ char *WMGetPLStringForKey(WMPropList *propList, char *key)
return NULL;
}
-Preferences *setPreferences(int argc, char **argv)
+char *getPreferencesFilename()
{
char *filename;
- int c;
- Preferences *prefs = wmalloc(sizeof(Preferences));
- WMPropList *propList;
-
- //set defaults
- prefs->units = "f";
- prefs->woeid = "2502265";
- prefs->zip = NULL;
- prefs->woeid_or_zip = NULL;
- prefs->interval = 60;
- //read from wmforecastrc
filename = getenv("XDG_CONFIG_DIR");
if (!filename)
filename = wstrconcat(getenv("HOME"), "/.config");
filename = wstrappend(filename, "/wmforecast/wmforecastrc");
+
+ return filename;
+}
+
+void readPreferences(Preferences *prefs)
+{
+ char *filename;
+ WMPropList *propList;
+
+ filename = getPreferencesFilename();
propList = WMReadPropListFromFile(filename);
if (propList) {
char *value;
@@ -523,6 +544,23 @@ Preferences *setPreferences(int argc, char **argv)
prefs->interval = strtol(value, NULL, 10);
}
+
+}
+
+Preferences *setPreferences(int argc, char **argv)
+{
+ int c;
+ Preferences *prefs = wmalloc(sizeof(Preferences));
+
+ //set defaults
+ prefs->units = "f";
+ prefs->woeid = "2502265";
+ prefs->zip = NULL;
+ prefs->woeid_or_zip = NULL;
+ prefs->interval = 60;
+
+ readPreferences(prefs);
+
//command line
while (1)
{
@@ -580,8 +618,10 @@ Preferences *setPreferences(int argc, char **argv)
" -z, --zip <zip> ZIP code or Location ID (Yahoo has deprecated this\n"
" option and it is not guaranteed to work)\n"
"Notes:\n"
- "* only one of -w or -z may be used, not both\n\n"
"* double click the icon at any time to refresh data\n\n"
+ "* right click the icon to edit your preferences in a GUI\n\n"
+ "* preferences may be manually configured in\n"
+ " XDG_CONFIG_DIR/wmforecast/wmforecastrc\n\n"
"Report bugs to %s\n",
PACKAGE_BUGREPORT
);
@@ -602,10 +642,6 @@ Preferences *setPreferences(int argc, char **argv)
break;
case 'z':
- if (prefs->woeid_or_zip) {
- printf("only one of -w or -z may be used, not both\n");
- exit(0);
- }
prefs->woeid_or_zip = "z";
prefs->zip = optarg;
break;
@@ -630,177 +666,207 @@ Preferences *setPreferences(int argc, char **argv)
return prefs;
}
-UpdateData *newUpdateData(WMScreen *screen, Dockapp *dockapp, Preferences *prefs)
+static void closePreferences(WMWidget *widget, void *data)
{
- UpdateData *data = wmalloc(sizeof(UpdateData));
- data->screen = screen;
- data->dockapp = dockapp;
- data->prefs = prefs;
- data->minutesLeft = prefs->interval;
- return data;
+ Dockapp *d = (Dockapp *)data;
+ WMDestroyWidget(d->prefsWindow->window);
+ d->prefsWindowPresent = 0;
}
-typedef struct {
- Preferences *prefs;
- WMButton *apply;
- WMButton *celsius;
- WMButton *close;
- WMButton *fahrenheit;
- WMButton *save;
- WMButton *woeid;
- WMButton *zip;
- WMFrame *intervalFrame;
- WMFrame *locationFrame;
- WMFrame *units;
- WMLabel *minutes;
- WMLabel *woeid_zip;
- WMScreen *screen;
- WMTextField *interval;
- WMTextField *location;
- WMTextField *woeidField;
- WMTextField *zipField;
- WMWindow *window;
-} PreferencesWindow;
-
-static void closePreferences(WMWidget *widget, void *data)
+static void savePreferences(WMWidget *widget, void *data)
{
- PreferencesWindow *pw;
+ char *filename;
+ char *prefsString;
+ Dockapp *d = (Dockapp *)data;
+ FILE *file;
+ WMPropList *prefsPL;
+ WMPropList *key;
+ WMPropList *object;
+
+ prefsPL = WMCreatePLDictionary(NULL,NULL);
+
+ key = WMCreatePLString("units");
+ if (WMGetButtonSelected(d->prefsWindow->celsius)) {
+ object = WMCreatePLString("c");
+ WMPutInPLDictionary(prefsPL, key, object);
+ }
+ if (WMGetButtonSelected(d->prefsWindow->fahrenheit)) {
+ object = WMCreatePLString("f");
+ WMPutInPLDictionary(prefsPL, key, object);
+ }
+
+ key = WMCreatePLString("woeid_or_zip");
+ if (WMGetButtonSelected(d->prefsWindow->woeid)) {
+ object = WMCreatePLString("w");
+ WMPutInPLDictionary(prefsPL, key, object);
+ }
+ if (WMGetButtonSelected(d->prefsWindow->zip)) {
+ object = WMCreatePLString("z");
+ WMPutInPLDictionary(prefsPL, key, object);
+ }
+
+ key = WMCreatePLString("woeid");
+ object = WMCreatePLString(WMGetTextFieldText(d->prefsWindow->woeidField));
+ WMPutInPLDictionary(prefsPL, key, object);
+
+ key = WMCreatePLString("zip");
+ object = WMCreatePLString(WMGetTextFieldText(d->prefsWindow->zipField));
+ WMPutInPLDictionary(prefsPL, key, object);
+
+ key = WMCreatePLString("interval");
+ object = WMCreatePLString(WMGetTextFieldText(d->prefsWindow->interval));
+ WMPutInPLDictionary(prefsPL, key, object);
+
+ prefsString = WMGetPropListDescription(prefsPL, True);
+
+ filename = getPreferencesFilename();
+
+ // since WMWritePropListToFile only writes to files in
+ // GNUSTEP_USER_ROOT, we need to write our own version
+ file = fopen(filename, "w");
+ if (file)
+ {
+ fputs(prefsString, file);
+ fclose(file);
+ }
+
+ readPreferences(d->prefs);
+ updateDockapp(d);
- pw = (PreferencesWindow *)data;
- WMDestroyWidget(pw->window);
}
static void editPreferences(void *data)
{
char intervalPtr[50];
- PreferencesWindow *pw;
-
- pw = wmalloc(sizeof(PreferencesWindow));
-
- UpdateData *d = (UpdateData *)data;
- pw->screen = d->screen;
- pw->prefs = d->prefs;
-
-
- pw->window = WMCreateWindow(pw->screen, "wmforecast");
- WMSetWindowTitle(pw->window, "wmforecast");
- WMSetWindowCloseAction (pw->window, closePreferences, pw);
- WMResizeWidget(pw->window, 424, 130);
- WMRealizeWidget(pw->window);
- WMMapWidget(pw->window);
-
- pw->units = WMCreateFrame(pw->window);
- WMSetFrameTitle(pw->units, "Units");
- WMResizeWidget(pw->units, 112, 80);
- WMMoveWidget(pw->units, 10, 10);
- WMRealizeWidget(pw->units);
- WMMapWidget(pw->units);
-
- pw->celsius = WMCreateButton(pw->units, WBTRadio);
- WMSetButtonText(pw->celsius, "Celsius");
- WMMoveWidget(pw->celsius, 10, 20);
- if (strcmp(pw->prefs->units,"c") == 0)
- WMSetButtonSelected(pw->celsius,1);
- WMRealizeWidget(pw->celsius);
- WMMapWidget(pw->celsius);
-
- pw->fahrenheit = WMCreateButton(pw->units, WBTRadio);
- WMSetButtonText(pw->fahrenheit, "Fahrenheit");
- WMMoveWidget(pw->fahrenheit, 10, 44);
- if (strcmp(pw->prefs->units,"f") == 0)
- WMSetButtonSelected(pw->fahrenheit,1);
- WMRealizeWidget(pw->fahrenheit);
- WMMapWidget(pw->fahrenheit);
-
- pw->locationFrame = WMCreateFrame(pw->window);
- WMSetFrameTitle(pw->locationFrame, "Location");
- WMResizeWidget(pw->locationFrame, 160, 80);
- WMMoveWidget(pw->locationFrame, 132, 10);
- WMRealizeWidget(pw->locationFrame);
- WMMapWidget(pw->locationFrame);
-
- pw->woeid = WMCreateButton(pw->locationFrame, WBTRadio);
- WMSetButtonText(pw->woeid, "WOEID");
- WMMoveWidget(pw->woeid, 10, 20);
- if (strcmp(pw->prefs->woeid_or_zip,"w") == 0)
- WMSetButtonSelected(pw->woeid,1);
- WMRealizeWidget(pw->woeid);
- WMMapWidget(pw->woeid);
-
- pw->woeidField = WMCreateTextField(pw->locationFrame);
- WMSetTextFieldText(pw->woeidField, pw->prefs->woeid);
- WMResizeWidget(pw->woeidField, 60, 20);
- WMMoveWidget(pw->woeidField, 90, 20);
- WMRealizeWidget(pw->woeidField);
- WMMapWidget(pw->woeidField);
-
- pw->zip = WMCreateButton(pw->locationFrame, WBTRadio);
- WMSetButtonText(pw->zip, "ZIP code");
- WMMoveWidget(pw->zip, 10, 44);
- if (strcmp(pw->prefs->woeid_or_zip,"z") == 0)
- WMSetButtonSelected(pw->zip,1);
- WMRealizeWidget(pw->zip);
- WMMapWidget(pw->zip);
-
- pw->zipField = WMCreateTextField(pw->locationFrame);
- WMSetTextFieldText(pw->zipField, pw->prefs->zip);
- WMResizeWidget(pw->zipField, 60, 20);
- WMMoveWidget(pw->zipField, 90, 44);
- WMRealizeWidget(pw->zipField);
- WMMapWidget(pw->zipField);
-
- pw->intervalFrame = WMCreateFrame(pw->window);
- WMSetFrameTitle(pw->intervalFrame, "Refresh interval");
- WMResizeWidget(pw->intervalFrame, 112, 80);
- WMMoveWidget(pw->intervalFrame, 302, 10);
- WMRealizeWidget(pw->intervalFrame);
- WMMapWidget(pw->intervalFrame);
-
- pw->interval = WMCreateTextField(pw->intervalFrame);
- sprintf(intervalPtr, "%lu", pw->prefs->interval);
- WMSetTextFieldText(pw->interval, intervalPtr);
- WMResizeWidget(pw->interval, 30, 20);
- WMMoveWidget(pw->interval, 15, 33);
- WMRealizeWidget(pw->interval);
- WMMapWidget(pw->interval);
-
- pw->minutes = WMCreateLabel(pw->intervalFrame);
- WMSetLabelText(pw->minutes, "minutes");
- WMMoveWidget(pw->minutes, 45, 35);
- WMRealizeWidget(pw->minutes);
- WMMapWidget(pw->minutes);
-
- pw->close = WMCreateButton(pw->window, WBTMomentaryPush);
- WMSetButtonText(pw->close, "Close");
- WMSetButtonAction(pw->close, closePreferences, pw);
- WMMoveWidget(pw->close, 10, 100);
- WMRealizeWidget(pw->close);
- WMMapWidget(pw->close);
-
- pw->apply = WMCreateButton(pw->window, WBTMomentaryPush);
- WMSetButtonText(pw->apply, "Apply");
- WMMoveWidget(pw->apply, 285, 100);
- WMRealizeWidget(pw->apply);
- WMMapWidget(pw->apply);
-
- pw->save = WMCreateButton(pw->window, WBTMomentaryPush);
- WMSetButtonText(pw->save, "Save");
- WMMoveWidget(pw->save, 353, 100);
- WMRealizeWidget(pw->save);
- WMMapWidget(pw->save);
+ Dockapp *d = (Dockapp *)data;
+
+ d->prefsWindowPresent = 1;
+
+ d->prefsWindow = wmalloc(sizeof(PreferencesWindow));
+
+ d->prefsWindow->screen = d->screen;
+ d->prefsWindow->prefs = d->prefs;
+
+
+ d->prefsWindow->window = WMCreateWindow(d->prefsWindow->screen, "wmforecast");
+ WMSetWindowTitle(d->prefsWindow->window, "wmforecast");
+ WMSetWindowCloseAction (d->prefsWindow->window, closePreferences, d);
+ WMResizeWidget(d->prefsWindow->window, 424, 130);
+ WMRealizeWidget(d->prefsWindow->window);
+ WMMapWidget(d->prefsWindow->window);
+
+ d->prefsWindow->units = WMCreateFrame(d->prefsWindow->window);
+ WMSetFrameTitle(d->prefsWindow->units, "Units");
+ WMResizeWidget(d->prefsWindow->units, 112, 80);
+ WMMoveWidget(d->prefsWindow->units, 10, 10);
+ WMRealizeWidget(d->prefsWindow->units);
+ WMMapWidget(d->prefsWindow->units);
+
+ d->prefsWindow->celsius = WMCreateButton(d->prefsWindow->units, WBTRadio);
+ WMSetButtonText(d->prefsWindow->celsius, "Celsius");
+ WMMoveWidget(d->prefsWindow->celsius, 10, 20);
+ if (strcmp(d->prefsWindow->prefs->units,"c") == 0)
+ WMSetButtonSelected(d->prefsWindow->celsius,1);
+ WMRealizeWidget(d->prefsWindow->celsius);
+ WMMapWidget(d->prefsWindow->celsius);
+
+ d->prefsWindow->fahrenheit = WMCreateButton(d->prefsWindow->units, WBTRadio);
+ WMSetButtonText(d->prefsWindow->fahrenheit, "Fahrenheit");
+ WMMoveWidget(d->prefsWindow->fahrenheit, 10, 44);
+ if (strcmp(d->prefsWindow->prefs->units,"f") == 0)
+ WMSetButtonSelected(d->prefsWindow->fahrenheit,1);
+ WMRealizeWidget(d->prefsWindow->fahrenheit);
+ WMMapWidget(d->prefsWindow->fahrenheit);
+
+ WMGroupButtons(d->prefsWindow->celsius, d->prefsWindow->fahrenheit);
+
+ d->prefsWindow->locationFrame = WMCreateFrame(d->prefsWindow->window);
+ WMSetFrameTitle(d->prefsWindow->locationFrame, "Location");
+ WMResizeWidget(d->prefsWindow->locationFrame, 160, 80);
+ WMMoveWidget(d->prefsWindow->locationFrame, 132, 10);
+ WMRealizeWidget(d->prefsWindow->locationFrame);
+ WMMapWidget(d->prefsWindow->locationFrame);
+
+ d->prefsWindow->woeid = WMCreateButton(d->prefsWindow->locationFrame, WBTRadio);
+ WMSetButtonText(d->prefsWindow->woeid, "WOEID");
+ WMMoveWidget(d->prefsWindow->woeid, 10, 20);
+ if (strcmp(d->prefsWindow->prefs->woeid_or_zip,"w") == 0)
+ WMSetButtonSelected(d->prefsWindow->woeid,1);
+ WMRealizeWidget(d->prefsWindow->woeid);
+ WMMapWidget(d->prefsWindow->woeid);
+
+ d->prefsWindow->woeidField = WMCreateTextField(d->prefsWindow->locationFrame);
+ WMSetTextFieldText(d->prefsWindow->woeidField, d->prefsWindow->prefs->woeid);
+ WMResizeWidget(d->prefsWindow->woeidField, 60, 20);
+ WMMoveWidget(d->prefsWindow->woeidField, 90, 20);
+ WMRealizeWidget(d->prefsWindow->woeidField);
+ WMMapWidget(d->prefsWindow->woeidField);
+
+ d->prefsWindow->zip = WMCreateButton(d->prefsWindow->locationFrame, WBTRadio);
+ WMSetButtonText(d->prefsWindow->zip, "ZIP code");
+ WMMoveWidget(d->prefsWindow->zip, 10, 44);
+ if (strcmp(d->prefsWindow->prefs->woeid_or_zip,"z") == 0)
+ WMSetButtonSelected(d->prefsWindow->zip,1);
+ WMRealizeWidget(d->prefsWindow->zip);
+ WMMapWidget(d->prefsWindow->zip);
+
+ d->prefsWindow->zipField = WMCreateTextField(d->prefsWindow->locationFrame);
+ WMSetTextFieldText(d->prefsWindow->zipField, d->prefsWindow->prefs->zip);
+ WMResizeWidget(d->prefsWindow->zipField, 60, 20);
+ WMMoveWidget(d->prefsWindow->zipField, 90, 44);
+ WMRealizeWidget(d->prefsWindow->zipField);
+ WMMapWidget(d->prefsWindow->zipField);
+
+ d->prefsWindow->intervalFrame = WMCreateFrame(d->prefsWindow->window);
+ WMSetFrameTitle(d->prefsWindow->intervalFrame, "Refresh interval");
+ WMResizeWidget(d->prefsWindow->intervalFrame, 112, 80);
+ WMMoveWidget(d->prefsWindow->intervalFrame, 302, 10);
+ WMRealizeWidget(d->prefsWindow->intervalFrame);
+ WMMapWidget(d->prefsWindow->intervalFrame);
+
+ WMGroupButtons(d->prefsWindow->woeid, d->prefsWindow->zip);
+
+ d->prefsWindow->interval = WMCreateTextField(d->prefsWindow->intervalFrame);
+ sprintf(intervalPtr, "%lu", d->prefsWindow->prefs->interval);
+ WMSetTextFieldText(d->prefsWindow->interval, intervalPtr);
+ WMResizeWidget(d->prefsWindow->interval, 30, 20);
+ WMMoveWidget(d->prefsWindow->interval, 15, 33);
+ WMRealizeWidget(d->prefsWindow->interval);
+ WMMapWidget(d->prefsWindow->interval);
+
+ d->prefsWindow->minutes = WMCreateLabel(d->prefsWindow->intervalFrame);
+ WMSetLabelText(d->prefsWindow->minutes, "minutes");
+ WMMoveWidget(d->prefsWindow->minutes, 45, 35);
+ WMRealizeWidget(d->prefsWindow->minutes);
+ WMMapWidget(d->prefsWindow->minutes);
+
+ d->prefsWindow->save = WMCreateButton(d->prefsWindow->window, WBTMomentaryPush);
+ WMSetButtonText(d->prefsWindow->save, "Save");
+ WMSetButtonAction(d->prefsWindow->save, savePreferences, d);
+ WMMoveWidget(d->prefsWindow->save, 285, 100);
+ WMRealizeWidget(d->prefsWindow->save);
+ WMMapWidget(d->prefsWindow->save);
+
+ d->prefsWindow->close = WMCreateButton(d->prefsWindow->window, WBTMomentaryPush);
+ WMSetButtonText(d->prefsWindow->close, "Close");
+ WMSetButtonAction(d->prefsWindow->close, closePreferences, d);
+ WMMoveWidget(d->prefsWindow->close, 353, 100);
+ WMRealizeWidget(d->prefsWindow->close);
+ WMMapWidget(d->prefsWindow->close);
}
static void refresh(XEvent *event, void *data)
{
+ Dockapp *d = (Dockapp *)data;
if (WMIsDoubleClick(event) && event->xbutton.button == Button1)
- updateDockapp(data);
- if (event->xbutton.button == Button3)
- editPreferences(data);
+ updateDockapp(d);
+ if (event->xbutton.button == Button3 && !d->prefsWindowPresent)
+ editPreferences(d);
}
static void timerHandler(void *data)
{
- UpdateData *d = (UpdateData *)data;
+ Dockapp *d = (Dockapp *)data;
d->minutesLeft--;
if (d->minutesLeft == 0) {
@@ -814,7 +880,6 @@ int main(int argc, char **argv)
Display *display;
Dockapp *dockapp;
Preferences *prefs;
- UpdateData *data;
WMScreen *screen;
prefs = setPreferences(argc, argv);
@@ -823,15 +888,14 @@ int main(int argc, char **argv)
display = XOpenDisplay("");
screen = WMCreateScreen(display, DefaultScreen(display));
- dockapp = newDockapp(screen, argc, argv);
- data = newUpdateData(screen, dockapp, prefs);
+ dockapp = newDockapp(screen, prefs, argc, argv);
WMCreateEventHandler(WMWidgetView(dockapp->icon), ButtonPressMask,
- refresh, data);
+ refresh, dockapp);
- updateDockapp(data);
+ updateDockapp(dockapp);
WMAddPersistentTimerHandler(60*1000, //one minute
- timerHandler, data);
+ timerHandler, dockapp);
WMScreenMainLoop(screen);
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-wmaker/wmforecast.git
More information about the Pkg-wmaker-commits
mailing list