Hi there.
I am a long centerim/icq user who have been looking at cim5 development
for a while. I saw the updated cim5 screenshot and thought I would give
it a try.
I can happily report that it compiles and works out of the box for me on
Debian sid. :)
Also; I started looking into the code (I know gtk/glib quite well but
have only played around with libncurses and ever looked at libpidgin)
and thought I would try to implement a header (the thing with status
indicators and so on).
Also added a start of sv.po (but I could not test it for some or other
reason)... Apply if you guys want to....
//Jonas Zetterberg
>From 6e70c84cd978e041d9ae6df050c51d9da15f963d Mon Sep 17 00:00:00 2001
From: Jonas Zetterberg <j...@jozz.se>
Date: Wed, 11 Aug 2010 16:45:39 +0200
Subject: [PATCH 1/5] Add LineStyle without borders.
No empty border will be drawn, widgets will draw from 0,0
Signed-off-by: Jonas Zetterberg <j...@jozz.se>
---
cppconsui/LineStyle.h | 3 ++-
cppconsui/Panel.cpp | 3 +++
cppconsui/Window.cpp | 34 +++++++++++++++++++++++-----------
3 files changed, 28 insertions(+), 12 deletions(-)
diff --git a/cppconsui/LineStyle.h b/cppconsui/LineStyle.h
index 9b3af27..fa4ef00 100644
--- a/cppconsui/LineStyle.h
+++ b/cppconsui/LineStyle.h
@@ -42,7 +42,8 @@ class LineStyle
ASCII_ROUNDED,
LIGHT,
LIGHT_ROUNDED,
- HEAVY
+ HEAVY,
+ NONE
};
LineStyle(Type t = DEFAULT);
diff --git a/cppconsui/Panel.cpp b/cppconsui/Panel.cpp
index 13a9e93..b4393c0 100644
--- a/cppconsui/Panel.cpp
+++ b/cppconsui/Panel.cpp
@@ -52,6 +52,9 @@ void Panel::Draw()
if (!area || (realw = area->getmaxx()) == 0 || (realh = area->getmaxy()) == 0)
return;
+ if (linestyle.GetStyle() == LineStyle::NONE)
+ /* We do not want any lines */
+ return;
int attrs = COLORSCHEME->GetColorPair(GetColorScheme(), "panel", "line");
area->attron(attrs);
diff --git a/cppconsui/Window.cpp b/cppconsui/Window.cpp
index 3965cef..7d6c9d3 100644
--- a/cppconsui/Window.cpp
+++ b/cppconsui/Window.cpp
@@ -48,9 +48,12 @@ void Window::MoveResize(int newx, int newy, int neww, int newh)
UpdateArea();
panel->MoveResize(0, 0, win_w, win_h);
-
- Container::MoveResize(1, 1, win_w < 2 ? 0 : win_w - 2,
- win_h < 2 ? 0 : win_h - 2);
+ if (GetBorderStyle() != LineStyle::NONE) {
+ Container::MoveResize(1, 1, win_w < 2 ? 0 : win_w - 2,
+ win_h < 2 ? 0 : win_h - 2);
+ } else {
+ Container::MoveResize(0, 0, win_w, win_h );
+ }
}
Curses::Window *Window::GetSubPad(const Widget &child, int begin_x,
@@ -63,19 +66,28 @@ Curses::Window *Window::GetSubPad(const Widget &child, int begin_x,
if (&child == panel)
return area->subpad(begin_x, begin_y, ncols, nlines);
- int realw = area->getmaxx() - 2;
- int realh = area->getmaxy() - 2;
+ int realw = area->getmaxx();
+ int realh = area->getmaxy();
+
+ if (GetBorderStyle() != LineStyle::NONE) {
+ // add `+1' offset to normal childs so they can not overwrite the panel
+ begin_x += 1;
+ begin_y += 1;
+ // remove `-2' offset to normal childs so they can not
+ // overwrite the panel
+ realw -= 2;
+ realh -= 2;
+ }
/* Extend requested subpad to whole panel area or shrink requested area if
* necessary. */
- if (nlines < 0 || nlines > realh - begin_y)
- nlines = realh - begin_y;
+ if (nlines < 0 || nlines > realh - begin_y + 1)
+ nlines = realh - begin_y + 1;
- if (ncols < 0 || ncols > realw - begin_x)
- ncols = realw - begin_x;
+ if (ncols < 0 || ncols > realw - begin_x + 1)
+ ncols = realw - begin_x + 1;
- // add `+1' offset to normal childs so they can not overwrite the panel
- return area->subpad(begin_x + 1, begin_y + 1, ncols, nlines);
+ return area->subpad(begin_x, begin_y, ncols, nlines);
}
void Window::SetBorderStyle(LineStyle::Type ltype)
--
1.7.1
>From ed8557d5ecc220259ae9e81f69be3762aafd7dc0 Mon Sep 17 00:00:00 2001
From: Jonas Zetterberg <j...@jozz.se>
Date: Wed, 11 Aug 2010 19:50:08 +0200
Subject: [PATCH 2/5] Add signal on status changes.
When a account changes this signal get's sent thrue.
Signed-off-by: Jonas Zetterberg <j...@jozz.se>
---
src/Accounts.cpp | 1 +
src/Accounts.h | 5 ++++-
2 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/src/Accounts.cpp b/src/Accounts.cpp
index 7d61025..7182096 100644
--- a/src/Accounts.cpp
+++ b/src/Accounts.cpp
@@ -58,4 +58,5 @@ void Accounts::status_changed(PurpleAccount *account, PurpleStatus *status)
purple_account_get_protocol_name(account),
purple_account_get_username(account),
purple_status_get_name(status));
+ Instance()->signal_status_changed(account, status);
}
diff --git a/src/Accounts.h b/src/Accounts.h
index 7b36672..864bf84 100644
--- a/src/Accounts.h
+++ b/src/Accounts.h
@@ -23,6 +23,7 @@
#define __ACCOUNTS_H__
#include <libpurple/account.h>
+#include <sigc++/sigc++.h>
#define ACCOUNTS (Accounts::Instance())
@@ -30,7 +31,9 @@ class Accounts
{
public:
static Accounts *Instance();
-
+
+ sigc::signal<void, PurpleAccount*, PurpleStatus*> signal_status_changed;
+
protected:
private:
--
1.7.1
>From 7fa5fa3b6649bb23c228de6df269d22e2aece52c Mon Sep 17 00:00:00 2001
From: Jonas Zetterberg <j...@jozz.se>
Date: Wed, 11 Aug 2010 19:51:30 +0200
Subject: [PATCH 3/5] Make Status to string indicator its own function.
All classes can now get PidginStatus to [x] indicator from same class.
TODO: This should probably be moved to own class.
Signed-off-by: Jonas Zetterberg <j...@jozz.se>
---
src/BuddyListNode.cpp | 7 ++++++-
src/BuddyListNode.h | 1 +
2 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/src/BuddyListNode.cpp b/src/BuddyListNode.cpp
index c001c32..a886751 100644
--- a/src/BuddyListNode.cpp
+++ b/src/BuddyListNode.cpp
@@ -112,9 +112,14 @@ const gchar *BuddyListNode::GetBuddyStatus(PurpleBuddy *buddy) const
PurplePresence *presence = purple_buddy_get_presence(buddy);
PurpleStatus *status = purple_presence_get_active_status(presence);
+ return GetStatusIndicator(status);
+}
+
+/* TODO: This should be moved to a better location */
+const gchar *BuddyListNode::GetStatusIndicator(PurpleStatus *status)
+{
PurpleStatusType *status_type = purple_status_get_type(status);
PurpleStatusPrimitive prim = purple_status_type_get_primitive(status_type);
-
switch (prim) {
case PURPLE_STATUS_UNSET:
return "[x] ";
diff --git a/src/BuddyListNode.h b/src/BuddyListNode.h
index 3397885..ea92ce0 100644
--- a/src/BuddyListNode.h
+++ b/src/BuddyListNode.h
@@ -45,6 +45,7 @@ class BuddyListNode
void SetRefNode(TreeView::NodeReference n) { ref = n; }
TreeView::NodeReference GetRefNode() const { return ref; }
+ static const gchar *GetStatusIndicator(PurpleStatus *status);
protected:
TreeView::NodeReference ref;
--
1.7.1
>From 35c64455af76e53327b1aa7499f3d7142036817d Mon Sep 17 00:00:00 2001
From: Jonas Zetterberg <j...@jozz.se>
Date: Wed, 11 Aug 2010 20:16:41 +0200
Subject: [PATCH 4/5] Add header window with generic information.
This includes CenterIM name and status indicators for all accounts with
changed staus.
Signed-off-by: Jonas Zetterberg <j...@jozz.se>
---
po/POTFILES.in | 1 +
src/CenterIM.cpp | 16 ++++++-
src/CenterIM.h | 2 +-
src/Conf.cpp | 18 ++++++-
src/Conf.h | 1 +
src/Header.cpp | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/Header.h | 63 +++++++++++++++++++++++++++
src/Makefile.am | 2 +
8 files changed, 223 insertions(+), 7 deletions(-)
create mode 100644 src/Header.cpp
create mode 100644 src/Header.h
diff --git a/po/POTFILES.in b/po/POTFILES.in
index f593bfe..ec3075e 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -14,6 +14,7 @@ src/Conversation.cpp
src/Conversations.cpp
src/GeneralMenu.cpp
src/Log.cpp
+src/Header.cpp
src/Notify.cpp
src/Transfers.cpp
diff --git a/src/CenterIM.cpp b/src/CenterIM.cpp
index a3902aa..42e8022 100644
--- a/src/CenterIM.cpp
+++ b/src/CenterIM.cpp
@@ -26,6 +26,7 @@
#include "Conf.h"
#include "Connections.h"
#include "Conversations.h"
+#include "Header.h"
#include "Log.h"
#include "Notify.h"
#include "Transfers.h"
@@ -84,12 +85,14 @@ void CenterIM::Run()
logbuf = NULL;
}
+ Header::Instance();
Accounts::Instance();
Connections::Instance();
Notify::Instance();
// initialize UI
Conversations::Instance()->Show();
+ Header::Instance()->Show();
// init BuddyList last so it takes the focus
BuddyList::Instance()->Show();
@@ -342,7 +345,7 @@ void CenterIM::ScreenResized()
{
Rect size = CONF->GetBuddyListDimensions();
size.width = (int) (size.width * (mngr->GetScreenWidth() / (double) originalW));
- size.height = mngr->GetScreenHeight();
+ size.height = mngr->GetScreenHeight() - size.y;
areaSizes[BuddyListArea] = size;
size = CONF->GetLogDimensions();
@@ -353,14 +356,21 @@ void CenterIM::ScreenResized()
areaSizes[LogArea] = size;
areaSizes[ChatArea].x = areaSizes[BuddyListArea].width;
- areaSizes[ChatArea].y = 0;
+ areaSizes[ChatArea].y = 1;
areaSizes[ChatArea].width = mngr->GetScreenWidth() - areaSizes[ChatArea].x;
- areaSizes[ChatArea].height = mngr->GetScreenHeight() - areaSizes[LogArea].height;
+ areaSizes[ChatArea].height =
+ mngr->GetScreenHeight() - (areaSizes[ChatArea].y + areaSizes[LogArea].height);
+
+ areaSizes[HeaderArea].x = 0;
+ areaSizes[HeaderArea].y = 0;
+ areaSizes[HeaderArea].width = mngr->GetScreenWidth();
+ areaSizes[HeaderArea].height = 3;
areaSizes[WholeArea].x = 0;
areaSizes[WholeArea].y = 0;
areaSizes[WholeArea].width = mngr->GetScreenWidth();
areaSizes[WholeArea].height = mngr->GetScreenHeight();
+
}
void CenterIM::ActionFocusBuddyList()
diff --git a/src/CenterIM.h b/src/CenterIM.h
index f45f920..25226da 100644
--- a/src/CenterIM.h
+++ b/src/CenterIM.h
@@ -37,7 +37,7 @@ class CenterIM
: public InputProcessor
{
public:
- enum ScreenArea {BuddyListArea, LogArea, ChatArea, WholeArea, AreaMax};
+ enum ScreenArea {HeaderArea, BuddyListArea, LogArea, ChatArea, WholeArea, AreaMax};
static CenterIM *Instance();
diff --git a/src/Conf.cpp b/src/Conf.cpp
index 9cf4378..24c47f2 100644
--- a/src/Conf.cpp
+++ b/src/Conf.cpp
@@ -30,6 +30,11 @@
#define CONF_PERCENTAGE_MIN 0
#define CONF_PERCENTAGE_MAX 100
+#define CONF_HEADER_DIMENSIONS_X 0
+#define CONF_HEADER_DIMENSIONS_Y 0
+#define CONF_HEADER_DIMENSIONS_WIDTH 100
+#define CONF_HEADER_DIMENSIONS_HEIGHT 1
+
#define CONF_LOG_MAX_LINES_MIN 10
#define CONF_LOG_MAX_LINES_MAX 100000
#define CONF_LOG_MAX_LINES_DEFAULT 1000
@@ -40,11 +45,11 @@
#define CONF_LOG_DIMENSIONS_HEIGHT 16
#define CONF_BUDDYLIST_DIMENSIONS_X 0
-#define CONF_BUDDYLIST_DIMENSIONS_Y 0
+#define CONF_BUDDYLIST_DIMENSIONS_Y 1
#define CONF_BUDDYLIST_DIMENSIONS_WIDTH 40
-#define CONF_BUDDYLIST_DIMENSIONS_HEIGHT 50
+#define CONF_BUDDYLIST_DIMENSIONS_HEIGHT 40
-#define CONF_CHAT_DIMENSIONS_Y 00
+#define CONF_CHAT_DIMENSIONS_Y 10
#define CONF_CHAT_DIMENSIONS_WIDTH 100
#define CONF_CHAT_DIMENSIONS_HEIGHT 40
#define CONF_CHAT_PARTITIONING_DEFAULT 80 /* 20% for the input window */
@@ -182,6 +187,13 @@ void Conf::SetString(const gchar *pref, const gchar *value)
Save();
}
+Rect Conf::GetHeaderDimensions(void)
+{
+ return GetDimensions("header/",
+ CONF_HEADER_DIMENSIONS_X, CONF_HEADER_DIMENSIONS_Y,
+ CONF_HEADER_DIMENSIONS_WIDTH, CONF_HEADER_DIMENSIONS_HEIGHT);
+}
+
Rect Conf::GetLogDimensions(void)
{
return GetDimensions("log/",
diff --git a/src/Conf.h b/src/Conf.h
index b7ec2ef..2d74190 100644
--- a/src/Conf.h
+++ b/src/Conf.h
@@ -67,6 +67,7 @@ class Conf
unsigned int GetLogMaxLines(void);
unsigned int GetChatPartitioning(void);
+ Rect GetHeaderDimensions(void);
Rect GetLogDimensions(void);
Rect GetBuddyListDimensions(void);
Rect GetChatDimensions(void);
diff --git a/src/Header.cpp b/src/Header.cpp
new file mode 100644
index 0000000..5fb65a6
--- /dev/null
+++ b/src/Header.cpp
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2007 by Mark Pustjens <pustj...@dds.nl>
+ * Copyright (C) 2010 by CenterIM developers
+ *
+ * This file is part of CenterIM.
+ *
+ * CenterIM 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; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * CenterIM 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/>.
+ *
+ * */
+
+#include "Header.h"
+#include "Accounts.h"
+#include "Log.h"
+#include "BuddyListNode.h" // To get status indicator
+
+#include "Conf.h"
+#include "CenterIM.h"
+#include "Defines.h"
+
+#include <cstring>
+#include "gettext.h"
+
+/* Internal statusitems for list */
+struct HeaderStatusItem {
+ const char *name;
+ Label *label;
+};
+
+Header *Header::Instance()
+{
+ static Header instance;
+ return &instance;
+}
+
+//TODO sensible defaults
+Header::Header()
+: Window(0, 0, 80, 24, TYPE_NON_FOCUSABLE, LineStyle::NONE)
+, statuses(NULL)
+{
+ SetColorScheme("panel");
+ container = new Container(30, 2);
+ AddWidget(*container, 0, 0);
+
+ /* CenterIM name will always be top-left so we can "forget about"
+ * it...
+ */
+ Label *cimname = new Label(_("CenterIm 5"));
+ container->AddWidget(*cimname, 0, 0);
+
+ Accounts::Instance()->signal_status_changed.connect(sigc::mem_fun(this, &Header::StatusChanged));
+}
+
+Header::~Header()
+{
+ // Delete all HeaderStatusItems
+ for (GList *item = g_list_first(statuses); item;
+ item = g_list_next(item))
+ delete (HeaderStatusItem *)item->data;
+ // Delete list
+ g_list_free(statuses);
+}
+
+void Header::StatusChanged(PurpleAccount *account, PurpleStatus *status)
+{
+
+ /* Find already allocated status indicator */
+ const char *pname = purple_account_get_protocol_name(account);
+ HeaderStatusItem *statusitem = NULL;
+ int lpos = width;
+ for (GList *item = g_list_first(statuses); item;
+ item = g_list_next(item)) {
+ HeaderStatusItem *sitem = (HeaderStatusItem *)item->data;
+ if (strcmp(sitem->name, pname) == 0) {
+ statusitem = sitem;
+ break;
+ }
+ lpos -= (strlen(sitem->label->GetText()) + 1);
+ }
+ /* If not found create a new and add to list */
+ if (!statusitem) {
+ statusitem = new HeaderStatusItem();
+ statusitem->name = pname;
+ statusitem->label = new Label(pname);
+ container->AddWidget(*(statusitem->label), lpos, 0);
+ statuses = g_list_append(statuses, statusitem);
+ }
+ /* Update label */
+ const char *ind = BuddyListNode::GetStatusIndicator(status);
+ char *showname = g_strconcat(pname, ind, NULL);
+ statusitem->label->SetText(showname);
+ /* Free any resources */
+ g_free(showname);
+}
+
+
+void Header::MoveResize(int newx, int newy, int neww, int newh)
+{
+ Window::MoveResize(newx, newy, neww, newh);
+ container->MoveResize(0, 0, width, height);
+
+ int lblx = width;
+ /* Place all items after one another */
+ for (GList *item = g_list_first(statuses); item;
+ item = g_list_next(item)) {
+ HeaderStatusItem *sitem = (HeaderStatusItem *)item->data;
+ int lwidth = strlen(sitem->label->GetText());
+ lblx -= lwidth + 1; /* +1 to get spacing */
+ sitem->label->MoveResize(lblx, 0, lwidth, height);
+ }
+}
+
+void Header::ScreenResized()
+{
+ MoveResizeRect(CENTERIM->ScreenAreaSize(CenterIM::HeaderArea));
+}
+
diff --git a/src/Header.h b/src/Header.h
new file mode 100644
index 0000000..1f832df
--- /dev/null
+++ b/src/Header.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2007 by Mark Pustjens <pustj...@dds.nl>
+ * Copyright (C) 2010 by CenterIM developers
+ *
+ * This file is part of CenterIM.
+ *
+ * CenterIM 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; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * CenterIM 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 __HEADER_H__
+#define __HEADER_H__
+
+#include <cppconsui/TextView.h>
+#include <cppconsui/Label.h>
+#include <cppconsui/Container.h>
+#include <cppconsui/Window.h>
+#include <libpurple/account.h>
+#include <libpurple/prefs.h>
+#include <vector>
+
+#define HEADER (Header::Instance())
+
+/**
+ * The top most "head"-area of the screen.
+ */
+class Header
+: public Window
+{
+ public:
+ static Header *Instance();
+
+ // Window
+ virtual void MoveResize(int newx, int newy, int neww, int newh);
+ virtual void ScreenResized();
+
+ protected:
+ void StatusChanged(PurpleAccount *account, PurpleStatus *status);
+
+ private:
+ Container *container;
+ GList *statuses;
+
+ Header();
+ Header(const Header&);
+ Header &operator=(const Header&);
+ virtual ~Header();
+
+
+};
+
+#endif /* __LOG_H__ */
diff --git a/src/Makefile.am b/src/Makefile.am
index 4ea28b3..de2d1c1 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -30,6 +30,8 @@ centerim_SOURCES = \
GeneralMenu.h \
Log.cpp \
Log.h \
+ Header.cpp \
+ Header.h \
Notify.cpp \
Notify.h \
Transfers.cpp \
--
1.7.1
>From c09738d103b2ffb8b7a63d3d8d134fa88f36b0c9 Mon Sep 17 00:00:00 2001
From: Jonas Zetterberg <j...@jozz.se>
Date: Wed, 11 Aug 2010 19:55:16 +0200
Subject: [PATCH 5/5] Add Swedish Language.
This is a first commit. I could not test it though, there might be manny
errors...
Signed-off-by: Jonas Zetterberg <j...@jozz.se>
---
po/LINGUAS | 2 +-
po/sv.po | 322 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 323 insertions(+), 1 deletions(-)
create mode 100644 po/sv.po
diff --git a/po/LINGUAS b/po/LINGUAS
index 841618a..30c91e4 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -1 +1 @@
-cs
+cs sv
diff --git a/po/sv.po b/po/sv.po
new file mode 100644
index 0000000..df4a4d8
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,322 @@
+# Swedish translations for centerim package.
+# Copyright (C) 2010 Mark Pustjens <pustj...@dds.nl>
+# This file is distributed under the same license as the centerim package.
+# Petr Pavlu <se...@dagobah.cz>, 2010.
+# Jonas Zetterberg <j...@jozz.se>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: centerim 5.0-alpha1\n"
+"Report-Msgid-Bugs-To: CenterIM developers List http://sourceforge.net/"
+"projects/centerim\n"
+"POT-Creation-Date: 2010-03-15 18:45+0100\n"
+"PO-Revision-Date: 2010-03-15 18:57+0100\n"
+"Last-Translator: Jonas Zetterberg <j...@jozz.se>\n"
+"Language-Team: Svenska\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: src/AccountStatusMenu.cpp:41
+msgid "All accounts"
+msgstr "Alla konton"
+
+#: src/AccountStatusMenu.cpp:42
+msgid "Already logged in only"
+msgstr "Redan inloggad"
+
+#: src/AccountWindow.cpp:55
+msgid "Add"
+msgstr "Lägg till"
+
+#: src/AccountWindow.cpp:57
+msgid "Done"
+msgstr "Klar"
+
+#: src/AccountWindow.cpp:104 src/AccountWindow.cpp:594
+msgid "Username"
+msgstr "Användarnamn"
+
+#: src/AccountWindow.cpp:121
+msgid "Are you sure you want to delete this account?"
+msgstr "Ãr du säker pÃ¥ att du vill ta bort detta konto?"
+
+#: src/AccountWindow.cpp:273
+msgid "Invalid account or protocol plugin not loaded"
+msgstr "Ogiltigt konto eller så är insticksmodulen för detta protokol inte laddat"
+
+#: src/AccountWindow.cpp:376
+msgid "Drop account"
+msgstr "Ta bort konto"
+
+#: src/AccountWindow.cpp:418
+msgid "Remember password"
+msgstr "Spara lösenord"
+
+#: src/AccountWindow.cpp:420
+msgid "Account enabled"
+msgstr "Konto aktiverat"
+
+#: src/AccountWindow.cpp:436
+msgid "yes"
+msgstr "ja"
+
+#: src/AccountWindow.cpp:436
+msgid "no"
+msgstr "nej"
+
+#: src/AccountWindow.cpp:472
+msgid "Password"
+msgstr "Lösenord"
+
+#: src/AccountWindow.cpp:474
+msgid "Alias"
+msgstr "Alias"
+
+#: src/AccountWindow.cpp:569
+msgid "Value out of range.\n"
+msgstr "Ej giltigt värde.\n"
+
+#: src/Accounts.cpp:109
+#, c-format
+msgid "+ [%s] Logged in: %s\n"
+msgstr "+ [%s] Inloggad: %s\n"
+
+#: src/Accounts.cpp:115
+#, c-format
+msgid "+ [%s] Status changed to: %s\n"
+msgstr "+ [%s] Status ändrad till: %s\n"
+
+#: src/BuddyListNode.cpp:193
+msgid "New Contact"
+msgstr "Ny Kontakt"
+
+#: src/CenterIM.cpp:301
+msgid "Quit CenterIM."
+msgstr "Avsluta CenterIM."
+
+#: src/CenterIM.cpp:304
+msgid "Open the account status menu."
+msgstr "Ãppna meny för konto-status."
+
+#: src/CenterIM.cpp:307
+msgid "Open the general menu."
+msgstr "Ãppna generell meny."
+
+#: src/CenterMain.cpp:49
+#, c-format
+msgid "could not initialize iconv\n"
+msgstr "kunde inte initialisera iconv\n"
+
+#: src/CenterMain.cpp:52
+#, c-format
+msgid "could not initialize libpurple core\n"
+msgstr "kunde inte initialisera libpurple\n"
+
+#: src/CenterMain.cpp:55
+#, c-format
+msgid "unknown error `%d'\n"
+msgstr "okänt fel `%d'\n"
+
+#: src/Conversation.cpp:75
+msgid "Send the message."
+msgstr "Skicka meddelande."
+
+#: src/GeneralMenu.cpp:40
+msgid "Testing"
+msgstr "Testar"
+
+#: src/GeneralMenu.cpp:41
+msgid "Change status"
+msgstr "Ãndra status"
+
+#: src/GeneralMenu.cpp:42
+msgid "Go to contact..."
+msgstr "GÃ¥ till kontakt..."
+
+#: src/GeneralMenu.cpp:43
+msgid "Accounts..."
+msgstr "Konton..."
+
+#: src/GeneralMenu.cpp:44
+msgid "CenterIM config options..."
+msgstr "CenterIM konfigurations alternativ..."
+
+#: src/GeneralMenu.cpp:46
+msgid "Find/add users"
+msgstr "Hitta/Adders användare"
+
+#: src/GeneralMenu.cpp:47
+msgid "Join channel/conference"
+msgstr "Ãppna kanal/konferens"
+
+#: src/GeneralMenu.cpp:48
+msgid "Link an RSS feed"
+msgstr "Länka en RSS källa"
+
+#: src/GeneralMenu.cpp:50
+msgid "View/edit ignore list"
+msgstr "Visa/Editera ignorerings lista"
+
+#: src/GeneralMenu.cpp:51
+msgid "View/edit invisible list"
+msgstr "Visa/Editera osynlighets lista"
+
+#: src/GeneralMenu.cpp:52
+msgid "View/edit visible list"
+msgstr "Visa/Editera synlighets lista"
+
+#: src/GeneralMenu.cpp:54
+msgid "Show offline users"
+msgstr "Visa utloggade användare"
+
+#: src/GeneralMenu.cpp:55
+msgid "Organize contact groups"
+msgstr "Organisera kontakt-grupper"
+
+#: src/GeneralMenu.cpp:56
+msgid "Mass group move..."
+msgstr "Mass grupp flytt..."
+
+#: src/GeneralMenu.cpp:58
+msgid "Quit"
+msgstr "Avsluta"
+
+#: src/Log.cpp:239
+#, c-format
+msgid "centerim/log: Error opening logfile `%s' (%s).\n"
+msgstr ""
+
+#: src/Log.cpp:244
+#, c-format
+msgid "centerim/log: Error opening logfile `%s'.\n"
+msgstr ""
+
+#: src/Log.cpp:253
+#, c-format
+msgid "centerim/log: Error writing to logfile (%s).\n"
+msgstr ""
+
+#: src/Log.cpp:258
+msgid "centerim/log: Error writing to logfile.\n"
+msgstr ""
+
+#: src/Log.cpp:262
+#, c-format
+msgid "centerim/log: Error flushing logfile (%s).\n"
+msgstr ""
+
+#: src/Log.cpp:267
+msgid "centerim/log: Error flushing logfile.\n"
+msgstr ""
+
+#: cppconsui/Application.cpp:97
+#, c-format
+msgid "Error converting input to UTF-8 (%s).\n"
+msgstr ""
+
+#: cppconsui/Application.cpp:102
+msgid "Error converting input to UTF-8.\n"
+msgstr ""
+
+#: cppconsui/Application.cpp:123
+msgid "Libtermkey initialization failed.\n"
+msgstr ""
+
+#: cppconsui/Button.cpp:79
+msgid "Activate the button"
+msgstr ""
+
+#: cppconsui/ComboBox.cpp:119
+msgid "Show the dropdown menu."
+msgstr ""
+
+#: cppconsui/Container.cpp:84
+msgid "Focusses the previous widget"
+msgstr ""
+
+#: cppconsui/Container.cpp:87
+msgid "Focusses the next widget"
+msgstr ""
+
+#: cppconsui/Container.cpp:90
+msgid "Focus the next widget to the left."
+msgstr ""
+
+#: cppconsui/Container.cpp:93
+msgid "Focus the next widget to the right."
+msgstr ""
+
+#: cppconsui/Container.cpp:96
+msgid "Focus the next widget above."
+msgstr ""
+
+#: cppconsui/Container.cpp:99
+msgid "Focus the next widget below."
+msgstr ""
+
+#: cppconsui/InputDialog.cpp:35 cppconsui/MessageDialog.cpp:30
+msgid "Ok"
+msgstr ""
+
+#: cppconsui/MenuWindow.cpp:53
+msgid "Close the window"
+msgstr ""
+
+#: cppconsui/TextEdit.cpp:117 cppconsui/TextEntry.cpp:139
+msgid "Move the cursor to the right."
+msgstr ""
+
+#: cppconsui/TextEdit.cpp:120 cppconsui/TextEntry.cpp:142
+msgid "Move the cursor to the left."
+msgstr ""
+
+#: cppconsui/TextEdit.cpp:123
+msgid "Move the cursor one line down."
+msgstr ""
+
+#: cppconsui/TextEdit.cpp:126 cppconsui/TextEdit.cpp:129
+#: cppconsui/TextEntry.cpp:145
+msgid "Move the cursor to the right by one word."
+msgstr ""
+
+#: cppconsui/TextEdit.cpp:132 cppconsui/TextEntry.cpp:148
+msgid "Move the cursor to the left by one word."
+msgstr ""
+
+#: cppconsui/TextEdit.cpp:135 cppconsui/TextEntry.cpp:151
+msgid "Move the cursor to the end of the text."
+msgstr ""
+
+#: cppconsui/TextEdit.cpp:138 cppconsui/TextEntry.cpp:154
+msgid "Move the cursor to the beginning of the text."
+msgstr ""
+
+#: cppconsui/TextEdit.cpp:141 cppconsui/TextEntry.cpp:157
+msgid "Delete character under cursor."
+msgstr ""
+
+#: cppconsui/TextEdit.cpp:144 cppconsui/TextEntry.cpp:160
+msgid "Delete character before cursor."
+msgstr ""
+
+#: cppconsui/TextEntry.cpp:177
+msgid "Accept input and move focus."
+msgstr ""
+
+#: cppconsui/TreeView.cpp:85
+msgid "Collapse the selected subtree"
+msgstr ""
+
+#: cppconsui/TreeView.cpp:88
+msgid "Expand the selected subtree"
+msgstr ""
+
+#: cppconsui/Window.cpp:77
+msgid "Close the window."
+msgstr ""
+
+#: cppconsui/WindowManager.cpp:92
+msgid "Redraw the complete screen immediately"
+msgstr ""
--
1.7.1
--
_______________________________________________
Centerim-devel mailing list
Centerim-devel@centerim.org
http://centerim.org/mailman/listinfo/centerim-devel
http://www.centerim.org/