Re: [CenterIM-devel] Upcoming disconnection of centerim.org

2021-08-10 Thread Petr Pavlu
On  9. Aug 21 22:51, Frank Altpeter wrote:
> This doesn't mean that the code itself will vanish, but I'm going to shut
> down the related mailing lists centerim-devel (7 emails in 2019, 8 in
> 2020, 0 in 2021) and centerim-users (no traffic since 01/2017), as well as
> the wiki on www.centerim.org and the download directory.
> CenterIM 4 is dead for more than 10 years now and CenterIM 5 is hosted on
> github (https://github.com/petrpavlu/centerim5) as I just learned, so
> nothing important gets lost.

This GitHub location was created some time ago by me to have a mirror of the
CenterIM 5 repository and to be able to use Travis CI for automated testing.
The project page for CenterIM remained at centerim.org and is linked from the
GitHub page.

I'm not sure if someone from the community is willing to take over the hosting
but as I am myself not able to do so, my general thinking was to use services
provided by GitHub. It can be under this mentioned location or a GitHub
organization could be set up for the project.

> I really enjoyed being part of this community, but since it looks that
> there's almost no one left, I think it's time to move on.
> Well, at least for me.

Thank you again for running the CenterIM infrastructure for so long!

Best regards,
Petr

-- 
___
Centerim-devel mailing list
Centerim-devel@centerim.org
http://centerim.org/mailman/listinfo/centerim-devel
http://www.centerim.org/


Re: [CenterIM-devel] Skype conversation rooms

2020-10-02 Thread Petr Pavlu
On 15. Sep 20 11:38, Siim Salonen wrote:
> Still there were some issues. After a few days it forgot the topic and
> started using 19: names again.
> After investigating a bit more it seems better idea to patch skypeweb and
> use PurpleConversation->title instead of PurpleConversation->chat->topic.
> It's not enough to call purple_conversation_set_title() in skypeweb because
> the title is set after labels are already drawn. So I added a signal
> handler for "conversation-updated".

Tracking changes to conversation titles looks sensible to me and is something
that would be good to add. Below are proposed changes to the patch.

> diff --git a/src/Conversations.cpp b/src/Conversations.cpp
> index 16891b7..4f5b65e 100644
> --- a/src/Conversations.cpp
> +++ b/src/Conversations.cpp
> @@ -145,6 +145,10 @@ Conversations::Conversations()
>  handle, "buddy-typing", this, PURPLE_CALLBACK(buddy_typing_), this);
>purple_signal_connect(
>  handle, "buddy-typing-stopped", this, PURPLE_CALLBACK(buddy_typing_), 
> this);
> +  purple_signal_connect(
> +handle, "chat-topic-changed", this, PURPLE_CALLBACK(topic_changed_), 
> this);
> +  purple_signal_connect(
> +handle, "conversation-updated", this, 
> PURPLE_CALLBACK(conversation_updated_), this);
>  
>// Setup callbacks for connections in relation to conversations.
>void *connections_handle = purple_connections_get_handle();
> diff --git a/src/Conversations.h b/src/Conversations.h
> index 51129f8..240c142 100644
> --- a/src/Conversations.h
> +++ b/src/Conversations.h
> @@ -153,6 +153,16 @@ private:
>}
>void buddy_typing(PurpleAccount *account, const char *who);
>  
> +  static void topic_changed_(PurpleAccount *account, const char *who, const 
> char *topic, void *data)
> +  {
> +// reinterpret_cast(data)->updateLabels();
> +  }

Handler for "chat-topic-changed" can be removed.

> +
> +  static void conversation_updated_(PurpleConversation *conv, 
> PurpleConvUpdateType type, gpointer data)
> +  {
> +if(type==PURPLE_CONV_UPDATE_TITLE) reinterpret_cast *>(data)->updateLabels();
> +  }
> +

Handler for "conversation-updated" can be sped up by calling updateLabel() to
update only the changed conversation title. Something as follows should work:

static void conversation_updated_(PurpleConversation *conv, 
PurpleConvUpdateType type, gpointer data)
{
  reinterpret_cast(data)->conversation_update(conv, type);
}

.. and in Conversations.cpp:

void Conversations::conversation_updated(PurpleConversation *conv,
  PurpleConvUpdateType type)
{
  if (type != PURPLE_CONV_UPDATE_TITLE)
return;

  int i = findConversation(conv);
  if (i == -1)
return;

  updateLabel(i);
}

Thanks,
Petr

-- 
___
Centerim-devel mailing list
Centerim-devel@centerim.org
http://centerim.org/mailman/listinfo/centerim-devel
http://www.centerim.org/


Re: [CenterIM-devel] Skype conversation rooms

2020-09-13 Thread Petr Pavlu
On  5. Sep 20 19:05, Siim Salonen wrote:
> Hello,
> skype sets room names as 19:d63d0c3cb720464097dede7d05e42a68,
> 19:db9b301c259f4da1b99f2f6cecdcd210 etc.
> Does other protocols face same issue?

Not that I'm aware of.

> I made a patch to use topic as conversations label, but shoud I make it
> skype specific or global?

I think the change should not be made global because other
protocols use sensible room names.

Could you please post the patch to the list?

Thanks,
Petr

-- 
___
Centerim-devel mailing list
Centerim-devel@centerim.org
http://centerim.org/mailman/listinfo/centerim-devel
http://www.centerim.org/


Re: [CenterIM-devel] Emoticon rendering bug

2019-12-18 Thread Petr Pavlu
On 16. Dec 19 17:30, Wade Berrier wrote:
> Seems to definitely be affected by tmux :(
> 
> Various terms outside of tmux work, various inside don't work.
> 
> Also it looks like I couldn't reproduce this inside of screen.
> 
> Any ideas?

I still have no luck reproducing the issue on my side. If the
problem appears only with tmux then my first suggestion is to
collect logs from the program as described on its GitHub page
[1]. The logs should contain information about on-screen width of
all characters as determined by tmux. There is possibly some
mismatch what CppConsUI, ncurses, tmux and the terminal emulator
calculate as on-screen width of the displayed emojis.

[1] https://github.com/tmux/tmux/blob/master/.github/ISSUE_TEMPLATE.md

Petr

-- 
___
Centerim-devel mailing list
Centerim-devel@centerim.org
http://centerim.org/mailman/listinfo/centerim-devel
http://www.centerim.org/


Re: [CenterIM-devel] Emoticon rendering bug

2019-12-16 Thread Petr Pavlu
On 16. Dec 19 09:07, Wade Berrier wrote:
> Looks like there's still an issue.  See the attached screenshots.

I seem to be unable to reproduce this issue. I did a clean
installation of Fedora 31 and tested the behaviour in
gnome-terminal, xfce4-terminal, konsole and xterm without issues.
Could you please provide information what terminal emulator you
use and some steps how to reproduce the problem?

Thanks,
Petr

-- 
___
Centerim-devel mailing list
Centerim-devel@centerim.org
http://centerim.org/mailman/listinfo/centerim-devel
http://www.centerim.org/


Re: [CenterIM-devel] Emoticon rendering bug

2019-12-15 Thread Petr Pavlu

Dne 2019-12-03 01:59, Wade Berrier napsal:

I'm running ba658ba (current mob) and wanted to report that emoticons
are not getting rendered correctly.

It appears they are taking 2 "spaces" but the drawing system thinks
it's only one.


Thanks for the report. This should be now fixed by b03a616. Let
me know if there is still some issue.

Cheers,
Petr


--
___
Centerim-devel mailing list
Centerim-devel@centerim.org
http://centerim.org/mailman/listinfo/centerim-devel
http://www.centerim.org/


Re: [CenterIM-devel] UI hangs while loading log history

2017-04-22 Thread Petr Pavlu
On 19. Apr 17 23:30, Wade Berrier wrote:
> I noticed this after the big merge these last few weeks.
> 
> I did some minor profiling and it looks like loading conversations with a
> lot of history hangs the UI for a couple of minutes.
> 
> It wasn't apparent what exactly has changed.
> 
> Any ideas?

Hi Wade,

I have added a small optimization to TextView in
4937fba714c6ab5e1ff075a47aa9355e3f103962 to address this problem.
Please let me know if you still observe some issues after this
change.

Note that a new implementation of TextView that I work on is also
not so far from being completed. That should make the speed of
this widget in general much better because it reworks how screen
lines get calculated. The current implementation prepares screen
lines for all content, which gives a bad performance when the
widget is resized and also requires extra memory to store data
about all screen lines. The new implementation calculates screen
line data only for the lines that are actually displayed by the
widget.

Regards,
Petr

-- 
___
Centerim-devel mailing list
Centerim-devel@centerim.org
http://centerim.org/mailman/listinfo/centerim-devel
http://www.centerim.org/


Re: [CenterIM-devel] UI hangs while loading log history

2017-04-20 Thread Petr Pavlu
On 19. Apr 17 23:30, Wade Berrier wrote:
> I noticed this after the big merge these last few weeks.
> 
> I did some minor profiling and it looks like loading conversations with a
> lot of history hangs the UI for a couple of minutes.
> 
> It wasn't apparent what exactly has changed.
> 
> Any ideas?

Hi Wade,

Thank you for reporting the issue. This is certainly an
unintended change. I will investigate the problem in the next few
days.

Regards,
Petr

-- 
___
Centerim-devel mailing list
Centerim-devel@centerim.org
http://centerim.org/mailman/listinfo/centerim-devel
http://www.centerim.org/


Re: [CenterIM-devel] [PATCH] Re-join conversations on account reconnect

2016-02-14 Thread Petr Pavlu
Hi Wade,

The patch generally looks ok, feel free to land it. Inlined are
some suggestions to improve the solution.

On  5. Feb 16 13:37, Wade Berrier wrote:
> diff --git a/src/Conversations.cpp b/src/Conversations.cpp
> index 58a0c81..c35f232 100644
> --- a/src/Conversations.cpp
> +++ b/src/Conversations.cpp
> @@ -148,6 +148,13 @@ Conversations::Conversations()
>PURPLE_CALLBACK(buddy_typing_), this);
>purple_signal_connect(handle, "buddy-typing-stopped", this,
>PURPLE_CALLBACK(buddy_typing_), this);
> +
> +  // setup the callbacks for connections in relation to conversations
> +  void *connections_handle = purple_connections_get_handle();
> +  purple_signal_connect(connections_handle, "signed-on", this,
> +  PURPLE_CALLBACK(account_signed_on_off_), this);
> +  purple_signal_connect(connections_handle, "signed-off", this,
> +  PURPLE_CALLBACK(account_signed_on_off_), this);

Only signed-on could be connected because
Conversations::account_signed_on_off() does not do any processing
for the signed-off signal.

>  }
>  
>  Conversations::~Conversations()
> @@ -432,6 +439,44 @@ void Conversations::buddy_typing(PurpleAccount *account, 
> const char *who)
>updateLabel(i);
>  }
>  
> +void Conversations::account_signed_on_off(PurpleConnection *connection)
> +{
> +// If signed on
> +if(PURPLE_CONNECTION_IS_CONNECTED(connection)) {

I think this check can be avoided if only the signed-on callback
is registered.

> +
> +for(ConversationsVector::iterator conv_child = 
> conversations.begin(); conv_child != conversations.end(); ++conv_child) {
> +
> +if(!conv_child->conv)
> +continue;

This check is not necessary, conv_child->conv cannot be NULL.

> +
> +PurpleConversation *purple_conv = 
> conv_child->conv->getPurpleConversation();
> +
> +// Only process chats for this connection
> +if(purple_conversation_get_gc(purple_conv) == connection) {
> +
> +// TODO: add and consult "want-to-rejoin" configuration 
> parameter?
> +
> +// Look up the chat from the buddy list
> +PurpleChat * purple_chat = purple_blist_find_chat(
> +purple_conversation_get_account(purple_conv),
> +purple_conversation_get_name(purple_conv)
> +);
> +
> +if(!purple_chat)
> +continue;

What if the chat does not exist in the buddy list? Should the
chat be reconnected by using chat_info_default()? Pidgin [1] and
Finch [2] do that.

> +
> +GHashTable *chat_components = 
> purple_chat_get_components(purple_chat);
> +
> +if(chat_components) {
> +serv_join_chat(connection, chat_components);
> +} else {
> +LOG->error(_("Unable to re-join chat '%s'"), 
> purple_conversation_get_name(purple_conv));
> +}

This check does not seem to be needed,
purple_chat_get_components() should never return NULL.

[1] https://hg.pidgin.im/pidgin/main/file/fa3c41b69e47/pidgin/gtkconv.c#l7573
[2] https://hg.pidgin.im/pidgin/main/file/fa3c41b69e47/finch/gntconv.c#l340

Thanks,
Petr


-- 
___
Centerim-devel mailing list
Centerim-devel@centerim.org
http://centerim.org/mailman/listinfo/centerim-devel
http://www.centerim.org/


Re: [CenterIM-devel] [PATCH] Conversation Room List

2015-03-14 Thread Petr Pavlu
On 12. Mar 15 23:20, Wade Berrier wrote:
 Hello,
 
 I've finished a rough implementation of conversation room lists.
 
 I didn't know where to post, so I posted to my github account:
 
 https://github.com/wberrier/centerim5
 
 Some questions:
 
 1. how's the placement of the room list?  Another idea I had was to
 put the roomlist in the buddy list in a similar treeview, collapsible
 per room.
 
 2. For the list, is ListBox the most appropriate widget to use?  It
 seems so, because eventually it would be nice if the roomlist could
 take focus, scroll, and provide context menus for each member.  Can
 someone propose a recommended widget hierarchy for this?
 
 3. Is it possible to get ListBox to not pad between names/widgets?
 
 4. There was a small bug in VerticalLine that prevented it's use
 
 5. sorting of the room list is pretty messed up
 
 Comments?  Feedback?

Hi Wade,

Thank you for the patch. I will have a look next week and answer
your questions.

Petr


-- 
___
Centerim-devel mailing list
Centerim-devel@centerim.org
http://centerim.org/mailman/listinfo/centerim-devel
http://www.centerim.org/


Re: [CenterIM-devel] German translation

2013-02-03 Thread Petr Pavlu
On 28. led 13 13:19, Jonas wrote:
 Good morning,
 
 Yes I'm using centerim5 and could translate it.
 But how? I have never translated a program.

Jonas, CenterIM 5 uses a system called GNU gettext [1] for its
internationalization and localization support. This is a standard
system for this task which is used by most open-source programs.
The official GNU gettext documentation [2] is a comprehensive
source about this system. It is a good idea to read the first
several sections of this manual and then sections that describe
how to work with PO and MO files.

Note that the documentation describes raw gettext commands
which you have to use for creating translations. The CenterIM 5
build system has some automatization for these tasks, for
example, you do not have to run msgfmt to compile your PO file to
an MO file, instead just run make in your CenterIM 5 build
directory and the build system does the PO compilation for you.

Another important thing to know is that CenterIM 5 picks its MO
files only from the installation directory. If you run the
program directly in your build directory then translations stored
in this directory will not be found.

I hope this helps, let me know if you have any questions.

[1] http://www.gnu.org/software/gettext/
[2] http://www.gnu.org/software/gettext/manual/gettext.html

Regards,
Petr


-- 
___
Centerim-devel mailing list
Centerim-devel@centerim.org
http://centerim.org/mailman/listinfo/centerim-devel
http://www.centerim.org/


Re: [CenterIM-devel] German translation

2013-01-23 Thread Petr Pavlu
On 23. Jan 13 18:53, Jonas wrote:
 Hi,
 sorry, my mistake.
 I asked if somebody is interested in a german translation of the wiki.

Hello Jonas,
I'm not sure if it's worth translating the wiki but if you use
CenterIM 5 then you might be interested in updating its German
translation. It seems to be a bit outdated.

Kind regards,
Petr Pavlu


-- 
___
Centerim-devel mailing list
Centerim-devel@centerim.org
http://centerim.org/mailman/listinfo/centerim-devel
http://www.centerim.org/


Re: [CenterIM-devel] commit 35badcdd72909ef5f306b88aee9582f4f0c565be

2013-01-06 Thread Petr Pavlu
On  2. led 13 00:53, CBke wrote:
   3) more similar messages
   
   #: src/Accounts.cpp:401
   and
   #: src/Accounts.cpp:404
   we have
   
   msgid + [%s] %s: New add request from %s (%s)
   and
   msgid + [%s] %s: New add request from %s
   
   while in
   #: src/Accounts.cpp:424
   and
   #: src/Accounts.cpp:427
   we have
   
   msgid + [%s] %s: New authorization request from %s (%s)
   and
   msgid + [%s] %s: New authorization request from %s
   
   add or leave out the word 'authorization' in both cases.
  
  I'm not sure if I correctly understand this suggestion.
  
  There are two types of requests: add and authorization. The add
  request happens when someone you don't have on your list added
  you, in this case you are prompted to add them to your list too.
  The authorization request is used when someone adds you to their
  list and then you are asked to give them authorization to see
  your account's presence.
  
  I could probably merge the two messages for each request into one
  message if that's what you mean.
 
 That is the suggestion, since I do not rally see a difference from a
 (end)user perspective. 

There is a difference. I'm personally more interested in
authorization requests because they mean that someone new is
trying to communicate with me while add requests aren't so
important.

 If, for example, I configure that friends should be authorized to
 see my status / send me messages, and I am already on their
 list (historically), but did not yet authorize them. In this case an
 authorization request would be the same as an add request if I
 configured the account everybody can see my status / send me messages.

I'm not sure if I understand you correctly. Authorization request
= ask for authorization + ask for adding the user to your buddy
list (if he isn't in your list already), add request = ask for
adding the user to your buddy list.

 I'm not sure how this manifests itself in the different protocols.
 
 So technically these are two totally different things, I just don't
 know if you want to make this distinction in the UI.
 I have not found how to see if I only have a fiend in my list, or am
 also authorized by that friend.

There is currently no easy way how to get this information in the
Cim5 UI. However if you aren't authorized by your friend then
there should be an item in the context menu to request the
authorization.

-- 
Petr Pavlu


-- 
___
Centerim-devel mailing list
Centerim-devel@centerim.org
http://centerim.org/mailman/listinfo/centerim-devel
http://www.centerim.org/


Re: [CenterIM-devel] New admin

2012-06-29 Thread Petr Pavlu
On 29. Jun 12 14:58, Frank Altpeter wrote:
 Hi list,
 
 For your information: Petr Pavlu aka Setupji has been granted
 administrator rights to the wiki and upload permission to the download
 directory to keep up the good work on cim5.
 
 As a matter of fact, he's now also reachable as setu...@centerim.org and
 will be reading webmas...@centerim.org as well.
 As always, please use these addresses for related topics only.
 

Thank you, much appreciated!

-- 
Petr Pavlu


-- 
___
Centerim-devel mailing list
Centerim-devel@centerim.org
http://centerim.org/mailman/listinfo/centerim-devel
http://www.centerim.org/


Re: [CenterIM-devel] Contributions: Hide header, typing notifications

2012-06-11 Thread Petr Pavlu
On 11. čen 12 08:23, Alexander Matz wrote:
 Hi centerim 5 developers,
 
 the homepage said you should send a mail when you make any commits, so here
 it is.
 
 I added an option to hide the header because I like to use the space
 available. I about hiding the footer, too. Is there anything wrong with
 this?
 The commit is kind of screwed up (two commits, one with the title merge
 branch 'mob'..., because I was a bit too fast when merging and pushing the
 commit, sorry for that.
 
 Sending and receiving typing notifications is added also. The
 implementation is close to the one in pidgin.
 Receiving the notification is done via signals, because I couldn't find any
 Ui Ops for this.
 The trigger to send a typing notification is Conversation::ProcessInput
 (when the view didn't handle the input).
 This seemed like the most suitable place.
 
 So far from my side and thank you all for this great instant messenger.

Hello,
the code looks good, I polished it only a bit. Thank you for your
contribution!

-- 
Petr Pavlu


-- 
___
Centerim-devel mailing list
Centerim-devel@centerim.org
http://centerim.org/mailman/listinfo/centerim-devel
http://www.centerim.org/


Re: [CenterIM-devel] Buddylist colorization

2011-12-14 Thread Petr Pavlu
Hello

On 13. Dec 11 11:53, Per-Henrik Lundblom wrote:
 I just started using cim5 migrating from centerim4 because of UTF-8
 functionality. Previously I have used (through own patches or offical
 support, don't remember) separate color configs for contacts with
 different online status. This is a really good way to get a good
 overview over the contacts.

Buddy-list colorization is a part of the official cim4 code.
Besides colorization based on online statuses, it also allows
colorization based on buddy protocols.

 Noticed that this feature is missing in cim5 and started looking at how
 to implement this. I guess such customizations should be done using
 seperate colorschemes for contacts with different status. That is,
 instead of having all BuddyListBuddies belonging to colorscheme
 buddylistbuddy there should be something like buddylistbuddy_away
 etc? Either that or adding more colorscheme properties to the button
 widget. what is the way that most conforms to current cim5 design?

I prefer the first option, using buddylistbuddy_away, etc. It
seems similar to what cim4 does.

Here are some hints:

Buddy list is driven by libpurple callbacks, these callbacks are
set in src/BuddyList.cpp: BuddyList::BuddyList(). The update
callback is important in this case, it's handled by the
BuddyList::update() method, which in turn calls an Update()
method of used BuddyListNode (BuddyListBuddy, BuddyListChat,
BuddyListContact, BuddyListGroup).

That means the best place to change current colorscheme is
probably in BuddyListBuddy::Update() and in
BuddyListContact::Update().

See BuddyListNode::GetBuddyStatus() and
src/Utils.cpp:GetStatusIndicator() how to get a primitive status.

Note: contact is a group of one or more buddies. Cim5 hides
buddies by default, you can use the plus key (`+') to display
buddies associated with a contact.

Colors are currently hardcoded, they can be altered in
src/CenterIM.cpp: CenterIM::ColorSchemeInit().


Thank you for taking interest in cim5, I'm looking forward to
your patch.

-- 
Petr Pavlu


-- 
___
Centerim-devel mailing list
Centerim-devel@centerim.org
http://centerim.org/mailman/listinfo/centerim-devel
http://www.centerim.org/


Re: [CenterIM-devel] CenterIM 5 progress

2011-05-15 Thread Petr Pavlu
On 12. kvě 11 20:16, Jostein Berntsen wrote:
 On 10.05.11,12:27, Jostein Berntsen wrote:
  Thanks. I ran the command and got this output:
  
  objdump -T /usr/lib/libxml2.so | grep -E \
  '(xmlSAXUserParseMemory|xmlStrcmp)' 
  
  0009e250 gDF .text  0077  BasexmlStrcmp
  00040120 gDF .text  00e4  BasexmlSAXUserParseMemory
  
  
  I will check more regarding my libxml2 installation.
  
 
 I have tried to reinstall my libxml2, libxml2-devel, libpurple and 
 libpurple-devel packages, but with no difference. The same installation 
 error occurs. Do you have any clue to what I should try here?

Output of that command on my computer:
0009cd40 gDF .text  006d  LIBXML2_2.4.30 xmlStrcmp
0003e320 gDF .text  00d7  LIBXML2_2.4.30 xmlSAXUserParseMemory

Note the difference in the next to last column.

/usr/local/lib/libpurple.so: undefined reference to 
`xmlStrcmp@LIBXML2_2.4.30'
/usr/local/lib/libpurple.so: undefined reference to 
`xmlSAXUserParseMemory@LIBXML2_2.4.30'

I think the problem lies in the symbol version,
`Base' (your version) != LIBXML2_2.4.30 (required version).

-- 
Petr Pavlu


-- 
___
Centerim-devel mailing list
Centerim-devel@centerim.org
http://centerim.org/mailman/listinfo/centerim-devel
http://www.centerim.org/


Re: [CenterIM-devel] Hello!

2011-03-30 Thread Petr Pavlu
On 30. Mar 11 15:10, Ion Cebotari wrote:
 Hello,
 My name is Ion and I'm a beginning programmer. I have small
 experience in programming C/C++ and Python. Centerim has been my
 favourite IM software for almost three years, so i've decided to
 join the development mail list and help with anything I can.

Hello,
and welcome, it's always nice to see new people interested in cim
development.

 I still have no experience in working with libpurple, ncurses or
 other libs in use with centerim, so now i'm just trying to read and
 understand the code of Centerim 5.

Libpurple API should be relatively easy to pick up. It's well
documented in header files. You shouldn't need any curses
knowledge unless you are going to write new widgets (or edit
drawing methods of current ones).

 As soon as I would understand
 your code, I'll try to help you with its development. Or if there
 are some things that could be done by me and your hands simply
 didn't get there, please tell me.
 Thank you very much for your attention.

Here are some suggestions (from easier tasks to harder ones):
* Implement a user info window that is opened for a currently
focused contact/buddy when the user presses a specified key.
You can inspire yourself in finch or pidgin. For finch see
draw_tooltip_real() in gntblist.c, for pidgin see
pidgin_retrieve_user_info() in gtkutils.c and
pidgin_notify_userinfo() in gtknotify.c. Pidgin implementation
may be a bit harder.
* Buddy list customization. Implement Mode1, Mode2 and flat
mode as known from cim4. See how buddy list is rebuilt in
pidgin: redo_buddy_list() in gtkblist.c.
* Implement account UI ops, especially request_add(),
request_authorize() and close_account_request().

-- 
Petr Pavlu


-- 
___
Centerim-devel mailing list
Centerim-devel@centerim.org
http://centerim.org/mailman/listinfo/centerim-devel
http://www.centerim.org/


Re: [CenterIM-devel] CenterIM5 patches

2010-08-14 Thread Petr Pavlu
 * It's preferred (im cim5) to use C++ containers instead of GLib
 containers.
 Hmm.. I am not very found of STL/C++ containers myself and rather
 like GLib functions. I can change this but would it not be better to
 use GLib functionallity since cim is interfacing pidgin? I have not
 looked in to pidgin much but I guess they will deliver GLib lists
 etc. If STL/C++ is used that would mean conversion functions for all
 these or mixed types where pidgin is using GLib and cim is using
 C++. What do you think?

GLib list functions are used where libpurple provides GList but
own data in cim5 are stored in C++ containers. No conversion is
needed because usually only some kind of mapping between
libpurple struct pointer and UI is done (PurpleAccount* - Label,
PurpleConversation* - Conversation object, ...). C++ containers
are preferred because they are easier to use (ok, this is
relative) and safer (no explicit conversion from void* is
needed).

 * Protocol name cannot be used as a key in a `statuses' GList
 because cim5 is aiming to support more than one account per a
 protocol.
 Agree; this was more of a let's get it working first with generic
 (one per proto) support. It does not break multi-per-proto but makes
 the indicators wrong in that case. I thought about this and could
 not come up with a nice UI model for multi-per-proto. Could this be
 a TODO?

PurpleAccount* can be used as a key. It will also speed up the
searching in the list because only pointers are compared, not
strings. Yes, it can be a todo but it should be mentioned in the
code.

 One thought, does this ::width() support utf8? strlen does not so it
 needs to be changed anyway but maby GLib utf8 functions might be
 better?

Yes, it supports UTF-8 and it also takes into account that some
characters occupy two cells on the screen.

 Hmm. I don't think I have commit rights to mob branch? I'd rather
 you use git am -s on patches until I am trusted with commit
 rights. :)

Mob is a branch where everyone can push, it's a special feature
of repo.or.cz, see http://repo.or.cz/h/mob.html. I currently use
mob branch for my work, I don't have an access to master branch.
However I'll contact Mark (original author of cim5) to ask him
for the access to master branch and I'll leave mob branch for you
and other potential contributors. It'll be slightly better this
way because there are people that from time to time try current
devel version and they usually drop a note about found bugs in
#centerim channel so you can get more feedback.

 So; here goes an Idea. Sorry it is quite looong, please skip if you
 are not interested.
[snip]
 I'm giving it a try.. I know it is a big rework of the UI layer so I
 understand if you don't want it. But I see it as fun so I'll send
 patches later if you want and I can get it to work. :)

Sounds great. You can commit your progress to mob branch. However
I'll merge it to master branch after it's finished. I currently
try to clean the code, round all corners and complete the program
to the state where I can actually use it for real. So I don't
want to have experimental code in my branch.

 Subject: [PATCH 06/13] Make header greay-ish
 Subject: [PATCH 07/13] Add HBox and make smaller changes.
 Subject: [PATCH 08/13] Remove space from indicator and add to generator
 Subject: [PATCH 09/13] Add Clock and make Header use HBox
 Subject: [PATCH 10/13] Add Seperator and use in HBox. Color Background.
 Subject: [PATCH 11/13] Update Header to fix layout and text.
 Subject: [PATCH 12/13] Only use background if requested.
 Subject: [PATCH 13/13] Remove ugly text

I reviewed the new patches only quickly because as you mentioned
above they need cleanup. Here are some notes anyway:
* C++ comment style for single lines comments.
* Methods should be const where possible (Label::Width() - const).
* I think that HBox::MoveResize() should be virtual.
* There is a CoreManager::TimeoutConnect() that wrapps g_timeout_add().
* Correct spelling is sepArator, not sepErator. ;)
* Consider moving wbkgd() call to it's own method, not extending attron().
* Check purple_utf8_strftime() (util.h).

-- 
Petr Pavlu


-- 
___
Centerim-devel mailing list
Centerim-devel@centerim.org
http://centerim.org/mailman/listinfo/centerim-devel
http://www.centerim.org/


Re: [CenterIM-devel] CenterIM5 patches

2010-08-12 Thread Petr Pavlu
Hello,

nice to see patches for cim5. Here are some issues you should
work on before pushing these patches to a mob branch.

 0001-Add-LineStyle-without-borders.patch
I wrote a similar patch a while ago but I abandoned it and
instead I splitted Window class into two classes -- FreeWindow
and Window, where Window derives from FreeWindow. The difference
between them is that only Window contains a Panel that draws
borders.

The idea behind splitting the Window class was that border style
settings will be configurable in the future (read from a config
file), then a lack of split pane widgets and advanced widget
autoresizing would cause that there needs to be extra if/else
blocks in MoveResize() code in many places based on if a window
currently has got a border or not. However I'm only about 60:40
inclined to the current solution so if you can come with good
arguments for this patch I'll gladly change my opinion because
this code is easier than having two classes.

 0002-Add-signal-on-status-changes.patch
I would rather see Header class connecting to libpurple
account-status-changed signal so Header doesn't depend on
Accounts. Using libpurple signals also provides a higher
granularity in case you need it (grep purple_signal_register
libpurple/account.c), maybe account-added and account-removed
could be useful here.

 0003-Make-Status-to-string-indicator-its-own-function.patch
This function should be probably moved to something like
src/Utils.cpp.

 0004-Add-header-window-with-generic-information.patch
* I think there is a typo in CenterIM::ScreenResized() where
HeaderArea's height is `3'.
* HeaderStatusItem struct declaration should be placed inside the
class declaration in the header file.
* SetColorScheme(panel) - SetColorScheme(header) ?
* It's preferred (im cim5) to use C++ containers instead of GLib
containers.
* Protocol name cannot be used as a key in a `statuses' GList
because cim5 is aiming to support more than one account per a
protocol.
* On-screen text width shouldn't be calculated using strlen()
call, there is a ::width() function for it. (Yes, I know the name
of this function is a bit vague. It's on my todo list to rename
it to something that doesn't collide with Widget's `width' var so
using :: isn't needed.)
* I think there are some unnecessary includes in Header.h that
could be removed.
* There is no need to use extra Container because the Window is
already a Container.

 0005-Add-Swedish-Language.patch
Looks ok, I can see Swedish translation after setting correct
locales. Go ahead and commit this change to the mob branch.

-- 
Petr Pavlu


-- 
___
Centerim-devel mailing list
Centerim-devel@centerim.org
http://centerim.org/mailman/listinfo/centerim-devel
http://www.centerim.org/