summary refs log tree commit diff stats
path: root/plugins/ewc/ewc.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/ewc/ewc.c')
-rw-r--r--plugins/ewc/ewc.c231
1 files changed, 0 insertions, 231 deletions
diff --git a/plugins/ewc/ewc.c b/plugins/ewc/ewc.c
deleted file mode 100644
index 48336b36..00000000
--- a/plugins/ewc/ewc.c
+++ /dev/null
@@ -1,231 +0,0 @@
-/*

-EasyWinampControl - A Winamp "What's playing" plugin for HexChat

-Copyright (C) Yann HAMON & contributors

-

-This library is free software; you can redistribute it and/or

-modify it under the terms of the GNU Lesser General Public

-License as published by the Free Software Foundation; either

-version 2.1 of the License, or (at your option) any later version.

-

-This library 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

-Lesser General Public License for more details.

-

-You should have received a copy of the GNU Lesser General Public

-License along with this library; if not, write to the Free Software

-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA

-*/

-

-#include <windows.h>

-#include "hexchat-plugin.h"

-

-static hexchat_plugin *ph;   /* plugin handle */

-static int enable = 1;

-

-// For example, circularstrstr("winamp", "pwi", 3) would return 5 (the index of p)

-int circularstrstr(char* a, char* b, int nb)

-{

-  int equal = 1;

-  int length;

-  int pos=-1;

-  int i, j;

-

-  length = strlen(a);

-

-  for (i=0; i<length && pos == -1; ++i) {

-    equal = 1;

-    for (j=0; j<nb;j++) {

-      if (a[(i+j)%length] != b[j])

-        equal = 0;

-    }

-    if (equal == 1)

-      pos = i;

-  }

-

-  return pos;

-}

-

-void GetCurrentSongsName(HWND hwndWinamp, char* title, int titlesize)

-{

-  int pos;

-  char *title2;

-  int i, j=0;

-  int length;

-  char *p;

-

-  GetWindowText(hwndWinamp, title, titlesize);

-  length = strlen(title);

-

-  if ((pos = circularstrstr(title, "- Winamp ***", 12)) != -1) {

-    // The option "scroll song title in taskbar" is on

-    title2 = (char*) malloc (titlesize*sizeof(char));

-

-    for (i=(pos+12)%length; i!=pos; i=(i+1)%length)

-      title2[j++] = title[i];

-

-    title2[j] = '\0';

-

-    p = title2;

-    while (p<title2+titlesize && *p != '.')

-      p++;

-    p+=2; // Delete the . and the following white space

-

-    strcpy(title, p);

-    free(title2);

-  }

-  else {

-    p = title;

-    while (p<title+titlesize && *p != '.')

-      p++;

-    p+=2; // Delete the . and the following white space

-    if (p<title+titlesize)

-      strncpy(title, p, titlesize-(p-title));

-

-    // Delete the trailing "- winamp"

-    p = title + titlesize - 1;

-    while (p>title && *p != '-') p--;

-    *p = '\0';

-  }

-}

-

-

-// Controlling winamp

-static int wcmd_cb(char *word[], char *word_eol[], void *userdata)

-{

-  // Everything's here : http://winamp.com/nsdn/winamp2x/dev/sdk/api.php

-  // The previous url seems dead, see http://forums.winamp.com/showthread.php?threadid=180297

-  HWND hwndWinamp = NULL;

-

-  if ((hwndWinamp = FindWindow("Winamp v1.x",NULL)) == NULL) {

-    hexchat_print(ph, "Winamp's window not found - Is winamp really running?\n");

-  }

-  else {

-    if (strcmp(word[1], "") == 0)

-      hexchat_print(ph, "Usage: wcmd [command]\n");

-    else if (strcmp(word[2], "next") == 0) {

-      hexchat_print(ph, "Loading next song...\n");

-      SendMessage (hwndWinamp, WM_COMMAND, 40048, 0);

-    }

-    else if (strcmp(word[2], "prev") == 0) {

-      hexchat_print(ph, "Loading previous song...\n");

-      SendMessage (hwndWinamp, WM_COMMAND, 40044, 0);

-    }

-    else if (strcmp(word[2], "play") == 0) {

-      hexchat_print(ph, "Playin'...\n");

-      SendMessage (hwndWinamp, WM_COMMAND, 40045, 0);

-    }

-    else if (strcmp(word[2], "stop") == 0) {

-      hexchat_print(ph, "Winamp stopped!...\n");

-      SendMessage (hwndWinamp, WM_COMMAND, 40047, 0);

-    }

-    else if (strcmp(word[2], "pause") == 0) {

-      SendMessage (hwndWinamp, WM_COMMAND, 40046, 0);

-    }

-  }

-

-  return HEXCHAT_EAT_ALL;

-}

-

-

-// Display current song

-static int wp_cb(char *word[], char *word_eol[], void *userdata)

-{

-  HWND hwndWinamp = NULL;

-  int bitrate, length, elapsed, minutes, seconds, eminutes, eseconds, samplerate, nbchannels;

-  char elapsedtime[7];

-  char totaltime[7];

-  char this_title[1024];

-

-  if ((hwndWinamp = FindWindow("Winamp v1.x",NULL)) == NULL)

-    hexchat_print(ph, "Winamp's window not found - Is winamp really running?\n");

-  else {

-    //Winamp's running

-    // Seems buggy when winamp2's agent is running, and winamp not (or winamp3) -> crashes HexChat.

-    SendMessage(hwndWinamp, WM_USER, (WPARAM)0, (LPARAM)125);

-

-    if ((samplerate = SendMessage(hwndWinamp, WM_USER, (WPARAM)0, (LPARAM)126)) == 0) {

-      hexchat_print(ph, "Could not get current song's samplerate... !?\n");

-      return HEXCHAT_EAT_ALL;

-    }

-    if ((bitrate = SendMessage(hwndWinamp, WM_USER, (WPARAM)1, (LPARAM)126)) == 0) {

-      hexchat_print(ph, "Could not get current song's bitrate... !?\n");

-      return HEXCHAT_EAT_ALL;

-    }

-    if ((nbchannels = SendMessage(hwndWinamp, WM_USER, (WPARAM)2, (LPARAM)126)) == 0) {

-      hexchat_print(ph, "Could not get the number of channels... !?\n");

-      return HEXCHAT_EAT_ALL;

-    }

-    if ((length = SendMessage(hwndWinamp, WM_USER, (WPARAM)1, (LPARAM)105)) == 0) {

-      // Could be buggy when streaming audio or video, returned length is unexpected;

-      // How to detect is Winamp is streaming, and display ??:?? in that case?

-      hexchat_print(ph, "Could not get current song's length... !?\n");

-      return HEXCHAT_EAT_ALL;

-    }

-    else {

-      minutes = length/60;

-      seconds = length%60;

-

-      if (seconds>9)

-        wsprintf(totaltime, "%d:%d", minutes, seconds);

-      else

-        wsprintf(totaltime, "%d:0%d", minutes, seconds);

-    }

-    if ((elapsed = SendMessage(hwndWinamp, WM_USER, (WPARAM)0, (LPARAM)105)) == 0) {

-      hexchat_print(ph, "Could not get current song's elapsed time... !?\n");

-      return HEXCHAT_EAT_ALL;

-    }

-    else {

-      eminutes = (elapsed/1000)/60;   /* kinda stupid sounding, but e is for elapsed */

-      eseconds = (elapsed/1000)%60;

-

-      if (eseconds>9)

-        wsprintf(elapsedtime, "%d:%d", eminutes, eseconds);

-      else

-        wsprintf(elapsedtime, "%d:0%d", eminutes, eseconds);

-    }

-

-    if ((bitrate = SendMessage(hwndWinamp, WM_USER, (WPARAM)1, (LPARAM)126)) == 0) {

-      hexchat_print(ph, "Could not get current song's bitrate... !?\n");

-      return HEXCHAT_EAT_ALL;

-    }

-

-    GetCurrentSongsName(hwndWinamp, this_title, 1024);

-

-    hexchat_commandf(ph, "dispcurrsong %d %d %d %s %s %s", samplerate, bitrate, nbchannels, elapsedtime, totaltime, this_title);

-  }

-

-  return HEXCHAT_EAT_ALL;   /* eat this command so HexChat and other plugins can't process it */

-}

-

-

-

-int hexchat_plugin_init(hexchat_plugin *plugin_handle,

-                      char **plugin_name,

-                      char **plugin_desc,

-                      char **plugin_version,

-                      char *arg)

-{

-  /* we need to save this for use with any hexchat_* functions */

-  ph = plugin_handle;

-

-  *plugin_name = "EasyWinampControl";

-  *plugin_desc = "Some commands to remotely control winamp";

-  *plugin_version = "1.2";

-

-  hexchat_hook_command(ph, "wp", HEXCHAT_PRI_NORM, wp_cb,

-                    "Usage: wp", 0);

-

-  hexchat_hook_command(ph, "wcmd", HEXCHAT_PRI_NORM, wcmd_cb,

-                    "Usage: wcmd [play|pause|stop|prev|next]", 0);

-

-  hexchat_print(ph, "EasyWinampControl plugin loaded\n");

-

-  return 1;       /* return 1 for success */

-}

-

-int hexchat_plugin_deinit(void)

-{

-  hexchat_print(ph, "EasyWinampControl plugin unloaded\n");

-  return 1;

-}